intra-mart Accel Platform IM-LogicDesigner拡張プログラミングガイド 第3版 2016-12-01

7. データ変換

本章では、マッピングの際に利用されるデータ変換処理を追加する方法に関して解説します。
標準機能としてデータ変換機能が提供されています。この機能は標準のデータ変換の仕組みを差し替えるという目的ではなく、複雑な型の変換を行う際のマッピングを簡易化する目的で用意されています。

7.1. データ変換処理の作成

データ変換処理を作成するには、 jp.co.intra_mart.foundation.logic.data.converter.Converter インタフェースを実装します。
また、起動時にデータ変換処理を検出、登録するため作成したクラスに対して jp.co.intra_mart.foundation.logic.annotation.DataConverter アノテーションを付与してください。
データ変換処理では、配列/リスト形式の値は受け渡されません。事前に配列/リスト形式に含まれる値を抽出し受け渡しが行われます。
package org.example.logicdesigner.data;

import jp.co.intra_mart.foundation.logic.annotation.DataConverter;
import jp.co.intra_mart.foundation.logic.data.TypeDefinition;
import jp.co.intra_mart.foundation.logic.data.converter.Converter;
import jp.co.intra_mart.foundation.logic.exception.TypeConvertionException;

import org.example.logicdesigner.element.MyParameter;
import org.example.logicdesigner.element.MyResult;

@DataConverter
public class MyConverter implements Converter {

    @SuppressWarnings("unchecked")
    @Override
    public <T> T convert(Object value, TypeDefinition<?> sourceTypeDefinition, TypeDefinition<?> targetTypeDefinition) throws TypeConvertionException {
        MyParameter myParameter = (MyParameter) value;
        MyResult result = new MyResult();
        result.setMessage(myParameter.getStringParameter());
        return (T) result;
    }

    @Override
    public boolean isSupportType(TypeDefinition<?> sourceTypeDefinition, TypeDefinition<?> targetTypeDefinition) {
        return MyParameter.class.equals(sourceTypeDefinition.getType()) && MyResult.class.equals(targetTypeDefinition.getType());
    }
}
  • isSupportType メソッドにて、変換対象となるデータ型であるか判定を行うよう実装します。
  • convert メソッドにて、データ変換処理を実装します。