From f2e1f409f915ca3d83ddba09ff8d8163fe60bd08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Mon, 11 Oct 2021 15:46:48 +0200 Subject: [PATCH] RED-2386: Avoid insert duplications to dictionaries --- .../controller/DictionaryController.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java index 11c25fe4f..490eb5a6e 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java @@ -56,16 +56,15 @@ public class DictionaryController implements DictionaryResource { // To check whether the type exists, type should not be added into database implicitly by addEntry. Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class); -// List entriesToSearch = new ArrayList<>(); - var currentVersion = getCurrentVersion(typeResult); + List existing = entryPersistenceService.getEntries(typeId) + .stream() + .filter(e -> !e.isDeleted()) + .map(DictionaryEntryEntity::getValue) + .collect(toList()); + if (removeCurrent) { - List existing = entryPersistenceService.getEntries(typeId) - .stream() - .filter(e -> !e.isDeleted()) - .map(DictionaryEntryEntity::getValue) - .collect(toList()); List removed = new ArrayList<>(existing); removed.removeAll(cleanEntries); @@ -76,11 +75,14 @@ public class DictionaryController implements DictionaryResource { entryPersistenceService.deleteEntries(typeId, removed, currentVersion + 1); entryPersistenceService.addEntry(typeId, added, currentVersion + 1); -// entriesToSearch.addAll(added); -// entriesToSearch.addAll(removed); } else { - entryPersistenceService.addEntry(typeId, cleanEntries, currentVersion + 1); -// entriesToSearch.addAll(cleanEntries); + + List added = new ArrayList<>(cleanEntries); + added.removeAll(existing); + if(added.isEmpty()){ + return; + } + entryPersistenceService.addEntry(typeId, added, currentVersion + 1); } dictionaryPersistenceService.incrementVersion(typeId);