jp.terasoluna.fw.ex.unit.io.impl
クラス CsvSource<T>

java.lang.Object
  上位を拡張 jp.terasoluna.fw.ex.unit.io.impl.AbstractInputSource<T>
      上位を拡張 jp.terasoluna.fw.ex.unit.io.impl.CsvSource<T>
すべての実装されたインタフェース:
InputSource<T>

public class CsvSource<T>
extends AbstractInputSource<T>

CSVファイルから入力ソースオブジェクトを生成します。
コンストラクタまたはsetterにて以下のパラメータを指定します。またAbstractInputSource で設定可能なパラメータも指定できます。

パラメータ名 説明 設定箇所 必須
file CSVファイル名または、java.io.Fileオブジェクト オブジェクト コンストラクタ
clazz CSVからマッピングするBeanのクラス コンストラクタ
hasHeader 読み込むCSVファイルにヘッダ行があるかどうか。 デフォルトはtrueであり、先頭行を読み込んでheader(Stringの配列)を作成します。 ヘッダ行がないCSVファイルを読み込む場合、hasHeaderをfalseにした上で setHeader(String[]) により独自にheaderを設定してください。この場合、一行目からデータ部として扱われます。 setter  
lineSplitter CVSデータ一行分の文字列をStringの配列にするための処理。デフォルトではDefaultLineSplitter を使用して、半角カンマ区切りで配列を作成します。 setter  
populator CVSデータ一行分のStringの配列からclazzで設定したクラスのオブジェクトを生成する処理。デフォルトでは DefaultPopulatorを使用します。 setter  
encoding CSVファイルのエンコーディング。デフォルトはMS932です。 setter  
 以下の例にて使用法を説明します。
 
 person.csvの内容を以下とします。
 
 ID,NAME,ADDRESS
 1,田中,東京
 2,鈴木,大阪
 3,山田,神奈川
 4,山本,福岡
 
 これに対してマッピングするクラスを以下とします。
 
 public class Person {
   private Integer id;
   private Sring name;
   private String address;
   // setter/getterは略
 }
 
 【データ比較機能】
 
 業務処理の結果としてPersonクラスのリストが作成される際に、このCSVの内容が期待値となる場合、次のように比較することができます。
 
 // CSVファイルから入力ソースを作成する
 CsvSource<Person> source = new CsvSource<Person>("person.csv", Person.class);
 // 業務処理の結果
 List<Person> result = ...;
 // 業務処理の結果とCSVの内容を比較する
 AssertUtils.assertInputEquals(source, result);
 
 【データ保存機能】
  // 試験データをPersonテーブルに保存します
  source.to(new DbTarget<Person>(jdbcTemplate, Person.class));
 


フィールドの概要
 
クラス jp.terasoluna.fw.ex.unit.io.impl.AbstractInputSource から継承されたフィールド
equalStrategy, header, headerMap
 
コンストラクタの概要
CsvSource(File input, Class<T> clazz)
          コンストラクタ。
CsvSource(String path, Class<T> clazz)
          コンストラクタ。
 
メソッドの概要
 Iterator<T> getIterator()
          入力ソースからイテレータを作成します。
protected  T populate(String line)
           
 void setEncoding(String encoding)
           
 void setHasHeader(boolean hasHeader)
           
 void setHeader(String[] header)
           
 void setLineSplitter(LineSplitter lineSplitter)
           
 void setPopulator(Populator<T> populate)
           
 
クラス jp.terasoluna.fw.ex.unit.io.impl.AbstractInputSource から継承されたメソッド
compare, getEqualStrategy, getHeader, getHeaderMap, setEqualStrategy, setHeaderMap, to
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

CsvSource

public CsvSource(File input,
                 Class<T> clazz)
コンストラクタ。

パラメータ:
input - CSVファイル
clazz - マッピングするクラス

CsvSource

public CsvSource(String path,
                 Class<T> clazz)
          throws UTRuntimeException
コンストラクタ。
 与えられたCSVファイルパスがクラスパス上に存在する場合は、そのファイルを使用します。
 そうでない場合は与えられたCSVファイルパスをFileクラスのコンストラクタに渡して
 Fileオブジェクトを作成します。
 

パラメータ:
path - CSVファイルパス名
clazz - マッピングするクラス
例外:
UTRuntimeException - CSVファイルパスからのFileオブジェクトの作成に失敗した場合
メソッドの詳細

populate

protected T populate(String line)

getIterator

public Iterator<T> getIterator()
インタフェース InputSource の記述:
入力ソースからイテレータを作成します。

戻り値:
イテレータ

setHasHeader

public void setHasHeader(boolean hasHeader)

setPopulator

public void setPopulator(Populator<T> populate)

setLineSplitter

public void setLineSplitter(LineSplitter lineSplitter)
パラメータ:
lineSplitter - セットする lineSplitter

setEncoding

public void setEncoding(String encoding)
パラメータ:
encoding - セットする encoding

setHeader

public void setHeader(String[] header)
オーバーライド:
クラス AbstractInputSource<T> 内の setHeader


Copyright © 2011. All Rights Reserved.