trulia / trulia-java-rets-client

Trulia Java RETS Client is library used to access data on RETS compliant servers.
Other
32 stars 41 forks source link

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