======================================
機能概要
======================================
本ライブラリは、JavaのCSVファイルのライブラリ「 `Super CSV `_ 」に、
アノテーション機能を追加したものです。
アノテーションを利用することで、煩わしいCellProcessorの組み立てを簡略化ですることがきます。
----------------------------------------
前提条件
----------------------------------------
本ライブラリの前提条件を以下に示します。
Super CSV本体の前提のJavaは、ver.1.5以上ですが、本ライブラリは、Java 1.8以上が前提となります。
全て独自のCellProcessorを利用しているため、
Super CSVの拡張ライブラリ
「 `Super CSV Java 8 Extension `_ 」
「 `Super CSV Joda-Time Extension `_ 」
は必要ありません。
.. list-table:: 前提条件
:widths: 50 50
:header-rows: 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)
| ( `Hibernate Validator `_ )
- | ver.1.0/1.1/2.0
| (Hibernate Validator 4.x/5.x/6.x)
----------------------------------------
対応しているクラスタイプ
----------------------------------------
本ライブラリは、標準では以下のクラスタイプに対応しています。
独自のクラスタイプに対応することも可能で、その場合は、「 :doc:`format_custom` 」を参照してください。
.. list-table:: 対応しているクラスタイプ(Java標準)
:widths: 33 33 33
:header-rows: 1
* - 基本型
- 日時型
- その他
* - 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
-
.. list-table:: 対応しているクラスタイプ(サードパーティ)
:widths: 33 33 33
:header-rows: 1
* - 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
-
-
----------------------------------------
処理の流れ
----------------------------------------
本ライブラリは、Super CSVを拡張していますが、アノテーションを元に自動で組み立てた ``CellProcessor`` を使用しているため、CSVの処理部分は変わりません。
また、独自のアノテーションと対応するCellProcessorを呼び出すことが可能で、独自の拡張が容易にできます。
.. list-table:: 読み込み時の処理の流れ
:widths: 10 20 70
:header-rows: 1
* - 順序
- 処理
- 説明
* - 1
- CellProcessorの組み立て
- | Beanに定義したアノテーションを元に、CellProcessorを組み立てます。
| ``BeanMappingFactory`` [ `JavaDoc <../apidocs/com/github/mygreen/supercsv/builder/BeanMappingFactory.html>`_ ] で処理を行います。
* - 2
- CSVの読み込み
- | Super CSVの本来の機能を利用しています。
| `CsvPreference `_ をカスタマイズすることで、
| タブ区切りなどに対応できます。
* - 3
- 変換処理
- | オブジェクトに変換前の文字列に対して、変換を行うCellProcessorを実行します。
| トリミングなどの様々なアノテーションが準備されていますが、独自に追加もできます。
| 詳細は、「 :doc:`conversion` 」を参照してください。
* - 4
- パース処理
- | 文字列から各オブジェクトにパースを行うCellProcessorを実行します。
| 日時、数値などの書式を指定可能なアノテーションが準備されていますが、独自に追加もできます。
| 詳細は、「 :doc:`format` 」を参照してください。
| ``PrintProcessor`` [ `JavaDoc <../apidocs/com/github/mygreen/supercsv/cellprocessor/format/PrintProcessor.html>`_ ] で処理を行います。
* - 5
- 検証処理
- | オブジェクトに変換した値に対して、値の検証を行うCellProcessorを実行します。
| 様々なアノテーションが準備されていますが、独自に追加もできます。
| また、外部ライブラリであるBean Validationも利用可能です。
| 詳細は、「 :doc:`validation` 」を参照してください。
.. list-table:: 書き込み時の処理の流れ
:widths: 10 20 70
:header-rows: 1
* - 順序
- 処理
- 説明
* - 1
- CellProcessorの組み立て
- | Beanに定義したアノテーションを元に、CellProcessorを組み立てます。
| ``BeanMappingFactory`` [ `JavaDoc <../apidocs/com/github/mygreen/supercsv/builder/BeanMappingFactory.html>`_ ] で処理を行います。
* - 2
- 検証処理
- | オブジェクトに変換した値に対して、値の検証を行うCellProcessorを実行します。
| 様々なアノテーションが準備されていますが、独自に追加もできます。
| また、外部ライブラリであるBean Validationも利用可能です。
| 詳細は、「 :doc:`validation` 」を参照してください。
* - 3
- フォーマット処理
- | オブジェクから文字列にフォーマットを行うCellProcessorを実行します。
| 日時、数値などの書式を指定可能なアノテーションが準備されていますが、独自に追加もできます。
| 詳細は、「 :doc:`format` 」を参照してください。
| ``ParseProcessor`` [ `JavaDoc <../apidocs/com/github/mygreen/supercsv/cellprocessor/format/ParseProcessor.html>`_ ] で処理を行います。
* - 4
- 変換処理
- | フォーマット後の文字列に対して、変換を行うCellProcessorを実行します。
| トリミングなどの様々なアノテーションが準備されていますが、独自に追加もできます。
| 詳細は、「 :doc:`conversion` 」を参照してください。
* - 5
- CSVの書き込み
- | Super CSVの本来の機能を利用しています。
| `CsvPreference `_ をカスタマイズすることで、
| タブ区切りなどに対応できます。