9.5.2 組み合わせ検索条件を指定した文書の検索

組み合わせ検索条件を指定して文書を検索する場合のコーディング例を,次に示します。

コーディング例での検索の概要は次のとおりです。

実行する操作
文書名が「営業」か「経営」で始まり,更新者が「user01」の文書を取得する
検索条件
  • 文書名,および更新者の一覧を取得する
  • 関連ファイルを検索対象とする
生成するEQL
  • SELECT esysProp_Name, esysProp_ModifierFROM ecmClass_FiledocDVWHERE (esysProp_Name XLIKE '営業%' OR esysProp_Name XLIKE '経営%') AND esysProp_Modifier == 'user01'

1  ////////////////////////////////////////////////////////////
2  // decmFactory    : DecmFactoryインスタンス
3  ////////////////////////////////////////////////////////////
4
5  // 文書検索用インスタンスを取得
6  DecmSelect decmSelect = decmFactory.createDecmSelect();
7
8  ////////////////////////////////////////////////////////////
9  // 検索パラメタ指定
10 ////////////////////////////////////////////////////////////
11
12 // 検索取得列の指定
13 Vector<String> selectList = new Vector<String>();
14 selectList.add(DecmTableDef.ESYSPROP_NAME);
15 selectList.add(DecmTableDef.ESYSPROP_MODIFIER);
16 decmSelect.setSelectList(selectList);
17
18 // 関連ファイルを検索対象とする
19 decmSelect.setSubFileSearchMode(true);
20
21 ////////////////////////////////////////////////////////////
22 // 検索条件を指定
23 ////////////////////////////////////////////////////////////
24
25 //検索条件用のインスタンスを取得
26 DecmCondition condition_A = decmFactory.createDecmCondition();
27 DecmCondition condition_B = decmFactory.createDecmCondition();
28 DecmCondition condition_C = decmFactory.createDecmCondition();
29
30 // 組み合わせ検索条件用のインスタンスを取得
31 DecmCondGroup condGroupTop = decmFactory.createDecmCondGroup();
32 DecmCondGroup condGroupSub = decmFactory.createDecmCondGroup();
33
34 // 検索条件作成
35 condition_A.createStrCond(DecmTableDef.ESYSPROP_NAME, DecmCondition.OP_STWITH, "営業");       /* A */
36 condition_B.createStrCond(DecmTableDef.ESYSPROP_NAME, DecmCondition.OP_STWITH, "経営");       /* B */
37 condition_C.createStrCond(DecmTableDef.ESYSPROP_MODIFIER, DecmCondition.OP_EQ, "user01");     /* C */
38
39 // 組み合わせ検索条件を作成
40 // A or B
41 condGroupSub.addCond(condition_A, DecmCondGroup.OP_AND); // 第二引数の指定値は無視される
42 condGroupSub.addCond(condition_B, DecmCondGroup.OP_OR);
43
44 // (A or B) and C
45 condGroupTop.addCondGroup(condGroupSub, DecmCondGroup.OP_AND); // 第二引数の指定値は無視される
46 condGroupTop.addCond(condition_C, DecmCondGroup.OP_AND);
47
48 // 検索条件を指定
49 decmSelect.setCondGroup(condGroupTop);
50
51 ////////////////////////////////////////////////////////////
52 // 検索結果を取得
53 ////////////////////////////////////////////////////////////
54 Vector<DecmDocProp> ret = decmSelect.searchDoc();