if (type.isCommonCollectionType()
&& relatedDomainTypes
.containsKey(getJavaTypeForField(field))) {
final JavaTypeMetadataDetails collectionTypeMetadataHolder = relatedDomainTypes
.get(getJavaTypeForField(field));
final JavaTypePersistenceMetadataDetails typePersistenceMetadataHolder = collectionTypeMetadataHolder
.getPersistenceDetails();
if (typePersistenceMetadataHolder != null) {
fieldElement = new XmlElementBuilder("field:select",
document)
.addAttribute("required", "true")
.addAttribute(
"items",
"${"
+ collectionTypeMetadataHolder
.getPlural().toLowerCase()
+ "}")
.addAttribute(
"itemValue",
typePersistenceMetadataHolder
.getIdentifierField()
.getFieldName().getSymbolName())
.addAttribute(
"path",
"/"
+ getPathForType(getJavaTypeForField(field)))
.build();
if (field.getCustomData().keySet()
.contains(CustomDataKeys.MANY_TO_MANY_FIELD)) {
fieldElement.setAttribute("multiple", "true");
}
}
}
else if (typeMetadataHolder != null
&& typeMetadataHolder.isEnumType()
&& field.getCustomData().keySet()
.contains(CustomDataKeys.ENUMERATED_FIELD)) {
fieldElement = new XmlElementBuilder("field:select", document)
.addAttribute("required", "true")
.addAttribute(
"items",
"${"
+ typeMetadataHolder.getPlural()
.toLowerCase() + "}")
.addAttribute("path", "/" + getPathForType(type))
.build();
}
else if (type.equals(BOOLEAN_OBJECT)
|| type.equals(BOOLEAN_PRIMITIVE)) {
fieldElement = document.createElement("field:checkbox");
}
else if (typeMetadataHolder != null
&& typeMetadataHolder.isApplicationType()) {
final JavaTypePersistenceMetadataDetails typePersistenceMetadataHolder = typeMetadataHolder
.getPersistenceDetails();
if (typePersistenceMetadataHolder != null) {
fieldElement = new XmlElementBuilder("field:select",
document)
.addAttribute("required", "true")
.addAttribute(
"items",
"${"
+ typeMetadataHolder.getPlural()
.toLowerCase() + "}")
.addAttribute(
"itemValue",
typePersistenceMetadataHolder
.getIdentifierField()
.getFieldName().getSymbolName())
.addAttribute("path", "/" + getPathForType(type))
.build();
}