argos/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/importmodel/fields/FieldImportXml.java

150 lines
4.6 KiB
Java

package eu.eudat.commons.types.descriptiontemplate.importmodel.fields;
import eu.eudat.commons.enums.FieldType;
import eu.eudat.commons.enums.FieldValidationType;
import eu.eudat.commons.types.descriptiontemplate.fielddata.BaseFieldDataEntity;
import eu.eudat.commons.types.descriptiontemplate.fielddata.FieldDataHelper;
import eu.eudat.model.persist.descriptiontemplatedefinition.FieldPersist;
import eu.eudat.service.fielddatahelper.FieldDataHelperService;
import eu.eudat.service.fielddatahelper.FieldDataHelperServiceProvider;
import org.w3c.dom.Element;
import jakarta.xml.bind.annotation.XmlAttribute;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import java.util.LinkedList;
import java.util.List;
@XmlRootElement(name = "field")
public class FieldImportXml {
private String id;
private int ordinal;
private String numbering;
private List<ValidationsImportXml> validations;
private DefaultValueImportXml defaultValue;
private VisibleImportXml visible;
private ViewStyleImportXml viewStyle;
private Element data;
private SchematicsImportXml schematics;
@XmlAttribute(name = "id")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@XmlAttribute(name = "ordinal")
public int getOrdinal() {
return ordinal;
}
public void setOrdinal(int ordinal) {
this.ordinal = ordinal;
}
@XmlElement(name = "numbering")
public String getNumbering() {
return numbering;
}
public void setNumbering(String numbering) {
this.numbering = numbering;
}
@XmlElement(name = "validations")
public List<ValidationsImportXml> getValidations() {
return validations;
}
public void setValidations(List<ValidationsImportXml> validations) {
this.validations = validations;
}
@XmlElement(name = "defaultValue")
public DefaultValueImportXml getDefaultValue() {
return defaultValue;
}
public void setDefaultValue(DefaultValueImportXml defaultValue) {
this.defaultValue = defaultValue;
}
@XmlElement(name = "visible")
public VisibleImportXml getVisible() {
return visible;
}
public void setVisible(VisibleImportXml visible) {
this.visible = visible;
}
@XmlElement(name = "viewStyle")
public ViewStyleImportXml getViewStyle() {
return viewStyle;
}
public void setViewStyle(ViewStyleImportXml viewStyle) {
this.viewStyle = viewStyle;
}
@XmlElement(name = "data")
public Element getData() {
return this.data;
}
public void setData(Element data) {
this.data = data;
}
@XmlElement(name = "schematics")
public SchematicsImportXml getSchematics() {
return schematics;
}
public void setSchematics(SchematicsImportXml schematics) {
this.schematics = schematics;
}
public FieldPersist toPersistModel(FieldDataHelperServiceProvider fieldDataHelperServiceProvider) {
FieldPersist fieldEntity =new FieldPersist();
fieldEntity.setId(this.id);
fieldEntity.setOrdinal(this.ordinal);
List<FieldValidationType> validationList = new LinkedList<>();
for(ValidationsImportXml validation:this.validations){
if(validation.getValidation()!=null) {
validationList.add(validation.toPersistModel());
}
}
fieldEntity.setValidations(validationList);
fieldEntity.setDefaultValue(this.defaultValue.toPersistModel());
fieldEntity.setVisibilityRules(this.visible.toPersistModel());
FieldType fieldType = this.viewStyle.toPersistModel();
BaseFieldDataEntity<?> data = new FieldDataHelper().toFieldData(null, fieldType, (Element) this.data);
if (data != null) {
FieldDataHelperService fieldDataHelperService = fieldDataHelperServiceProvider.get(fieldType);
fieldEntity.setData(fieldDataHelperService.mapDataToPersist((BaseFieldDataEntity<?>)fieldDataHelperService.newDataInstance().fromXml(this.data)));
}
List<String> schematicsList = new LinkedList<>();
if (this.schematics != null && this.schematics.getSchematics() != null) {
for (SchematicImportXml schematic : this.schematics.getSchematics()) {
if (schematic != null && schematic.getSchematic() != null && !schematic.getSchematic().isEmpty())
schematicsList.add(schematic.getSchematic());
}
}
fieldEntity.setSchematics(schematicsList);
return fieldEntity;
}
}