JavaでCSVの読み込み(その2)
welcome-to-the-world.hatenablog.jp
まずは「4.1行は任意のBeanクラスで定義される」を実現するためにBeanクラスの項目に属性が付けれるようにしようと思います。
「java.lang.annotation」を使用してBeanクラスの各項目に属性として項目順序、項目名を付けれるようにします。
項目順序はCSVファイルの列の順序、項目名はヘッダーを想定しています。
import java.lang.annotation.*; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface CsvColumn { /** 項目順序 */ int number(); /** 項目名(ヘッダー用) */ String label(); }
このannotationを何に適用するかを@Targetで指定します。
今回はBeanクラスの項目に適用するのでElementType.FIELDを指定します。
@Retentionでこのannotationがどの段階まで保持されるかを指定します。
今回はプログラム実行時まで保持させたいのでRetentionPolicy.RUNTIMEを指定します。
このannotationを利用してBeanクラスの項目に属性を付与します。
サンプル
public class TestBean { @CsvColumn(number=0, label="col0") String column0 = StringUtils.EMPTY; @CsvColumn(number=1, label="col1") String column1 = StringUtils.EMPTY; @CsvColumn(number=3, label="col3") String column3 = StringUtils.EMPTY; @CsvColumn(number=2, label="col2") String column2 = StringUtils.EMPTY; }
numberは列をソートする際に使用します。
列0、列1、列2、列3
col0、col1、col2、col3
col0、col1、col2、col3
のようにCSVの列の順序に合わせるためnumberを定義します。
次回は読み込み部分の部品から実装したいと思います。
ヘルバ様独自のコーディングで手法、動作は保証はできません^^;
その点はご了承ください。
その点はご了承ください。