use of org.simpleflatmapper.csv.ParsingContext 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.ParsingContext in project SimpleFlatMapper by arnaudroger.
the class CsvMapperCellHandlerImpAsmInstantiatorTest method testInstantiateStringWithCharArray.
@SuppressWarnings("unchecked")
@Test
public void testInstantiateStringWithCharArray() throws Exception {
HashMap<Parameter, Getter<? super CsvMapperCellHandlerImpl<String>, ?>> injections = new HashMap<Parameter, Getter<? super CsvMapperCellHandlerImpl<String>, ?>>();
Parameter parameter = new Parameter(0, "arg0", char[].class);
DelayedGetter delayedGetter = new DelayedGetter(0);
injections.put(parameter, delayedGetter);
Class<CsvMapperCellHandlerImpl<String>> source = (Class) CsvMapperCellHandlerImpl.class;
Instantiator<CsvMapperCellHandlerImpl<String>, String> instantiator = factory.createInstantiator(source, new ExecutableInstantiatorDefinition(String.class.getConstructor(char[].class), parameter), injections, true);
DelayedCellSetterImpl delayedCellSetter = new DelayedCellSetterImpl(null, new CellValueReader() {
@Override
public char[] read(char[] chars, int offset, int length, ParsingContext parsingContext) {
return new char[] { 'h' };
}
});
delayedCellSetter.set(null, 0, 0, null);
CsvMapperCellHandlerImpl targetSettersImpl = new CsvMapperCellHandlerImpl(instantiator, new DelayedCellSetter[] { delayedCellSetter }, new CellSetter[] {}, null, null, null);
Assert.assertNotNull(instantiator.newInstance(targetSettersImpl));
}
use of org.simpleflatmapper.csv.ParsingContext 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);
}
use of org.simpleflatmapper.csv.ParsingContext in project SimpleFlatMapper by arnaudroger.
the class CsvMapperBuilderSubObjectTest method testMapDbObjectWithCustomReader.
@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());
}
Aggregations