protected ModelImpl generateEntityModel(MetaClass entityClass) {
Map<String, Property> properties = new LinkedHashMap<>();
properties.put(ENTITY_NAME_PROP, new StringProperty()
._default(entityClass.getName()));
properties.put(INSTANCE_NAME_PROP, getNamePatternProperty(entityClass));
for (MetaProperty metaProperty : entityClass.getProperties()) {
String fieldName = metaProperty.getName();
Class<?> propertyType = metaProperty.getJavaType();
String propertyTypeName = propertyType.getName();
if (Collection.class.isAssignableFrom(propertyType)) {
String collectionItemsType = metaProperty.getRange().asClass().getJavaClass().getName();
Property itemsProperty = getPropertyFromJavaType(collectionItemsType);
Property collectionProperty = new ArrayProperty(itemsProperty);
properties.put(fieldName, collectionProperty);
} else if (Map.class.isAssignableFrom(propertyType)) {
properties.put(fieldName, new ObjectProperty(Collections.emptyMap()));
} else {
properties.put(fieldName, getPropertyFromJavaType(propertyTypeName));
}
}
ModelImpl model = new ModelImpl()
.name(entityClass.getName());
model.setProperties(properties);
definitions.put("entities_" + model.getName(), model);
return model;
}