271 lines
11 KiB
Java
271 lines
11 KiB
Java
package eu.eudat.file.transformer.entities.descriptiontemplate;
|
|
|
|
import eu.eudat.file.transformer.entities.common.DatabaseViewStyleDefinition;
|
|
import eu.eudat.file.transformer.entities.definition.DefinitionSerializable;
|
|
import eu.eudat.file.transformer.entities.descriptiontemplate.fielddata.BaseFieldDataEntity;
|
|
import eu.eudat.file.transformer.entities.descriptiontemplate.fielddata.FieldDataHelper;
|
|
import eu.eudat.file.transformer.entities.xml.XmlBuilder;
|
|
import eu.eudat.file.transformer.enums.FieldType;
|
|
import eu.eudat.file.transformer.enums.FieldValidationType;
|
|
import eu.eudat.file.transformer.model.descriptiontemplatedefinition.Field;
|
|
import eu.eudat.file.transformer.model.descriptiontemplatedefinition.Rule;
|
|
import eu.eudat.file.transformer.model.descriptiontemplatedefinition.fielddata.BaseFieldData;
|
|
import org.w3c.dom.Element;
|
|
import org.w3c.dom.Node;
|
|
import org.w3c.dom.NodeList;
|
|
|
|
import java.util.LinkedList;
|
|
import java.util.List;
|
|
|
|
public class FieldEntity implements DatabaseViewStyleDefinition, DefinitionSerializable<FieldEntity, Field> {
|
|
private String id;
|
|
private int ordinal;
|
|
private List<String> schematics;
|
|
private String numbering;
|
|
private String defaultValue;
|
|
private List<RuleEntity> visibilityRules;
|
|
private BaseFieldDataEntity<BaseFieldDataEntity, BaseFieldData> data;
|
|
private List<FieldValidationType> validations;
|
|
private Boolean includeInExport;
|
|
|
|
public String getId() {
|
|
return id;
|
|
}
|
|
public void setId(String id) {
|
|
this.id = id;
|
|
}
|
|
|
|
public int getOrdinal() {
|
|
return ordinal;
|
|
}
|
|
public void setOrdinal(int ordinal) {
|
|
this.ordinal = ordinal;
|
|
}
|
|
|
|
public List<String> getSchematics() {
|
|
return schematics;
|
|
}
|
|
public void setSchematics(List<String> schematics) {
|
|
this.schematics = schematics;
|
|
}
|
|
|
|
public BaseFieldDataEntity<BaseFieldDataEntity, BaseFieldData> getData() {
|
|
return data;
|
|
}
|
|
public void setData(BaseFieldDataEntity<BaseFieldDataEntity, BaseFieldData> data) {
|
|
this.data = data;
|
|
}
|
|
|
|
public String getDefaultValue() {
|
|
return defaultValue;
|
|
}
|
|
public void setDefaultValue(String defaultValue) {
|
|
this.defaultValue = defaultValue;
|
|
}
|
|
|
|
|
|
public List<FieldValidationType> getValidations() {
|
|
return validations;
|
|
}
|
|
public void setValidations(List<FieldValidationType> validations) {
|
|
this.validations = validations;
|
|
}
|
|
|
|
public String getNumbering() {
|
|
return numbering;
|
|
}
|
|
public void setNumbering(String numbering) {
|
|
this.numbering = numbering;
|
|
}
|
|
|
|
public Boolean getIncludeInExport() {
|
|
return includeInExport;
|
|
}
|
|
|
|
public void setIncludeInExport(Boolean includeInExport) {
|
|
this.includeInExport = includeInExport;
|
|
}
|
|
|
|
public List<RuleEntity> getVisibilityRules() {
|
|
return visibilityRules;
|
|
}
|
|
|
|
public void setVisibilityRules(List<RuleEntity> visibilityRules) {
|
|
this.visibilityRules = visibilityRules;
|
|
}
|
|
|
|
/*@Override
|
|
public Element toXml(Document doc) {
|
|
Element rootElement = doc.createElement("field");
|
|
rootElement.setAttribute("id", this.id);
|
|
rootElement.setAttribute("ordinal", "" + this.ordinal);
|
|
|
|
Element schematics = doc.createElement("schematics");
|
|
if (this.schematics != null) {
|
|
for (String s : this.schematics) {
|
|
Element schematic = doc.createElement("schematic");
|
|
schematic.setTextContent(s);
|
|
schematics.appendChild(schematic);
|
|
}
|
|
}
|
|
|
|
Element viewStyle = doc.createElement("viewStyle");
|
|
if (this.data != null) {
|
|
switch (this.data.getFieldType()){
|
|
case COMBO_BOX:
|
|
case AUTO_COMPLETE:
|
|
case WORD_LIST:{
|
|
viewStyle.setAttribute("renderstyle", FieldType.COMBO_BOX.getValue());
|
|
break;
|
|
}
|
|
case INTERNAL_DMP_ENTRIES:
|
|
case INTERNAL_DMP_ENTRIES_DMPS:
|
|
case INTERNAL_DMP_ENTRIES_DATASETS:
|
|
case INTERNAL_DMP_ENTRIES_RESEARCHERS:{
|
|
viewStyle.setAttribute("renderstyle", FieldType.INTERNAL_DMP_ENTRIES.getValue());
|
|
break;
|
|
}
|
|
case BOOLEAN_DECISION: viewStyle.setAttribute("renderstyle", this.data.getFieldType().getValue());
|
|
}
|
|
|
|
}
|
|
Element visibilityRulesElement = doc.createElement("visible");
|
|
if (this.visibilityRules != null && !this.visibilityRules.isEmpty()) {
|
|
for (RuleEntity rule : this.visibilityRules) {
|
|
visibilityRulesElement.appendChild(rule.toXml(doc));
|
|
}
|
|
}
|
|
Element defaultValue = doc.createElement("defaultValue");
|
|
defaultValue.setAttribute("value", this.getDefaultValue());
|
|
|
|
Element validations = doc.createElement("validations");
|
|
for (FieldValidationType validationType : this.validations) {
|
|
Element validation = doc.createElement("validation");
|
|
validation.setAttribute("type", "" + validationType.getValue());
|
|
validations.appendChild(validation);
|
|
}
|
|
|
|
Element numbering = doc.createElement("numbering");
|
|
numbering.setTextContent(this.numbering);
|
|
|
|
rootElement.appendChild(schematics);
|
|
rootElement.appendChild(numbering);
|
|
rootElement.appendChild(validations);
|
|
rootElement.appendChild(defaultValue);
|
|
rootElement.appendChild(visibilityRulesElement);
|
|
rootElement.appendChild(viewStyle);
|
|
if (this.data != null) {
|
|
rootElement.appendChild(this.data.toXml(doc));
|
|
|
|
}
|
|
rootElement.setAttribute("export", this.includeInExport == null || this.includeInExport ? "true" : "false");
|
|
return rootElement;
|
|
}*/
|
|
|
|
/*@Override
|
|
public FieldEntity fromXml(Element element) {
|
|
this.id = element.getAttribute("id");
|
|
this.ordinal = Integer.parseInt(element.getAttribute("ordinal"));
|
|
|
|
|
|
Element viewStyle = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "viewStyle");
|
|
|
|
FieldType fieldType = FieldType.of(viewStyle.getAttribute("renderstyle"));
|
|
|
|
Element visibility = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "visible");
|
|
NodeList rulesElements = visibility.getChildNodes();
|
|
this.visibilityRules = new LinkedList();
|
|
for (int temp = 0; temp < rulesElements.getLength(); temp++) {
|
|
Node ruleElement = rulesElements.item(temp);
|
|
if (ruleElement.getNodeType() == Node.ELEMENT_NODE) {
|
|
this.visibilityRules.add(new RuleEntity().fromXml((Element) ruleElement));
|
|
}
|
|
}
|
|
|
|
Element numbering = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "numbering");
|
|
if (numbering != null) this.numbering = numbering.getTextContent();
|
|
|
|
this.schematics = new LinkedList<>();
|
|
Element schematics = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "schematics");
|
|
if(schematics != null){
|
|
NodeList schematicElements = schematics.getChildNodes();
|
|
for (int temp = 0; temp < schematicElements.getLength(); temp++) {
|
|
Node schematicElement = schematicElements.item(temp);
|
|
if (schematicElement.getNodeType() == Node.ELEMENT_NODE) {
|
|
this.schematics.add(schematicElement.getTextContent());
|
|
}
|
|
}
|
|
}
|
|
|
|
Element dataElement = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "data");
|
|
|
|
Element defaultValue = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "defaultValue");
|
|
|
|
this.defaultValue = defaultValue.getAttribute("value");
|
|
String subType = dataElement != null ? dataElement.getAttribute("type") : null;
|
|
this.data = new FieldDataHelper().create(fieldType, subType);
|
|
if (this.data != null) this.data.fromXml(dataElement);
|
|
|
|
this.validations = new LinkedList<>();
|
|
Element validations = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "validations");
|
|
if (validations != null) {
|
|
NodeList validationElements = validations.getChildNodes();
|
|
for (int temp = 0; temp < validationElements.getLength(); temp++) {
|
|
Node validationElement = validationElements.item(temp);
|
|
if (validationElement.getNodeType() == Node.ELEMENT_NODE) {
|
|
Short enumValue = Short.parseShort(((Element) validationElement).getAttribute("type"));
|
|
FieldValidationType validationType = FieldValidationType.of(enumValue);
|
|
this.validations.add(validationType);
|
|
}
|
|
}
|
|
}
|
|
if (element.hasAttribute("export")) {
|
|
this.includeInExport = Boolean.parseBoolean(element.getAttribute("export"));
|
|
} else {
|
|
this.includeInExport = true;
|
|
}
|
|
return this;
|
|
}*/
|
|
|
|
@Override
|
|
public FieldEntity fromDefinition(Field object) {
|
|
this.id = object.getId();
|
|
this.ordinal = object.getOrdinal();
|
|
this.visibilityRules = new LinkedList();
|
|
if (object.getVisibilityRules() != null) {
|
|
for (Rule rule : object.getVisibilityRules()) {
|
|
this.visibilityRules.add(new RuleEntity().fromDefinition(rule));
|
|
}
|
|
}
|
|
|
|
this.numbering = object.getNumbering();
|
|
|
|
this.schematics = new LinkedList<>();
|
|
if(object.getSchematics() != null){
|
|
this.schematics.addAll(object.getSchematics());
|
|
}
|
|
|
|
this.defaultValue = object.getDefaultValue();
|
|
|
|
FieldType fieldType = switch (object.getData().getFieldType()) {
|
|
case AUTO_COMPLETE, WORD_LIST -> FieldType.COMBO_BOX;
|
|
case INTERNAL_DMP_ENTRIES_DMPS, INTERNAL_DMP_ENTRIES_DATASETS, INTERNAL_DMP_ENTRIES_RESEARCHERS -> FieldType.INTERNAL_DMP_ENTRIES;
|
|
default -> object.getData().getFieldType();
|
|
};
|
|
String subType = object.getData().getFieldType().getValue();
|
|
this.data = (BaseFieldDataEntity<BaseFieldDataEntity, BaseFieldData>) new FieldDataHelper().create(fieldType, subType);
|
|
if (this.data != null) this.data.fromDefinition(object.getData());
|
|
|
|
this.validations = new LinkedList<>();
|
|
if (object.getValidations() != null) {
|
|
this.validations.addAll(object.getValidations());
|
|
}
|
|
if (object.getIncludeInExport() != null) {
|
|
this.includeInExport = object.getIncludeInExport();
|
|
} else {
|
|
this.includeInExport = true;
|
|
}
|
|
return this;
|
|
}
|
|
}
|