Fixes bug on public dashboard counting non public entities. (Issue #157)

This commit is contained in:
gkolokythas 2019-09-18 16:16:14 +03:00
parent e50875c988
commit 2008986daf
1 changed files with 18 additions and 12 deletions

View File

@ -8,6 +8,9 @@ import eu.eudat.data.dao.entities.DMPDao;
import eu.eudat.data.dao.entities.DatasetDao; import eu.eudat.data.dao.entities.DatasetDao;
import eu.eudat.data.dao.entities.OrganisationDao; import eu.eudat.data.dao.entities.OrganisationDao;
import eu.eudat.data.dao.entities.GrantDao; 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.data.entities.UserInfo;
import eu.eudat.logic.builders.model.models.RecentActivityDataBuilder; import eu.eudat.logic.builders.model.models.RecentActivityDataBuilder;
import eu.eudat.logic.services.ApiContext; import eu.eudat.logic.services.ApiContext;
@ -40,23 +43,26 @@ public class DashBoardManager {
public DashBoardStatistics getStatistics() { public DashBoardStatistics getStatistics() {
DashBoardStatistics statistics = new DashBoardStatistics(); DashBoardStatistics statistics = new DashBoardStatistics();
DatasetCriteria datasetCriteria = new DatasetCriteria();
DataManagementPlanCriteria dataManagementPlanCriteria = new DataManagementPlanCriteria(); DataManagementPlanCriteria dataManagementPlanCriteria = new DataManagementPlanCriteria();
OrganisationCriteria organisationCriteria = new OrganisationCriteria(); OrganisationCriteria organisationCriteria = new OrganisationCriteria();
datasetCriteria.setAllVersions(false);
dataManagementPlanCriteria.setAllVersions(false); dataManagementPlanCriteria.setAllVersions(false);
organisationCriteria.setPublic(false); dataManagementPlanCriteria.setIsPublic(true);
organisationCriteria.setPublic(true);
CompletableFuture dmpFuture = databaseRepository.getDmpDao().getWithCriteria(dataManagementPlanCriteria).countAsync() List<DMP> dmps = databaseRepository.getDmpDao().getWithCriteria(dataManagementPlanCriteria).toList();
.whenComplete((dmpsStats, throwable) -> statistics.setTotalDataManagementPlanCount(dmpsStats)); long numberOfDatasets = 0;
CompletableFuture datasetFuture = databaseRepository.getDatasetDao().getWithCriteria(datasetCriteria).countAsync() LinkedList<Grant> grants = new LinkedList<>();
.whenComplete((datasetsStats, throwable) -> statistics.setTotalDataSetCount(datasetsStats)); for (DMP dmp : dmps) {
CompletableFuture grantFuture = databaseRepository.getGrantDao().asQueryable().countAsync() numberOfDatasets = numberOfDatasets + dmp.getDataset().stream()
.whenComplete((grantsStats, throwable) -> statistics.setTotalGrantCount(grantsStats)); .filter(item -> item.getStatus() == Dataset.Status.FINALISED.getValue()).count();
CompletableFuture organisationFuture = databaseRepository.getOrganisationDao().getWithCriteria(organisationCriteria).countAsync() grants.add(dmp.getGrant());
.whenComplete((organisationStats, throwable) -> statistics.setTotalOrganisationCount(organisationStats)); }
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; return statistics;
} }