2. 機能概要

本ライブラリは、JavaのCSVファイルのライブラリ「 Super CSV 」に、 アノテーション機能を追加したものです。

アノテーションを利用することで、煩わしいCellProcessorの組み立てを簡略化ですることがきます。

2.1. 前提条件

本ライブラリの前提条件を以下に示します。

Super CSV本体の前提のJavaは、ver.1.5以上ですが、本ライブラリは、Java 1.8以上が前提となります。

全て独自のCellProcessorを利用しているため、 Super CSVの拡張ライブラリ 「 Super CSV Java 8 Extension 」 「 Super CSV Joda-Time Extension 」 は必要ありません。

表 - 2.1.1 前提条件

項目

Java

ver.1.8

Super CSV

ver.2.4+

Joda-Time (option)

ver.2.9+

Spring Framework (option)

ver.3.0+

Bean Validation (option)
ver.1.0/1.1/2.0
(Hibernate Validator 4.x/5.x/6.x)

2.2. 対応しているクラスタイプ

本ライブラリは、標準では以下のクラスタイプに対応しています。 独自のクラスタイプに対応することも可能で、その場合は、「 独自のクラスタイプへの対応 」を参照してください。

表 - 2.2.1 対応しているクラスタイプ(Java標準)

基本型

日時型

その他

boolean/java.lang.Boolean

java.util.Date

java.math.BigDecimal

byte/java.lang.Byte

java.util.Calendar

java.math.BigInteger

short/java.lang.Short

java.sql.Date

int/java.lang.Integer

java.sql.Time

long/java.lang.Long

java.sql.Timestamp

float/java.lang.Float

java.time.LocalDateTime

double/java.lang.Double

java.time.LocalDate

char/java.lang.Character

java.time.LocalTime

String

java.time.ZonedDateTime

列挙型

java.time.OffsetDateTime

java.time.OffsetTime

java.time.Year

java.time.YearMonth

java.time.MonthDay

表 - 2.2.2 対応しているクラスタイプ(サードパーティ)

Joda-Time

org.joda.time.LocalDateTime

org.joda.time.LocalDate

org.joda.time.LocalTime

org.joda.time.DateTime

org.joda.time.YearMonth

org.joda.time.MonthDay

2.3. 処理の流れ

本ライブラリは、Super CSVを拡張していますが、アノテーションを元に自動で組み立てた CellProcessor を使用しているため、CSVの処理部分は変わりません。

また、独自のアノテーションと対応するCellProcessorを呼び出すことが可能で、独自の拡張が容易にできます。

表 - 2.3.1 読み込み時の処理の流れ

順序

処理

説明

1

CellProcessorの組み立て

Beanに定義したアノテーションを元に、CellProcessorを組み立てます。
BeanMappingFactory [ JavaDoc ] で処理を行います。

2

CSVの読み込み

Super CSVの本来の機能を利用しています。
CsvPreference をカスタマイズすることで、
タブ区切りなどに対応できます。

3

変換処理

オブジェクトに変換前の文字列に対して、変換を行うCellProcessorを実行します。
トリミングなどの様々なアノテーションが準備されていますが、独自に追加もできます。
詳細は、「 値の変換方法 」を参照してください。

4

パース処理

文字列から各オブジェクトにパースを行うCellProcessorを実行します。
日時、数値などの書式を指定可能なアノテーションが準備されていますが、独自に追加もできます。
詳細は、「 書式の指定方法 」を参照してください。
PrintProcessor [ JavaDoc ] で処理を行います。

5

検証処理

オブジェクトに変換した値に対して、値の検証を行うCellProcessorを実行します。
様々なアノテーションが準備されていますが、独自に追加もできます。
また、外部ライブラリであるBean Validationも利用可能です。
詳細は、「 値の検証方法 」を参照してください。
表 - 2.3.2 書き込み時の処理の流れ

順序

処理

説明

1

CellProcessorの組み立て

Beanに定義したアノテーションを元に、CellProcessorを組み立てます。
BeanMappingFactory [ JavaDoc ] で処理を行います。

2

検証処理

オブジェクトに変換した値に対して、値の検証を行うCellProcessorを実行します。
様々なアノテーションが準備されていますが、独自に追加もできます。
また、外部ライブラリであるBean Validationも利用可能です。
詳細は、「 値の検証方法 」を参照してください。

3

フォーマット処理

オブジェクから文字列にフォーマットを行うCellProcessorを実行します。
日時、数値などの書式を指定可能なアノテーションが準備されていますが、独自に追加もできます。
詳細は、「 書式の指定方法 」を参照してください。
ParseProcessor [ JavaDoc ] で処理を行います。

4

変換処理

フォーマット後の文字列に対して、変換を行うCellProcessorを実行します。
トリミングなどの様々なアノテーションが準備されていますが、独自に追加もできます。
詳細は、「 値の変換方法 」を参照してください。

5

CSVの書き込み

Super CSVの本来の機能を利用しています。
CsvPreference をカスタマイズすることで、
タブ区切りなどに対応できます。