30日間の無料評価版をお試しいただけます。

 

ビューレベルコンバーターは、抽象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();
}

 

 

 

 

  • No labels