Mega Code Archive

 
Categories / Java / XML
 

It searches a registry for information about organizations using an NAICS classification

/*  * Copyright 2007 Sun Microsystems, Inc.  * All rights reserved.  You may not modify, use,  * reproduce, or distribute this software except in  * compliance with  the terms of the License at:  * http://developer.sun.com/berkeley_license.html  */ /* Copyright 1994-2006 Sun Microsystems, Inc. All Rights Reserved. Redistribution and use in source and binary forms, with or without modification,  are permitted provided that the following conditions are met:   * Redistribution of source code must retain the above copyright notice,  this list of conditions and the following disclaimer. * Redistribution in binary form must reproduce the above copyright notice,  this list of conditions and the following disclaimer in the documentation  and/or other materials provided with the distribution.   Neither the name of Sun Microsystems, Inc. or the names of contributors may be  used to endorse or promote products derived from this software without specific  prior written permission.   This software is provided "AS IS," without a warranty of any kind. ALL EXPRESS OR  IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY  OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY  EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY  DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS  SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY  LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,  INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF  LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF  SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.   You acknowledge that this software is not designed, licensed or intended for use in  the design, construction, operation or maintenance of any nuclear facility.  */ import javax.xml.registry.Connection; import javax.xml.registry.ConnectionFactory; import javax.xml.registry.RegistryService; import javax.xml.registry.BusinessLifeCycleManager; import javax.xml.registry.LifeCycleManager; import javax.xml.registry.BusinessQueryManager; import javax.xml.registry.BulkResponse; import javax.xml.registry.JAXRException; import static javax.xml.registry.FindQualifier.SORT_BY_NAME_DESC; import javax.xml.registry.infomodel.RegistryObject; import javax.xml.registry.infomodel.InternationalString; import javax.xml.registry.infomodel.Organization; import javax.xml.registry.infomodel.User; import javax.xml.registry.infomodel.PersonName; import javax.xml.registry.infomodel.TelephoneNumber; import javax.xml.registry.infomodel.EmailAddress; import javax.xml.registry.infomodel.ClassificationScheme; import javax.xml.registry.infomodel.Classification; import javax.xml.registry.infomodel.Service; import javax.xml.registry.infomodel.ServiceBinding; import java.util.ResourceBundle; import java.util.Properties; import java.util.Collection; import java.util.ArrayList; /**  * The JAXRQueryByNAICSClassification class consists of a main  * method, a makeConnection method, an executeQuery method, and  * some private helper methods. It searches a registry for  * information about organizations using an NAICS classification.  */ public class JAXRQueryByNAICSClassification {     Connection connection = null;     public JAXRQueryByNAICSClassification() {     }     public static void main(String[] args) {         ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");         String queryURL = bundle.getString("query.url");         String publishURL = bundle.getString("publish.url");         JAXRQueryByNAICSClassification jq = new JAXRQueryByNAICSClassification();         jq.makeConnection(queryURL, publishURL);         jq.executeQuery();     }     /**      * Establishes a connection to a registry.      *      * @param queryUrl        the URL of the query registry      * @param publishUrl        the URL of the publish registry      */     public void makeConnection(         String queryUrl,         String publishUrl) {         /*          * Specify proxy information in case you          *  are going beyond your firewall.          */         ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");         String httpProxyHost = bundle.getString("http.proxyHost");         String httpProxyPort = bundle.getString("http.proxyPort");         String httpsProxyHost = bundle.getString("https.proxyHost");         String httpsProxyPort = bundle.getString("https.proxyPort");         /*          * Define connection configuration properties.          * For simple queries, you need the query URL.          * To use a life cycle manager, you need the publish URL.          */         Properties props = new Properties();         props.setProperty("javax.xml.registry.queryManagerURL", queryUrl);         props.setProperty("javax.xml.registry.lifeCycleManagerURL", publishUrl);         props.setProperty("com.sun.xml.registry.http.proxyHost", httpProxyHost);         props.setProperty("com.sun.xml.registry.http.proxyPort", httpProxyPort);         props.setProperty(                 "com.sun.xml.registry.https.proxyHost",                 httpsProxyHost);         props.setProperty(                 "com.sun.xml.registry.https.proxyPort",                 httpsProxyPort);         try {             // Create the connection, passing it the              // configuration properties             ConnectionFactory factory = ConnectionFactory.newInstance();             factory.setProperties(props);             connection = factory.createConnection();             System.out.println("Created connection to registry");         } catch (Exception e) {             e.printStackTrace();             if (connection != null) {                 try {                     connection.close();                 } catch (JAXRException je) {                 }             }         }     }     /**      * Searches for organizations corresponding to an NAICS      * classification and displays data about them.      */     public void executeQuery() {         RegistryService rs = null;         BusinessQueryManager bqm = null;         BusinessLifeCycleManager blcm = null;         try {             // Get registry service and managers             rs = connection.getRegistryService();             bqm = rs.getBusinessQueryManager();             blcm = rs.getBusinessLifeCycleManager();             System.out.println(                     "Got registry service, query "                     + "manager, and lifecycle manager");             ResourceBundle bundle = ResourceBundle.getBundle("JAXRExamples");             // Find using an NAICS classification             // Set classification scheme to NAICS, using             // well-known UUID of ntis-gov:naics:1997             String uuid_naics = "uuid:C0B9FE13-179F-413D-8A5B-5004DB8E5BB2";             ClassificationScheme cScheme = (ClassificationScheme) bqm                 .getRegistryObject(                         uuid_naics,                         LifeCycleManager.CLASSIFICATION_SCHEME);             Collection<Classification> classifications = new ArrayList<Classification>();             if (cScheme != null) {                 // Create and add classification                 InternationalString sn = blcm.createInternationalString(                             bundle.getString("classification.name"));                 Classification classification = blcm.createClassification(                             cScheme,                             sn,                             bundle.getString("classification.value"));                 classifications.add(classification);             } else {                 System.out.println("Classification scheme not found");             }             BulkResponse response = bqm.findOrganizations(                         null,                         null,                         classifications,                         null,                         null,                         null);             Collection orgs = response.getCollection();             // Display information about the organizations found             int numOrgs = 0;             if (orgs.isEmpty()) {                 System.out.println("No organizations found");             } else {                 for (Object o : orgs) {                     numOrgs++;                     Organization org = (Organization) o;                     System.out.println("Org name: " + getName(org));                     System.out.println(                             "Org description: " + getDescription(org));                     System.out.println("Org key id: " + getKey(org));                     // Display primary contact information                     User pc = org.getPrimaryContact();                     if (pc != null) {                         PersonName pcName = pc.getPersonName();                         System.out.println(                                 " Contact name: " + pcName.getFullName());                         Collection phNums = pc.getTelephoneNumbers(null);                         for (Object n : phNums) {                             TelephoneNumber num = (TelephoneNumber) n;                             System.out.println(                                     "  Phone number: " + num.getNumber());                         }                         Collection eAddrs = pc.getEmailAddresses();                         for (Object a : eAddrs) {                             EmailAddress eAd = (EmailAddress) a;                             System.out.println(                                     "  Email Address: " + eAd.getAddress());                         }                     }                     // Display classifications                     Collection classList = org.getClassifications();                     for (Object cl : classList) {                         Classification c = (Classification) cl;                         System.out.println(                                 " Classification name: " + getName(c));                         System.out.println(                                 " Classification value: " + c.getValue());                         ClassificationScheme sch = c.getClassificationScheme();                         System.out.println(                                 " Classification scheme key: " + getKey(sch));                     }                     // Print spacer between organizations                     System.out.println(" --- ");                 }             }             System.out.println("Found " + numOrgs + " organization(s)");         } catch (Exception e) {             e.printStackTrace();         } finally {             // At end, close connection to registry             if (connection != null) {                 try {                     connection.close();                 } catch (JAXRException je) {                 }             }         }     }     /**      * Returns the name value for a registry object.      *      * @param ro        a RegistryObject      * @return                the String value      */     private String getName(RegistryObject ro) throws JAXRException {         try {             return ro.getName()                      .getValue();         } catch (NullPointerException npe) {             return "No Name";         }     }     /**      * Returns the description value for a registry object.      *      * @param ro        a RegistryObject      * @return                the String value      */     private String getDescription(RegistryObject ro) throws JAXRException {         try {             return ro.getDescription()                      .getValue();         } catch (NullPointerException npe) {             return "No Description";         }     }     /**      * Returns the key id value for a registry object.      *      * @param ro        a RegistryObject      * @return                the String value      */     private String getKey(RegistryObject ro) throws JAXRException {         try {             return ro.getKey()                      .getId();         } catch (NullPointerException npe) {             return "No Key";         }     } } ////////////////////////////// // //    File: JAXRExamples.properties // ////////////////////////////// ## Registry Server: query.url=http://localhost:8080/RegistryServer/ publish.url=http://localhost:8080/RegistryServer/ registry.username=testuser registry.password=testuser ## HTTP and HTTPS proxy host and port http.proxyHost= http.proxyPort=8080 https.proxyHost= https.proxyPort=8080 ## Values used by publish examples org.name=The Coffee Break org.description=Purveyor of the finest coffees. Established 1950 person.name=Jane Doe phone.number=(800) 555-1212 email.address=jane.doe@TheCoffeeBreak.com classification.scheme=ntis-gov:naics:1997 classification.name=All Other Specialty Food Stores classification.value=445299 service.name=My Service Name service.description=My Service Description svcbinding.description=My Service Binding Description svcbinding.accessURI=http://TheCoffeeBreak.com:8080/sb/ ## Values used by postal address examples postal.taxonomy.filenames=postalconcepts.xml postal.scheme.name=MyPostalAddressScheme postal.scheme.description=A ClassificationScheme for My PostalAddressMappings postal.classification.name=postalAddress postal.classification.value=postalAddress postal.scheme.link=http://unrealcompany.com/PostalScheme.html postal.scheme.linkdesc=My PostalAddress Scheme postal.org.name=The Postal Coffee Break postal.person.name=Jane Postal postal.email.address=jane.postal@ThePostalCoffeeBreak.com postal.streetNumber=99 postal.street=Imaginary Ave. Suite 33 postal.city=Imaginary City postal.state=NY postal.country=USA postal.postalCode=00000 postal.type= # Values used by JAXRPublishConcept example concept.name=HelloConcept concept.description=Concept for Hello Service link.uri=http://localhost:8080/hello-jaxws/hello?WSDL link.description=Hello WSDL document # Values used by JAXRPublishHelloOrg example wsdlorg.name=Hello Organization wsdlorg.description=Organization with a Hello Service wsdlorg.person.name=Duke wsdlorg.person.description=Owner of Hello Service wsdlorg.phone=111-222-3333 wsdlorg.email.address=duke@hello.com wsdlorg.svc.name=JAX-RPC Hello Service wsdlorg.svc.description=Says Hello wsdlorg.svcbnd.description=Service binding for Hello Service wsdlorg.svcbnd.uri=http://localhost:8080/hello-jaxws/hello