From fe69154353284567d74145c42c223e8b60cec5a1 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Fri, 7 Jun 2019 11:37:16 +0300 Subject: [PATCH] Fixes bug not printing "multiple autocomplete" properties on Dataset export. --- .../utilities/documents/word/WordBuilder.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java index f1ca49c93..657946e0a 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/documents/word/WordBuilder.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import eu.eudat.logic.services.forms.VisibilityRuleService; import eu.eudat.logic.utilities.documents.types.ParagraphStyle; -import eu.eudat.logic.utilities.documents.types.TextStyle; import eu.eudat.logic.utilities.interfaces.ApplierWithValue; import eu.eudat.models.data.components.commons.datafield.CheckBoxData; import eu.eudat.models.data.components.commons.datafield.ComboBoxData; @@ -14,6 +13,8 @@ import eu.eudat.models.data.user.components.datasetprofile.Section; import eu.eudat.models.data.user.composite.DatasetProfilePage; import eu.eudat.models.data.user.composite.PagedDatasetProfile; import org.apache.poi.xwpf.usermodel.*; +import org.json.JSONArray; +import org.json.JSONObject; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDecimalNumber; import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTLvl; @@ -208,9 +209,30 @@ public class WordBuilder { if (comboboxType.equals("autocomplete")) { ObjectMapper mapper = new ObjectMapper(); if (field.getValue() == null) return null; - Map map = mapper.readValue(field.getValue(), new TypeReference>() { - }); - return map.get("label"); + Map map = new HashMap<>(); + if (!field.getValue().equals("")) { + try { + JSONArray jsonarray = new JSONArray(field.getValue()); + for (int i = 0; i < jsonarray.length(); i++) { + JSONObject jsonobject = jsonarray.getJSONObject(i); + String id = jsonobject.getString("id"); + String label = jsonobject.getString("label"); + if (id != null && label != null) { + map.put(id, label); + } + } + } catch (Exception e){ + Map exMap = mapper.readValue(field.getValue(), new TypeReference>() { + }); + return exMap.get("label"); + } + } + StringBuilder sb = new StringBuilder(); + for (Map.Entry entry : map.entrySet()) { + sb.append("\n"); + sb.append(entry.getValue()); + } + return sb.toString(); } else if (comboboxType.equals("wordlist")) { return field.getValue(); }