@Override public Query createQueryForPersistenceId(BusinessObject businessObject) { final SimpleField persistenceIdField = new SimpleField(); persistenceIdField.setName(Field.PERSISTENCE_ID); persistenceIdField.setType(FieldType.LONG); final String name = createQueryNameForField(persistenceIdField); final UniqueConstraint constraint = new UniqueConstraint(); constraint.setFieldNames(Arrays.asList(persistenceIdField.getName())); final String content = createQueryContentForUniqueConstraint(businessObject.getQualifiedName(), constraint); final Query q = new Query(name, content, businessObject.getQualifiedName()); q.addQueryParameter(persistenceIdField.getName(), persistenceIdField.getType().getClazz().getName()); return q; }
@Override public String toString() { return new ToStringBuilder(this, SHORT_PREFIX_STYLE).append("name", getName()).append("nullable", isNullable()).append("collection", isCollection()) .append("length", length).append("type", type).toString(); }
public FieldBuilder withLength(final int length) { ((SimpleField) field).setLength(length); return this; } }
@Override public ValidationStatus validate(SimpleField field) { final ValidationStatus status = new ValidationStatus(); if (field.getType() == null) { status.addError(StatusCode.FIELD_WITHOUT_NAME, String.format("%s must have a type declared", field.getName()), Collections.singletonMap(StatusContext.BDM_ARTIFACT_NAME_KEY, field.getName())); } return status; }
private void annotateSimpleField(final SimpleField sfield, final JFieldVar fieldVar) { if (sfield.isCollection()) { final JAnnotationUse collectionAnnotation = codeGenerator.addAnnotation(fieldVar, ElementCollection.class); collectionAnnotation.param("fetch", FetchType.EAGER); columnAnnotation.param("name", sfield.getName().toUpperCase()); columnAnnotation.param("nullable", sfield.isNullable()); if (sfield.getType() == FieldType.DATE) { final JAnnotationUse temporalAnnotation = codeGenerator.addAnnotation(fieldVar, Temporal.class); temporalAnnotation.param("value", TemporalType.TIMESTAMP); } else if (FieldType.TEXT == sfield.getType()) { codeGenerator.addAnnotation(fieldVar, Lob.class); } else if (FieldType.STRING == sfield.getType() && sfield.getLength() != null && sfield.getLength() > 0) { columnAnnotation.param("length", sfield.getLength()); } else if (FieldType.LOCALDATE == sfield.getType()) { } else if (FieldType.LOCALDATETIME == sfield.getType()) { columnAnnotation.param("length", 30); final JAnnotationUse converterAnnotation = codeGenerator.addAnnotation(fieldVar, Convert.class); converterAnnotation.param("converter", DateAndTimeConverter.class); } else if (FieldType.OFFSETDATETIME == sfield.getType()) { columnAnnotation.param("length", 30); final JAnnotationUse converterAnnotation = codeGenerator.addAnnotation(fieldVar, Convert.class);
protected BusinessObjectModel buildBOM() { final SimpleField name = new SimpleField(); name.setName("name"); name.setType(FieldType.STRING); final SimpleField age = new SimpleField(); age.setName("age"); age.setType(FieldType.INTEGER); final SimpleField street = new SimpleField(); street.setName("street"); street.setType(FieldType.STRING); final SimpleField city = new SimpleField(); city.setName("city"); city.setType(FieldType.STRING); final SimpleField firstName = new SimpleField(); firstName.setName("firstName"); firstName.setType(FieldType.STRING); firstName.setLength(10); final SimpleField birthDate = new SimpleField(); birthDate.setName("birthDate"); birthDate.setType(FieldType.LOCALDATE); birthDate.setNullable(Boolean.TRUE); final SimpleField lastName = new SimpleField(); lastName.setName("lastName"); lastName.setType(FieldType.STRING); lastName.setNullable(Boolean.FALSE);
public static Set<String> getAllProvidedQueriesNameForBusinessObject(final BusinessObject businessObject) { final Set<String> queryNames = new HashSet<>(); for (QueryGenerator queryGenerator : getQueryGenerators()) { if (!containsQueryWithName(businessObject, queryGenerator.getQueryName(Field.PERSISTENCE_ID))) { final SimpleField persistenceIdField = new SimpleField(); persistenceIdField.setName(Field.PERSISTENCE_ID); persistenceIdField.setType(FieldType.LONG); queryNames.add(queryGenerator.createQueryNameForField(persistenceIdField)); } for (final UniqueConstraint uc : businessObject.getUniqueConstraints()) { if(uc.getFieldNames() != null){ queryNames.add(queryGenerator.createQueryNameForUniqueConstraint(uc)); } } for (final Field f : businessObject.getFields()) { if (f instanceof SimpleField) { if (f.isCollection() == null || !f.isCollection()) { queryNames.add(queryGenerator.createQueryNameForField(f)); } } } queryNames.add(queryGenerator.getSelectAllQueryName()); } return queryNames; }
public String getGetterName(final Field field) { final boolean bool = field instanceof SimpleField && FieldType.BOOLEAN.equals(((SimpleField) field).getType()) && !field.isCollection(); return getGetterName(bool, field.getName()); }
public SimpleFieldBuilder() { super(new SimpleField()); }
public SimpleFieldBuilder ofType(final FieldType type) { ((SimpleField) field).setType(type); return this; }
private void annotateSimpleField(final SimpleField sfield, final JFieldVar fieldVar) { if (sfield.isCollection()) { final JAnnotationUse collectionAnnotation = codeGenerator.addAnnotation(fieldVar, ElementCollection.class); collectionAnnotation.param("fetch", FetchType.EAGER); columnAnnotation.param("name", sfield.getName().toUpperCase()); columnAnnotation.param("nullable", sfield.isNullable()); if (sfield.getType() == FieldType.DATE) { final JAnnotationUse temporalAnnotation = codeGenerator.addAnnotation(fieldVar, Temporal.class); temporalAnnotation.param("value", TemporalType.TIMESTAMP); } else if (FieldType.TEXT == sfield.getType()) { codeGenerator.addAnnotation(fieldVar, Lob.class); } else if (FieldType.STRING == sfield.getType() && sfield.getLength() != null && sfield.getLength() > 0) { columnAnnotation.param("length", sfield.getLength()); } else if (FieldType.LOCALDATE == sfield.getType()) { } else if (FieldType.LOCALDATETIME == sfield.getType()) { columnAnnotation.param("length", 30); final JAnnotationUse converterAnnotation = codeGenerator.addAnnotation(fieldVar, Convert.class); converterAnnotation.param("converter", DateAndTimeConverter.class); } else if (FieldType.OFFSETDATETIME == sfield.getType()) { columnAnnotation.param("length", 30); final JAnnotationUse converterAnnotation = codeGenerator.addAnnotation(fieldVar, Convert.class);
public static Set<String> getAllProvidedQueriesNameForBusinessObject(final BusinessObject businessObject) { final Set<String> queryNames = new HashSet<>(); for (QueryGenerator queryGenerator : getQueryGenerators()) { if (!containsQueryWithName(businessObject, queryGenerator.getQueryName(Field.PERSISTENCE_ID))) { final SimpleField persistenceIdField = new SimpleField(); persistenceIdField.setName(Field.PERSISTENCE_ID); persistenceIdField.setType(FieldType.LONG); queryNames.add(queryGenerator.createQueryNameForField(persistenceIdField)); } for (final UniqueConstraint uc : businessObject.getUniqueConstraints()) { if(uc.getFieldNames() != null){ queryNames.add(queryGenerator.createQueryNameForUniqueConstraint(uc)); } } for (final Field f : businessObject.getFields()) { if (f instanceof SimpleField) { if (f.isCollection() == null || !f.isCollection()) { queryNames.add(queryGenerator.createQueryNameForField(f)); } } } queryNames.add(queryGenerator.getSelectAllQueryName()); } return queryNames; }
public String getGetterName(final Field field) { final boolean bool = field instanceof SimpleField && FieldType.BOOLEAN.equals(((SimpleField) field).getType()) && !field.isCollection(); return getGetterName(bool, field.getName()); }
@Override public ValidationStatus validate(SimpleField field) { final ValidationStatus status = new ValidationStatus(); if (field.getType() == null) { status.addError(StatusCode.FIELD_WITHOUT_NAME, String.format("%s must have a type declared", field.getName()), Collections.singletonMap(StatusContext.BDM_ARTIFACT_NAME_KEY, field.getName())); } return status; }
public BusinessObjectModel buildBOMWithAnEmptyField() { final BusinessObjectModel bom = new BusinessObjectModel(); final BusinessObject businessObject = new BusinessObject(); businessObject.setQualifiedName("BusinessObject"); businessObject.addField(new SimpleField()); bom.addBusinessObject(businessObject); return bom; }
@Override public Query createQueryForPersistenceId(BusinessObject businessObject) { final SimpleField persistenceIdField = new SimpleField(); persistenceIdField.setName(Field.PERSISTENCE_ID); persistenceIdField.setType(FieldType.LONG); final String name = createQueryNameForField(persistenceIdField); final UniqueConstraint constraint = new UniqueConstraint(); constraint.setFieldNames(Arrays.asList(persistenceIdField.getName())); final String content = createQueryContentForUniqueConstraint(businessObject.getQualifiedName(), constraint); final Query q = new Query(name, content, businessObject.getQualifiedName()); q.addQueryParameter(persistenceIdField.getName(), persistenceIdField.getType().getClazz().getName()); return q; }
@Override public String toString() { return new ToStringBuilder(this, SHORT_PREFIX_STYLE).append("name", getName()).append("nullable", isNullable()).append("collection", isCollection()) .append("length", length).append("type", type).toString(); }
public JClass toJavaClass(final Field field) { if (field instanceof SimpleField) { final Class<?> fieldClass = ((SimpleField) field).getType().getClazz(); return getModel().ref(fieldClass); } final String qualifiedName = ((RelationField) field).getReference().getQualifiedName(); return getModel().ref(qualifiedName); }
@Override public Query createQueryForField(BusinessObject businessObject, Field field) { checkObjectIsNotNull(field, "field cannot be null"); checkFieldIsNotACollection(field); final Query query = new Query(createQueryNameForField(field), createQueryContentForField(businessObject.getQualifiedName(), field), getListReturnType()); if (field instanceof SimpleField) { query.addQueryParameter(field.getName(), ((SimpleField) field).getType().getClazz().getName()); } return query; }
@Override public Query createQueryForField(BusinessObject businessObject, Field field) { checkObjectIsNotNull(field, "field cannot be null"); checkFieldIsNotACollection(field); final Query query = new Query(createQueryNameForField(field), createQueryContentForField(businessObject.getQualifiedName(), field), getListReturnType()); if (field instanceof SimpleField) { query.addQueryParameter(field.getName(), ((SimpleField) field).getType().getClazz().getName()); } return query; }