From 2008986daf5b81041d45242848e1215bcd769cdc Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Wed, 18 Sep 2019 16:16:14 +0300 Subject: [PATCH] Fixes bug on public dashboard counting non public entities. (Issue #157) --- .../logic/managers/DashBoardManager.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java index c1f7ac711..42746c11c 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DashBoardManager.java @@ -8,6 +8,9 @@ import eu.eudat.data.dao.entities.DMPDao; import eu.eudat.data.dao.entities.DatasetDao; import eu.eudat.data.dao.entities.OrganisationDao; import eu.eudat.data.dao.entities.GrantDao; +import eu.eudat.data.entities.DMP; +import eu.eudat.data.entities.Dataset; +import eu.eudat.data.entities.Grant; import eu.eudat.data.entities.UserInfo; import eu.eudat.logic.builders.model.models.RecentActivityDataBuilder; import eu.eudat.logic.services.ApiContext; @@ -40,23 +43,26 @@ public class DashBoardManager { public DashBoardStatistics getStatistics() { DashBoardStatistics statistics = new DashBoardStatistics(); - DatasetCriteria datasetCriteria = new DatasetCriteria(); DataManagementPlanCriteria dataManagementPlanCriteria = new DataManagementPlanCriteria(); OrganisationCriteria organisationCriteria = new OrganisationCriteria(); - datasetCriteria.setAllVersions(false); dataManagementPlanCriteria.setAllVersions(false); - organisationCriteria.setPublic(false); + dataManagementPlanCriteria.setIsPublic(true); + organisationCriteria.setPublic(true); - CompletableFuture dmpFuture = databaseRepository.getDmpDao().getWithCriteria(dataManagementPlanCriteria).countAsync() - .whenComplete((dmpsStats, throwable) -> statistics.setTotalDataManagementPlanCount(dmpsStats)); - CompletableFuture datasetFuture = databaseRepository.getDatasetDao().getWithCriteria(datasetCriteria).countAsync() - .whenComplete((datasetsStats, throwable) -> statistics.setTotalDataSetCount(datasetsStats)); - CompletableFuture grantFuture = databaseRepository.getGrantDao().asQueryable().countAsync() - .whenComplete((grantsStats, throwable) -> statistics.setTotalGrantCount(grantsStats)); - CompletableFuture organisationFuture = databaseRepository.getOrganisationDao().getWithCriteria(organisationCriteria).countAsync() - .whenComplete((organisationStats, throwable) -> statistics.setTotalOrganisationCount(organisationStats)); + List dmps = databaseRepository.getDmpDao().getWithCriteria(dataManagementPlanCriteria).toList(); + long numberOfDatasets = 0; + LinkedList grants = new LinkedList<>(); + for (DMP dmp : dmps) { + numberOfDatasets = numberOfDatasets + dmp.getDataset().stream() + .filter(item -> item.getStatus() == Dataset.Status.FINALISED.getValue()).count(); + grants.add(dmp.getGrant()); + } + + statistics.setTotalDataManagementPlanCount((long) dmps.size()); + statistics.setTotalDataSetCount(numberOfDatasets); + statistics.setTotalGrantCount(grants.stream().distinct().count()); + statistics.setTotalOrganisationCount(databaseRepository.getOrganisationDao().getWithCriteria(organisationCriteria).count()); - CompletableFuture.allOf(dmpFuture, datasetFuture, grantFuture, organisationFuture).join(); return statistics; }