diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/DictionaryService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/DictionaryService.java index fda9874b..325f30e1 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/DictionaryService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/DictionaryService.java @@ -1,6 +1,7 @@ package com.iqser.red.service.redaction.v1.server.service; import java.awt.Color; +import java.util.ArrayList; import java.util.Comparator; import java.util.HashSet; import java.util.LinkedList; @@ -91,7 +92,8 @@ public class DictionaryService { updateDictionaryEntry(dossierTemplateId, dossierDictionaryVersion, getVersion(dossierDictionary), dossierId); } - return DictionaryVersion.builder().dossierTemplateVersion(dossierTemplateDictionaryVersion).dossierVersion(dossierDictionaryVersion).build(); + return DictionaryVersion.builder().dossierTemplateVersion(dossierTemplateDictionaryVersion).dossierVersion(dossierDictionaryVersion) + .build(); } @@ -375,16 +377,25 @@ public class DictionaryService { dossierTemplateDictionaries.forEach(dm -> mergedDictionaries.add(SerializationUtils.clone(dm))); // add dossier - DictionaryRepresentation dossierRepresentation = getDossierDictionary(dossierId); - List dossierDictionaries = dossierRepresentation.getDictionary(); - dossierDictionaries.forEach(dm -> mergedDictionaries.add(SerializationUtils.clone(dm))); + long dossierDictionaryVersion = -1; + if (dossierDictionaryExists(dossierId)) { + DictionaryRepresentation dossierRepresentation = getDossierDictionary(dossierId); + List dossierDictionaries = dossierRepresentation.getDictionary(); + dossierDictionaries.forEach(dm -> mergedDictionaries.add(SerializationUtils.clone(dm))); + return getDictionary(mergedDictionaries, dossierTemplateRepresentation, dossierRepresentation.getDictionaryVersion()); + } else { + return getDictionary(mergedDictionaries, dossierTemplateRepresentation, dossierDictionaryVersion); + } + + } + + + private Dictionary getDictionary(List mergedDictionaries, DictionaryRepresentation dossierTemplateRepresentation, long dossierDictionaryVersion) { return new Dictionary(mergedDictionaries.stream() .sorted(Comparator.comparingInt(DictionaryModel::getRank).reversed()) .collect(Collectors.toList()), - DictionaryVersion.builder() - .dossierTemplateVersion(dossierTemplateRepresentation.getDictionaryVersion()) - .dossierVersion(dossierRepresentation.getDictionaryVersion()) + DictionaryVersion.builder().dossierTemplateVersion(dossierTemplateRepresentation.getDictionaryVersion()).dossierVersion(dossierDictionaryVersion) .build()); }