public EntityInfoBuilder<T> addFields(String... fieldPaths) { for (String fieldPath : fieldPaths) { addField(fieldPath); } return this; }
public EntityInfoBuilder<T> addField(String fieldPath) { String columnName = fieldPath.toLowerCase().replaceAll("\\.", "_"); return addField(fieldPath, columnName, false); }
public EntityInfoBuilder<T> addField(String fieldPath, String columnName, FieldTypeEnum fieldTypeEnum, boolean identityId) { EntityFieldType fieldType = entityInspector.buildFieldTypeByPath(fieldPath, Optional.of(fieldTypeEnum)); return addField(fieldPath, columnName, fieldType, identityId); }
public EntityInfoBuilder<T> addField(String fieldPath, String columnName, boolean identityId) { EntityFieldType fieldType = entityInspector.buildFieldTypeByPath(fieldPath, Optional.empty()); return addField(fieldPath, columnName, fieldType, identityId); }
private static EntityInfo configureEntityMapping() { EntityInfoBuilder<Trip> entityInfo = new EntityInfoBuilder<>(Trip.class); entityInfo.addField("bikeId"); entityInfo.addField("tripduration"); entityInfo.addColumn("startdate", FieldTypeEnum.STRING, trip -> toDate(trip.getStarttime())); entityInfo.addField("startStationId"); entityInfo.addColumn("stopdate", FieldTypeEnum.STRING, trip -> toDate(trip.getStoptime())); entityInfo.addField("endStationId"); entityInfo.addField("userType"); entityInfo.addColumn("age", FieldTypeEnum.INT, trip -> getAge(trip.getBirthYear())); entityInfo.addColumn("gender", FieldTypeEnum.STRING, trip -> getGender(trip.getGender())); return entityInfo.build(); }
public EntityInfoBuilder<T> addField(String fieldPath, String columnName, EntityFieldType fieldType, boolean identityId) { EntityFieldType type = new EntityFieldType(fieldType.getFieldType(), fieldType.isPrimitive(), identityId); return addField(new FieldInfo(fieldPath, columnName, type)); }
@Test public void testNonExistentField() { EntityInfoBuilder<SimpleEntity> builder = new EntityInfoBuilder<>(SimpleEntity.class, "simple_entity"); assertThrows(NoSuchFieldException.class, () -> { builder.addField("noField", "someName"); }); }
public void childColumnNamesCollisionMustBeDisambiguated() { EntityInfoBuilder<Collision> builder = new EntityInfoBuilder<>(Collision.class, "collision_entity"); builder.addField("city_name", "city_name_main"); builder.addField("city.name"); EntityInfoHelper entityInfo = new EntityInfoHelper(builder); assertNotNull(entityInfo.findColumn("city_name_main")); assertNotNull(entityInfo.findColumn("city_name")); }
@Test public void testNonExistentFieldInHierarchy() { EntityInfoBuilder<SimpleEntityEx> builder = new EntityInfoBuilder<>(SimpleEntityEx.class, "simple_entity"); assertThrows(NoSuchFieldException.class, () -> { builder.addField("noField", "someName"); }); }
@Test public void testImplicitColumnName() { EntityInfoBuilder<SimpleEntity> builder = new EntityInfoBuilder<>(SimpleEntity.class, "simple_entity"); builder.addField("birthDay"); EntityInfoHelper entityInfo = new EntityInfoHelper(builder); ColumnInfo column = entityInfo.findColumn("birthday"); assertEquals("birthday", column.getColumnName()); assertEquals(simple.getBirthDay(), column.getAccessor().apply(simple)); }
@Test public void testImplicitColumnNameComposed() { EntityInfoBuilder<SimpleEntity> builder = new EntityInfoBuilder<>(SimpleEntity.class, "simple_entity"); builder.addField("city.name"); EntityInfoHelper entityInfo = new EntityInfoHelper(builder); ColumnInfo column = entityInfo.findColumn("city_name"); assertEquals("city_name", column.getColumnName()); assertEquals(city.getName(), column.getAccessor().apply(simple)); }
@Test public void testExplicitDateField() { EntityInfoBuilder<SimpleEntity> builder = new EntityInfoBuilder<>(SimpleEntity.class, "simple_entity"); builder.addField("birthDay", "birthday", FieldTypeEnum.DATE); EntityInfoHelper entityInfo = new EntityInfoHelper(builder); ColumnInfo column = entityInfo.findColumn("birthday"); assertEquals("birthday", column.getColumnName()); assertEquals(FieldTypeEnum.DATE, column.getFieldType().getFieldType()); assertFalse(column.getFieldType().isPrimitive()); assertEquals(simple.getBirthDay(), column.getAccessor().apply(simple)); }
@Test public void testExplicitEnumField() { EntityInfoBuilder<SimpleEntity> builder = new EntityInfoBuilder<>(SimpleEntity.class, "simple_entity"); builder.addField("floor", "floor", FieldTypeEnum.ENUMSTRING); EntityInfoHelper entityInfo = new EntityInfoHelper(builder); ColumnInfo column = entityInfo.findColumn("floor"); assertEquals("floor", column.getColumnName()); assertEquals(FieldTypeEnum.ENUMSTRING, column.getFieldType().getFieldType()); assertFalse(column.getFieldType().isPrimitive()); assertEquals(simple.getFloor(), column.getAccessor().apply(simple)); }
@Test public void testExistentField() { EntityInfoBuilder<SimpleEntity> builder = new EntityInfoBuilder<>(SimpleEntity.class, "simple_entity"); builder.addField("name", "name"); EntityInfoHelper entityInfo = new EntityInfoHelper(builder); ColumnInfo column = entityInfo.findColumn("name"); assertEquals("name", column.getColumnName()); assertEquals(FieldTypeEnum.STRING, column.getFieldType().getFieldType()); assertFalse(column.getFieldType().isPrimitive()); assertEquals(simple.getName(), column.getAccessor().apply(simple)); }
@Test public void testAnnotatedEnumField() { EntityInfoBuilder<SimpleEntityEx> builder = new EntityInfoBuilder<>(SimpleEntityEx.class, "simple_entity"); builder.addField("order", "order"); EntityInfoHelper entityInfo = new EntityInfoHelper(builder); ColumnInfo column = entityInfo.findColumn("order"); assertEquals("order", column.getColumnName()); assertEquals(FieldTypeEnum.ENUMORDINAL, column.getFieldType().getFieldType()); assertFalse(column.getFieldType().isPrimitive()); assertEquals(simpleEx.getOrder(), column.getAccessor().apply(simpleEx)); }
@Test public void testExistentFieldInHierarchy() { EntityInfoBuilder<SimpleEntityEx> builder = new EntityInfoBuilder<>(SimpleEntityEx.class, "simple_entity"); builder.addField("height", "height"); EntityInfoHelper entityInfo = new EntityInfoHelper(builder); ColumnInfo column = entityInfo.findColumn("height"); assertEquals("height", column.getColumnName()); assertEquals(FieldTypeEnum.INT, column.getFieldType().getFieldType()); assertTrue(column.getFieldType().isPrimitive()); assertEquals(simpleEx.getHeight(), column.getAccessor().apply(simpleEx)); }
@Test public void testAnnotatedDateField() { EntityInfoBuilder<SimpleEntityEx> builder = new EntityInfoBuilder<>(SimpleEntityEx.class, "simple_entity"); builder.addField("created", "created"); EntityInfoHelper entityInfo = new EntityInfoHelper(builder); ColumnInfo column = entityInfo.findColumn("created"); assertEquals("created", column.getColumnName()); assertEquals(FieldTypeEnum.TIMESTAMP, column.getFieldType().getFieldType()); assertFalse(column.getFieldType().isPrimitive()); assertEquals(simpleEx.getCreated(), column.getAccessor().apply(simpleEx)); }
@Test public void testExistentPathField() { EntityInfoBuilder<SimpleEntity> builder = new EntityInfoBuilder<>(SimpleEntity.class, "simple_entity"); builder.addField("city.name", "city_name"); EntityInfoHelper entityInfo = new EntityInfoHelper(builder); ColumnInfo column = entityInfo.findColumn("city_name"); assertEquals("city_name", column.getColumnName()); assertEquals(FieldTypeEnum.STRING, column.getFieldType().getFieldType()); assertFalse(column.getFieldType().isPrimitive()); assertEquals(city.getName(), column.getAccessor().apply(simple)); }
@Test public void accessorCanChangeType() throws IOException { EntityInfoBuilder<SomeEntity> entityBuilder = new EntityInfoBuilder<>(SomeEntity.class); entityBuilder.addField("name"); entityBuilder.addColumn("age", FieldTypeEnum.STRING, e -> e.getAge() + " years"); entityBuilder.addColumn("adult", FieldTypeEnum.STRING, e -> e.getAge() >= 18 ? "Si" : "No"); Builder<SomeEntity> config = new Builder<>(entityBuilder.build()); String result = writeCsvToString(config.build(), new SomeEntity("John", 10), new SomeEntity("Amanda", 34)); assertEquals("name,age,adult" + ls + "John,10 years,No" + ls + "Amanda,34 years,Si" + ls, result); }