第10章
この章では、リソースセットのコンテンツを検索する方法について説明します。この章の節は次のとおりです。
[検索]タブは、リソースセット内でオブジェクトを検索する機能を提供します。[検索]タブでは、オブジェクトを見つけるための検索フィルタを指定できます。ファイル名またはディレクトリ名で検索したり、リソースセット内の特定の文字列パターンを探したりできます。 探しているオブジェクトが見つかったら、変更したり、検索をビューとして保存したりできます。
[検索]タブは、正規表現検索を完全にサポートします。
正規表現に関する構文とリファレンス情報については、ユーティリティツールのテキスト検索のための正規表現に関する節を参照してください。
フィールド |
指定する内容 |
---|---|
リソースセット |
検索操作のターゲットリソースセット。 |
ファイル名 |
検索するファイル名のリストを指定する正規表現。 |
ディレクトリ |
検索に含む必要のあるディレクトリを指定する正規表現。 リソースセット内の単一のディレクトリのみを検索する場合は、ドロップダウンリストから選択します。 |
データ |
ターゲットリソースセットのファイル内で検索する文字列パターンを指定する正規表現。 |
[検索]タブは、検索フィルタに一致するファイルのリストをフォルダごとに整理して表示します。 たとえば、次の検索は、文字列helpを含むすべてのHTMLソースファイルを見つけます。
ディスクから読み込まれた項目は編集することができ、黒で表示されます。 JARファイルから読み込まれた項目は編集することができません。 これらの項目は、青で表示され、[RO](読み込み専用)が付いています。
同じ検索操作を頻繁に実行する場合は、検索をビューとして保存することを考慮する必要があります。 この方法では、検索条件を毎回指定せずに、好みの頻度で検索を実行できます。
検索をビューとして保存すると、[検索]タブはリソースセット内のmy-viewsフォルダにビュー定義ファイルを作成します。ビュー定義ファイルは、ビューに含める項目を指定するXMLファイルです。
ビューの手動作成 ビューは、ビュー定義ファイルを手動で編集して作成することもできます。 ビューの手動定義の詳細については、カスタムビューの定義を参照してください。
[検索]タブは、exteNd Director付属の基礎となる検索APIを使用します。多くのアプリケーションには、この検索機能で十分です。 ただし、場合により、リソースセットのコンテンツをプログラムで検索する必要があります。 これを実行するには、検索APIで次のオブジェクトを使用する必要があります。
すべての検索実装クラスは、com.sssw.fw.resource.searchパッケージに配置されます。
動作 「検索オブジェクト」は、リソースセットのターゲットオブジェクトを繰り返して各オブジェクトを検索テンプレートと比較し、検索操作を実行します。「検索テンプレート」は、検索のフィルタに使用されるパターンまたは特性を定義します。たとえば、検索テンプレートは、検索するファイル名、ディレクトリ名、ディスクパス、またはバイトの文字列を指定できます。検索が実行されると、リソース要素の各ターゲットオブジェクトにテンプレートを比較します。オブジェクトが同等の場合、ターゲットオブジェクトが検索結果に追加されます。検索オブジェクトは、リソース要素オブジェクトのベクトルで結果を戻します。
検索テンプレートの設定方法 検索のために検索テンプレートオブジェクトを設定するには、いくつかの方法があります。
検索コンパレータは、ターゲットオブジェクトにテンプレートを比較して、一致するか確認します。 検索APIは、3つの検索コンパレータを含みます。
文字列FireRuleを含むリソースセットのすべてのXMLファイルを検索するとします。 これを実行する1つの方法は、EboResourceSearchクラスに作成された内部テンプレートオブジェクトを使用することです。 この実行方法を示すコードスニペットは、次のとおりです。
EboResourceSearch resourceSetSearch = new EboResourceSearch(); resourceSetSearch.setComparator( new EboResourceREGEXPElementComparator() ); resourceSetSearch.getTemplate().setFileName( ".xml" ); resourceSetSearch.getTemplate().setBytes( "FireRule" ); Vector v = resourceSetSearch.search( resourceSet );
このコード例では、検索コンパレータとしてEboResourceREGEXPElementComparatorを使用します。これは、正規表現比較のための検索コンパレータです。
組み込み検索テンプレートオブジェクトの代わりに、独自の検索テンプレートオブジェクトを定義し、検索オブジェクトにその使用を指示することもできます。 この場合、テンプレートオブジェクトをインスタンス化し、使用する値をテンプレートに入力して、検索オブジェクトに渡します。この実行方法を示す例は、次のとおりです。
EboResourceSearch resourceSetSearch = new EboResourceSearch(); resourceSetSearch.setComparator( new EboResourceREGEXPElementComparator() ); EboResourceElementTemplate template = new EboResourceElementTemplate(); template.setFileName( ".xml" ); template.setBytes( "FireRule" ); resourceSetSearch.setTemplate( template ); Vector v = resourceSetSearch.search( resourceSet );
検索をビューとして保存する場合は、検索要求をシリアル化する必要があります。 検索をシリアル化するには、次のDTDに準拠するXMLを作成する必要があります。
<?xml version="1.0" encoding="UTF-8"?> <!ELEMENT search EMPTY> <!ATTLIST search bytes CDATA #IMPLIED directoryName CDATA #IMPLIED diskPath CDATA #IMPLIED javaPackage CDATA #IMPLIED fileName CDATA #IMPLIED >
文字列FireRuleを含むリソースセットのすべてのXMLファイルを検索するとします。この検索に必要なXML文字列は、次のようになります。
<search fileName=・xml・bytes="FireRule" />
このXMLをプログラムで作成するには、次のコードを使用します。
EboResourceSearch resourceSetSearch = new EboResourceSearch(); resourceSetSearch.setComparator( new EboResourceREGEXPElementComparator() ); resourceSetSearch.setTemplate( "<search fileName=\・xml\・bytes=\"FireRule\" />" ); Vector v = resourceSetSearch.search( resourceSet );
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...