diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/AdminManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/AdminManager.java index 751284d68..8d4b4382c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/AdminManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/AdminManager.java @@ -26,10 +26,26 @@ public class AdminManager { viewStyleDoc.appendChild(elementViewStyle); String xml = XmlBuilder.generateXml(viewStyleDoc); + if (profile.getDescription() == null) { + profile.setDescription(""); + } + + if (profile.getLanguage() == null) { + profile.setLanguage("en"); + } + eu.eudat.data.entities.DatasetProfile datasetProfile = apiContext.getOperationsContext().getBuilderFactory().getBuilder(DatasetProfileBuilder.class).definition(xml).label(profile.getLabel()) .status(profile.getStatus()).created(new Date()).description(profile.getDescription()).language(profile.getLanguage()) .build(); + if (datasetProfile.getGroupId() == null) { + datasetProfile.setGroupId(UUID.randomUUID()); + } + + if (datasetProfile.getVersion() == null) { + datasetProfile.setVersion((short)1); + } + return datasetProfile; } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java index 1e83fa6ae..45d53242b 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/xml/datasetProfileXml/ExportXmlBuilderDatasetProfile.java @@ -217,10 +217,12 @@ public class ExportXmlBuilderDatasetProfile { AutoCompleteData autoCompleteDataObject = (AutoCompleteData) field.getData(); dataOut.setAttribute("label", autoCompleteDataObject.getLabel()); dataOut.setAttribute("type", autoCompleteDataObject.getType()); + dataOut.setAttribute("multiAutoComplete", autoCompleteDataObject.getMultiAutoComplete().toString()); for (AutoCompleteData.AutoCompleteSingleData singleData: autoCompleteDataObject.getAutoCompleteSingleDataList()) { Element singleItem = element.createElement("autocompleteSingle"); singleItem.setAttribute("optionsRoot", singleData.getOptionsRoot()); singleItem.setAttribute("url", singleData.getUrl()); + singleItem.setAttribute("autoCompleteType", Integer.toString(singleData.getAutocompleteType())); if (singleData.getAutoCompleteOptions() != null) { Element optionChild = element.createElement("option"); optionChild.setAttribute("label", singleData.getAutoCompleteOptions().getLabel()); diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/AutoCompleteData.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/AutoCompleteData.java index c270fc7eb..5272795e3 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/AutoCompleteData.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/AutoCompleteData.java @@ -128,7 +128,7 @@ public class AutoCompleteData extends ComboBoxData { if (data != null) { this.multiAutoComplete = (Boolean) ((Map) data).get("multiAutoComplete"); - List> dataList = (List>) ((Map) data).get("autoCompleteSingleDataList"); + List> dataList = (List>) ((Map) data).get("autocompleteSingle"); this.autoCompleteSingleDataList = new ArrayList<>(); @@ -168,16 +168,36 @@ public class AutoCompleteData extends ComboBoxData { public Map toMap(Element item) { HashMap dataMap = new HashMap(); dataMap.put("label", item != null ? item.getAttribute("label") : ""); - dataMap.put("url", item != null ? item.getAttribute("url") : ""); + //dataMap.put("url", item != null ? item.getAttribute("url") : ""); dataMap.put("type", item != null ? item.getAttribute("type") : "autocomplete"); - dataMap.put("optionsRoot", item != null ? item.getAttribute("optionsRoot") : ""); - Element optionElement = (Element) item.getElementsByTagName("option").item(0); + dataMap.put("multiAutoComplete", item != null ? Boolean.valueOf(item.getAttribute("multiAutoComplete")) : false); + List> autoCompletes = new ArrayList<>(); + NodeList autoCompleteSingles = item.getChildNodes(); + for (int i = 0; i < autoCompleteSingles.getLength(); i++) { + if (autoCompleteSingles.item(i) instanceof Element && !((Element) autoCompleteSingles.item(i)).getTagName().equals("option")) { + Element node = (Element) autoCompleteSingles.item(i); + if (!node.hasChildNodes()) { + node.appendChild(node); + } + + autoCompletes.add(singleToMap(node)); + } else if (((Element) autoCompleteSingles.item(i)).getTagName().equals("option")) { + Element node = item.getOwnerDocument().createElement("autocompleteSingle"); + node.appendChild(autoCompleteSingles.item(i)); + node.setAttribute("url", item.getAttribute("url")); + node.setAttribute("optionsRoot", item.getAttribute("optionsRoot")); + autoCompletes.add(singleToMap(node)); + } + } + dataMap.put("autocompleteSingle", autoCompletes); + //dataMap.put("optionsRoot", item != null ? item.getAttribute("optionsRoot") : ""); + //Element optionElement = (Element) item.getElementsByTagName("option").item(0); // if (optionElement != null) { // this.autoCompleteOptions = new Option(); // this.autoCompleteOptions.setLabel(optionElement.getAttribute("label")); // this.autoCompleteOptions.setValue(optionElement.getAttribute("value")); // } - dataMap.put("autoCompleteOptions", item != null ? optionToMap(optionElement) : null); + // dataMap.put("autoCompleteOptions", item != null ? optionToMap(optionElement) : null); return dataMap; } @@ -189,6 +209,18 @@ public class AutoCompleteData extends ComboBoxData { return dataMap; } + private Map singleToMap(Element item) { + Map dataMap = new HashMap<>(); + if (!item.getAttribute("autoCompleteType").isEmpty()) { + dataMap.put("autoCompleteType", Integer.parseInt(item.getAttribute("autoCompleteType"))); + } + dataMap.put("optionsRoot", item != null ? item.getAttribute("optionsRoot") : ""); + dataMap.put("url", item != null ? item.getAttribute("url") : ""); + Element optionElement = (Element) item.getElementsByTagName("option").item(0); + dataMap.put("autoCompleteOptions", item != null ? optionToMap(optionElement) : null); + return dataMap; + } + public enum AutocompleteType { UNCACHED(0), CACHED(1);