From e68bc2a8222a4138b9706de8c03e66a29b4d34eb Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Wed, 18 Mar 2020 10:22:39 +0200 Subject: [PATCH] Improve tag unique persistence --- .../src/main/java/eu/eudat/logic/managers/DatasetManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 c7e61f8d4..ce0744cc6 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 @@ -28,6 +28,7 @@ import eu.eudat.logic.utilities.documents.helpers.FileEnvelope; import eu.eudat.logic.utilities.documents.types.ParagraphStyle; import eu.eudat.logic.utilities.documents.word.WordBuilder; import eu.eudat.logic.utilities.documents.xml.ExportXmlBuilder; +import eu.eudat.logic.utilities.helpers.StreamDistinctBy; import eu.eudat.models.HintedModelFactory; import eu.eudat.models.data.datasetImport.DatasetImportField; import eu.eudat.models.data.datasetImport.DatasetImportPagedDatasetProfile; @@ -591,7 +592,8 @@ public class DatasetManager { dataset.setId(datasetWizardModel.getId().toString()); DatasetCriteria criteria = new DatasetCriteria(); criteria.setTags(datasetWizardModel.getTags()); - List tags = apiContext.getOperationsContext().getDatasetRepository().query(criteria).stream().map(eu.eudat.elastic.entities.Dataset::getTags).flatMap(Collection::stream).collect(Collectors.toList()); + List tags = apiContext.getOperationsContext().getDatasetRepository().query(criteria).stream().map(eu.eudat.elastic.entities.Dataset::getTags).flatMap(Collection::stream) + .filter(StreamDistinctBy.distinctByKey(Tag::getId)).filter(tag -> datasetWizardModel.getTags().stream().anyMatch(tag1 -> tag1.getName().equals(tag.getName()))).collect(Collectors.toList()); if (tags.isEmpty()) { datasetWizardModel.getTags().forEach(tag -> tag.setId(UUID.randomUUID().toString())); dataset.setTags(datasetWizardModel.getTags());