import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import org.junit.Before;
import org.junit.Test;
import org.springframework.batch.item.file.LineMapper;
import org.springframework.batch.item.file.mapping.DefaultLineMapper;
import org.springframework.batch.item.file.mapping.FieldSetMapper;
import org.springframework.batch.item.file.transform.DelimitedLineTokenizer;
import org.springframework.batch.item.file.transform.FieldSet;
import sample.Player;
public class LineMapperTest {
Player expected = null;
String line = "이대호,3루수,32";
@Before
public void setUp(){
expected = new Player();
expected.setName("이대호");
expected.setPosition("3루수");
expected.setAge(32);
}
private void assertLineMapper(LineMapper<Player> mapper) throws Exception {
Player actural = mapper.mapLine(line, 0);
assertEquals(expected.getName(), actural.getName());
System.out.println(actural);
}
@Test
public void testCustomLineMapper() throws Exception{
LineMapper<Player> mapper = getPlayerLineMapper();
assertLineMapper(mapper);
}
@Test
public void testDefaultLineMapper() throws Exception{
DefaultLineMapper<Player> mapper = getPlayerLineMapperByDeafultImpl();
assertLineMapper(mapper);
}
private LineMapper<Player> getPlayerLineMapper() {
return new LineMapper<Player>(){
public Player mapLine(String line, int arg1) throws Exception {
StringTokenizer tokenizer = new StringTokenizer(line, ",");
List<Object> resultList = new ArrayList<Object>();
while(tokenizer.hasMoreElements()){
resultList.add(tokenizer.nextElement());
}
Player player = new Player();
player.setName(resultList.get(0).toString());
player.setPosition(resultList.get(1).toString());
player.setAge(Integer.parseInt(resultList.get(2).toString()));
return player;
}
};
}
private DefaultLineMapper<Player> getPlayerLineMapperByDeafultImpl() {
DefaultLineMapper<Player> mapper = new DefaultLineMapper<Player>();
mapper.setLineTokenizer(new DelimitedLineTokenizer(',') );
FieldSetMapper<Player> fieldSetMapper = new FieldSetMapper<Player>(){
public Player mapFieldSet(FieldSet fs) {
Player player = new Player();
player.setName(fs.readString(0));
player.setPosition(fs.readString(1));
player.setAge(fs.readInt(2));
return player;
}
};
mapper.setFieldSetMapper(fieldSetMapper);
return mapper;
}
}