From a22382d4158a16537ddd5ff02426404ca7de3ff0 Mon Sep 17 00:00:00 2001 From: devplant Date: Mon, 20 Dec 2021 13:36:07 +0200 Subject: [PATCH] RED-3011 - DossierTemplate Stats - modify query to include dossier templates without dictionaries and to include only the results with not deleted entries and not dossier specific - add junit test --- .../repository/TypeRepository.java | 9 ++++-- .../service/DossierTemplateStatsService.java | 4 ++- .../tests/DossierTemplateStatsTest.java | 31 ++++++++++++++++--- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java index e9cd2f497..e2cbc9b0f 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/TypeRepository.java @@ -38,9 +38,12 @@ public interface TypeRepository extends JpaRepository { @Query("select coalesce(sum(t.version),0) from TypeEntity t where t.dossierTemplateId = :dossierTemplateId and t.dossierId is null") long getVersionForDossierTemplateId(String dossierTemplateId); - @Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionarySummaryResponse(t.dossierTemplateId, t.id, t.type, t.label, count(e)) " + - "from TypeEntity t left join DictionaryEntryEntity e on e.type.id = t.id " + - "group by t.dossierTemplateId, t.id, t.type, t.label having t.dossierTemplateId in :dossierTemplateIds") + @Query("select new com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionarySummaryResponse(dt.id, t.id, t.type, t.label, count(e)) " + + "from DossierTemplateEntity dt " + + "left join TypeEntity t on t.dossierTemplateId = dt.id " + + "left join DictionaryEntryEntity e on e.type.id = t.id " + + "where dt.id in :dossierTemplateIds and t.dossierId is null and (e.id is null or e.deleted = false) " + + "group by dt.id, t.id, t.type, t.label ") List findDictionarySummaryList(Set dossierTemplateIds); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java index 3b8852da5..8d05714fa 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateStatsService.java @@ -30,7 +30,9 @@ public class DossierTemplateStatsService { Collectors.mapping(this::getDossierTemplateStats, Collectors.toList()))); List dossierTemplateStatsList = dictionarySummaryMap.entrySet().stream() .map(e -> - new DossierTemplateStats(e.getKey(), e.getValue().size(), e.getValue())) + (e.getValue().size() == 1 && e.getValue().get(0).getId() == null)? + new DossierTemplateStats(e.getKey(), 0, new ArrayList<>()): + new DossierTemplateStats(e.getKey(), e.getValue().size(), e.getValue())) .collect(Collectors.toList()); return dossierTemplateStatsList; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java index 30323b391..9a45dccb3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java @@ -107,19 +107,42 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe entryList = dictionaryClient.getEntriesForType(addedType3.getTypeId()); assertThat(entryList.size()).isEqualTo(entries3.size()); + var dossierTemplate3 = provideTestTemplate("dossierTemp3"); + Set dossierTemplateIds = new HashSet<>(); dossierTemplateIds.add(dossier.getDossierTemplateId()); dossierTemplateIds.add(dossierTemplate2.getId()); + dossierTemplateIds.add(dossierTemplate3.getId()); List dossierTemplateStatsList = dossierTemplateStatsClient.getDossierTemplateStats(dossierTemplateIds); - DossierTemplateStats dossierTemplateStats = dossierTemplateStatsList.stream().filter(d -> d.getDossierTemplateId().equals(dossier.getDossierTemplateId())).findAny().get(); + assertThat(dossierTemplateStatsList.size()).isEqualTo(dossierTemplateIds.size()); + DossierTemplateStats dossierTemplateStats1 = dossierTemplateStatsList.stream().filter(d -> d.getDossierTemplateId().equals(dossier.getDossierTemplateId())).findAny().get(); - assertThat(dossierTemplateStats.getDossierTemplateId()).isEqualTo(dossier.getDossierTemplateId()); - assertThat(dossierTemplateStats.getNumberOfDictionaries()).isEqualTo(2); - List dictionarySummaryList = dossierTemplateStats.getDictionarySummaryList(); + assertThat(dossierTemplateStats1.getDossierTemplateId()).isEqualTo(dossier.getDossierTemplateId()); + assertThat(dossierTemplateStats1.getNumberOfDictionaries()).isEqualTo(2); + List dictionarySummaryList = dossierTemplateStats1.getDictionarySummaryList(); assertThat(dictionarySummaryList.stream().filter(d -> d.getType().equals(TYPE_ID_1)).findAny().get().getEntriesCount()).isEqualTo(entries1.size()); assertThat(dictionarySummaryList.stream().filter(d -> d.getType().equals(TYPE_ID_2)).findAny().get().getEntriesCount()).isEqualTo(entries2.size()); + // dossier template with no type + DossierTemplateStats dossierTemplateStats3 = dossierTemplateStatsList.stream().filter(d -> d.getDossierTemplateId().equals(dossierTemplate3.getId())).findAny().get(); + assertThat(dossierTemplateStats3.getDossierTemplateId()).isEqualTo(dossierTemplate3.getId()); + assertThat(dossierTemplateStats3.getNumberOfDictionaries()).isZero(); + + // delete some entries, stats should be updated + var entries22 = new ArrayList(); + entries22.add(entries2.get(2)); + + dictionaryClient.deleteEntries(addedType2.getTypeId(), entries22); + dossierTemplateStatsList = dossierTemplateStatsClient.getDossierTemplateStats(dossierTemplateIds); + + assertThat(dossierTemplateStatsList.size()).isEqualTo(dossierTemplateIds.size()); + DossierTemplateStats dossierTemplateStats2 = dossierTemplateStatsList.stream().filter(d -> d.getDossierTemplateId().equals(dossier.getDossierTemplateId())).findAny().get(); + + dictionarySummaryList = dossierTemplateStats2.getDictionarySummaryList(); + assertThat(dictionarySummaryList.stream().filter(d -> d.getType().equals(TYPE_ID_2)).findAny().get().getEntriesCount()).isEqualTo(entries2.size() - entries22.size()); + + } public DossierTemplate provideTestTemplate(String dossierTemplateName) {