AbstractCustomWrapper のオーバーライド

AbstractCustomWrapper の拡張時には以下のメソッドをオーバーライドすることができます。

  • public CustomWrapperInputParameter[] getInputParameters()

    このメソッドは、カスタムラッパーが受け入れる一連の入力パラメーターを定義します。これらのパラメーターは CustomWrapperInputParameter オブジェクトの配列として表現されます。このメソッドのデフォルトの実装は空の配列を返します。

    このメソッドの実装例は、「 Example implementation of the method getInputParameters 」に示しています。

    CustomWrapperInputParameter オブジェクトは以下のプロパティを持ちます。

    • name: パラメーターの名前。

    • mandatory: true の場合、ラッパーに対するクエリの実行時にこのパラメーターを指定する必要があります。 false の場合、このパラメーターはオプションです。

    • environment dependent: true の場合、このパラメーターは「環境依存」とみなされます。これは、[Export environment specific properties separately] オプションを指定してこのラッパーの VQL をファイルにエクスポートした場合、このパラメーターの値は値ではなくプロパティになることを意味します。

      false の場合、このパラメーターの値は VQL ファイルに含められます。

    • description: このパラメーターの説明。この説明は、Administration Tool のカスタムデータソースウィザードでヒントとして表示されます。

    • type: 入力パラメーターの型。 CustomWrapperInputParameterType クラスのオブジェクトをインスタンス化するには、 CustomWrapperInputParameterTypeFactory クラスの適切なメソッドを呼び出します。このファクトリーには以下のメソッドがあります。

      • booleanType(...): ブール値のパラメーターを作成します。

      • integerType()longType()floatType() 、および doubleType(): 数値のパラメーターを作成します。

      • stringType()longStringType(): 通常のテキストと長いテキストのパラメーターを作成します。

      • enumStringType(...): 列挙パラメーターを作成します。この型の入力パラメーターは列挙値のみを持つことができます。Administration Tool では、ユーザーがいずれかの有効な値を選択できるように、ドロップダウンリストが表示されます。

      • hiddenStringType(): Virtual DataPort のログに書き込んだり Administration Tool に表示したりできない機密情報を格納するテキストパラメーターを作成します。この型のパラメーターの値は Administration Tool には表示されません。

      • routeType(...): ファイルパスを格納するパラメーターを作成します。Administration Tool には、この型のパラメーターの有効なルートを構築するためのウィザードがあります。この型のパラメーターは、 environment dependent フラグの値にかかわらず常に環境依存とみなされます。

      • loginType() および passwordType(): カスタムラッパーに、 loginType() を使用して作成された入力パラメーターと、 passwordType() を使用して作成された入力パラメーターが含まれている場合、Administration Tool でこのラッパーの基本ビューを作成するときに、パススルー資格情報を有効化できます。有効化した場合、ユーザーが基本ビューに対してクエリを実行すると、これらの 2 つのパラメーターの値が、クエリを実行したユーザーの資格情報になります。

getInputParameters メソッドの実装例
@Override
public CustomWrapperInputParameter[] getInputParameters() {
    return new CustomWrapperInputParameter[] {
        new CustomWrapperInputParameter(STRING_PARAM,
                "A mandatory parameter of type string",
                true, true,
                CustomWrapperInputParameterTypeFactory.
                    stringType()),
        new CustomWrapperInputParameter(BOOLEAN_PARAM,
                "A mandatory parameter of type boolean with 'false'" +
                "as the default value",
                true, true,
                CustomWrapperInputParameterTypeFactory.
                    booleanType(false)),
        new CustomWrapperInputParameter(INTEGER_PARAM,
                "An optional parameter of type integer",
                false, true,
                CustomWrapperInputParameterTypeFactory.
                    integerType()),
        new CustomWrapperInputParameter(ROUTE_PARAM,
                "An optional parameter of type route",
                false, true,
                CustomWrapperInputParameterTypeFactory.
                    routeType(RouteType.values())) };
}
  • public CustomWrapperConfiguration getConfiguration()

    このメソッドは、カスタムラッパーの構成を定義します (カスタムラッパーの構成方法については、「 カスタムラッパーの構成 」を参照)。このメソッドのデフォルトの実装は、使用可能なすべての構成パラメーターがデフォルト値に設定された CustomWrapperConfiguration のインスタンスを返します。

  • public boolean stop()

    このカスタムラッパーに関連するクエリがキャンセルされると、実行エンジンはこのメソッドを呼び出します。 AbstractCustomWrapper クラスが備えているこのメソッドのデフォルトの実装は、何も行わず、単に false を返します。

    このラッパーが実行するタスクがキャンセル可能なものであれば、このメソッドをオーバーライドして、タスクをキャンセルしてください。このラッパーが他のシステムへのコネクションを開いたり、ファイルを開いたりする場合は、このメソッドからそれらのリソースを閉じます。

    このメソッドが true を返したら、ラッパーは、このメソッドの呼び出し後に確実に完了する必要があります。このメソッドの呼び出し後にラッパーが完了しない場合は、 false を返すようにします。このラッパーでこのメソッドをオーバーライドしない場合、実行エンジンはその実行を中断しようとします。そのため、このメソッドの上書きは、推奨されますが必須ではありません。

