Class BigDecimalConvertor

java.lang.Object
nablarch.core.validation.convertor.NumberConvertorSupport
nablarch.core.validation.convertor.BigDecimalConvertor
All Implemented Interfaces:
Convertor

@Published(tag="architect") public class BigDecimalConvertor extends NumberConvertorSupport
値をBigDecimalに変換するクラス。
本クラスで変換するプロパティには、必ずDigitsアノテーションを付与しておく必要がある。 本クラスでは、Digitsアノテーションの属性を下記の通り使用する。
Digitsアノテーションの属性名説明
integer整数部桁数上限値。指定値に上限はない。
fraction小数部桁数上限値。指定値に上限はない。
commatrueの場合、入力値が3桁区切り文字で編集されていてもよい。(区切り文字は省略可。)              
falseの場合、入力値が3桁区切り文字で編集されていてはいけない。
messageId変換失敗時のメッセージID。

バリデーション仕様

Digitsアノテーションの設定によって行われるバリデーション仕様の例を以下に示す。
桁数指定の設定とバリデーション内容:
integer=4, fraction=4の場合、「1234.1234」、「-1234.1234」、「+1234.1234」、「.1234」等は有効である。
しかし、「12345.」、「.12345」、「12345.123」、「123.12345」、「1234.」等は無効であり、バリデーションエラーとなる。
カンマ編集可否の設定とバリデーション内容:
commaSeparatedがtrueの場合、「1,234.1234」、「1234.1234」は有効である。
「12,34.1234」のようにカンマを3桁の区切り文字として使用していない場合は無効でありバリデーションエラーとなる。
commaSeparatedがfalseの場合、「1,234.1234」等は無効であり、バリデーションエラーとなる。

上記例のように、本クラスのバリデーションでは NumberConvertorSupport が行う共通バリデーションに加えて、下記仕様のバリデーションを行う。

  • 先頭が数字、プラス記号( + )、マイナス記号( - )、ピリオド( . )のいずれかで始まっていること。
  • 整数部桁数が、Digitsアノテーションにて指定されたinteger値以下であること。
  • Digitsアノテーションでfractionが指定されている場合、小数部の桁数がfraction値以下であること。
  • DigitsアノテーションのcommaSeparatedがfalseの場合、カンマが使用されていないこと。
  • DigitsアノテーションのcommaSeparatedがtrueの場合、カンマが3桁区切りに付与されている、またはカンマを設定していないこと。
  • 末尾がピリオドで終わらないこと。

国際化

数値の記述は、フランス語圏等、言語によっては数値を記載する際にカンマとピリオドの解釈を置き換えて使用する言語がある。
Nablarchのカスタムタグで国際化機能を使用した場合、本クラスもカンマとピリオドの解釈を入れ替えて入力値を取り扱う。 以下に @Digits(integer=6, fraction=2, commaSeparated=true) を設定していた場合の例を示す。
1) 言語に "ja" (日本語) が設定された場合。
 123,456.11 ⇒ 123456.11 として解釈する
 123.456,11 ⇒ バリデーションエラーとなる
2) 言語に "fr" (フランス語) が設定された場合。
 123,456.11 ⇒ バリデーションエラーとなる
 123.456,11 ⇒ 123456.11 として解釈する

See Also:
  • Constructor Details

    • BigDecimalConvertor

      public BigDecimalConvertor()
  • Method Details

    • getTargetClass

      public Class<?> getTargetClass()
      変換対象のクラスを取得する。
      Returns:
      変換対象のクラス
    • convertToPropertyType

      protected Number convertToPropertyType(String numberString)
      トリムおよびフォーマットを行った文字列を、プロパティの型のオブジェクトへ変換する。
      Specified by:
      convertToPropertyType in class NumberConvertorSupport
      Parameters:
      numberString - トリムおよびフォーマットを行った文字列
      Returns:
      プロパティの型のオブジェクト(数値型)
    • createPattern

      protected Pattern createPattern(Digits digits, DecimalFormatSymbols symbols)
      Description copied from class: NumberConvertorSupport
      Digitsに対応する正規表現を作成する。
      Specified by:
      createPattern in class NumberConvertorSupport
      Parameters:
      digits - 数値フォーマット指定のアノテーション
      symbols - 小数点に使用する文字や1000の区切り文字を提供するDecimalFormatSymbols
      Returns:
      フォーマットを表わすパターン