ヘッダーをスキップ
Oracle® Fusion Middleware Oracle WebCenter Content: Imagingの開発
11g リリース1 (11.1.1)
B72422-02
  ドキュメント・ライブラリへ移動
ライブラリ
目次へ移動
目次

前
 
次
 

5 ドキュメントの検索

この章の内容は次のとおりです。

5.1 ドキュメントの検索について

Imaging APIは保存済検索の列挙と実行のためのSearchServiceを提供します。保存済の検索の実行にはユーザーが検索のNameIdと、検索のSearchArgumentsオブジェクトのリストを指定する必要があります。これらの引数が検索のWHERE句の様々な部分を構成します。これらはSearchService. executeSavedSearch操作に渡され、Search.ResultSetが返されます。この章の最後にある例5-1に、ここで説明するトピックのサンプル・コードを示します。

5.2 保存済検索のリスト

Imaging APIはログインしたユーザーが使用できる検索をリストする、SearchService.listSearchesメソッドを提供します。この操作は、ユーザーのセキュリティ設定に基づいてどのアプリケーションを返すかを指定するAbilityパラメータを受け入れます。検索定義セキュリティに基づき、アプリケーションを返します。Ability.VIEWは、呼出し側ユーザーが表示権限を持つすべての検索を返します。Ability.MANAGEパラメータは、ユーザーが削除または変更権限を持つすべての検索を返します。

この操作は、検索の数値IDとテキスト名の両方を特定するNameIdオブジェクト、java.util.Listを戻します。

5.3 検索引数の指定

保存済検索は、Imagingが検索のWHERE句にアセンブルする1つ以上の検索パラメータを定義できます。Imaging APIではこうしたパラメータの引数を渡すためにSearchArgumentクラスが使用されます。SearchArgumentのコンストラクタはパラメータの名前と、その値を指定するSearchValueオブジェクトを受け入れます。引数の演算子はSearchArgument.setOperatorメソッドを使用して指定する必要があります。

複数のSearchArgumentsはjava.util.Listとして渡されます。リスト内の引数の順序は重要ではありません。

SearchService.getSearchParametersをコールし、検索のNameIdを渡すと、SearchParametersが戻されます。これにより、検索によって定義されたパラメータが定義され、検索の実行に必要なSearchArgumentsを構築しやすくなります。また、SearchParametersは各パラメータが必要であるかどうかも定義します。

5.4 検索の実行

SearchService.executeSavedSearchメソッドは検索結果をSearch.ResultSetの形式で返します。列ラベルは、順序付けされたjava.util.Listストリングを返すgetColumnsメソッドのSearch.Resultで利用できます。

5.5 検索結果の解析

結果の行はjava.util.List of Search.Resultオブジェクトを返すSearch.Results getResultsメソッドから利用できます。各Search.Resultは、検索により検出された単一のドキュメントを表します。

検索結果列は、TypedValuesの順序付けリストであるgetColumnValuesにより返されます。この順序は列ラベルのリストの順序と一致します。ドキュメントのシステム・フィールド値は、Search.Result.getDocumentにより返されるDocumentオブジェクトからアクセスできます。

5.6 検索の実行例

例5-1は、このセクションで説明した基本概念を示しています。

例5-1 検索の実行例

package devguidesamples;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

import oracle.imaging.BasicUserToken;
import oracle.imaging.ImagingException;
import oracle.imaging.NameId;
import oracle.imaging.Search;
import oracle.imaging.SearchArgument;
import oracle.imaging.SearchService;
import oracle.imaging.SearchValue;
import oracle.imaging.ServicesFactory;
import oracle.imaging.TypedValue;
import oracle.imaging.UserToken;

public class ExecuteSearchSample {
   public static void main(String[] args) {
      try { // try-catch
         UserToken credentials = new BasicUserToken("ipmuser", "ipmuserpwd");
         ServicesFactory servicesFactory = 
            ServicesFactory.login(credentials, Locale.US,
               "http://ipmhost:16000/imaging/ws");

         try { // try-finally to ensure logout
            SearchService searchService = servicesFactory.getSearchService();

            NameId invoiceSearchNameId = null;

            // List the viewable applications to confirm that "Invoices" exists
            List<NameId> searchList = 
               searchService.listSearches(Search.Ability.VIEW);
            for (NameId nameId: searchList) {
               if (nameId.getName().equals("Invoices")) {
                  invoiceSearchNameId = nameId;
               }
            }

            if (invoiceSearchNameId == null) {
               System.out.println("Invoices search not found.");
               return;
            }

            SearchValue searchValue = new SearchValue(SearchValue.Type.NUMBER, 1234);
            SearchArgument searchArgument = 
               new SearchArgument("Invoice Number", searchValue);
            searchArgument.setOperatorValue(Search.Operator.EQUAL);

            List<SearchArgument> searchArguments =
               new ArrayList<SearchArgument>();
            searchArguments.add(searchArgument);

            Search.ResultSet resultSet = searchService.executeSavedSearch(invoiceSearchNameId,searchArguments);

            // Display Column Headers
            System.out.print("DocumentId" + "  ");
            for (String column: resultSet.getColumns()) {
               System.out.print(column + "  ");
            }
            System.out.println();

            // Display result Rows
            for (Search.Result row: resultSet.getResults()) {
               System.out.println(row.getDocument().getId());
               for (TypedValue typedValue: row.getColumnValues()) {
                  System.out.print(typedValue.getStringValue() + "  ");
               }
               System.out.println();
            }
         }
         finally {
            if (servicesFactory != null) {
               servicesFactory.logout();
            }
         }
      }
      catch (ImagingException e) {
         System.out.println(e.getMessage());
      }
   }
}