Skip to content

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

License

Notifications You must be signed in to change notification settings

trulia/trulia-java-rets-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages