Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Trulia Java RETS Client is library used to access data on RETS compliant servers.
Java
branch: master

Merge pull request #8 from depsypher/master

Make compatible with guava 16 and greater since closeQuietly() was remov...

README.md

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

Something went wrong with that request. Please try again.