public CsvConfiguration<T> build() { CsvConfiguration<T> config = new CsvConfiguration<>(clazz); config.entityInfo = entityInfo; config.charset = charset; config.typeSerializer = typeSerializer; config.header = header; config.fieldSeparator = fieldSeparator; config.textDelimiter = textDelimiter; config.alwaysDelimitText = alwaysDelimitText; config.lineDelimiter = lineDelimiter; return config; }
public CsvWriter(Class<T> clazz) { this(new CsvConfiguration<>(clazz)); }
@Test public void emptyCollectionOnlyGeneratesHeader() throws IOException { CsvConfiguration<SomeEntity> config = new CsvConfiguration<>(createBuilderForSomeEntity().build()); String result = writeCsvToString(config, Collections.emptyList()); assertEquals("name,age" + ls, result); }
@Test public void columnsMantainsDeclaredOrderInClass() throws IOException { CsvConfiguration<AnnotatedEntity> config = new CsvConfiguration<>(AnnotatedEntity.class); Address address = new Address("221B Baker Street", "London"); String result = writeCsvToString(config, new AnnotatedEntity("Sherlock", 63, address)); assertEquals("title,duration,street,city" + ls + "Sherlock,63,221B Baker Street,London" + ls, result); }
@Test public void elementIsAfterHeader() throws IOException { CsvConfiguration<SomeEntity> config = new CsvConfiguration<>(createBuilderForSomeEntity().build()); String result = writeCsvToString(config, new SomeEntity("John", 10)); assertEquals("name,age" + ls + "John,10" + ls, result); }
@Test public void columnsMantainsDeclaredOrder() throws IOException { EntityInfoBuilder<SomeEntity> entityBuilder = new EntityInfoBuilder<>(SomeEntity.class); entityBuilder.addColumn("age", FieldTypeEnum.INT, SomeEntity::getAge); entityBuilder.addColumn("name", FieldTypeEnum.STRING, SomeEntity::getName); CsvConfiguration<SomeEntity> config = new CsvConfiguration<>(entityBuilder.build()); String result = writeCsvToString(config, new SomeEntity("John", 10)); assertEquals("age,name" + ls + "10,John" + ls, result); }
@Test public void canCreateSyntheticColumns() throws IOException { EntityInfoBuilder<SomeEntity> entityBuilder = new EntityInfoBuilder<>(SomeEntity.class); entityBuilder.addFields("name", "age"); entityBuilder.addColumn("adult", FieldTypeEnum.BOOLEAN, e -> e.getAge() >= 18); CsvConfiguration<SomeEntity> config = new CsvConfiguration<>(entityBuilder.build()); String result = writeCsvToString(config, new SomeEntity("John", 10), new SomeEntity("Amanda", 34)); assertEquals("name,age,adult" + ls + "John,10,false" + ls + "Amanda,34,true" + ls, result); }