/trulia-java-rets-client

Trulia Java RETS Client is library used to access data on RETS compliant servers.

Primary LanguageJavaMIT LicenseMIT

trulia-java-rets-client

The Trulia Java RETS Client is a library used to access data on RETS compliant servers. This is a fork of the jrets master branch, which it self is a fork of the CART RETS client.

Simple example of a search:

public static void main(String[] args) throws MalformedURLException {

	//Create a RetsHttpClient (other constructors provide configuration i.e. timeout, gzip capability)
	RetsHttpClient httpClient = new CommonsHttpClient();
	RetsVersion retsVersion = RetsVersion.RETS_1_7_2;
	String loginUrl = "http://theurloftheretsserver.com";

	//Create a RetesSession with RetsHttpClient
	RetsSession session = new RetsSession(loginUrl, httpClient, retsVersion);    

	String username = "username";
	String password = "password";

	//Set method as GET or POST
	session.setMethod("POST");
	try {
		//Login
		session.login(username, password);
	} catch (RetsException e) {
		e.printStackTrace();
	}

	String sQuery = "(Member_num=.ANY.)";
	String sResource = "Property";
	String sClass = "Residential";

	//Create a SearchRequest
	SearchRequest request = new SearchRequest(sResource, sClass, sQuery);

	//Select only available fields
	String select ="field1,field2,field3,field4,field5";
	request.setSelect(select);

	//Set request to retrive count if desired
	request.setCountFirst();

	SearchResultImpl response;
	try {
		//Execute the search
		response= (SearchResultImpl) session.search(request);

		//Print out count and columns
		int count = response.getCount();
		System.out.println("COUNT: " + count);
		System.out.println("COLUMNS: " + StringUtils.join(response.getColumns(), "\t"));

		//Iterate over, print records
		for (int row = 0; row < response.getRowCount(); row++){
			System.out.println("ROW"+ row +": " + StringUtils.join(response.getRow(row), "\t"));
		}
	} catch (RetsException e) {
		e.printStackTrace();
	} 
	finally {
		if(session != null) { 
			try {
				session.logout(); 
			} 
			catch(RetsException e) {
				e.printStackTrace();
			}
		}
	}

Simple example making a GetObjectRequest:

public static void main(String[] args) throws MalformedURLException {

	//Create a RetsHttpClient (other constructors provide configuration i.e. timeout, gzip capability)
	RetsHttpClient httpClient = new CommonsHttpClient();
	RetsVersion retsVersion = RetsVersion.RETS_1_7_2;
	String loginUrl = "http://theurloftheretsserver.com";

	//Create a RetesSession with RetsHttpClient
	RetsSession	session = new RetsSession(loginUrl, httpClient, retsVersion);

	String username = "username";
	String password = "password";
	try {
		//Login
		session.login(username, password);
	} catch (RetsException e) {
		e.printStackTrace();
	}

	String sResource = "Property";
	String objType   = "Photo";
	String seqNum 	= "*"; // * denotes get all pictures associated with id (from Rets Spec)
	List<String> idsList = Arrays.asList("331988","152305","243374");
	try {
		//Create a GetObjectRequeset
		GetObjectRequest req = new GetObjectRequest(sResource, objType);

		//Add the list of ids to request on (ids can be determined from records)
		Iterator<String> idsIter = idsList.iterator();
		while(idsIter.hasNext()) {
			req.addObject(idsIter.next(), seqNum);
		}

		//Execute the retrieval of objects 
		Iterator<SingleObjectResponse> singleObjectResponseIter = session.getObject(req).iterator();

		//Iterate over each Object 
		while (singleObjectResponseIter.hasNext()) {
			SingleObjectResponse sor = (SingleObjectResponse)singleObjectResponseIter.next();

			//Retrieve in info and print
			String type =			sor.getType();
			String contentID = 		sor.getContentID();
			String objectID = 		sor.getObjectID();
			String description = 	sor.getDescription();
			String location = 		sor.getLocation();
			InputStream is = 		sor.getInputStream();

			System.out.print("type:" + type);
			System.out.print(" ,contentID:" + contentID);
			System.out.print(" ,objectID:" + objectID);
			System.out.println(" ,description:" + description);
			System.out.println("location:" + location); 

			//Download object
			try {
				String dest			= "/path/of/dowload/loaction";
				int size = is.available();
				String filename = dest + contentID +"-" + objectID + ".jpeg";
				OutputStream out = new FileOutputStream(new File(filename)); 
				int read = 0;
				byte[] bytes = new byte[1024];

				while ((read = is.read(bytes)) != -1) {

					out.write(bytes, 0, read);
				}

				is.close();
				out.flush();
				out.close();

				System.out.println("New file with size " + size + " created: " + filename);
			} catch (IOException e) {
				System.out.println(e.getMessage());
			}

		}

	} catch (RetsException e) {
		e.printStackTrace();
	}
	finally {
		if(session != null) {
			try {
				session.logout();
			}
			catch (RetsException e) {
				e.printStackTrace();
			}
		}
	}
}

Example of Geting Metadata:

public static void main(String[] args) throws MalformedURLException {

	//Create a RetsHttpClient (other constructors provide configuration i.e. timeout, gzip capability)
	RetsHttpClient httpClient = new CommonsHttpClient();
	RetsVersion retsVersion = RetsVersion.RETS_1_7_2;
	String loginUrl = "http://theurloftheretsserver.com";

	//Create a RetesSession with RetsHttpClient
	RetsSession session = new RetsSession(loginUrl, httpClient, retsVersion);    

	String username = "username";
	String password = "password";

	//Set method as GET or POST
	session.setMethod("POST");
	try {
		//Login
		session.login(username, password);
	} catch (RetsException e) {
		e.printStackTrace();
	}

	try {
		MSystem system = session.getMetadata().getSystem();
		System.out.println(
				"SYSTEM: " + system.getSystemID() + 
				" - " + system.getSystemDescription());

		for(MResource resource: system.getMResources()) {

			System.out.println(
					"    RESOURCE: " + resource.getResourceID());

			for(MClass classification: resource.getMClasses()) {
				System.out.println(
						"        CLASS: " + classification.getClassName() +
						" - " + classification.getDescription());
			}
		}
	}
	catch (RetsException e) {
		e.printStackTrace();
	} 	
	finally {
		if(session != null) { 
			try {
				session.logout(); 
			} 
			catch(RetsException e) {
				e.printStackTrace();
			}
		}
	}
}	

License

Trulia Java RETS Client is licensed under the MIT License