コンバーターの実装
ビューレベルコンバーターは、抽象class「com.hof.mi.interfaces.Converter」を拡張しなくてはいけません。構成UIとパーシステンスは、通常の「UserInputParameters API」を通して利用することができます。こちらのAPIについて詳細な情報は、こちらを参照してください。
ビューレベルコンバーターを作成するためには、以下のメソッドを実装しなくてはいけません。
public String getName()
これは、このコンバーターを適用する際にユーザーに表示される名前を定義します。
public boolean acceptsNativeType(int type)
こちらのメソッドは、このコンバーターが「type」引数で指定された型のフィールドを受け付けるかどうかを返します。この引数は、「UserInputParameters.TYPE_* 」のいずれかになります(例:TYPE_NUMERIC、TYPE_TEXT、など)
以下は、このメソッドに実装したTextToNumericConverterの例です。
@Override public boolean acceptsNativeType(int type) { if (type == UserInputParameters.TYPE_TEXT) { return true; } else { return false; } }
public abstract int getReturnType()
これは、このコンバーターが値を生成する変換されたデータ型を定義します。これは、「UserInputParameters.TYPE_* 」のいずれかになります(例:TYPE_NUMERIC、TYPE_TEXT、など)
こちらは、このメソッドを使用したTextToNumericConverternのシンプルな例です。
@Override public int getReturnType() { return UserInputParameters.TYPE_NUMERIC; }
public Object convertObject(Object data) throws Exception
これは、値を受け付け、変換するメソッドです。「data」引数は、インプットフィールドのUserInputParameter型のバックエンド実装を示すデータ型のインプットオブジェクトです。盲目的にキャスティングする前に、オブジェクト型を確認することを推奨します。通常データは、TYPE_TEXTはString、のように明らかなデータ型になりますが、中には注意が必要なものもあります。
TYPE_NUMERIC
BigDecimal
BigInteger
数字を拡張する他の基礎的なJava数値データ型
TYPE_DATE
java.util.Date
java.sql.Date
TYPE_TIMESTAMP
java.sql.Timestamp
このメソッドは、データ型の変換が失敗した場合、コンバーターが正しく設定されていないことを示す方法で、例外を生み出す場合がありますが、データ型を修正できなかったことや、値がnullであったことなど、変換が一般的な原因により失敗した場合は、nullを返すように受け付けることができます。
このメソッドを使用したTextToNumericConverternの例は、以下の通りです。
@Override public Object convertObject(Object data) { if (data == null) return null; try { return new BigDecimal((String)data); } catch (NumberFormatException e) { return null; } }
public Object convertObjectReverse(Object data) throws Exception
このメソッドは、Yellowfinが変換後のデータセットの初期値を取得するために使用されます。これは、「convertObject」で適用された反対の変換を実行し、このコンバーターの戻りの型として指定された型のオブジェクトを受け取ります。
@Override public Object convertObjectReverse(Object data) { if (data == null) return null; return data.toString(); }