From 268b82eb49292ebf0d541ac8cdaa87c513dbe3bc Mon Sep 17 00:00:00 2001 From: sgiannopoulos Date: Tue, 30 Jan 2024 16:31:03 +0200 Subject: [PATCH] update description template xml --- .../commons/enums/FieldDataComboBoxType.java | 27 -- .../enums/FieldDataInternalDmpEntryType.java | 28 -- .../eu/eudat/commons/enums/FieldType.java | 2 - .../descriptiontemplate/DefinitionEntity.java | 55 +-- .../descriptiontemplate/FieldEntity.java | 187 ++------ .../descriptiontemplate/FieldSetEntity.java | 114 +---- .../MultiplicityEntity.java | 9 + .../types/descriptiontemplate/PageEntity.java | 25 +- .../types/descriptiontemplate/RuleEntity.java | 33 +- .../descriptiontemplate/SectionEntity.java | 121 +---- .../fielddata/AutoCompleteDataEntity.java | 129 ++---- .../fielddata/BaseFieldDataEntity.java | 31 +- .../fielddata/ComboBoxDataEntity.java | 57 +-- .../fielddata/ExternalDatasetDataEntity.java | 31 +- .../fielddata/FieldDataHelper.java | 71 --- .../fielddata/InternalDmpBaseDataEntity.java | 34 +- .../LabelAndMultiplicityDataEntity.java | 24 +- .../fielddata/LabelDataEntity.java | 9 +- .../fielddata/RadioBoxDataEntity.java | 73 +-- .../fielddata/UploadDataEntity.java | 82 +--- .../fielddata/WordListDataEntity.java | 59 +-- .../importexport/FieldImportExport.java | 11 +- .../fielddata/BaseFieldDataImportExport.java | 2 + .../fielddata/ComboBoxDataOptionEntity.java | 7 - .../todelete/VisibilityEntity.java | 40 +- .../fielddata/RadioBoxOptionBuilder.java | 6 +- .../fielddata/UploadOptionBuilder.java | 6 +- ...plateDefinitionFileTransformerBuilder.java | 9 +- .../fielddata/BaseFieldDataPersist.java | 2 +- .../FieldDataHelperServiceProvider.java | 2 +- ...AndMultiplicityFieldDataHelperService.java | 2 +- .../LabelFieldDataHelperService.java | 2 +- .../RadioBoxFieldDataHelperService.java | 8 +- .../UploadFieldDataHelperService.java | 8 +- .../prefilling/PrefillingServiceImpl.java | 1 - .../eu/eudat/controllers/FileController.java | 2 +- .../logic/managers/DatasetProfileManager.java | 2 +- .../mapper/prefilling/PrefillingMapper.java | 3 +- .../utilities/documents/word/WordBuilder.java | 106 +++-- .../ExportXmlBuilderDatasetProfile.java | 15 +- .../components/datasetprofile/Field.java | 1 - .../user/components/datasetprofile/Field.java | 1 - ...escriptionTemplateXmlMigrationService.java | 434 ++++++++++++++++++ ...a => DmpBlueprintXmlMigrationService.java} | 9 +- .../commons/datafield/AutoCompleteData.java | 130 +++++- .../migration/MigrationController.java | 28 +- 46 files changed, 897 insertions(+), 1141 deletions(-) delete mode 100644 dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldDataComboBoxType.java delete mode 100644 dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldDataInternalDmpEntryType.java delete mode 100644 dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/FieldDataHelper.java create mode 100644 dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/DescriptionTemplateXmlMigrationService.java rename dmp-migration-tool/web/src/main/java/eu/old/eudat/migration/{DmpBlueprintMigrationService.java => DmpBlueprintXmlMigrationService.java} (96%) diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldDataComboBoxType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldDataComboBoxType.java deleted file mode 100644 index d60621343..000000000 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldDataComboBoxType.java +++ /dev/null @@ -1,27 +0,0 @@ -package eu.eudat.commons.enums; - -import com.fasterxml.jackson.annotation.JsonValue; -import eu.eudat.data.converters.enums.DatabaseEnum; - -import java.util.Map; - -public enum FieldDataComboBoxType implements DatabaseEnum { - Autocomplete("autocomplete"), - Wordlist("wordlist"); - private final String value; - - FieldDataComboBoxType(String value) { - this.value = value; - } - - @JsonValue - public String getValue() { - return value; - } - - private static final Map map = EnumUtils.getEnumValueMap(FieldDataComboBoxType.class); - - public static FieldDataComboBoxType of(String i) { - return map.get(i); - } -} diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldDataInternalDmpEntryType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldDataInternalDmpEntryType.java deleted file mode 100644 index 2281f0eb6..000000000 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldDataInternalDmpEntryType.java +++ /dev/null @@ -1,28 +0,0 @@ -package eu.eudat.commons.enums; - -import com.fasterxml.jackson.annotation.JsonValue; -import eu.eudat.data.converters.enums.DatabaseEnum; - -import java.util.Map; - -public enum FieldDataInternalDmpEntryType implements DatabaseEnum { - Researchers("researchers"), - Dmps("dmps"), - Datasets("datasets"); - private final String value; - - FieldDataInternalDmpEntryType(String value) { - this.value = value; - } - - @JsonValue - public String getValue() { - return value; - } - - private static final Map map = EnumUtils.getEnumValueMap(FieldDataInternalDmpEntryType.class); - - public static FieldDataInternalDmpEntryType of(String i) { - return map.get(i); - } -} diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldType.java b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldType.java index 361543916..cfb10e4fa 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldType.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/enums/FieldType.java @@ -6,12 +6,10 @@ import eu.eudat.data.converters.enums.DatabaseEnum; import java.util.Map; public enum FieldType implements DatabaseEnum { - COMBO_BOX(Names.ComboBox), //TODO remove from xml an keep subtypes only AUTO_COMPLETE, WORD_LIST AUTO_COMPLETE(Names.Autocomplete), WORD_LIST(Names.Wordlist), BOOLEAN_DECISION(Names.BooleanDecision), RADIO_BOX(Names.RadioBox), - INTERNAL_DMP_ENTRIES(Names.InternalDmpEntities), //TODO remove from xml an keep subtypes only INTERNAL_DMP_ENTRIES_RESEARCHERS. INTERNAL_DMP_ENTRIES_DMPS, INTERNAL_DMP_ENTRIES_DATASETS INTERNAL_DMP_ENTRIES_RESEARCHERS(Names.InternalDmpResearchers), INTERNAL_DMP_ENTRIES_DMPS(Names.InternalDmpDmps), INTERNAL_DMP_ENTRIES_DATASETS(Names.InternalDmpDatasets), diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/DefinitionEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/DefinitionEntity.java index 5e87fdc1c..8d06da407 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/DefinitionEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/DefinitionEntity.java @@ -2,6 +2,7 @@ package eu.eudat.commons.types.descriptiontemplate; import eu.eudat.commons.types.xml.XmlBuilder; import eu.eudat.commons.types.xml.XmlSerializable; +import jakarta.xml.bind.annotation.*; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -11,8 +12,14 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -public class DefinitionEntity implements XmlSerializable { +@XmlRootElement(name = "root") +@XmlAccessorType(XmlAccessType.FIELD) +public class DefinitionEntity { + @XmlElementWrapper(name = "sections") + @XmlElement(name = "section") private List sections; + @XmlElementWrapper(name = "pages") + @XmlElement(name = "page") private List pages; public List getSections() { @@ -31,52 +38,6 @@ public class DefinitionEntity implements XmlSerializable { this.pages = pageEntities; } - @Override - public Element toXml(Document doc) { - Element root = doc.createElement("root"); - Element sections = doc.createElement("sections"); - Element pages = doc.createElement("pages"); - for (SectionEntity sectionEntity : this.sections) { - sectionEntity.setNumbering("" + (this.sections.indexOf(sectionEntity) + 1)); - sections.appendChild(sectionEntity.toXml(doc)); - } - - for (PageEntity pageEntity : this.pages) { - pages.appendChild(pageEntity.toXml(doc)); - } - - root.appendChild(pages); - root.appendChild(sections); - return root; - } - - @Override - public DefinitionEntity fromXml(Element element) { - - this.sections = new LinkedList(); - Element sections = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "sections"); - if (sections != null) { - NodeList sectionElements = sections.getChildNodes(); - for (int temp = 0; temp < sectionElements.getLength(); temp++) { - Node sectionElement = sectionElements.item(temp); - if (sectionElement.getNodeType() == Node.ELEMENT_NODE) { - this.sections.add(new SectionEntity().fromXml((Element) sectionElement)); - } - } - } - this.pages = new LinkedList<>(); - Element pages = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "pages"); - if (pages != null) { - NodeList pagesElements = pages.getChildNodes(); - for (int temp = 0; temp < pagesElements.getLength(); temp++) { - Node pageElement = pagesElements.item(temp); - if (pageElement.getNodeType() == Node.ELEMENT_NODE) { - this.pages.add(new PageEntity().fromXml((Element) pageElement)); - } - } - } - return this; - } public List getAllField(){ List fieldEntities = new ArrayList<>(); if (this.getSections() != null){ diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/FieldEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/FieldEntity.java index fb005a2cb..1c66feca9 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/FieldEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/FieldEntity.java @@ -4,25 +4,62 @@ import eu.eudat.commons.enums.FieldValidationType; import eu.eudat.commons.enums.FieldType; import eu.eudat.commons.types.common.DatabaseViewStyleDefinition; import eu.eudat.commons.types.descriptiontemplate.fielddata.*; -import eu.eudat.commons.types.xml.XmlSerializable; -import eu.eudat.commons.types.xml.XmlBuilder; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; +import jakarta.xml.bind.annotation.*; -import java.util.LinkedList; import java.util.List; -public class FieldEntity implements DatabaseViewStyleDefinition, XmlSerializable { +@XmlAccessorType(XmlAccessType.FIELD) +public class FieldEntity implements DatabaseViewStyleDefinition { + @XmlAttribute(name="id") private String id; + @XmlAttribute(name="ordinal") private int ordinal; + @XmlElementWrapper(name = "schematics") + @XmlElement(name = "schematic") private List schematics; + @XmlAttribute(name="numbering") private String numbering; + @XmlAttribute(name="defaultValue") private String defaultValue; + @XmlElementWrapper(name = "visibilityRules") + @XmlElement(name = "rule") private List visibilityRules; + + @XmlElements({ + @XmlElement(name = FieldType.Names.CheckBox, type = LabelDataEntity.class), + @XmlElement(name = FieldType.Names.Validation, type = LabelDataEntity.class), + @XmlElement(name = FieldType.Names.TextArea, type = LabelDataEntity.class), + @XmlElement(name = FieldType.Names.Taxonomies, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.Tags, type = LabelDataEntity.class), + @XmlElement(name = FieldType.Names.Services, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.RichTextarea, type = LabelDataEntity.class), + @XmlElement(name = FieldType.Names.Researchers, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.Registries, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.PubRepositories, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.Publications, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.Organizations, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.Licenses, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.JournalRepositories, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.FreeText, type = LabelDataEntity.class), + @XmlElement(name = FieldType.Names.ExternalDatasets, type = ExternalDatasetDataEntity.class), + @XmlElement(name = FieldType.Names.DatePicker, type = LabelDataEntity.class), + @XmlElement(name = FieldType.Names.DatasetIdentifier, type = LabelDataEntity.class), + @XmlElement(name = FieldType.Names.DataRepositories, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.Currency, type = LabelDataEntity.class), + @XmlElement(name = FieldType.Names.BooleanDecision, type = LabelDataEntity.class), + @XmlElement(name = FieldType.Names.Upload, type = UploadDataEntity.class), + @XmlElement(name = FieldType.Names.RadioBox, type = RadioBoxDataEntity.class), + @XmlElement(name = FieldType.Names.Wordlist, type = WordListDataEntity.class), + @XmlElement(name = FieldType.Names.Autocomplete, type = AutoCompleteDataEntity.class), + @XmlElement(name = FieldType.Names.InternalDmpDatasets, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.InternalDmpDmps, type = LabelAndMultiplicityDataEntity.class), + @XmlElement(name = FieldType.Names.InternalDmpResearchers, type = LabelAndMultiplicityDataEntity.class), + }) private BaseFieldDataEntity data; + @XmlElementWrapper(name = "validations") + @XmlElement(name = "validation") private List validations; + @XmlAttribute(name="includeInExport") private Boolean includeInExport; public String getId() { @@ -90,138 +127,4 @@ public class FieldEntity implements DatabaseViewStyleDefinition, XmlSerializable public void setVisibilityRules(List 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; - } - } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/FieldSetEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/FieldSetEntity.java index 35492ff86..ea381e745 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/FieldSetEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/FieldSetEntity.java @@ -3,6 +3,7 @@ package eu.eudat.commons.types.descriptiontemplate; import eu.eudat.commons.types.common.DatabaseViewStyleDefinition; import eu.eudat.commons.types.xml.XmlSerializable; import eu.eudat.commons.types.xml.XmlBuilder; +import jakarta.xml.bind.annotation.*; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -12,18 +13,30 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; -public class FieldSetEntity implements DatabaseViewStyleDefinition, XmlSerializable { +@XmlAccessorType(XmlAccessType.FIELD) +public class FieldSetEntity implements DatabaseViewStyleDefinition { + @XmlAttribute(name="id") private String id; + @XmlAttribute(name="ordinal") private int ordinal; + + @XmlElementWrapper(name = "fields") + @XmlElement(name = "field") private List fields; + @XmlAttribute(name="numbering") private String numbering; + @XmlAttribute(name="title") private String title; + @XmlAttribute(name="description") private String description; + @XmlAttribute(name="extendedDescription") private String extendedDescription; + @XmlAttribute(name="additionalInformation") private String additionalInformation; + @XmlElement(name="multiplicity") private MultiplicityEntity multiplicity; + @XmlAttribute(name="hasCommentField") private boolean hasCommentField; -// private String commentFieldValue; //TODO: DescriptionTemplate public List getFields() { return fields; @@ -81,13 +94,6 @@ public class FieldSetEntity implements DatabaseViewStyleDefinition, XmlSerializa this.hasCommentField = hasCommentField; } -// public String getCommentFieldValue() { -// return commentFieldValue; -// } -// public void setCommentFieldValue(String commentFieldValue) { -// this.commentFieldValue = commentFieldValue; -// } - public String getNumbering() { return numbering; } @@ -102,95 +108,7 @@ public class FieldSetEntity implements DatabaseViewStyleDefinition, XmlSerializa this.additionalInformation = additionalInformation; } - @Override - public Element toXml(Document doc) { - Element fieldSet = doc.createElement("fieldSet"); - fieldSet.setAttribute("id", this.id); - fieldSet.setAttribute("ordinal", "" + this.ordinal); - Element title = doc.createElement("title"); - title.setTextContent(this.title); - - Element description = doc.createElement("description"); - description.setTextContent(this.description); - - Element extendedDescription = doc.createElement("extendedDescription"); - extendedDescription.setTextContent(this.extendedDescription); - - Element additionalInformation = doc.createElement("additionalInformation"); - additionalInformation.setTextContent(this.additionalInformation); - - Element multiplicity = doc.createElement("multiplicity"); - multiplicity.setAttribute("min", "" + this.multiplicity.getMin()); - multiplicity.setAttribute("max", "" + this.multiplicity.getMax()); - multiplicity.setAttribute("placeholder", this.multiplicity.getPlaceholder()); - multiplicity.setAttribute("tableView", String.valueOf(this.multiplicity.getTableView())); - - Element commentField = doc.createElement("commentField"); - commentField.setAttribute("hasCommentField", "" + this.hasCommentField); -// commentField.setAttribute("commentFieldValue", this.commentFieldValue); - - Element numbering = doc.createElement("numbering"); - numbering.setTextContent(this.numbering); - - Element fieldsElement = doc.createElement("fields"); - for (FieldEntity fieldEntity : fields) { - fieldEntity.setNumbering(this.numbering + "." + (this.fields.indexOf(fieldEntity) + 1)); - fieldsElement.appendChild(fieldEntity.toXml(doc)); - } - - fieldSet.appendChild(numbering); - fieldSet.appendChild(commentField); - fieldSet.appendChild(fieldsElement); - fieldSet.appendChild(multiplicity); - fieldSet.appendChild(title); - fieldSet.appendChild(description); - fieldSet.appendChild(extendedDescription); - fieldSet.appendChild(additionalInformation); - return fieldSet; - } - - @Override - public FieldSetEntity fromXml(Element element) { - this.id = element.getAttribute("id"); - this.ordinal = Integer.parseInt(element.getAttribute("ordinal")); - this.fields = new LinkedList(); - Element title = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "title"); - this.title = title.getTextContent(); - Element description = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "description"); - this.description = description.getTextContent(); - Element extendedDescription = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "extendedDescription"); - this.extendedDescription = extendedDescription.getTextContent(); - Element additionalInformation = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "additionalInformation"); - if (additionalInformation != null) - this.additionalInformation = additionalInformation.getTextContent(); - Element commentField = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "commentField"); - this.hasCommentField = Boolean.parseBoolean(commentField.getAttribute("hasCommentField")); -// this.commentFieldValue = commentField.getAttribute("commentFieldValue"); - Element fields = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "fields"); - - Element numbering = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "numbering"); - if (numbering != null) this.numbering = numbering.getTextContent(); - - if (fields != null) { - NodeList fieldElements = fields.getChildNodes(); - for (int temp = 0; temp < fieldElements.getLength(); temp++) { - Node fieldElement = fieldElements.item(temp); - if (fieldElement.getNodeType() == Node.ELEMENT_NODE) { - this.fields.add(new FieldEntity().fromXml((Element) fieldElement)); - } - } - } - - this.multiplicity = new MultiplicityEntity(); - Element multiplicity = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "multiplicity"); - - this.multiplicity.setMin(Integer.parseInt(multiplicity.getAttribute("min"))); - this.multiplicity.setMax(Integer.parseInt(multiplicity.getAttribute("max"))); - this.multiplicity.setPlaceholder(multiplicity.getAttribute("placeholder")); - this.multiplicity.setTableView(Boolean.parseBoolean(multiplicity.getAttribute("tableView"))); - - return this; - } + public List getAllField() { return this.getFields() == null ? new ArrayList<>() : this.getFields(); } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/MultiplicityEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/MultiplicityEntity.java index 9d9d20b2f..9f4249b88 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/MultiplicityEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/MultiplicityEntity.java @@ -1,10 +1,19 @@ package eu.eudat.commons.types.descriptiontemplate; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; + +@XmlAccessorType(XmlAccessType.FIELD) public class MultiplicityEntity { + @XmlAttribute(name="min") private int min; + @XmlAttribute(name="max") private int max; + @XmlAttribute(name="placeholder") private String placeholder; + @XmlAttribute(name="tableView") private boolean tableView; public int getMin() { diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/PageEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/PageEntity.java index 77abfb4ce..e12811c6e 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/PageEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/PageEntity.java @@ -2,13 +2,20 @@ package eu.eudat.commons.types.descriptiontemplate; import eu.eudat.commons.types.common.DatabaseViewStyleDefinition; import eu.eudat.commons.types.xml.XmlSerializable; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; import org.w3c.dom.Document; import org.w3c.dom.Element; -public class PageEntity implements DatabaseViewStyleDefinition, XmlSerializable { +@XmlAccessorType(XmlAccessType.FIELD) +public class PageEntity implements DatabaseViewStyleDefinition { + @XmlAttribute(name="id") private String id; + @XmlAttribute(name="ordinal") private int ordinal; + @XmlAttribute(name="title") private String title; public String getId() { @@ -35,20 +42,4 @@ public class PageEntity implements DatabaseViewStyleDefinition, XmlSerializable< this.title = title; } - @Override - public Element toXml(Document doc) { - Element root = doc.createElement("page"); - root.setAttribute("title", this.title); - root.setAttribute("ordinal", "" + this.ordinal); - root.setAttribute("id", this.id); - return root; - } - - @Override - public PageEntity fromXml(Element item) { - this.ordinal = Integer.parseInt(item.getAttribute("ordinal")); - this.id = item.getAttribute("id"); - this.title = item.getAttribute("title"); - return this; - } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/RuleEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/RuleEntity.java index 6740f18ad..dcc083b62 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/RuleEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/RuleEntity.java @@ -1,11 +1,17 @@ package eu.eudat.commons.types.descriptiontemplate; import eu.eudat.commons.types.xml.XmlSerializable; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; import org.w3c.dom.Document; import org.w3c.dom.Element; -public class RuleEntity implements XmlSerializable { +@XmlAccessorType(XmlAccessType.FIELD) +public class RuleEntity { + @XmlAttribute(name="target") private String target; + @XmlAttribute(name="value") private String value; public String getTarget() { @@ -24,29 +30,4 @@ public class RuleEntity implements XmlSerializable { this.value = value; } - @Override - public Element toXml(Document doc) { - Element rule = doc.createElement("rule"); - rule.setAttribute("target", this.target); - - Element value = doc.createElement("value"); - value.setTextContent(this.value); - - rule.appendChild(value); - return rule; - } - - @Override - public RuleEntity fromXml(Element item) { - this.target = item.getAttribute("target"); - - Element value = (Element) item.getElementsByTagName("value").item(0); - if (value != null) { - this.value = value.getTextContent(); - } - - return this; - } - - } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/SectionEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/SectionEntity.java index 2041ed3bc..3785f566f 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/SectionEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/SectionEntity.java @@ -1,28 +1,37 @@ package eu.eudat.commons.types.descriptiontemplate; import eu.eudat.commons.types.common.DatabaseViewStyleDefinition; -import eu.eudat.commons.types.xml.XmlBuilder; -import eu.eudat.commons.types.xml.XmlSerializable; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; +import jakarta.xml.bind.annotation.*; import java.util.ArrayList; -import java.util.LinkedList; import java.util.List; -public class SectionEntity implements DatabaseViewStyleDefinition, XmlSerializable { +@XmlAccessorType(XmlAccessType.FIELD) +public class SectionEntity implements DatabaseViewStyleDefinition{ + @XmlAttribute(name="id") private String id; + @XmlAttribute(name="ordinal") private int ordinal; + @XmlAttribute(name="defaultVisibility") private boolean defaultVisibility; + @XmlAttribute(name="numbering") private String numbering; + @XmlAttribute(name="page") private String page; + @XmlAttribute(name="title") private String title; + @XmlAttribute(name="description") private String description; + @XmlAttribute(name="extendedDescription") private String extendedDescription; + + @XmlElementWrapper(name = "sections") + @XmlElement(name = "section") private List sections; + @XmlElementWrapper(name = "fieldSets") + @XmlElement(name = "fieldSet") private List fieldSets; + @XmlAttribute(name="multiplicity") private Boolean multiplicity; public String getId() { @@ -113,102 +122,6 @@ public class SectionEntity implements DatabaseViewStyleDefinition, XmlSerializab this.multiplicity = multiplicity; } - @Override - public Element toXml(Document doc) { - Element rootElement = doc.createElement("section"); - rootElement.setAttribute("id", this.id); - rootElement.setAttribute("ordinal", "" + this.ordinal); - rootElement.setAttribute("defaultVisibility", "" + this.defaultVisibility); - rootElement.setAttribute("page", "" + this.page); - rootElement.setAttribute("multiplicity", (this.multiplicity != null ? "" + this.multiplicity : "false")); - - Element description = doc.createElement("description"); - description.setTextContent(this.description); - - Element extendedDescription = doc.createElement("extendedDescription"); - extendedDescription.setTextContent(this.extendedDescription); - - Element numbering = doc.createElement("numbering"); - numbering.setTextContent(this.numbering); - - Element title = doc.createElement("title"); - title.setTextContent(this.title); - - if (sections != null) { - Element sections = doc.createElement("sections"); - for (SectionEntity sectionEntity : this.sections) { - sectionEntity.setNumbering(this.numbering + "." + (this.sections.indexOf(sectionEntity) + 1)); - sections.appendChild(sectionEntity.toXml(doc)); - } - rootElement.appendChild(sections); - } - - if (this.fieldSets != null) { - Element formGroups = doc.createElement("fieldSets"); - for (FieldSetEntity fieldSetEntity : this.fieldSets) { - fieldSetEntity.setNumbering(this.numbering + "." + (this.fieldSets.indexOf(fieldSetEntity) + 1)); - formGroups.appendChild(fieldSetEntity.toXml(doc)); - } - rootElement.appendChild(formGroups); - } - - rootElement.appendChild(numbering); - rootElement.appendChild(title); - rootElement.appendChild(extendedDescription); - rootElement.appendChild(description); - - return rootElement; - } - - @Override - public SectionEntity fromXml(Element element) { - - this.id = element.getAttribute("id"); - this.ordinal = Integer.parseInt(element.getAttribute("ordinal")); - this.defaultVisibility = Boolean.valueOf(element.getAttribute("defaultVisibility")); - this.page = element.getAttribute("page"); - this.multiplicity = element.hasAttribute("multiplicity") ? Boolean.valueOf(element.getAttribute("multiplicity")) : false; - - Element description = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "description"); - if (description != null) this.description = description.getTextContent(); - - Element extendedDescription = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "extendedDescription"); - if (extendedDescription != null) this.extendedDescription = extendedDescription.getTextContent(); - - Element numbering = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "numbering"); - if (numbering != null) this.numbering = numbering.getTextContent(); - - Element title = XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "title"); - if (title != null) this.title = title.getTextContent(); - - this.sections = new LinkedList(); - Element sections = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "sections"); - if (sections != null) { - NodeList sectionElements = sections.getChildNodes(); - for (int temp = 0; temp < sectionElements.getLength(); temp++) { - Node sectionElement = sectionElements.item(temp); - if (sectionElement.getNodeType() == Node.ELEMENT_NODE) { - this.sections.add(new SectionEntity().fromXml((Element) sectionElement)); - } - } - } - - this.fieldSets = new LinkedList(); - Element fieldGroups = (Element) XmlBuilder.getNodeFromListByTagName(element.getChildNodes(), "fieldSets"); - - if (fieldGroups != null) { - NodeList fieldGroupElements = fieldGroups.getChildNodes(); - for (int temp = 0; temp < fieldGroupElements.getLength(); temp++) { - Node fieldGroupElement = fieldGroupElements.item(temp); - if (fieldGroupElement.getNodeType() == Node.ELEMENT_NODE) { - this.fieldSets.add(new FieldSetEntity().fromXml((Element) fieldGroupElement)); - } - } - } - - return this; - } - public List getAllField(){ List fieldEntities = new ArrayList<>(); if (this.getFieldSets() != null){ diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/AutoCompleteDataEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/AutoCompleteDataEntity.java index d3d0a05fb..472a026aa 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/AutoCompleteDataEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/AutoCompleteDataEntity.java @@ -2,28 +2,28 @@ package eu.eudat.commons.types.descriptiontemplate.fielddata; import com.fasterxml.jackson.annotation.JsonValue; import eu.eudat.commons.enums.EnumUtils; -import eu.eudat.commons.enums.FieldDataComboBoxType; -import eu.eudat.commons.enums.FieldType; import eu.eudat.data.converters.enums.DatabaseEnum; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; +import jakarta.xml.bind.annotation.*; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; -public class AutoCompleteDataEntity extends ComboBoxDataEntity { - public AutoCompleteDataEntity() { - super(FieldType.AUTO_COMPLETE); - } +@XmlAccessorType(XmlAccessType.FIELD) +public class AutoCompleteDataEntity extends ComboBoxDataEntity { + + + @XmlAccessorType(XmlAccessType.FIELD) public static class AuthAutoCompleteData { + @XmlAttribute(name="url") private String url; + @XmlAttribute(name="method") private String method; + @XmlAttribute(name="body") private String body; + @XmlAttribute(name="path") private String path; + @XmlAttribute(name="type") private String type; public String getUrl() { @@ -66,13 +66,22 @@ public class AutoCompleteDataEntity extends ComboBoxDataEntity autoCompleteSingleDataList; - public Boolean getMultiAutoComplete() { return multiAutoComplete; } - public void setMultiAutoComplete(Boolean multiAutoComplete) { this.multiAutoComplete = multiAutoComplete; } + public Boolean getMultiAutoComplete() { + return multiAutoComplete; + } + + public void setMultiAutoComplete(Boolean multiAutoComplete) { + this.multiAutoComplete = multiAutoComplete; + } public List getAutoCompleteSingleDataList() { return autoCompleteSingleDataList; @@ -143,92 +160,6 @@ public class AutoCompleteDataEntity extends ComboBoxDataEntity(); - NodeList items = item.getElementsByTagName("autocompleteSingle"); - if (items != null && items.getLength() > 0) { - for (int i = 0; i < items.getLength(); i++) { - this.autoCompleteSingleDataList.add(new AutoCompleteSingleData()); - Element single = (Element) items.item(i); - this.mapFromXml(single, this.autoCompleteSingleDataList.get(i)); - } - } else { - this.autoCompleteSingleDataList.add(new AutoCompleteSingleData()); - this.mapFromXml(item, this.autoCompleteSingleDataList.get(0)); - } - this.multiAutoComplete = Boolean.parseBoolean(item.getAttribute("multiAutoComplete")); - return this; - } - - private void mapFromXml(Element item, AutoCompleteSingleData singleData) { - singleData.url = item.getAttribute("url"); - singleData.optionsRoot = item.getAttribute("optionsRoot"); - this.multiAutoComplete = Boolean.parseBoolean(item.getAttribute("multiAutoComplete")); - if (item.getAttribute("autoCompleteType") == null || item.getAttribute("autoCompleteType").equals("") ) { - singleData.autocompleteType = AutocompleteType.UNCACHED; - } else { - singleData.autocompleteType = AutocompleteType.of(Integer.parseInt(item.getAttribute("autoCompleteType"))); - } - singleData.hasAuth = Boolean.parseBoolean(item.getAttribute("hasAuth")); - singleData.method = item.hasAttribute("method") ? item.getAttribute("method") : "GET"; - Element optionElement = (Element) item.getElementsByTagName("option").item(0); - if (optionElement != null) { - singleData.autoCompleteOptions = new Option(); - singleData.autoCompleteOptions.setLabel(optionElement.getAttribute("label")); - singleData.autoCompleteOptions.setValue(optionElement.getAttribute("value")); - singleData.autoCompleteOptions.setSource(optionElement.getAttribute("source")); - singleData.autoCompleteOptions.setUri(optionElement.getAttribute("uri")); - } - if (singleData.hasAuth) { - Element authElement = (Element) item.getElementsByTagName("auth").item(0); - if (authElement != null) { - singleData.auth = new AuthAutoCompleteData(); - singleData.auth.setUrl(authElement.getAttribute("url")); - singleData.auth.setMethod(authElement.getAttribute("method")); - singleData.auth.setBody(authElement.getAttribute("body")); - singleData.auth.setPath(authElement.getAttribute("path")); - singleData.auth.setType(authElement.getAttribute("type")); - } - } - } public enum AutocompleteType implements DatabaseEnum { UNCACHED(0), CACHED(1); diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/BaseFieldDataEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/BaseFieldDataEntity.java index decd68980..ed92bb425 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/BaseFieldDataEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/BaseFieldDataEntity.java @@ -2,25 +2,22 @@ package eu.eudat.commons.types.descriptiontemplate.fielddata; import eu.eudat.commons.enums.FieldType; import eu.eudat.commons.types.xml.XmlSerializable; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; import org.w3c.dom.Document; import org.w3c.dom.Element; import java.util.Map; -public abstract class BaseFieldDataEntity implements XmlSerializable { - - private final FieldType fieldType; - public BaseFieldDataEntity(FieldType fieldType) { - this.fieldType = fieldType; - } +@XmlAccessorType(XmlAccessType.FIELD) +public abstract class BaseFieldDataEntity { + @XmlAttribute(name = "label") private String label; - - - public FieldType getFieldType() { - return fieldType; - } + @XmlAttribute(name = "fieldType") + private FieldType fieldType; public String getLabel() { return label; @@ -30,15 +27,11 @@ public abstract class BaseFieldDataEntity implements XmlSerializable { this.label = label; } - public Element toXml(Document doc) { - Element root = doc.createElement("data"); - root.setAttribute("label", this.getLabel()); - return root; + public FieldType getFieldType() { + return fieldType; } - public T fromXml(Element item) { - - this.setLabel(item.getAttribute("label")); - return (T) this; + public void setFieldType(FieldType fieldType) { + this.fieldType = fieldType; } } diff --git a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/ComboBoxDataEntity.java b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/ComboBoxDataEntity.java index a84abc5ba..7714d3b97 100644 --- a/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/ComboBoxDataEntity.java +++ b/dmp-backend/core/src/main/java/eu/eudat/commons/types/descriptiontemplate/fielddata/ComboBoxDataEntity.java @@ -1,26 +1,21 @@ package eu.eudat.commons.types.descriptiontemplate.fielddata; -import eu.eudat.commons.enums.FieldDataComboBoxType; -import eu.eudat.commons.enums.FieldType; -import eu.eudat.commons.types.xml.XmlSerializable; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import java.util.HashMap; -import java.util.Map; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAttribute; +@XmlAccessorType(XmlAccessType.FIELD) public abstract class ComboBoxDataEntity extends BaseFieldDataEntity { - public ComboBoxDataEntity(FieldType fieldType) { - super(fieldType); - } - - public abstract FieldDataComboBoxType getFieldSubType(); - - public static class Option implements XmlSerializable