B.6 検索可能なすべての属性の検索

JavaScript APIを使って、エンティティのすべての検索可能な属性を検索することができます。 このタイプの検索は、string(文字列)タイプの属性にだけ適用されます。そのため、DN、date(日付)、integer(整数)、boolean(ブール)など、他のタイプでこのような検索を行うことはできません。

検索可能なすべての属性に対して検索を実行するには、まず他の検索方法と同じようにクエリオブジェクトを作成します(前述)。つぎに 、JUICE.IDM.Definition.load()を呼び出して、エンティティ定義の属性リストを取得する必要があります。属性リストを取得したら、各属性が文字列で検索可能であることを確認してください。検索可能な各文字列属性に対して、条件グループオブジェクトでaddConditionRow()メソッドを呼び出して、条件行を追加します。すべての条件行を追加したら、検索を実行することができます。

次のJavaScriptの例は、すべての検索可能属性の検索方法を表しています。

function buildQuery5() {
  var searchStr = document.getElementById("query5Text").value;
  if (searchStr == "") {
    alert("Enter a search string in the text field.");
    return;
  }
  var newQuery = JUICE.IDM.Entities.Search.create("My New Search");
  var entDef = "user";
  newQuery.setFrom(entDef);
  var selAttrs = new Array();
  selAttrs.push("FirstName");
  selAttrs.push("LastName");
  newQuery.setSelects(selAttrs);
  var newCondGrp1 = newQuery.addConditionGroup();
  newCondGrp1.setRowLop("or");

  //get all the searchable attributes of entity-definition user that are type string (excludes DN, date, integer, boolean, etc)
  JUICE.IDM.Definitions.load(entDef);
  var attrKeys = JUICE.IDM.Definitions.getAttributeKeys(entDef);
  for (var i = 0; i < attrKeys.length; i++) {
    var attrDef = JUICE.IDM.Definitions.getAttribute(entDef, attrKeys[i]);
    var attrType = attrDef.getType();
    var searchable = attrDef.isSearchable();

    if (attrType == "String" && searchable ) {
      var newCondRow = newCondGrp1.addConditionRow();
      newCondRow.setRowAttr(attrKeys[i]);
      newCondRow.setRowRop("contains");
      newCondRow.setRowVal(searchStr);
    }
  }
  openSearchResults("QUERY=" + newQuery);
}