package org.simpleflatmapper.csv.test;
import org.junit.Test;
import org.simpleflatmapper.csv.CellValueReader;
import org.simpleflatmapper.csv.CsvColumnDefinition;
import org.simpleflatmapper.csv.CsvMapper;
import org.simpleflatmapper.csv.CsvMapperBuilder;
import org.simpleflatmapper.csv.ParsingContext;
import org.simpleflatmapper.test.beans.Db1DeepObject;
import org.simpleflatmapper.test.beans.Db1DeepPartialObject;
import org.simpleflatmapper.test.beans.DbFinal1DeepObject;
import org.simpleflatmapper.test.jdbc.DbHelper;
import org.simpleflatmapper.reflect.ReflectionService;
import org.simpleflatmapper.util.ListCollector;
import java.io.Reader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class CsvMapperBuilderSubObjectTest {
@Test
public void testMapDbObjectWithCustomReader() throws Exception {
CsvMapperBuilder<Db1DeepObject> builder = new CsvMapperBuilder<Db1DeepObject>(Db1DeepObject.class, ReflectionService.newInstance(false));
CsvColumnDefinition columnDefinition = CsvColumnDefinition.customReaderDefinition(new CellValueReader<String>() {
@Override
public String read(char[] chars, int offset, int length, ParsingContext parsingContext) {
return "cv1";
}
});
builder.addMapping("db_Object_name", columnDefinition);
CsvMapper<Db1DeepObject> mapper = builder.mapper();
Db1DeepObject v1 = mapper.iterator(new StringReader("v1")).next();
assertEquals("cv1", v1.getDbObject().getName());
}
@Test
public void testMapDbObject() throws Exception {
CsvMapperBuilder<Db1DeepObject> builder = new CsvMapperBuilder<Db1DeepObject>(Db1DeepObject.class, ReflectionService.newInstance(false));
addDbObjectFields(builder);
CsvMapper<Db1DeepObject> mapper = builder.mapper();
List<Db1DeepObject> list = mapper.forEach(db1deepObjectCsvReader(), new ListCollector<Db1DeepObject>()).getList();
assertEquals(1, list.size());
Db1DeepObject o = list.get(0);
assertEquals(1234, o.getId());
assertEquals("val!", o.getValue());
DbHelper.assertDbObjectMapping(o.getDbObject());
}
@Test
public void testMapDbFinalObject() throws Exception {
CsvMapperBuilder<DbFinal1DeepObject> builder = new CsvMapperBuilder<DbFinal1DeepObject>(DbFinal1DeepObject.class);
addDbObjectFields(builder);
CsvMapper<DbFinal1DeepObject> mapper = builder.mapper();
List<DbFinal1DeepObject> list = mapper.forEach(db1deepObjectCsvReader(), new ListCollector<DbFinal1DeepObject>()).getList();
assertEquals(1, list.size());
DbFinal1DeepObject o = list.get(0);
assertEquals(1234, o.getId());
assertEquals("val!", o.getValue());
DbHelper.assertDbObjectMapping(o.getDbObject());
}
@Test
public void testMapDbPartialObject() throws UnsupportedEncodingException, Exception {
CsvMapperBuilder<Db1DeepPartialObject> builder = new CsvMapperBuilder<Db1DeepPartialObject>(Db1DeepPartialObject.class);
addDbObjectFields(builder);
CsvMapper<Db1DeepPartialObject> mapper = builder.mapper();
List<Db1DeepPartialObject> list = mapper.forEach(db1deepObjectCsvReader(), new ListCollector<Db1DeepPartialObject>()).getList();
assertEquals(1, list.size());
Db1DeepPartialObject o = list.get(0);
assertEquals(1234, o.getId());
assertEquals("val!", o.getValue());
DbHelper.assertDbObjectMapping(o.getDbObject());
}
public static Reader db1deepObjectCsvReader() throws UnsupportedEncodingException {
return new StringReader("1234,val!,1,name 1,name1@mail.com,2014-03-04 11:10:03,2,type4");
}
public void addDbObjectFields(CsvMapperBuilder<?> builder) {
builder
.addMapping("id")
.addMapping("value")
.addMapping("db_Object_id")
.addMapping("db_Object_name")
.addMapping("db_Object_email")
.addMapping("db_Object_creationTime")
.addMapping("db_Object_typeOrdinal")
.addMapping("db_Object_typeName");
}
}