argos/dmp-backend/web/src/main/java/eu/eudat/models/data/entities/xmlmodels/dmpprofiledefinition/Field.java

102 lines
3.2 KiB
Java

package eu.eudat.models.data.entities.xmlmodels.dmpprofiledefinition;
import eu.eudat.models.data.entities.xmlmodels.dmpprofiledefinition.types.DMPProfileFieldDataType;
import eu.eudat.models.data.entities.xmlmodels.dmpprofiledefinition.types.DMPProfileType;
import eu.eudat.logic.utilities.interfaces.XmlSerializable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.util.UUID;
/**
* Created by ikalyvas on 3/21/2018.
*/
public class Field implements XmlSerializable<Field> {
private UUID id;
private DMPProfileType type;
private DMPProfileFieldDataType dataType;
private Boolean required;
private String label;
private Object value;
private DmpProfileExternalAutoComplete externalAutocomplete;
public UUID getId() {
if (this.id == null) this.id = UUID.randomUUID();
return id;
}
public void setId(UUID id) {
this.id = id;
}
public Integer getType() {
return type.getValue();
}
public void setType(DMPProfileType type) {
this.type = type;
}
public Integer getDataType() {
return dataType.getValue();
}
public void setDataType(DMPProfileFieldDataType dataType) {
this.dataType = dataType;
}
public Boolean getRequired() {
return required;
}
public void setRequired(Boolean required) {
this.required = required;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public DmpProfileExternalAutoComplete getExternalAutocomplete() {
return externalAutocomplete;
}
public void setExternalAutocomplete(DmpProfileExternalAutoComplete externalAutocomplete) {
this.externalAutocomplete = externalAutocomplete;
}
@Override
public Element toXml(Document doc) {
Element rootElement = doc.createElement("field");
rootElement.setAttribute("id", this.getId().toString());
rootElement.setAttribute("type", this.type.getValue().toString());
rootElement.setAttribute("datatype", "" + this.dataType.getValue().toString());
rootElement.setAttribute("required", this.required.toString());
rootElement.setAttribute("label", this.label);
if (this.externalAutocomplete != null)
rootElement.appendChild(this.externalAutocomplete.toXml(doc));
return rootElement;
}
@Override
public eu.eudat.models.data.entities.xmlmodels.dmpprofiledefinition.Field fromXml(Element item) {
this.id = UUID.fromString(item.getAttribute("id"));
this.label = item.getAttribute("label");
this.dataType = DMPProfileFieldDataType.fromInteger(Integer.parseInt(item.getAttribute("datatype")));
this.required = Boolean.valueOf(item.getAttribute("required"));
this.type = DMPProfileType.fromInteger(Integer.parseInt(item.getAttribute("type")));
Element optionElement = (Element) item.getElementsByTagName("externalAutocomplete").item(0);
if (optionElement != null) {
this.externalAutocomplete = new DmpProfileExternalAutoComplete().fromXml(optionElement);
}
return this;
}
}