public EntityFieldType buildFieldTypeByPath(String fieldPath, Optional<FieldTypeEnum> fieldTypeEnum) { Field field = findReferencedField(entityClass, fieldPath); JFleetFieldInspector fieldTypeInspector = new JFleetFieldInspector(field); EntityFieldType fieldType = fieldTypeInspector.getFieldType(); return fieldTypeEnum.map(type -> new EntityFieldType(type, fieldType.isPrimitive())).orElse(fieldType); }
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 timeStampTest() { EntityFieldType type = getField("timeStamp"); assertFalse(type.isPrimitive()); assertEquals(FieldTypeEnum.TIMESTAMP, type.getFieldType()); }
@Test public void sqlTimeStampTest() { EntityFieldType type = getField("sqlTimeStamp"); assertFalse(type.isPrimitive()); assertEquals(FieldTypeEnum.TIMESTAMP, type.getFieldType()); }
@Test public void localDateTimeTest() { EntityFieldType type = getField("localDateTime"); assertFalse(type.isPrimitive()); assertEquals(FieldTypeEnum.LOCALDATETIME, type.getFieldType()); }
@Test public void enumStringTest() { EntityFieldType type = getField("enumString"); assertFalse(type.isPrimitive()); assertEquals(FieldTypeEnum.ENUMSTRING, type.getFieldType()); }
@Test public void intPrimitiveTest() { EntityFieldType type = getField("intPrimitive"); assertTrue(type.isPrimitive()); assertEquals(FieldTypeEnum.INT, type.getFieldType()); }
@Test public void longObjectTest() { EntityFieldType type = getField("longObject"); assertFalse(type.isPrimitive()); assertEquals(FieldTypeEnum.LONG, type.getFieldType()); }
@Test public void floatPrimitiveTest() { EntityFieldType type = getField("floatPrimitive"); assertTrue(type.isPrimitive()); assertEquals(FieldTypeEnum.FLOAT, type.getFieldType()); }
@Test public void enumUnAnnotatedTest() { EntityFieldType type = getField("enumUnAnnotated"); assertFalse(type.isPrimitive()); assertEquals(FieldTypeEnum.ENUMORDINAL, type.getFieldType()); }
@Test public void enumOrdinalTest() { EntityFieldType type = getField("enumOrdinal"); assertFalse(type.isPrimitive()); assertEquals(FieldTypeEnum.ENUMORDINAL, type.getFieldType()); }
@Test public void booleanPrimitiveTest() { EntityFieldType type = getField("booleanPrimitive"); assertTrue(type.isPrimitive()); assertEquals(FieldTypeEnum.BOOLEAN, type.getFieldType()); }
@Test public void bytePrimitiveTest() { EntityFieldType type = getField("bytePrimitive"); assertTrue(type.isPrimitive()); assertEquals(FieldTypeEnum.BYTE, type.getFieldType()); }
@Test public void stringTest() { EntityFieldType type = getField("string"); assertFalse(type.isPrimitive()); assertEquals(FieldTypeEnum.STRING, type.getFieldType()); }
@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 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 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 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 testColumnChildEntity() { EntityInfoBuilder<SimpleEntity> builder = new EntityInfoBuilder<>(SimpleEntity.class, "simple_entity"); builder.addColumn("city_name", FieldTypeEnum.STRING, obj -> obj.getCity().getName()); 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(simple.getCity().getName(), column.getAccessor().apply(simple)); }