JavaでCSVの読み込み(その4)
welcome-to-the-world.hatenablog.jp
前回から間が空いてしまいましたが、前回作成したメソッドの簡単な動作確認をしようと思います。
Junitなどの単体テストツールを使用することもできるのですが面倒なのでテストメソッドから呼び出すだけにします…。
テスト用のBeanはこんな感じです。
import welcome.to.the.world.fw.annotations.CsvColumn; import welcome.to.the.world.fw.utils.StringUtils; 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; public String getColumn0() { return column0; } public void setColumn0(String column0) { this.column0 = column0; } public String getColumn1() { return column1; } public void setColumn1(String column1) { this.column1 = column1; } public String getColumn3() { return column3; } public void setColumn3(String column3) { this.column3 = column3; } public String getColumn2() { return column2; } public void setColumn2(String column2) { this.column2 = column2; } }
まずは「getFields()」メソッドの確認です。
テストコードはこんな感じで適当です。
import java.lang.reflect.Field; import welcome.to.the.world.fw.annotations.CsvColumn; import welcome.to.the.world.fw.utils.CsvUtils; public class TestMain { /** * テスト * @param args * @throws IllegalArgumentException * @throws IllegalAccessException */ public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException { // Beanのインスタンス生成 TestBean bean = new TestBean(); // getFieldsでBeanの項目をそのまま取得 Field[] fieldList= CsvUtils.getFields(bean); // Beanの項目数分ループ for(Field field : fieldList) { // 項目の属性を取得 CsvColumn annotation = field.getAnnotation(CsvColumn.class); System.out.println(field.getName() + ": Label :" + annotation.label() + " : Number : " + annotation.number()); } } }
column0: Label :col0 : Number : 0
column1: Label :col1 : Number : 1
column3: Label :col3 : Number : 3
column2: Label :col2 : Number : 2
column1: Label :col1 : Number : 1
column3: Label :col3 : Number : 3
column2: Label :col2 : Number : 2
Beanの項目を属性のnumberでソートしていないのでそのまま出力されます。
次に「getSortedFields()」メソッドの確認です。
テストコードはこんな感じです。(一部省略しています)
// getSortedFieldsで属性numberでソートしたBeanの項目を取得 Set<field> fieldList= CsvUtils.getSortedFields(bean); // Beanの項目数分ループ for(Field field : fieldList) { // 項目の属性を取得 CsvColumn annotation = field.getAnnotation(CsvColumn.class); System.out.println(field.getName() + ": Label :" + annotation.label() + " : Number : " + annotation.number()); }
column0: Label :col0 : Number : 0
column1: Label :col1 : Number : 1
column2: Label :col2 : Number : 2
column3: Label :col3 : Number : 3
column1: Label :col1 : Number : 1
column2: Label :col2 : Number : 2
column3: Label :col3 : Number : 3
次に「getLabelList()」メソッドの確認です。
テストコードはこんな感じです。(一部省略しています)
// getLabelListで属性numberでソートしたBeanのLabelを取得 List<string> fieldList= CsvUtils.getLabelList(bean); // Beanの項目数分ループ for(String field : fieldList) { // 項目の属性を取得 System.out.println(field.toString()); }
col0
col1
col2
col3
col1
col2
col3
最後に「getFieldNameList()」メソッドの確認です。
テストコードはこんな感じです。(一部省略しています)
// getFieldNameListで属性numberでソートした項目名を取得 ListfieldList= CsvUtils.getFieldNameList(bean); // Beanの項目数分ループ for(String field : fieldList) { // 項目の属性を取得 System.out.println(field.toString()); }
column0
column1
column2
column3
column1
column2
column3
正常系の1パターンしか紹介していませんが、ご容赦願います。
次回はCSVの読み込み部分を実装しようと思います。
ヘルバ様独自のコーディングで手法、動作は保証はできません^^;
その点はご了承ください。
その点はご了承ください。