2018-06-27 12:29:21 +02:00
|
|
|
package eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition;
|
|
|
|
|
|
|
|
import eu.eudat.models.data.components.commons.DefaultValue;
|
|
|
|
import eu.eudat.models.data.components.commons.ViewStyle;
|
|
|
|
import eu.eudat.models.data.components.commons.Visibility;
|
|
|
|
import eu.eudat.models.data.components.commons.datafield.FieldData;
|
|
|
|
import eu.eudat.logic.utilities.interfaces.XmlSerializable;
|
|
|
|
import eu.eudat.logic.utilities.builders.ModelBuilder;
|
|
|
|
import eu.eudat.logic.utilities.builders.XmlBuilder;
|
2018-02-16 11:34:02 +01:00
|
|
|
import org.w3c.dom.Document;
|
|
|
|
import org.w3c.dom.Element;
|
2018-01-03 17:36:31 +01:00
|
|
|
import org.w3c.dom.Node;
|
|
|
|
import org.w3c.dom.NodeList;
|
|
|
|
|
|
|
|
import java.util.LinkedList;
|
|
|
|
import java.util.List;
|
2017-12-15 11:05:51 +01:00
|
|
|
|
2018-02-16 11:34:02 +01:00
|
|
|
public class Field implements DatabaseViewStyleDefinition, XmlSerializable<Field> {
|
|
|
|
private String id;
|
|
|
|
private int ordinal;
|
2019-10-15 17:29:34 +02:00
|
|
|
private String rdaCommonStandard;
|
2018-10-18 11:34:11 +02:00
|
|
|
private String numbering;
|
2018-02-16 11:34:02 +01:00
|
|
|
private ViewStyle viewStyle;
|
|
|
|
private DefaultValue defaultValue;
|
|
|
|
private Visibility visible;
|
|
|
|
private FieldData data;
|
2018-06-27 12:29:21 +02:00
|
|
|
private List<eu.eudat.models.data.admin.components.datasetprofile.Field.ValidationType> validations;
|
2018-02-16 11:34:02 +01:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2019-10-15 17:29:34 +02:00
|
|
|
public String getRdaCommonStandard() {
|
|
|
|
return rdaCommonStandard;
|
|
|
|
}
|
|
|
|
public void setRdaCommonStandard(String rdaCommonStandard) {
|
|
|
|
this.rdaCommonStandard = rdaCommonStandard;
|
|
|
|
}
|
|
|
|
|
2018-02-16 11:34:02 +01:00
|
|
|
public ViewStyle getViewStyle() {
|
|
|
|
return viewStyle;
|
|
|
|
}
|
|
|
|
public void setViewStyle(ViewStyle viewStyle) {
|
|
|
|
this.viewStyle = viewStyle;
|
|
|
|
}
|
|
|
|
|
|
|
|
public FieldData getData() {
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
public void setData(FieldData data) {
|
|
|
|
this.data = data;
|
|
|
|
}
|
|
|
|
|
|
|
|
public DefaultValue getDefaultValue() {
|
|
|
|
return defaultValue;
|
|
|
|
}
|
|
|
|
public void setDefaultValue(DefaultValue defaultValue) {
|
|
|
|
this.defaultValue = defaultValue;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Visibility getVisible() {
|
|
|
|
return visible;
|
|
|
|
}
|
|
|
|
public void setVisible(Visibility visible) {
|
|
|
|
this.visible = visible;
|
|
|
|
}
|
|
|
|
|
2018-06-27 12:29:21 +02:00
|
|
|
public List<eu.eudat.models.data.admin.components.datasetprofile.Field.ValidationType> getValidations() {
|
2018-02-16 11:34:02 +01:00
|
|
|
return validations;
|
|
|
|
}
|
2018-06-27 12:29:21 +02:00
|
|
|
public void setValidations(List<eu.eudat.models.data.admin.components.datasetprofile.Field.ValidationType> validations) {
|
2018-02-16 11:34:02 +01:00
|
|
|
this.validations = validations;
|
|
|
|
}
|
|
|
|
|
2018-10-18 11:34:11 +02:00
|
|
|
public String getNumbering() {
|
|
|
|
return numbering;
|
|
|
|
}
|
|
|
|
public void setNumbering(String numbering) {
|
|
|
|
this.numbering = numbering;
|
|
|
|
}
|
|
|
|
|
2018-02-16 11:34:02 +01:00
|
|
|
@Override
|
|
|
|
public Element toXml(Document doc) {
|
|
|
|
Element rootElement = doc.createElement("field");
|
|
|
|
rootElement.setAttribute("id", this.id);
|
|
|
|
rootElement.setAttribute("ordinal", "" + this.ordinal);
|
|
|
|
|
2019-10-15 17:29:34 +02:00
|
|
|
Element rdaCommonStandard = doc.createElement("rdaCommonStandard");
|
|
|
|
rdaCommonStandard.setTextContent(this.rdaCommonStandard);
|
|
|
|
|
2018-02-16 11:34:02 +01:00
|
|
|
Element viewStyle = doc.createElement("viewStyle");
|
|
|
|
viewStyle.setAttribute("renderstyle", this.viewStyle.getRenderStyle());
|
|
|
|
viewStyle.setAttribute("cssClass", this.viewStyle.getCssClass());
|
|
|
|
|
|
|
|
Element visibility = this.visible.toXml(doc);
|
|
|
|
|
|
|
|
Element defaultValue = doc.createElement("defaultValue");
|
|
|
|
defaultValue.setAttribute("type", this.defaultValue.getType());
|
|
|
|
defaultValue.setAttribute("value", this.defaultValue.getValue());
|
|
|
|
|
|
|
|
Element validations = doc.createElement("validations");
|
2018-06-27 12:29:21 +02:00
|
|
|
for (eu.eudat.models.data.admin.components.datasetprofile.Field.ValidationType validationType : this.validations) {
|
2018-02-16 11:34:02 +01:00
|
|
|
Element validation = doc.createElement("validation");
|
|
|
|
validation.setAttribute("type", "" + validationType.getValue());
|
|
|
|
validations.appendChild(validation);
|
|
|
|
}
|
|
|
|
|
2018-10-18 11:34:11 +02:00
|
|
|
Element numbering = doc.createElement("numbering");
|
|
|
|
numbering.setTextContent(this.numbering);
|
|
|
|
|
2019-10-15 17:29:34 +02:00
|
|
|
rootElement.appendChild(rdaCommonStandard);
|
2018-10-18 11:34:11 +02:00
|
|
|
rootElement.appendChild(numbering);
|
2018-02-16 11:34:02 +01:00
|
|
|
rootElement.appendChild(validations);
|
|
|
|
rootElement.appendChild(defaultValue);
|
|
|
|
rootElement.appendChild(visibility);
|
|
|
|
rootElement.appendChild(viewStyle);
|
|
|
|
if (this.data != null) rootElement.appendChild(this.data.toXml(doc));
|
|
|
|
return rootElement;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Field fromXml(Element element) {
|
|
|
|
this.id = element.getAttribute("id");
|
|
|
|
this.ordinal = Integer.parseInt(element.getAttribute("ordinal"));
|
|
|
|
|
2018-10-18 11:34:11 +02:00
|
|
|
|
2018-02-16 11:34:02 +01:00
|
|
|
this.viewStyle = new ViewStyle();
|
|
|
|
Element viewStyle = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "viewStyle");
|
|
|
|
|
|
|
|
this.viewStyle.setRenderStyle(viewStyle.getAttribute("renderstyle"));
|
|
|
|
this.viewStyle.setCssClass(viewStyle.getAttribute("cssClass"));
|
|
|
|
|
|
|
|
Element visibility = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "visible");
|
|
|
|
|
|
|
|
this.visible = new Visibility().fromXml(visibility);
|
|
|
|
|
2018-10-18 11:34:11 +02:00
|
|
|
Element numbering = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "numbering");
|
|
|
|
if (numbering != null) this.numbering = numbering.getTextContent();
|
|
|
|
|
2019-10-15 17:29:34 +02:00
|
|
|
Element rdaCommonStandard = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "rdaCommonStandard");
|
|
|
|
if (rdaCommonStandard != null) this.rdaCommonStandard = rdaCommonStandard.getTextContent();
|
|
|
|
|
2018-02-16 11:34:02 +01:00
|
|
|
Element dataElement = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "data");
|
|
|
|
|
|
|
|
Element defaultValue = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "defaultValue");
|
|
|
|
|
|
|
|
this.defaultValue = new DefaultValue();
|
|
|
|
this.defaultValue.setType(defaultValue.getAttribute("type"));
|
|
|
|
this.defaultValue.setValue(defaultValue.getAttribute("value"));
|
|
|
|
this.data = new ModelBuilder().toFieldData(null, this.viewStyle.getRenderStyle(), dataElement);
|
|
|
|
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) {
|
|
|
|
int enumValue = Integer.parseInt(((Element) validationElement).getAttribute("type"));
|
2018-06-27 12:29:21 +02:00
|
|
|
eu.eudat.models.data.admin.components.datasetprofile.Field.ValidationType validationType = eu.eudat.models.data.admin.components.datasetprofile.Field.ValidationType.fromInteger(enumValue);
|
2018-02-16 11:34:02 +01:00
|
|
|
this.validations.add(validationType);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return this;
|
|
|
|
}
|
2017-12-15 11:05:51 +01:00
|
|
|
|
|
|
|
}
|