String parentFieldName = "a2_1";
String parentFieldClass = "java.lang.String";
String parentFieldLabelValue = "Attribute A2.1";
String parentFieldDescriptionValue = "First attribute of A2";
int parentFieldPositionValue = 1;
ObjectPropertyTO parentProp = new ObjectPropertyTO(parentFieldName, parentFieldClass, false, true);
parentProp.addAnnotation(annotationDefs.get(AnnotationDefinitionTO.LABEL_ANNOTATION), AnnotationDefinitionTO.VALUE_PARAM, parentFieldLabelValue);
parentProp.addAnnotation(annotationDefs.get(AnnotationDefinitionTO.DESCRIPTION_ANNOTATION), AnnotationDefinitionTO.VALUE_PARAM, parentFieldDescriptionValue);
parentProp.addAnnotation(annotationDefs.get(AnnotationDefinitionTO.POSITION_ANNOTATON), AnnotationDefinitionTO.VALUE_PARAM, parentFieldPositionValue);
parent.setProperties(Arrays.asList(parentProp));
String extendingName = "B2";
String extendingPackage = "a.b";
String extendingLabelValue = "Extending";
String extendingDescriptionValue = "This is the extending object";
String extendingRoleValue = "EVENT";
DataObjectTO extending = new DataObjectTO(extendingName, extendingPackage, null);
// Extend B from A
extending.setSuperClassName(parent.getClassName());
extending.addAnnotation(annotationDefs.get(AnnotationDefinitionTO.LABEL_ANNOTATION), AnnotationDefinitionTO.VALUE_PARAM, extendingLabelValue);
extending.addAnnotation(annotationDefs.get(AnnotationDefinitionTO.DESCRIPTION_ANNOTATION), AnnotationDefinitionTO.VALUE_PARAM, extendingDescriptionValue);
extending.addAnnotation(annotationDefs.get(AnnotationDefinitionTO.ROLE_ANNOTATION), AnnotationDefinitionTO.VALUE_PARAM, extendingRoleValue);
dataModel.getDataObjects().add(extending);
String extendingFieldName = "b2_1";
String extendingFieldClass = "java.lang.String";
String extendingFieldLabelValue = "Attribute B2.1";
String extendingFieldDescriptionValue = "First attribute of B2";
int extendingFieldPositionValue = 1;
ObjectPropertyTO extendingProp = new ObjectPropertyTO(extendingFieldName, extendingFieldClass, false, true);
extendingProp.addAnnotation(annotationDefs.get(AnnotationDefinitionTO.LABEL_ANNOTATION), AnnotationDefinitionTO.VALUE_PARAM, extendingFieldLabelValue);
extendingProp.addAnnotation(annotationDefs.get(AnnotationDefinitionTO.DESCRIPTION_ANNOTATION), AnnotationDefinitionTO.VALUE_PARAM, extendingFieldDescriptionValue);
extendingProp.addAnnotation(annotationDefs.get(AnnotationDefinitionTO.POSITION_ANNOTATON), AnnotationDefinitionTO.VALUE_PARAM, extendingFieldPositionValue);
extending.setProperties(Arrays.asList(extendingProp));
GenerationResult result = modelerService.saveModel(dataModel, project);
assertNotNull(result);
logger.info("**************************** -> Model saved in " + result.getGenerationTimeSeconds() + " seconds");