private boolean isACompositionField(Field field) { return field instanceof RelationField && Type.COMPOSITION == ((RelationField) field).getType(); }
private boolean isACompositionField(Field field) { return field instanceof RelationField && Type.COMPOSITION == ((RelationField) field).getType(); }
if (field instanceof RelationField) { RelationField relationField = (RelationField) field; if (relationField.getType() == AGGREGATION) { aggregatedBusinessObjects.add(relationField.getReference());
if (field instanceof RelationField) { RelationField relationField = (RelationField) field; if (relationField.getType() == AGGREGATION) { aggregatedBusinessObjects.add(relationField.getReference());
public void annotateRelationField(final JDefinedClass entityClass, final RelationField field, final JFieldVar fieldVar) { JAnnotationUse relation = null; if (field.isCollection()) { relation = annotateMultipleReference(entityClass, field, fieldVar); } else { relation = annotateSingleReference(entityClass,field, fieldVar); } if (field.isLazy()) { relation.param("fetch", FetchType.LAZY); codeGenerator.addAnnotation(fieldVar, JsonIgnore.class); } else { relation.param("fetch", FetchType.EAGER); } if (field.getType() == Type.COMPOSITION) { relation.param("cascade", CascadeType.ALL); } else if (field.getType() == Type.AGGREGATION) { relation.param("cascade", CascadeType.MERGE); } }
public void annotateRelationField(final JDefinedClass entityClass, final RelationField field, final JFieldVar fieldVar) { JAnnotationUse relation = null; if (field.isCollection()) { relation = annotateMultipleReference(entityClass, field, fieldVar); } else { relation = annotateSingleReference(entityClass,field, fieldVar); } if (field.isLazy()) { relation.param("fetch", FetchType.LAZY); codeGenerator.addAnnotation(fieldVar, JsonIgnore.class); } else { relation.param("fetch", FetchType.EAGER); } if (field.getType() == Type.COMPOSITION) { relation.param("cascade", CascadeType.ALL); } else if (field.getType() == Type.AGGREGATION) { relation.param("cascade", CascadeType.MERGE); } }
@Override protected ValidationStatus validate(BusinessObjectModel bom) { ValidationStatus validationStatus = new ValidationStatus(); for (BusinessObject bo : bom.getBusinessObjects()) { List<Field> boFields = bo.getFields(); for (Field boField : boFields) { if (boField instanceof RelationField) { RelationField relationField = (RelationField) boField; String fieldReferenceQualifiedName = relationField.getReference().getQualifiedName(); String boQualifiedName = bo.getQualifiedName(); if (relationField.getType() == AGGREGATION && fieldReferenceQualifiedName.equals(boQualifiedName) && relationField.isCollection()) { validationStatus.addError(MULTIPLE_AGGREGATION_RELATION_TO_ITSELF, "The object " + boQualifiedName + " is referencing itself in a multiple aggregation relation.", Collections.singletonMap(StatusContext.BUSINESS_OBJECT_NAME_KEY, boQualifiedName)); } } } } return validationStatus; } }
@Override protected ValidationStatus validate(BusinessObjectModel bom) { ValidationStatus validationStatus = new ValidationStatus(); for (BusinessObject bo : bom.getBusinessObjects()) { List<Field> boFields = bo.getFields(); for (Field boField : boFields) { if (boField instanceof RelationField) { RelationField relationField = (RelationField) boField; String fieldReferenceQualifiedName = relationField.getReference().getQualifiedName(); String boQualifiedName = bo.getQualifiedName(); if (relationField.getType() == AGGREGATION && fieldReferenceQualifiedName.equals(boQualifiedName) && relationField.isCollection()) { validationStatus.addError(MULTIPLE_AGGREGATION_RELATION_TO_ITSELF, "The object " + boQualifiedName + " is referencing itself in a multiple aggregation relation.", Collections.singletonMap(StatusContext.BUSINESS_OBJECT_NAME_KEY, boQualifiedName)); } } } } return validationStatus; } }
private JAnnotationUse annotateMultipleReference(final JDefinedClass entityClass, final RelationField field, final JFieldVar fieldVar) { JAnnotationUse relation; if (field.getType() == Type.AGGREGATION) { relation = codeGenerator.addAnnotation(fieldVar, ManyToMany.class); addJoinTable(entityClass, field, fieldVar); } else { relation = codeGenerator.addAnnotation(fieldVar, OneToMany.class); relation.param("orphanRemoval", true); final JAnnotationUse joinColumn = addJoinColumn(fieldVar, entityClass.name()); joinColumn.param("nullable", false); } codeGenerator.addAnnotation(fieldVar, OrderColumn.class); return relation; }
private JAnnotationUse annotateSingleReference(JDefinedClass entityClass, final RelationField field, final JFieldVar fieldVar) { JAnnotationUse relation; if (field.getType() == Type.AGGREGATION) { relation = codeGenerator.addAnnotation(fieldVar, ManyToOne.class); } else { relation = codeGenerator.addAnnotation(fieldVar, OneToOne.class); relation.param("orphanRemoval", true); } addJoinColumn(fieldVar, field.getName()); relation.param("optional", field.isNullable()); foreignKeyAnnotator.annotateForeignKeyName(entityClass, fieldVar, field); return relation; }
private JAnnotationUse annotateSingleReference(JDefinedClass entityClass, final RelationField field, final JFieldVar fieldVar) { JAnnotationUse relation; if (field.getType() == Type.AGGREGATION) { relation = codeGenerator.addAnnotation(fieldVar, ManyToOne.class); } else { relation = codeGenerator.addAnnotation(fieldVar, OneToOne.class); relation.param("orphanRemoval", true); } addJoinColumn(fieldVar, field.getName()); relation.param("optional", field.isNullable()); foreignKeyAnnotator.annotateForeignKeyName(entityClass, fieldVar, field); return relation; }
private JAnnotationUse annotateMultipleReference(final JDefinedClass entityClass, final RelationField field, final JFieldVar fieldVar) { JAnnotationUse relation; if (field.getType() == Type.AGGREGATION) { relation = codeGenerator.addAnnotation(fieldVar, ManyToMany.class); addJoinTable(entityClass, field, fieldVar); } else { relation = codeGenerator.addAnnotation(fieldVar, OneToMany.class); relation.param("orphanRemoval", true); final JAnnotationUse joinColumn = addJoinColumn(fieldVar, entityClass.name()); joinColumn.param("nullable", false); } codeGenerator.addAnnotation(fieldVar, OrderColumn.class); return relation; }