9.4.6.2 カスタム・データ変換の開発

カスタム・データ変換の実装は、次の例で示すように、マッチャ・インタフェースとコンバータ・インタフェースを実装することで実現できます。

Replicatプロセスの間に機密フィールドの値をマスクするというシナリオについて考えてみます。
  1. ターゲット列(次の基準に一致する)を構成します:
    1. カタログ名: Cat1
    2. スキーマ名: Sch1
    3. 表名: Sample_Table
    4. 列名: Sample_Column
  2. 変換の実装を含めてコンバータを構成します。
    1. 前述の条件に一致した列の列値を、マスクした値に置き換えます
@Matcher(id = "matcher1", description = "Custom target column matcher.")
public class CustomTargetMatcher implements TargetMatcher {
    @Override
    public boolean matches(final TableMetaData tableMetaData) {
        return tableMetaData.getCatalogName().equals("Cat1") && tableMetaData.getSchemaName().equals("Sch1") && tableMetaData.getTableName().equals("Sample_Table");
    }
    @Override
    public boolean matches(final ColumnMetaData columnMetaData) {
                return columnMetaData.getColumnName().equals("Sample_Column");
    }
}

@Converter(id = "converter1", description = "Custom data converter.")
public class CustomConverter implements DataConverter {
    
    public String convert(String originalData, final TableMetaData tableMetaData, final ColumnMetaData columnMetaData) {
         return "********"; // Masked Value
    }
}

この実装のアダプタ・プロパティ

gg.transforms=t1

# This config corresponds to the @Matcher => id param
gg.transform.t1.matcher=matcher1
# This config corresponds to the @Converter => id param
gg.transform.t1.converter=converter1

カスタム・クラスを使用するには:

カスタム・クラスをJARに配置し、それらをクラスパスに含めます。Javaプロパティ(jvm.bootoptionsプロパティでのjava.class.pathを使用)を使用して、またはgg.classpathで、カスタムJARファイルをJVMクラスパスに含めます。