データソース用のパイプライン・コンポーネント構成クラスの作成

データソース拡張機能では、拡張機能の構成を記述し、データソースの構成を検証し、構成変更がデータソースに対して完全取得を必要としているかどうかを判断するために、PipelineComponentConfigurationクラスが必要です。

データソース構成を作成する手順は次のとおりです。

  1. DataSource実装を含むJavaプロジェクトに、PipelineComponentConfigurationのサブクラスを作成します。
    たとえば、次のようになります。
    public class CsvDataSourceConfig extends 
       PipelineComponentConfiguration<CsvDataSourceConfig>{
    
    }
  2. データソースの構成プロパティとして使用可能にする各フィールドを追加します。
    たとえば、次のようになります。
    private String mInputFile;
    	
    private String mKeyColumn;
  3. 各フィールドにアノテーションを追加します。アノテーション型は、フィールドのデータ型と一致する必要があります。どのアノテーションに必要な属性があるのかを判断し、どの属性がフィールドに適しているかを判断するには、IAS Extension API Reference (Javadoc)のパッケージcom.endeca.ias.extension.annotationを参照してください。「IASアノテーションについて」も参照してください。
    たとえば、次のようになります。
    @StringProperty(isRequired=true, name="inputFile", 
       displayName="Input File", description="Path to the input csv file e.g. c:\\incoming\\data.csv")
    private String mInputFile;
    	
    @StringProperty(isRequired=true, name="keyColumn", 
       displayName="Key Column", description="Name of the column with the record key")
    private String mKeyColumn;
  4. 1つのグループ内で構成プロパティの順序を付けるには、PipelineComponentConfigurationクラスに@ConfigurationGroupOrderアノテーションを追加し、ネストされた@ConfigurationGroupアノテーションを追加します。
    たとえば、filePathheaderRowおよびseparatorの順に表示するフィールドのグループは次のようになります。
    @ConfigurationGroupOrder({@ConfigurationGroup(groupName="Basic", 
       propertyOrder={"filePath","headerRow","separator"})})
    public class CsvDataSourceConfig implements 
       PipelineComponentConfiguration<CsvDataSourceConfig>{
    
    }

    propertyOrderを省略した場合、プロパティはアルファベット順にソートされ、アルファベット順に表示されます。

  5. 複数のグループの順序を付けるには、順序を付けるフィールドの各グループに対して、@ConfigurationGroupOrder内に@ConfigurationGroupアノテーションを追加します。
  6. オプションで、isFullAcquisitionRequired()のデフォルト実装をオーバーライドします。デフォルト実装では、構成の変更により次の取得を実行するときに完全取得を強制的に行うかどうかについて、equals()メソッドを使用して、古いPipelineComponentConfigurationと新しいPipelineComponentConfigurationを比較することによって判断します。equals()メソッドのデフォルト実装では、リフレクションを使用してすべての常駐フィールドの等価性を比較します。

    (PipelineComponentConfiguration全体ではなく)特定のプロパティをチェックするコードを記述して、完全取得が必要かどうかを判断できます。完全取得を強制的に行うようにするには、常にtrueを返すコードを記述します。

  7. オプションで、validate()のデフォルト実装をオーバーライドします。IAS Serverがデータ型と制約を検証します(制約には、整数プロパティ用のminValueおよびmaxValueが含まれる場合があります)。validate()に記述するコードは、追加のカスタム検証を実行します。
    たとえば、次のようになります。
    public List<ValidationFailure> validate(
    			CsvFileDataSourceConfiguration configuration) {
    		
    		List<ValidationFailure> validationFailures = 
            new LinkedList<ValidationFailure>();
    		File checkFile = new File(configuration.getFilePath());
    		
    		if (!checkFile.exists()) {
    			validationFailures.add(new ValidationFailure("File " + 
             checkFile.getAbsolutePath() + " does not exist"));
    		}
    		
    		return validationFailures;
    }

    検証が失敗した場合、PipelineComponentConfiguration.validate()メソッドがコレクションValidationFailureオブジェクトを返します。

  8. 単体テストまたはデータソース・ランタイムの実装で必要な場合には、追加した各フィールドに対して、getterメソッドおよびsetterメソッドを記述する必要がある場合もあります。

データソース用のパイプライン・コンポーネント構成の例

前述の手順の詳細は、<インストール・パス>\IAS\<バージョン>\sample\ias-extensions\src\main\com\endeca\ias\extension\sample\datasource\csv\CsvDataSourceConfig.javaのサンプル・データソース拡張機能を参照してください。