From 4cf46aea142bf3e592761e6c12c5d9be5567572f Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Fri, 12 Jun 2020 18:19:32 +0300 Subject: [PATCH] Allow rda keywords with text fields to be stored to the elastic as regular tags --- .../eudat/logic/managers/DatasetManager.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java index 41dd55280..2c2aabd8a 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java @@ -997,23 +997,29 @@ public class DatasetManager { value.elements().forEachRemaining(element -> { try { Map data = mapper.readValue(element.asText(), HashMap.class); - Tag tag = new Tag(); - if(tags.stream().anyMatch(intag -> intag.getName().equals(data.get("name")))) { - tag = tags.stream().filter(intag -> intag.getName().equals(data.get("name"))).findFirst().get(); - } else { - tag.setName(data.get("name")); - tag.setId(data.get("id")); - } - if (wizardModel.getTags().stream().noneMatch(intag -> intag.getName().equals(data.get("name")))) { - wizardModel.getTags().add(tag); - } + this.addTag(tags, wizardModel.getTags(), data.get("id"), data.get("name")); } catch (IOException e) { logger.error(e.getMessage(), e); } }); + } else { + this.addTag(tags, wizardModel.getTags(), "", value.asText()); } }); } } + + private void addTag(List srcTags, List dstTags, String id, String name) { + Tag tag = new Tag(); + if(srcTags.stream().anyMatch(intag -> intag.getName().equals(name))) { + tag = srcTags.stream().filter(intag -> intag.getName().equals(name)).findFirst().get(); + } else { + tag.setName(name); + tag.setId(id); + } + if (dstTags.stream().noneMatch(intag -> intag.getName().equals(name))) { + dstTags.add(tag); + } + } }