各 Organization オブジェクトは、ほかのすべてのオブジェクトで使用可能な属性に加え、1 つの住所と複数の電話番号を持つことができます。各組織は主担当者として User オブジェクトも持ちます。組織には追加の User オブジェクトを関連付けることができます。
User オブジェクトの属性の 1 つに PersonName オブジェクトがありますが、その形式はオブジェクト名の形式とは異なっています。ユーザーは、複数の電話番号と同様に複数の住所を持つことができます。ユーザーは複数の電子メールアドレスも持つことができます。
組織の住所を取得するには、次のように Organization.getPostalAddress メソッドを呼び出します (org は組織)。
PostalAddress pAd = org.getPostalAddress();
System.out.println(" Postal Address:\n " +
pAd.getStreetNumber() + " " + pAd.getStreet() +
"\n " + pAd.getCity() + ", " +
pAd.getStateOrProvince() + " " +
pAd.getPostalCode() + "\n " + pAd.getCountry() +
"(" + pAd.getType() + ")");
組織の主担当者を取得するには、次のように Organization.getPrimaryContact メソッドを呼び出します (org は組織)。
User pc = org.getPrimaryContact();
ユーザーの住所を取得するには、次のように User.getPostalAddresses メソッドを呼び出し、Collection の値を抽出します (pc は主担当者)。
Collection pcpAddrs = pc.getPostalAddresses();
Iterator pcaddIter = pcpAddrs.iterator();
while (pcaddIter.hasNext()) {
PostalAddress pAd = (PostalAddress) pcaddIter.next();
/* retrieve attributes */
}
組織またはユーザーの電話番号を取得するには、getTelephoneNumbers メソッドを呼び出します。次のコードで、org は組織を表しています。このコードは、国番号、市外局番、主番号、および電話番号のタイプを取得します。
Collection orgphNums = org.getTelephoneNumbers(null);
Iterator orgphIter = orgphNums.iterator();
while (orgphIter.hasNext()) {
TelephoneNumber num = (TelephoneNumber) orgphIter.next();
System.out.println(" Phone number: " +
"+" + num.getCountryCode() + " " +
"(" + num.getAreaCode() + ") " +
num.getNumber() + " (" + num.getType() + ")");
}
TelephoneNumber には内線も含まれることがあり、これは getExtension メソッドで取得できます。電子的にダイアル可能な番号の場合は、url 属性も含まれることがあり、これは getUrl メソッドで取得できます。
ユーザーの名前を取得するには、User.getPersonName メソッドを呼び出します。PersonName には、ユーザーの名、ミドルネーム、および姓に対応する 3 つの属性があります。次のコードで、pc は主担当者を表しています。
PersonName pcName = pc.getPersonName();
System.out.println(" Contact name: " +
pcName.getFirstName() + " " +
pcName.getMiddleName() + " " +
pcName.getLastName());
ユーザーの電子メールアドレスを取得するには、User.getEmailAddresses メソッドを呼び出します。EmailAddress には、アドレスとそのタイプの 2 つの属性があります。次のコードでは、pc は主担当者を表しています。
Collection eAddrs = pc.getEmailAddresses();
Iterator eaIter = eAddrs.iterator();
while (eaIter.hasNext()) {
EmailAddress eAd = (EmailAddress) eaIter.next();
System.out.println(" Email address: " +
eAd.getAddress() + " (" + eAd.getType() + ")");
}
PostalAddress、TelephoneNumber、PersonName、および EmailAddress オブジェクトの属性はすべて String 値です。「JAXR 情報モデルのインタフェース」で説明しているとおり、これらのオブジェクトは RegistryObject インタフェースを拡張しないため、ほかのレジストリオブジェクトの属性は持っていません。
組織、およびその主担当者である User の属性を取得するについては、<INSTALL>/registry/samples/organizations/src ディレクトリにある JAXRSearchOrg.java を参照してください。このサンプルは、指定された文字列が名前に含まれている組織についての情報を表示します。