private EntityFieldType getField(String fieldName) { return fields.stream().filter(f -> f.getFieldName().equals(fieldName)).findFirst().get().getFieldType(); } }
public EntityInfo inspect() { JpaFieldsInspector fieldsInspector = new JpaFieldsInspector(); List<FieldInfo> fieldsFromClass = fieldsInspector.getFieldsFromClass(entityClass); EntityFieldAccesorFactory factory = new EntityFieldAccesorFactory(); List<ColumnInfo> columns = fieldsFromClass.stream().map(field -> { Function<Object, Object> accessor = factory.getAccessor(entityClass, field.getFieldName()); return new ColumnInfo(field.getColumnName(), field.getFieldType(), accessor); }).collect(Collectors.toList()); return new EntityInfo(entityClass, getTableName(), columns); }
public EntityInfoBuilder<T> addField(FieldInfo fieldInfo) { validate(fieldInfo.getColumnName()); Function<Object, Object> accessor = accesorFactory.getAccessor(entityClass, fieldInfo.getFieldName()); return addColumn(new ColumnInfo(fieldInfo.getColumnName(), fieldInfo.getFieldType(), accessor)); }
@Test public void nonIdentifiedIsNotMapped() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(Foo.class); assertEquals(1, fields.size()); FieldInfo id = fields.get(0); assertEquals(FieldTypeEnum.LONG, id.getFieldType().getFieldType()); assertEquals("id", id.getColumnName()); }
@Test public void joinTableIsNotMapped() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(Bar.class); assertEquals(1, fields.size()); FieldInfo id = fields.get(0); assertEquals(FieldTypeEnum.STRING, id.getFieldType().getFieldType()); assertEquals("uuid", id.getColumnName()); }
@Test public void inspectFieldType() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(SimpleEntityAnnotated.class); assertEquals(1, fields.size()); FieldInfo field = fields.get(0); EntityFieldType fieldType = field.getFieldType(); assertFalse(fieldType.isPrimitive()); assertEquals(FieldTypeEnum.STRING, fieldType.getFieldType()); }
@Test public void inspectEntitySequenceId() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(EntityWithGeneratedSequenceId.class); assertEquals(2, fields.size()); FieldInfo field = fields.get(0); EntityFieldType fieldType = field.getFieldType(); assertFalse(fieldType.isPrimitive()); assertEquals(FieldTypeEnum.LONG, fieldType.getFieldType()); assertFalse(fieldType.isIdentityId()); }
@Test public void inspectEntityIdetityId() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(EntityWithGeneratedIdentityId.class); assertEquals(2, fields.size()); FieldInfo field = fields.get(0); EntityFieldType fieldType = field.getFieldType(); assertFalse(fieldType.isPrimitive()); assertEquals(FieldTypeEnum.LONG, fieldType.getFieldType()); assertTrue(fieldType.isIdentityId()); }
@Test public void inspectAnEntityWithManyToOneRelationship() { EntityInspectHelper entityInfo = new EntityInspectHelper(Sku.class); FieldInfo id = entityInfo.findField("id"); assertEquals(FieldTypeEnum.LONG, id.getFieldType().getFieldType()); assertEquals("id", id.getColumnName()); FieldInfo reference = entityInfo.findField("reference"); assertEquals(FieldTypeEnum.STRING, reference.getFieldType().getFieldType()); assertEquals("reference", reference.getColumnName()); FieldInfo street = entityInfo.findField("product.id"); assertEquals(FieldTypeEnum.LONG, street.getFieldType().getFieldType()); assertEquals("product_id", street.getColumnName()); }
@Test public void inspectEmbeddedIdEntity() { EntityInspectHelper entityInfo = new EntityInspectHelper(SomeClass.class); FieldInfo someId = entityInfo.findField("key.someId"); assertEquals(FieldTypeEnum.STRING, someId.getFieldType().getFieldType()); assertEquals("someId", someId.getColumnName()); FieldInfo otherId = entityInfo.findField("key.otherId"); assertEquals(FieldTypeEnum.LONG, otherId.getFieldType().getFieldType()); assertEquals("otherId", otherId.getColumnName()); FieldInfo someValue = entityInfo.findField("someValue"); assertEquals(FieldTypeEnum.STRING, someValue.getFieldType().getFieldType()); assertEquals("someValue", someValue.getColumnName()); }
@Test public void inspectAnEntityWithOneToOneRelationShip() { EntityInspectHelper entityInfo = new EntityInspectHelper(Product.class); FieldInfo id = entityInfo.findField("id"); assertEquals(FieldTypeEnum.LONG, id.getFieldType().getFieldType()); assertEquals("id", id.getColumnName()); FieldInfo name = entityInfo.findField("name"); assertEquals(FieldTypeEnum.STRING, name.getFieldType().getFieldType()); assertEquals("name", name.getColumnName()); FieldInfo street = entityInfo.findField("product.id"); assertEquals(FieldTypeEnum.LONG, street.getFieldType().getFieldType()); assertEquals("product_id", street.getColumnName()); }
@Test public void inspectAnEntityWithOneToOneJoinColumn() { EntityInspectHelper entityInfo = new EntityInspectHelper(ProductJoin.class); FieldInfo id = entityInfo.findField("id"); assertEquals(FieldTypeEnum.LONG, id.getFieldType().getFieldType()); assertEquals("id", id.getColumnName()); FieldInfo street = entityInfo.findField("productRef.id"); assertEquals(FieldTypeEnum.LONG, street.getFieldType().getFieldType()); assertEquals("ref_id_product_fk", street.getColumnName()); }
@Test public void inspectEmbeddedIdEntityWithOverride() { EntityInspectHelper entityInfo = new EntityInspectHelper(SomeClassWithOverride.class); FieldInfo someId = entityInfo.findField("key.someId"); assertEquals(FieldTypeEnum.STRING, someId.getFieldType().getFieldType()); assertEquals("id_string", someId.getColumnName()); FieldInfo otherId = entityInfo.findField("key.otherId"); assertEquals(FieldTypeEnum.LONG, otherId.getFieldType().getFieldType()); assertEquals("id_long", otherId.getColumnName()); FieldInfo someValue = entityInfo.findField("someValue"); assertEquals(FieldTypeEnum.STRING, someValue.getFieldType().getFieldType()); assertEquals("value", someValue.getColumnName()); }
@Test public void inspectAnEntityWithManyToOneJoinColumn() { EntityInspectHelper entityInfo = new EntityInspectHelper(Foo.class); FieldInfo id = entityInfo.findField("id"); assertEquals(FieldTypeEnum.LONG, id.getFieldType().getFieldType()); assertEquals("id", id.getColumnName()); FieldInfo street = entityInfo.findField("productRef.id"); assertEquals(FieldTypeEnum.LONG, street.getFieldType().getFieldType()); assertEquals("foo_id_product_fk", street.getColumnName()); }
@Test public void inspectEmbeddedEntity() { EntityInspectHelper entityInfo = new EntityInspectHelper(Person.class); FieldInfo id = entityInfo.findField("id"); assertEquals(FieldTypeEnum.LONG, id.getFieldType().getFieldType()); assertEquals("id", id.getColumnName()); FieldInfo name = entityInfo.findField("name"); assertEquals(FieldTypeEnum.STRING, name.getFieldType().getFieldType()); assertEquals("name", name.getColumnName()); FieldInfo street = entityInfo.findField("address.street"); assertEquals(FieldTypeEnum.STRING, street.getFieldType().getFieldType()); assertEquals("street", street.getColumnName()); FieldInfo city = entityInfo.findField("address.city"); assertEquals(FieldTypeEnum.STRING, city.getFieldType().getFieldType()); assertEquals("city", city.getColumnName()); }
@Test public void inspectEmbeddedEntityWithAttributeOverrides() { EntityInspectHelper entityInfo = new EntityInspectHelper(Company.class); FieldInfo id = entityInfo.findField("id"); assertEquals(FieldTypeEnum.LONG, id.getFieldType().getFieldType()); assertEquals("id", id.getColumnName()); FieldInfo name = entityInfo.findField("name"); assertEquals(FieldTypeEnum.STRING, name.getFieldType().getFieldType()); assertEquals("name", name.getColumnName()); FieldInfo postalStreet = entityInfo.findField("postalAddress.street"); assertEquals(FieldTypeEnum.STRING, postalStreet.getFieldType().getFieldType()); assertEquals("postal_street", postalStreet.getColumnName()); FieldInfo postalCity = entityInfo.findField("postalAddress.city"); assertEquals(FieldTypeEnum.STRING, postalCity.getFieldType().getFieldType()); assertEquals("postal_city", postalCity.getColumnName()); FieldInfo fiscalStreet = entityInfo.findField("fiscalAddress.street"); assertEquals(FieldTypeEnum.STRING, fiscalStreet.getFieldType().getFieldType()); assertEquals("fiscal_street", fiscalStreet.getColumnName()); FieldInfo fiscalCity = entityInfo.findField("fiscalAddress.city"); assertEquals(FieldTypeEnum.STRING, fiscalCity.getFieldType().getFieldType()); assertEquals("fiscal_city", fiscalCity.getColumnName()); }