Class NumberConvertorSupport
java.lang.Object
nablarch.core.validation.convertor.NumberConvertorSupport
- All Implemented Interfaces:
Convertor
- Direct Known Subclasses:
BigDecimalConvertor,IntegerConvertor
数値のコンバータの作成を助けるサポートクラス。
数値のコンバータは変換前にバリデーションを行うが、各コンバータが行う共通バリデーションは当クラスにて行う。
共通バリデーションでは、以下のいずれかの場合、バリデーションOKとする。
- 値がnullでnullを許容している場合(
allowNullValueがtrueの場合) - 値がNumberに代入可能な型の場合
- 値がString型の場合
- 値がString配列で要素数が1の場合(配列内の値がnullの場合は
allowNullValueがtrueの場合)
トリム仕様
値の前後の空白文字はトリムしてから変換可否の判定および変換を行う。
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription<T> Objectconvert(ValidationContext<T> context, String propertyName, Object value, Annotation format) 変換を行う。
変換に失敗した場合、ValidationContextにエラー内容を設定する。protected StringconvertToNumber(String number, DecimalFormatSymbols symbols) 言語に応じた数字をNumberに変換可能な数字に変換する。protected abstract NumberconvertToPropertyType(String numberString) トリムおよびフォーマットを行った文字列を、プロパティの型のオブジェクトへ変換する。protected StringconvertToString(Object value) パラメータのオブジェクトを文字列に変換する。 以下に該当しないオブジェクトの場合には、nullを返却する。 String配列 String 値の前後の空白文字はトリムする。protected abstract PatterncreatePattern(Digits digits, DecimalFormatSymbols symbols) Digitsに対応する正規表現を作成する。protected <T> DecimalFormatSymbolsgetDecimalFormatSymbols(ValidationContext<T> context, String propertyName) プロパティに対するDecimalFormatSymbolsを取得する。protected DecimalFormatSymbols<T> booleanisConvertible(ValidationContext<T> context, String propertyName, Object propertyDisplayName, Object value, Annotation format) 変換可否のプレチェックを行う。
変換できない文字列であった場合、エラーメッセージをValidationContextに追加し、falseを返却する。voidsetAllowNullValue(boolean allowNullValue) 変換対象の値にnullを許可するか否かを設定する。 設定を省略した場合、nullが許可される。voidsetInvalidDigitsFractionMessageId(String invalidDigitsFractionMessageId) 小数部を指定した場合の桁数不正時のデフォルトのエラーメッセージのメッセージIDを設定する。
デフォルトメッセージの例 : "{0}には整数部{1}桁以下、小数部{2}桁以下の数値を入力してください。"voidsetInvalidDigitsIntegerMessageId(String invalidDigitsMessageId) 小数部を指定しなかった場合の桁数不正時のデフォルトのエラーメッセージのメッセージIDを設定する。
デフォルトメッセージの例 : "{0}には{1}桁以下の数値を入力してください。"voidsetMultiInputMessageId(String multiInputMessageId) 入力値に複数の文字列が設定された場合のデフォルトのエラーメッセージのメッセージIDを設定する。
デフォルトメッセージの例 : "{0}の値が不正です。"protected Stringトリムを実行する。Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface nablarch.core.validation.Convertor
getTargetClass
-
Constructor Details
-
NumberConvertorSupport
public NumberConvertorSupport()
-
-
Method Details
-
setInvalidDigitsIntegerMessageId
小数部を指定しなかった場合の桁数不正時のデフォルトのエラーメッセージのメッセージIDを設定する。
デフォルトメッセージの例 : "{0}には{1}桁以下の数値を入力してください。"- Parameters:
invalidDigitsMessageId- 小数部を指定しなかった場合の桁数不正時のデフォルトのエラーメッセージのメッセージID
-
setInvalidDigitsFractionMessageId
小数部を指定した場合の桁数不正時のデフォルトのエラーメッセージのメッセージIDを設定する。
デフォルトメッセージの例 : "{0}には整数部{1}桁以下、小数部{2}桁以下の数値を入力してください。"- Parameters:
invalidDigitsFractionMessageId- 小数部を指定した場合の桁数不正時のデフォルトのエラーメッセージのメッセージID
-
setMultiInputMessageId
入力値に複数の文字列が設定された場合のデフォルトのエラーメッセージのメッセージIDを設定する。
デフォルトメッセージの例 : "{0}の値が不正です。"- Parameters:
multiInputMessageId- 入力値に複数の文字列が設定された場合のデフォルトのエラーメッセージのメッセージID
-
setAllowNullValue
public void setAllowNullValue(boolean allowNullValue) 変換対象の値にnullを許可するか否かを設定する。 設定を省略した場合、nullが許可される。- Parameters:
allowNullValue- nullを許可するか否か。許可する場合は、true
-
isConvertible
public <T> boolean isConvertible(ValidationContext<T> context, String propertyName, Object propertyDisplayName, Object value, Annotation format) 変換可否のプレチェックを行う。
変換できない文字列であった場合、エラーメッセージをValidationContextに追加し、falseを返却する。- Specified by:
isConvertiblein interfaceConvertor- Type Parameters:
T- バリデーション結果で取得できる型- Parameters:
context- ValidationContextpropertyName- プロパティ名propertyDisplayName- プロパティの表示名オブジェクトvalue- 変換可否のプレチェックを行う値format- フォーマットを指定するアノテーション(指定がない場合null)- Returns:
- 変換できる場合true
-
convert
public <T> Object convert(ValidationContext<T> context, String propertyName, Object value, Annotation format) 変換を行う。
変換に失敗した場合、ValidationContextにエラー内容を設定する。 -
convertToPropertyType
トリムおよびフォーマットを行った文字列を、プロパティの型のオブジェクトへ変換する。- Parameters:
numberString- トリムおよびフォーマットを行った文字列- Returns:
- プロパティの型のオブジェクト(数値型)
-
convertToString
パラメータのオブジェクトを文字列に変換する。 以下に該当しないオブジェクトの場合には、nullを返却する。- String配列
- String
- Parameters:
value- 変換対象のオブジェクト- Returns:
- 変換後の文字列
-
createPattern
@Published(tag="architect") protected abstract Pattern createPattern(Digits digits, DecimalFormatSymbols symbols) Digitsに対応する正規表現を作成する。- Parameters:
digits- 数値フォーマット指定のアノテーションsymbols- 小数点に使用する文字や1000の区切り文字を提供するDecimalFormatSymbols- Returns:
- フォーマットを表わすパターン
-
getDecimalFormatSymbols
protected <T> DecimalFormatSymbols getDecimalFormatSymbols(ValidationContext<T> context, String propertyName) プロパティに対するDecimalFormatSymbolsを取得する。 ConversionUtil#getFormatSpec(ValidationContext, String)を呼び出し、 10進数に対する有効なフォーマット仕様(decimal)が取得できた場合は、 フォーマット仕様に設定された言語を使用して生成したDecimalFormatSymbolsを返す。 プロパティに対する有効なフォーマット仕様が存在しない場合は、getDefaultDecimalFormatSymbols()を呼び出し、 デフォルトのDecimalFormatSymbolsを返す。- Type Parameters:
T- バリデーション結果で取得できる型- Parameters:
context- ValidationContextpropertyName- プロパティ名- Returns:
- プロパティに対する
DecimalFormatSymbols
-
getDefaultDecimalFormatSymbols
- Returns:
- 日本語に対する
DecimalFormatSymbols(小数点の文字=ドット、1000の区切り文字=カンマ)
-
convertToNumber
言語に応じた数字をNumberに変換可能な数字に変換する。 ConversionUtil#convertToNumber(String, DecimalFormatSymbols)に処理を委譲する。- Parameters:
number- 数字symbols- 数字に使用されている小数点や1000の区切り文字を提供するDecimalFormatSymbols- Returns:
Numberに変換可能な数字
-
trim
トリムを実行する。- Parameters:
value- トリム対象の文字列- Returns:
- トリム後の文字列
-