Class CopyOptions

java.lang.Object
nablarch.core.beans.CopyOptions

public final class CopyOptions extends Object
Beanのコピーで使用される設定をまとめたクラス。

当クラスのインスタンスはoptionsメソッドを起点としたビルダーパターンで構築する。

例えば次のコードは日付パターンyyyy/MM/ddを設定して、 さらにプロパティcreatedDateに対してはyyyy/MM/dd HH:mmを設定している。


 CopyOptions copyOptions = CopyOptions.options()
         .datePattern("yyyy/MM/dd")
         .datePatternByName("createdDate", "yyyy/MM/dd HH:mm")
         .build();
 

datePatternメソッドとnumberPatternは 内部的にはconverterメソッドを呼び出している。

datePatternメソッドは次のクラスに対するConverterを追加する。

numberPatternメソッドは次のクラスに対するConverterを追加する。

  • shortとそのラッパークラス
  • intとそのラッパークラス
  • longとそのラッパークラス
  • BigDecimal
  • String

同じクラスに対してconverterメソッドが複数回呼び出されると、 先に登録されたものが有効となる。 つまり次のコードでDateに対するフォーマットはyyyy/MM/ddが有効となり、 CustomDateConverterは無視される。


 CopyOptions copyOptions = CopyOptions.options()
         .datePattern("yyyy/MM/dd")
         .converter(java.util.Date.class, new CustomDateConverter())
         .build();
 
Author:
Taichi Uragami
  • Method Details

    • options

      @Published public static CopyOptions.Builder options()
      ビルダーを取得する。
      Returns:
      ビルダー
    • empty

      public static CopyOptions empty()
      空のCopyOptionsを取得する。
      Returns:
      空のCopyOptions
    • fromAnnotation

      public static CopyOptions fromAnnotation(Class<?> clazz)
      CopyOptionアノテーションを読み取って構築されたCopyOptionsを取得する。
      Parameters:
      clazz - アノテーションを読み取る対象のクラス
      Returns:
      CopyOptionアノテーションを読み取って構築されたCopyOptions
    • merge

      public CopyOptions merge(CopyOptions other)
      他のCopyOptionsをマージする。

      マージ処理はthisをベースにして差分をotherから持ってくる。 例えば同一のプロパティに紐づいたConverterthisotherの両方にあった場合、 マージ後のCopyOptionsにはthisが持つConverterが残る。

      Parameters:
      other - 他のCopyOptionsインスタンス
      Returns:
      マージされたインスタンス
    • hasTypedConverter

      public boolean hasTypedConverter(Class<?> clazz)
      指定されたクラスに紐づいたコンバーターを保持しているかどうかを返す。
      Parameters:
      clazz - クラス
      Returns:
      指定されたクラスに紐づいたコンバーターを保持していればtrue
    • hasNamedConverter

      public boolean hasNamedConverter(String propertyName, Class<?> clazz)
      指定されたプロパティ名とクラスに紐づいたコンバーターを保持しているかどうかを判断して返す。
      Parameters:
      propertyName - プロパティ名
      clazz - クラス
      Returns:
      指定されたプロパティ名とクラスに紐づいたコンバーターを保持していればtrue
    • convertByType

      public Object convertByType(Class<?> clazz, Object value)
      クラスに紐づいたコンバーターを使用して値を変換する。

      クラスに紐づいたコンバーターが見つからなければIllegalArgumentExceptionをスローする。

      Parameters:
      clazz - クラス
      value - 変換前の値
      Returns:
      変換後の値
    • convertByName

      public Object convertByName(String propertyName, Class<?> clazz, Object value)
      プロパティ名とクラスに紐づいたコンバーターを使用して値を変換する。

      プロパティ名とクラスに紐づいたコンバーターが見つからなければIllegalArgumentExceptionをスローする。

      Parameters:
      propertyName - プロパティ名
      clazz - クラス
      value - 変換前の値
      Returns:
      変換後の値
    • isExcludesNull

      public boolean isExcludesNull()
      コピー元プロパティがnullの場合にコピーしないかどうかを返す。
      Returns:
      コピー元プロパティがnullの場合にコピーしない場合はtrue
    • isTargetProperty

      public boolean isTargetProperty(String propertyName)
      指定されたプロパティがコピー対象かどうかを返す。
      Parameters:
      propertyName - プロパティ名
      Returns:
      コピー対象ならtrue