オブジェクトを名前で検索するには、通常、検索修飾子と名前パターンの組み合わせを使用します。検索修飾子はソートとパターンマッチングに作用します。名前パターンには検索する文字列を指定します。BusinessQueryManagerImpl.findObjects メソッドは、2 番目の引数として FindQualifier オブジェクトのコレクション、3 番目の引数として名前パターンのコレクションを取ります。メソッドシグニチャーは次のとおりです。
public BulkResponse findObjects(java.lang.String objectType, java.util.Collection findQualifiers, java.util.Collection namePatterns, java.util.Collection classifications, java.util.Collection specifications, java.util.Collection externalIdentifiers, java.util.Collection externalLinks) throws JAXRException
最初の引数にはオブジェクト型を指定しますが、通常は、LifeCycleManager インタフェースで定義されている一連の文字列定数の 1 つを指定します。
名前パターンにはワイルドカードを使用できます。パーセント記号 (%) を用いると、指定した検索文字列をオブジェクト名の先頭、中間、または末尾で検索するよう指定できます。次に例を示します。
nor% と指定すると、Nor または nor で始まる文字列を検索できます。たとえば、North や northern などです。
%off% と指定すると、文字列 off を含む文字列を検索できます。たとえば、Coffee などです。
%ica と指定すると、ica で終わる文字列を検索できます。たとえば、America などです。
1 文字分に相当するワイルドカードとして、下線 (_) も使用できます。たとえば、検索文字列 _us_ は、Aus1 や Bus3 などのオブジェクト名に一致します。
次のコードは、指定された文字列 searchString で始まる名前を持つすべての組織を Service Registry から検索し、見つかった組織名をアルファベット順にソートします。
// Define find qualifiers and name patterns Collection findQualifiers = new ArrayList(); findQualifiers.add(FindQualifier.SORT_BY_NAME_ASC); Collection namePatterns = new ArrayList(); namePatterns.add(searchString + "%"); // Find organizations with name that starts with searchString BulkResponse response = bqm.findObjects("Organization", findQualifiers, namePatterns, null, null, null, null); Collection orgs = response.getCollection();
FindQualifier.CASE_SENSITIVE_MATCH を指定しない限り、findObjects メソッドでは大文字と小文字が区別されません。上記のコードにおいて、最初の引数は "Organization" または "organization" のどちらでもよく、名前パターンは名前に一致します。大文字と小文字は区別されません。
次のコードは、文字列 searchString が名前に含まれているすべてのレジストリオブジェクトを検索し、アルファベット順にソートします。この検索では大文字と小文字を区別します。
Collection findQualifiers = new ArrayList(); findQualifiers.add(FindQualifier.CASE_SENSITIVE_MATCH); findQualifiers.add(FindQualifier.SORT_BY_NAME_ASC); Collection namePatterns = new ArrayList(); namePatterns.add("%" + searchString + "%"); // Find objects with name that contains searchString BulkResponse response = bqm.findObjects("RegistryObject", findQualifiers, namePatterns, null, null, null, null); Collection orgs = response.getCollection();
パーセント記号は任意の数の文字に一致します。1 文字に一致させるには、下線 (_) を使用します。たとえば、"Arg1" と "Org2" の両方に一致させるには、_rg_ という名前パターンを指定します。
名前によってオブジェクトを検索する例については、<INSTALL>/registry/samples/search-name/src ディレクトリにある JAXRSearchByName.java を参照してください。