カスタムラッパーで、挿入、削除、および更新の操作をサポートできます。適切なメソッドを実装またはオーバーライドすることによって、カスタムラッパーは、そのラッパーに挿入、削除、または更新の機能があることを Virtual DataPort が認識するように自動的に構成されます。以下のメソッドを、IDU (挿入、削除、更新) 操作をサポートするようにオーバーライドできます。

  • public int insert(Map<CustomWrapperFieldExpression, Object> insertValues, Map<String, String> inputValues) throws CustomWrapperException

    このメソッドは、カスタムラッパーがデータをその関連するデータソースにどのように挿入するかを定義します。必要に応じて、ラッパーの入力パラメーターの値が、使用する引数として渡されます。挿入するデータは、 CustomWrapperFieldExpressionsObjects 間のマップとして提供されます。 CustomWrapperFieldExpression は、名前を持ち、さらにフィールドが複合フィールドの場合はオプションのサブフィールドリストを持ちます。 CustomWrapperFieldExpressiongetStringRepresentation メソッドは、フィールドのデフォルトのテキストバージョンを提供します。これは、単にフィールド名の場合もあれば、 myfield.myarray[10].myinteger のようにもっと複雑な場合もあります (この例では、複合フィールド myfield 、その配列型のサブフィールド myarray 、およびそのサブフィールド myinteger を表しています)。このメソッドは正常に挿入された値の数を返します。デフォルトの実装は、何も行わず、 0 を返します。

  • public int delete(CustomWrapperConditionHolder condition, Map<String, String> inputValues) throws CustomWrapperException

    このメソッドは、カスタムラッパーがデータをその関連するデータソースからどのように削除するかを定義します。削除条件と入力パラメーターの値が引数として渡されます (条件の処理の詳細については「 条件の処理 」を参照)。正常に削除された値の数が返されます。このメソッドのデフォルトの実装は、何も行わず、 0 を返します。

  • public int update(Map<CustomWrapperFieldExpression, Object> updateValues, CustomWrapperConditionHolder condition, Map<String, String> inputValues) throws CustomWrapperException

    このメソッドは、カスタムラッパーがデータをその関連するデータソースでどのように更新するかを定義します。更新条件、更新値、および入力パラメーターの値が引数として提供されます (条件の処理の詳細については「 条件の処理 」を、更新値の詳細についてはこのセクションの insert メソッドの説明をそれぞれ参照)。正常に更新された値の数が返されます。このメソッドのデフォルトの実装は、何も行わず、 0 を返します。

カスタムラッパーで、分散トランザクションをサポートできます。適切なメソッドを実装またはオーバーライドすることによって、カスタムラッパーは、そのラッパーにトランザクション機能があることを Virtual DataPort が認識するように自動的に構成されます。カスタムラッパーで分散トランザクションをサポートするには、以下の 3 つのメソッドをオーバーライドする必要があります。

  • public void prepare()

    このメソッドは、カスタムラッパーが分散トランザクションのコンテキストで prepare 操作をどのように実行するかを定義します。デフォルトの実装は何も行いません。

  • public void commit()

    このメソッドは、カスタムラッパーが分散トランザクションのコンテキストで commit 操作をどのように実行するかを定義します。デフォルトの実装は何も行いません。

  • public void rollback()

    このメソッドは、カスタムラッパーが分散トランザクションのコンテキストで rollback 操作をどのように実行するかを定義します。デフォルトの実装は何も行いません。