第9章

SQLベース検索の実装

この章では、exteNd DirectorアプリケーションでSQLベース検索を実装する方法について説明します。

この章では、次のトピックについて説明します。

 
Top of page

SQLベース検索実装のロジックフロー

exteNd DirectorアプリケーションでSQLベース検索を実装する検索コンポーネントを作成できます。exteNd DirectorコンポーネントのgetComponentData()メソッドで次のロジックフローを使用します。

  1. 次のように、コンテンツマネージャ委任のインスタンスを生成する

      com.sssw.cm.api.EbiContentMgmtDelegate contentMgr = com.sssw.cm.client.EboFactory.getDefaultContentMgmtDelegate();
    

    注記:   委任は、サービスの位置を隠すラッパです。委任モデルは、J2EE Business Delegateパターンに従います。委任の詳細については、『exteNd Directorアプリケーションの開発』のexteNd Directorアプリケーション用のJavaのコード化に関する章を参照してください。

  2. 次のように、ドキュメントメタデータクエリオブジェクトのインスタンスを生成します。

      com.sssw.cm.api.EbiDocQuery query = (EbiDocQuery) contentMgr.createQuery(EbiDocQuery.DOC_QUERY);
    
  3. SELECTメソッドをEbiDocQueryオブジェクトで呼び出して、返されるフィールドを選択します。

    EbiDocQueryは、com.sssw.cm.api.EbiDocMetaDataQueryからSELECTメソッドを継承します。

  4. WHEREメソッドをEbiDocQueryオブジェクトで呼び出して、検索条件を指定します。

    各メソッドは、SQL WHERE副句を表す、com.sssw.fw.api.EbiQueryExpressionオブジェクトを返します。

  5. 論理演算子および括弧を使用して用語を結合するメソッドをEbiQueryExpressionで呼び出して、WHERE副句を結合します。

    For more information詳細については、検索条件の作成を参照してください。

  6. ORDERBYメソッドをcom.sssw.cm.api.EbiDocMetaDataQueryオブジェクトで呼び出して、ORDER BY句に結果が返される順序を指定します。

  7. findElements()をEbiContentMgmtDelegateオブジェクトで呼び出して、検索を実行します。

    findElements()メソッドは、クエリを実行して、EbiDocumentオブジェクトのコレクションを返します。このコレクションには、Step 3でSELECTメソッドを使用して指定したフィールドのみのIDおよびデータが含まれます。そのため、このコレクションのオブジェクトは、CMリポジトリのドキュメントを完全な表現するものではありません。

 
Top of page

検索条件の作成

WHEREメソッドをドキュメントメタデータクエリオブジェクトcom.sssw.cm.api.EbiDocQueryで呼び出して、メタデータの検索条件を指定します。WHEREメソッドは、値とデータを一致させます。このメソッドには、句を否定できるNOTパラメータがあります。

 
Top of section

演算子を使用した値とデータの照合

WHEREメソッドは、SQL、関係演算子または文字列演算子を使用して値とデータを一致させることができます。これらの演算子は、メタデータでSQLクエリを定義するための汎用インターフェイスである、com.sssw.fw.api.EbiMetaDataQueryで定義されています。

使用できる演算子は次のとおりです。

定数

定義

SQL演算子

OP_BETWEEN

SQL BETWEEN演算子

OP_IN

SQL IN演算子

OP_IS_NULL

SQL IS NULL演算子(WHEREメソッドの値引数は無視されます)

関係演算子

ROP_EQUAL

等しい(=)

ROP_GEQ

以上(>=)

ROP_GREATER

より大きい(>)

ROP_LEQ

以下(<=)

ROP_LESS

より小さい(<)

文字列演算子

SOP_ENDS_WITH

ターゲット文字列が指定文字列シーケンスで終わるかどうか

SOP_EQUALS_IGNORE_CASE

2つの文字列が大文字小文字は無視して一致するかどうか

SOP_LIKE

SQL LIKE演算子

SOP_LIKE_IGNORE_CASE

SQL LIKE演算子(オペランドの大文字小文字は無視されます)

SOP_STARTS_WITH

ターゲット文字列が指定文字列シーケンスで始まるかどうか

 
Top of section

WHERE式の結合

いくつかのメタデータフィールドでWHERE式を連結する必要がある場合、com.sssw.fw.api.EbiQueryExpressionメソッドを使用してこれらを結合できます。結果をexpression1に割り当てるパターンを示した例をいくつか次に示します。

パターン

expression1.andExpression(expression2);

ANDを使用した2つの式の結合

expression1.parenthesize();

別の式に結合する前に式を括弧で囲む

expression1.orExpression(expression3);

ORを使用した2つの式の結合

 
Top of section

カスタムメタデータ検索の条件の定義

カスタム(拡張)メタデータフィールドを検索するときの条件を定義するには、com.sssw.cm.api.EbiDocQueryで定義されたwhereField*()メソッドを使用します。

実行する手順は、次のとおりです。

  1. IDか名前により、目的のフィールドを識別する式を構築します。

    対象

    使用するメソッド

    ID

    whereFieldID*()メソッド

    Name

    whereFieldName*()メソッド

  2. フィールドの目的値を指定する2つめの式を作成します。

    任意のwhereFieldValue*()メソッドを使用します。

  3. andExpression()メソッドおよびparenthesize()メソッドを使用して作成したWHERE式を結合します。

    結合した式は、Step 1で識別したフィールドおよびStep 2で指定した値に検索を制限します。

    ヒント:   別のフィールドを検索するには、同じ方法で、フィールドIDと値式の別のペ アを設定し、結果をWHERE句の残りと結合します。

 
Top of page

例:標準ドキュメントメタデータの検索

次の例は、標準ドキュメントメタデータでSQLベース検索を実行する方法を示します。この例では、executeDocMetaSearch()という名前のメソッドが、次の検索条件を満たすタイプのドキュメントMovie Reviewを検出します。

この例では、com.sssw.cm.api.EbiDocQuery.whereFieldValueBetween()メソッドにより、1行のコードでカスタムメタデータクエリを指定できます。他には次のようなメソッドがあります。

For more information    これらのメソッドの詳細については、EbiDocQueryのjavadocを参照してください。

返されるコレクションのEbiDocumentオブジェクトには、「Movie Review」に定義されているすべてのプロパティが含まれます。これは、作成日により昇順にソートされています。

executeDocMetaSearch()メソッドは、入力引数として次のオブジェクトにアクセスします。



Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved.  more ...