public EntityInspectHelper(Class<?> clasz) { fields = fieldsInspector.getFieldsFromClass(clasz); }
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 FieldsCollection getFieldsFromClass(Class<?> entityClass) { if (entityClass == Object.class) { return EMPTY_FIELD_COLLECTION; } FieldsCollection parentClassFields = getFieldsFromClass(entityClass.getSuperclass()); if (!isEntityOrMapped(entityClass)) { return parentClassFields; } MappingOverride mappingOverride = new MappingOverride(entityClass); FieldsCollection overwrittenClassFields = mappingOverride.override(parentClassFields); FieldsCollection currentClassFields = new FieldsCollection(Stream.of(entityClass.getDeclaredFields()) .map(FieldInspector::new).map(FieldInspector::inspect).flatMap(List::stream)); currentClassFields.addNotPresent(overwrittenClassFields); return currentClassFields; }
@Test public void joinColumnsIsNotMapped() { assertThrows(UnsupportedOperationException.class, () -> { fieldsInspector.getFieldsFromClass(FooBar.class); }); }
@Test public void inspectEntityWithNonEntityParent() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(ChildClassNonEntity.class); assertEquals(1, fields.size()); assertEquals("otherField", fields.get(0).getFieldName()); }
@Test public void inspectEntityWithHierarchy() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(ChildClass.class); assertEquals(2, fields.size()); assertEquals("otherField", fields.get(0).getFieldName()); assertEquals("someField", fields.get(1).getFieldName()); }
@Test public void inspectEntityWithHierarchyMapped() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(ChildClassWithMapped.class); assertEquals(2, fields.size()); assertEquals("otherField", fields.get(0).getFieldName()); assertEquals("someField", fields.get(1).getFieldName()); }
@Test public void inspectEntityWithAttributeOverride() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(ChildClassWithAttributeOverride.class); assertEquals(2, fields.size()); assertEquals("otherField", fields.get(0).getFieldName()); assertEquals("someField", fields.get(1).getFieldName()); assertEquals("field_override", fields.get(1).getColumnName()); }
@Test public void inspectColumnByPropertyName() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(SimpleEntityUnannotated.class); assertEquals(1, fields.size()); FieldInfo field = fields.get(0); assertEquals("someField", field.getColumnName()); assertEquals("someField", field.getFieldName()); }
@Test public void inspectEntityWithAttributeOverrides() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(ChildClassWithAttributeOverrides.class); assertEquals(2, fields.size()); assertEquals("otherField", fields.get(0).getFieldName()); assertEquals("someField", fields.get(1).getFieldName()); assertEquals("field_override", fields.get(1).getColumnName()); }
@Test public void inspectColumnByColumnAnnotation() { List<FieldInfo> fields = fieldsInspector.getFieldsFromClass(SimpleEntityAnnotated.class); assertEquals(1, fields.size()); FieldInfo field = fields.get(0); assertEquals("some_column", field.getColumnName()); assertEquals("someField", field.getFieldName()); }
@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 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 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()); }