@Nullable
public Field createField(Datasource datasource, MetaProperty property) {
if (DynamicAttributesUtils.isDynamicAttribute(property)) {
CategoryAttribute attribute = DynamicAttributesUtils.getCategoryAttribute(property);
if (attribute.getDataType().equals(PropertyType.ENUMERATION)) {
return createEnumField(datasource, property);
} else if (attribute.getIsCollection()) {
return createListEditorField(datasource, property);
}
}
if (property.getRange().isDatatype()) {
Class type = property.getRange().asDatatype().getJavaClass();
if (type.equals(String.class)) {
return createStringField(datasource, property);
} else if (type.equals(Boolean.class)) {
return createBooleanField(datasource, property);
} else if (type.equals(java.sql.Date.class) || type.equals(Date.class)) {
return createDateField(datasource, property);
} else if (type.equals(Time.class)) {
return createTimeField(datasource, property);
} else if (Number.class.isAssignableFrom(type)) {
return createNumberField(datasource, property);
}
} else if (property.getRange().isClass()) {
return createEntityField(datasource, property);
} else if (property.getRange().isEnum()) {
return createEnumField(datasource, property);
}
return null;
}