package webservice.uddi;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Locale;
import java.util.Properties;
import javax.xml.registry.BulkResponse;
import javax.xml.registry.BusinessQueryManager;
import javax.xml.registry.Connection;
import javax.xml.registry.ConnectionFactory;
import javax.xml.registry.FindQualifier;
import javax.xml.registry.JAXRException;
import javax.xml.registry.RegistryService;
import javax.xml.registry.infomodel.EmailAddress;
import javax.xml.registry.infomodel.InternationalString;
import javax.xml.registry.infomodel.Organization;
import javax.xml.registry.infomodel.PersonName;
import javax.xml.registry.infomodel.TelephoneNumber;
import javax.xml.registry.infomodel.User;
public class uddiFindName {
public uddiFindName() {
}
/**
* 실행 메서드
* @throws javax.xml.registry.JAXRException
*/
public void exec()
throws JAXRException {
// Connection 객체를 생산하는 ConnectionFactory 객체 생성
ConnectionFactory factory = ConnectionFactory.newInstance();
factory.setProperties(setProperty());
// JAXR 프로바이더의 연결을 위한 Connection 객체 생성
Connection connection = factory.createConnection();
// RegistryService 객체 생성
RegistryService rs = connection.getRegistryService();
// 인쿼리 작업을 위해서 BusinessQueryManager 객체 생성
BusinessQueryManager bqm = rs.getBusinessQueryManager();
// 회사 이름으로 찾기
BulkResponse response =
bqm.findOrganizations(setSort(), setFinder(), null, null, null, null);
// 검색된 모든 회사(Organization)을 얻어냄
Collection orgCollection = response.getCollection();
Iterator orgIterator = orgCollection.iterator();
// 검색된 회사가 있을 경우
while (orgIterator.hasNext()) {
// 한개의 회사(Organization)을 뽑아 냄
Organization org = (Organization) orgIterator.next();
// businessEntity 엘리먼트 내용에 대한 정보 얻기
System.out.println("n---businessEntity 엘리먼트 내용에 대한 정보 얻기");
// 회사 이름 및 설명 얻기
InternationalString localeOrgName = org.getName();
InternationalString localeOrgDesc = org.getDescription();
String strOrgName = localeOrgName.getValue(Locale.ENGLISH);
String strOrgDesc = localeOrgDesc.getValue(Locale.ENGLISH);
System.out.println("회사 이름: " + strOrgName);
System.out.println("회사 설명: " + strOrgDesc);
// 회사에 대한 contact 정보 얻기
User user = org.getPrimaryContact();
if (user!=null) {
// 회사 담당자 이름 얻기
PersonName personName = user.getPersonName();
String strContactName = personName.getFullName();
System.out.println("담당자: " + strContactName);
// 회사 전화 번호 얻기
Collection phoneCollection = user.getTelephoneNumbers(null);
Iterator phoneIterator = phoneCollection.iterator();
while (phoneIterator.hasNext()) {
TelephoneNumber phone = (TelephoneNumber) phoneIterator.next();
String strPhone = phone.getNumber();
System.out.println("전화번호: " + strPhone);
}
// 회사 이메일 주소 얻기
Collection emailCollection = user.getEmailAddresses();
Iterator emailIterator = emailCollection.iterator();
while (emailIterator.hasNext()) {
EmailAddress email = (EmailAddress) emailIterator.next();
String strEmail = email.getAddress();
System.out.println("이메일: " + strEmail);
}
}
}
}
/**
* 회사 이름으로 찾기 위해 Collenction 객체 생성
* @return
*/
private Collection setFinder() {
Collection namePatterns = new ArrayList();
namePatterns.add("%test%");
return namePatterns;
}
/**
* 검색된 결과를 소팅하기 위해 Collection 객체 생성
* @return
*/
private Collection setSort() {
Collection findQualifiers = new ArrayList();
findQualifiers.add(FindQualifier.SORT_BY_NAME_DESC);
return findQualifiers;
}
/**
* JAXR 프로바이더와 연결하기 위한 정보 셋팅
* @return 셋팅 정보
*/
private Properties setProperty() {
Properties props = new Properties();
props.setProperty("javax.xml.registry.queryManagerURL",
"http://uddi.microsoft.com/inquire");
return props;
}
public static void main(String[] args) {
uddiFindName uddiClient = new uddiFindName();
try {
uddiClient.exec();
} catch(JAXRException e) {
e.printStackTrace();
}
}
} |