private boolean isPresent(FieldInfo field) { String columnName = field.getColumnName(); String fieldName = field.getFieldName(); for (FieldInfo f : this) { if (f.getFieldName().equals(fieldName) || f.getColumnName().equals(columnName)) { return true; } } return false; }
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)); }
public FieldInfo withColumnName(String newColumnName) { return new FieldInfo(fieldName, newColumnName, fieldType); } }
public FieldsCollection overrideAtttributes(Map<String, String> mapping) { if (mapping.size() == 0) { return this; } FieldsCollection newCollection = new FieldsCollection(); for (FieldInfo field : this) { String name = field.getFieldName(); if (mapping.containsKey(name)) { newCollection.add(field.withColumnName(mapping.get(name))); } else { newCollection.add(field); } } return newCollection; }
@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()); }
public List<FieldInfo> getFields() { if (!reviewSupportedRelations(field)) { return Collections.emptyList(); } String name = field.getName(); Class<?> javaType = field.getType(); FieldsCollection currentClassFields = getIdFieldsFromClass(javaType); if (currentClassFields.size() == 0) { logger.warn(javaType.getName() + " has no simple @id annotation. Relation not persisted."); return Collections.emptyList(); } if (currentClassFields.size() == 1) { FieldInfo fieldId = currentClassFields.get(0); JoinColumn joinColumn = field.getAnnotation(JoinColumn.class); String columnName = null; if (joinColumn != null) { columnName = joinColumn.name(); } else { columnName = name + "_" + fieldId.getColumnName(); } return asList(fieldId.prependName(name).withColumnName(columnName)); } return currentClassFields.stream().map(field -> { String columnName = name + "_" + field.getColumnName(); return field.prependName(name).withColumnName(columnName); }).collect(toList()); }
private EntityFieldType getField(String fieldName) { return fields.stream().filter(f -> f.getFieldName().equals(fieldName)).findFirst().get().getFieldType(); } }
public FieldInfo findField(String fieldName) { return fields.stream().filter(f -> f.getFieldName().equals(fieldName)).findFirst().get(); }
@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()); }
public List<FieldInfo> getFields() { String name = field.getName(); Class<?> javaType = field.getType(); FieldsCollection currentClassFields = getFieldsFromClass(javaType); return currentClassFields.stream().map(field -> field.prependName(name)).collect(toList()); }
@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 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 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 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 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()); }
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); }
@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 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()); }
public FieldInfo prependName(String name) { return new FieldInfo(name + "." + fieldName, columnName, fieldType); }
@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()); }