use of org.simpleflatmapper.csv.ParsingContextFactoryBuilder in project SimpleFlatMapper by arnaudroger.
the class CsvMapperCustomReaderTest method testCustomCsvReaderValueFactory.
@Test
public void testCustomCsvReaderValueFactory() throws IOException {
CsvMapper<Tuple2<String, String>> csvMapper = CsvMapperFactory.newInstance().addColumnDefinition(new Predicate<CsvColumnKey>() {
@Override
public boolean test(CsvColumnKey csvColumnKey) {
return true;
}
}, CsvColumnDefinition.customCellValueReaderFactoryDefinition(new CellValueReaderFactory() {
@SuppressWarnings("unchecked")
@Override
public <P> CellValueReader<P> getReader(Type propertyType, final int index, CsvColumnDefinition columnDefinition, ParsingContextFactoryBuilder builder) {
return (CellValueReader<P>) new CellValueReader<String>() {
@Override
public String read(char[] chars, int offset, int length, ParsingContext parsingContext) {
return "g" + index;
}
};
}
})).newMapper(Tuples.typeDef(String.class, String.class));
Tuple2<String, String> value = csvMapper.iterator(new StringReader("b0,b1\nc0,c1")).next();
assertEquals("g0", value.first());
assertEquals("g1", value.second());
}
use of org.simpleflatmapper.csv.ParsingContextFactoryBuilder in project SimpleFlatMapper by arnaudroger.
the class CellValueReaderFactoryImplTest method testCalendar.
@Test
public void testCalendar() throws ParseException {
String date = "20150128";
Date dd = new SimpleDateFormat("yyyyMMdd").parse(date);
Calendar cal = Calendar.getInstance();
cal.setTime(dd);
ParsingContextFactoryBuilder parsingContextFactoryBuilder = new ParsingContextFactoryBuilder(1);
CellValueReader<?> reader = cellValueReaderFactory.getReader(Calendar.class, 0, CsvColumnDefinition.dateFormatDefinition("yyyyMMdd"), parsingContextFactoryBuilder);
assertEquals(cal, reader.read(date.toCharArray(), 0, date.length(), parsingContextFactoryBuilder.newFactory().newContext()));
}
use of org.simpleflatmapper.csv.ParsingContextFactoryBuilder in project SimpleFlatMapper by arnaudroger.
the class CsvMapperCustomReaderFactoryTest method testCustomReaderFactory.
@Test
public void testCustomReaderFactory() throws IOException {
CsvMapper<DbObject> mapper = CsvMapperFactory.newInstance().failOnAsm(true).cellValueReaderFactory(new CellValueReaderFactory() {
@Override
public <P> CellValueReader<P> getReader(Type propertyType, int index, CsvColumnDefinition columnDefinition, ParsingContextFactoryBuilder builder) {
return new CellValueReader<P>() {
@SuppressWarnings("unchecked")
@Override
public P read(char[] chars, int offset, int length, ParsingContext parsingContext) {
return (P) "Hello!";
}
};
}
}).newBuilder(DbObject.class).addMapping("name").mapper();
DbObject bop = mapper.iterator(new StringReader("bop")).next();
assertEquals("Hello!", bop.getName());
}
use of org.simpleflatmapper.csv.ParsingContextFactoryBuilder in project SimpleFlatMapper by arnaudroger.
the class CsvColumnDefinitionTest method testComposition.
@Test
public void testComposition() {
TimeZone tz = TimeZone.getTimeZone("Europe/Brussels");
CellValueReaderFactory cellValueReaderFactory = new CellValueReaderFactory() {
@Override
public <P> CellValueReader<P> getReader(Type propertyType, int index, CsvColumnDefinition columnDefinition, ParsingContextFactoryBuilder contextFactoryBuilder) {
return null;
}
@Override
public String toString() {
return "CellValueReaderFactory";
}
};
final Predicate<PropertyMeta<?, ?>> appliesTo = ConstantPredicate.falsePredicate();
CsvColumnDefinition compose = CsvColumnDefinition.identity().addDateFormat("yyyyMM").addRename("blop").addCustomReader(new CellValueReader<Integer>() {
@Override
public Integer read(char[] chars, int offset, int length, ParsingContext parsingContext) {
return 3;
}
@Override
public String toString() {
return "CellValueReader";
}
}).addCustomCellValueReaderFactory(cellValueReaderFactory).addTimeZone(tz).addKey(appliesTo);
assertEquals("blop", compose.rename(new CsvColumnKey("bar", -1)).getName());
assertEquals("blop", CsvColumnDefinition.renameDefinition("blop").rename(new CsvColumnKey("bar", -1)).getName());
assertArrayEquals(new String[] { "yyyyMM" }, compose.dateFormats());
assertEquals(new Integer(3), compose.getCustomReader().read(null, 0, 0, null));
assertEquals(cellValueReaderFactory, compose.getCustomCellValueReaderFactory());
assertEquals(tz, compose.getTimeZone());
assertEquals(tz, CsvColumnDefinition.timeZoneDefinition(tz).getTimeZone());
assertTrue(compose.hasCustomSourceFrom(Object.class));
assertFalse(compose.ignore());
assertEquals(Integer.class, compose.getCustomSourceReturnTypeFrom(Object.class));
assertTrue(CsvColumnDefinition.identity().addIgnore().ignore());
assertTrue(compose.isKey());
assertTrue(CsvColumnDefinition.key(appliesTo).isKey());
assertSame(appliesTo, compose.keyAppliesTo());
final String toString = compose.addIgnore().toString();
System.out.println("toString = " + toString);
}
Aggregations