ヘルバ様の日常

テストを兼ねて色々試してみるブログです

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

 

 

 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

 

 

次に「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

 

 

最後に「getFieldNameList()」メソッドの確認です。

 

 

テストコードはこんな感じです。(一部省略しています)

 

// getFieldNameListで属性numberでソートした項目名を取得
List fieldList= CsvUtils.getFieldNameList(bean);

// Beanの項目数分ループ
for(String field : fieldList) {
	// 項目の属性を取得
	System.out.println(field.toString());
}

 

column0
column1
column2
column3

 

 

正常系の1パターンしか紹介していませんが、ご容赦願います。

 

 

次回はCSVの読み込み部分を実装しようと思います。 

 

ヘルバ様独自のコーディングで手法、動作は保証はできません^^;
その点はご了承ください。