Package nablarch.common.date
Class AbstractDateStringConverter
java.lang.Object
nablarch.common.date.AbstractDateStringConverter
- All Implemented Interfaces:
Convertor
,ExtendedStringConvertor
- Direct Known Subclasses:
YYYYMMConvertor
,YYYYMMDDConvertor
日付を表す文字列を値に変換する抽象クラス。
- See Also:
-
Constructor Summary
ModifierConstructorDescriptionprotected
AbstractDateStringConverter
(String datePattern, String dataType) コンストラクタ。 -
Method Summary
Modifier and TypeMethodDescriptionprotected String
convert
(String value, FormatSpec formatSpec) 指定されたフォーマット仕様で値を変換する。<T> Object
convert
(ValidationContext<T> context, String propertyName, Object value, Annotation annotation) 変換を行う。
変換に失敗した場合、ValidationContextにエラー内容を設定する。protected abstract nablarch.common.date.AbstractDateStringConverter.AnnotationData
getAnnotationDataFrom
(Annotation annotation) アノテーションから値を取得する。protected <T> FormatSpec
getFormatSpec
(ValidationContext<T> context, String propertyName, String allowFormat) プロパティの変換に使用するフォーマット仕様を取得する。protected String
getNumbersOnlyFormat
(String format) フォーマット文字列から日付文字列の区切り文字を取り除いた値を返す。Class<?>
変換対象のクラスを取得する。protected boolean
isConvertible
(String value, FormatSpec formatSpec) 指定されたフォーマット仕様で値が変換可能か否かを判定する。<T> boolean
isConvertible
(ValidationContext<T> context, String propertyName, Object propertyDisplayName, Object value, Annotation format) 変換可否のプレチェックを行う。
変換できない文字列であった場合、エラーメッセージをValidationContextに追加し、falseを返却する。void
setParseFailedMessageId
(String parseFailedMessageId) 指定された日付文字列への変換失敗時のメッセージIDを設定する。Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface nablarch.core.validation.convertor.ExtendedStringConvertor
getTargetAnnotation
-
Constructor Details
-
AbstractDateStringConverter
コンストラクタ。- Parameters:
datePattern
- フォーマットに使用する日付パターンdataType
- "データタイプ{パターン}"形式のデータタイプ
-
-
Method Details
-
setParseFailedMessageId
指定された日付文字列への変換失敗時のメッセージIDを設定する。- Parameters:
parseFailedMessageId
- 指定された日付文字列への変換失敗時のメッセージID
-
convert
public <T> Object convert(ValidationContext<T> context, String propertyName, Object value, Annotation annotation) 変換を行う。
変換に失敗した場合、ValidationContextにエラー内容を設定する。 値がnullまたは空文字の場合は値をそのまま返す。 値の変換は、#convert(String, String)
メソッドに委譲する。 -
convert
指定されたフォーマット仕様で値を変換する。
はじめに指定されたフォーマット仕様で値の解析を試みる。 指定されたフォーマット仕様で解析できない場合は、
getNumbersOnlyFormat(String)
メソッドを使用し、 日付文字列の区切り文字を取り除いたフォーマットで解析する。最後に解析結果として取得できるDateオブジェクトを、所定のパターン(
datePattern
)の 文字列に変換する。- Parameters:
value
- 値formatSpec
- フォーマット仕様- Returns:
- 変換後の値
-
getTargetClass
変換対象のクラスを取得する。- Specified by:
getTargetClass
in interfaceConvertor
- Returns:
- 変換対象のクラス
-
isConvertible
public <T> boolean isConvertible(ValidationContext<T> context, String propertyName, Object propertyDisplayName, Object value, Annotation format) 変換可否のプレチェックを行う。
変換できない文字列であった場合、エラーメッセージをValidationContextに追加し、falseを返却する。 値がnullまたは空文字の場合はconvertメソッドでnullを返すため、本メソッドはtrueを返す。 値の変換可否チェックは、#isConvertible(String, String)
メソッドに委譲する。 値が変換不可の場合は、バリデーション結果メッセージを設定しfalseを返す。 メッセージIDは、YYYYMMDD
アノテーションのmessageId属性の値を使用する。YYYYMMDD
アノテーションにメッセージIDが指定されていない場合は、 本クラスのparseFailedMessageIdプロパティの値をメッセージIDに使用する。- Specified by:
isConvertible
in interfaceConvertor
- Type Parameters:
T
- バリデーション結果で取得できる型- Parameters:
context
- ValidationContextpropertyName
- プロパティ名propertyDisplayName
- プロパティの表示名オブジェクトvalue
- 変換可否のプレチェックを行う値format
- フォーマットを指定するアノテーション(指定がない場合null)- Returns:
- 変換できる場合true
-
isConvertible
指定されたフォーマット仕様で値が変換可能か否かを判定する。はじめに指定されたフォーマット仕様で値が変換可能か否かを判定する。 指定されたフォーマット仕様で変換不可の場合は、
getNumbersOnlyFormat(String)
メソッドを使用し、 日付文字列の区切り文字を取り除いたフォーマットで変換可能か否かを判定する。- Parameters:
value
- 値formatSpec
- フォーマット仕様- Returns:
- 変換可能な場合はtrue
-
getFormatSpec
protected <T> FormatSpec getFormatSpec(ValidationContext<T> context, String propertyName, String allowFormat) プロパティの変換に使用するフォーマット仕様を取得する。ConversionUtil.getFormatSpec(ValidationContext, String)
を呼び出し、 プロパティに対する有効なフォーマット仕様(yyyymmddなど)を取得して返す。 プロパティに対する有効なフォーマット仕様が存在しない場合は、 allowFormatから生成したフォーマット仕様を返す。- Type Parameters:
T
- バリデーション結果で取得できる型- Parameters:
context
- ValidationContextpropertyName
- プロパティ名allowFormat
- フォーマット- Returns:
- 変換に使用するフォーマット仕様
-
getNumbersOnlyFormat
フォーマット文字列から日付文字列の区切り文字を取り除いた値を返す。DateUtil.getNumbersOnlyFormat(String)
に処理を委譲する。- Parameters:
format
- フォーマット文字列- Returns:
- フォーマット文字列から年月日の区切り文字を取り除いた値
-
getAnnotationDataFrom
protected abstract nablarch.common.date.AbstractDateStringConverter.AnnotationData getAnnotationDataFrom(Annotation annotation) アノテーションから値を取得する。- Parameters:
annotation
- アノテーション- Returns:
- アノテーションに設定された値
-