org.supercsv.ext.annotation.CsvDateConverter Maven / Gradle / Ivy
Show all versions of super-csv-annotation Show documentation
package org.supercsv.ext.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.TimeZone;
import org.supercsv.cellprocessor.ift.CellProcessor;
import org.supercsv.ext.cellprocessor.constraint.FutureDate;
import org.supercsv.ext.cellprocessor.constraint.PastDate;
import org.supercsv.ext.cellprocessor.joda.FutureJoda;
import org.supercsv.ext.cellprocessor.joda.PastJoda;
import org.supercsv.ext.cellprocessor.time.FutureTemporal;
import org.supercsv.ext.cellprocessor.time.PastTemporal;
/**
* 日時型の変換規則を定義するアノテーション。
*
* 対応しているクラスタイプと標準の書式は以下の通りです。
*
* 対応している日時のクラスタイプ
*
* クラスタイプ
* 標準の書式
*
*
* java.util.Date
* {@literal yyyy-MM-dd HH:mm:ss}
*
*
* java.sql.Date
* {@literal yyyy-MM-dd}
*
*
* java.sql.Time
* {@literal HH:mm:ss}
*
*
* java.sql.Timestamp
* {@literal yyyy-MM-dd HH:mm:ss.SSS}
*
*
* java.time.LocalDateTime
* {@literal uuuu-MM-dd HH:mm:ss}
*
*
* java.time.LocalDate
* {@literal uuuu-MM-dd}
*
*
* java.time.LocalTime
* {@literal HH:mm:ss}
*
*
* java.time.ZonedDateTime
* {@literal uuuu-MM-dd HH:mm:ssxxx'['VV']'}
*
*
* org.joda.time.LocalDateTime
* {@literal yyyy-MM-dd HH:mm:ss}
*
*
* org.joda.time.LocalDate
* {@literal yyyy-MM-dd}
*
*
* org.joda.time.LocalTime
* {@literal HH:mm:ss}
*
*
*
*
* @author T.TSUCHIE
*
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CsvDateConverter {
/**
* 日時の書式を指定します。
* クラスタイプごとに、指定可能な書式はことなります。
* {@literal java.util.Date/java.sql.Date/java.sql.Time/java.sql.Timestamp}の場合、{@link java.text.SimpleDateFormat}で解釈可能な書式を指定します。
* {@literal java.time.LocalDateTime/java.time.LocalDate/java.time.LocalTime/java.time.ZonedDateTime}の場合、{@link java.time.format.DateTimeFormatter}で解釈可能な書式を指定します。
* {@literal org.joda.time.LocalDateTime/org.joda.time.LocalDate/org.joda.time.LocalTime/}の場合、{@link org.joda.time.format.DateTimeFormat}で解釈可能な書式を指定します。
* @return 指定しない場合は、クラスタイプにより自動的に決まります。
*/
String pattern() default "";
/**
* 読み込み時に日時の解析を厳密に行うか判定します。
* @return trueの場合、非厳密に判定を行います。
*/
boolean lenient() default true;
/**
* タイムゾーンを指定します。
* {@link TimeZone#getTimeZone(String)}で解釈可能な値を指定する必要があります。
* {@literal Asia/Tokyo, GMT, GMT+09:00}などの値を指定します。
* ただし、オフセットを持たないクラス対タイプ{@literal LocalDateTime, LocalDate, LocalTime}の時は、指定しても意味がありません。
* @return 省略した場合、システム標準の値を使用します。
*/
String timezone() default "";
/**
* ロケールを指定します。
* {@literal <言語コード>}、{@literal <言語コード>_<国コード>}、{@literal <言語コード>_<国コード>_<バリアント>}の3つの書式で指定します。
* 例 'ja'、'ja_JP'、'ja_JP_JP'
* @return 省略した場合、システム標準の値を使用します。
*/
String locale() default "";
/**
* カラムの値が指定した値以上(最小値)の未来日かどうかチェックします。
* {@literal java.util.Date/java.sql.Date/java.sql.Time/java.sql.Timestamp}の場合、{@link CellProcessor}の{@link FutureDate}が設定されます。
* {@literal java.time.LocalDateTime/java.time.LocalDate/java.time.LocalTime/java.time.ZonedDateTime}の場合、{@link CellProcessor}の{@link FutureTemporal}が設定されます。
* {@literal org.joda.time.LocalDateTime/org.joda.time.LocalDate/org.joda.time.LocalTime/}の場合、{@link CellProcessor}の{@link FutureJoda}が設定されます。
* @return 値は、アノテーションで指定した書式に沿った値を指定する必要があります。
*/
String min() default "";
/**
* カラムの値が指定した値以下(最大値)の過去日かどうかチェックします。
* {@literal java.util.Date/java.sql.Date/java.sql.Time/java.sql.Timestamp}の場合、{@link CellProcessor}の{@link PastDate}が設定されます。
* {@literal java.time.LocalDateTime/java.time.LocalDate/java.time.LocalTime/java.time.ZonedDateTime}の場合、{@link CellProcessor}の{@link PastTemporal}が設定されます。
* {@literal org.joda.time.LocalDateTime/org.joda.time.LocalDate/org.joda.time.LocalTime/}の場合、{@link CellProcessor}の{@link PastJoda}が設定されます。
* @return 値は、アノテーションで指定した書式に沿った値を指定する必要があります。
*/
String max() default "";
}