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