2018-06-27 12:29:21 +02:00
|
|
|
package eu.eudat.logic.managers;
|
2017-12-14 18:07:09 +01:00
|
|
|
|
2018-06-27 12:29:21 +02:00
|
|
|
import eu.eudat.logic.builders.model.models.RecentActivityDataBuilder;
|
2018-03-21 11:57:56 +01:00
|
|
|
import eu.eudat.data.dao.entities.DMPDao;
|
|
|
|
import eu.eudat.data.dao.entities.DatasetDao;
|
|
|
|
import eu.eudat.data.dao.entities.ProjectDao;
|
|
|
|
import eu.eudat.data.entities.UserInfo;
|
|
|
|
import eu.eudat.data.dao.criteria.DataManagementPlanCriteria;
|
|
|
|
import eu.eudat.data.dao.criteria.DatasetCriteria;
|
2018-06-27 12:29:21 +02:00
|
|
|
import eu.eudat.models.data.dashboard.recent.RecentActivity;
|
|
|
|
import eu.eudat.models.data.dashboard.recent.RecentActivityData;
|
|
|
|
import eu.eudat.models.data.dashboard.statistics.DashBoardStatistics;
|
|
|
|
import eu.eudat.models.data.security.Principal;
|
|
|
|
import eu.eudat.logic.services.ApiContext;
|
2018-03-19 13:40:04 +01:00
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.concurrent.CompletableFuture;
|
2018-02-02 11:33:37 +01:00
|
|
|
|
2017-12-14 18:07:09 +01:00
|
|
|
public class DashBoardManager {
|
2018-02-02 11:33:37 +01:00
|
|
|
|
|
|
|
public DashBoardStatistics getStatistics(DatasetDao datasetRepository, DMPDao dataManagementPlanRepository, ProjectDao projectRepository) {
|
|
|
|
DashBoardStatistics statistics = new DashBoardStatistics();
|
2018-03-19 13:40:04 +01:00
|
|
|
DatasetCriteria datasetCriteria = new DatasetCriteria();
|
|
|
|
datasetCriteria.setAllVersions(false);
|
|
|
|
DataManagementPlanCriteria dataManagementPlanCriteria = new DataManagementPlanCriteria();
|
|
|
|
dataManagementPlanCriteria.setAllVersions(false);
|
|
|
|
|
|
|
|
CompletableFuture dmpFuture = dataManagementPlanRepository.getWithCriteria(dataManagementPlanCriteria).countAsync()
|
|
|
|
.whenComplete((dmpsStats, throwable) -> statistics.setTotalDataManagementPlanCount(dmpsStats));
|
|
|
|
CompletableFuture datasetFuture = datasetRepository.getWithCriteria(datasetCriteria).countAsync()
|
|
|
|
.whenComplete((datasetsStats, throwable) -> statistics.setTotalDataSetCount(datasetsStats));
|
|
|
|
CompletableFuture projectFuture = projectRepository.asQueryable().countAsync()
|
|
|
|
.whenComplete((projectsStats, throwable) -> statistics.setTotalProjectCount(projectsStats));
|
|
|
|
|
|
|
|
CompletableFuture.allOf(dmpFuture, datasetFuture, projectFuture).join();
|
2018-02-02 11:33:37 +01:00
|
|
|
return statistics;
|
|
|
|
}
|
|
|
|
|
|
|
|
public DashBoardStatistics getMeStatistics(DatasetDao datasetRepository, DMPDao dataManagementPlanRepository, ProjectDao projectRepository, Principal principal) {
|
|
|
|
DashBoardStatistics statistics = new DashBoardStatistics();
|
|
|
|
UserInfo user = new UserInfo();
|
|
|
|
user.setId(principal.getId());
|
2018-03-19 13:40:04 +01:00
|
|
|
DatasetCriteria datasetCriteria = new DatasetCriteria();
|
|
|
|
datasetCriteria.setAllVersions(false);
|
|
|
|
DataManagementPlanCriteria dataManagementPlanCriteria = new DataManagementPlanCriteria();
|
|
|
|
dataManagementPlanCriteria.setAllVersions(false);
|
|
|
|
CompletableFuture dmpFuture = dataManagementPlanRepository.getAuthenticated(dataManagementPlanRepository.getWithCriteria(dataManagementPlanCriteria), user).countAsync()
|
|
|
|
.whenComplete((dmpsStats, throwable) -> statistics.setTotalDataManagementPlanCount(dmpsStats));
|
|
|
|
CompletableFuture datasetFuture = datasetRepository.getAuthenticated(datasetRepository.getWithCriteria(datasetCriteria), user).countAsync()
|
|
|
|
.whenComplete((datasetsStats, throwable) -> statistics.setTotalDataSetCount(datasetsStats));
|
|
|
|
CompletableFuture projectFuture = projectRepository.getAuthenticated(projectRepository.asQueryable(), user).countAsync()
|
|
|
|
.whenComplete((projectsStats, throwable) -> statistics.setTotalProjectCount(projectsStats));
|
|
|
|
|
|
|
|
CompletableFuture.allOf(dmpFuture, datasetFuture, projectFuture).join();
|
2018-02-02 11:33:37 +01:00
|
|
|
return statistics;
|
|
|
|
}
|
2017-12-14 18:07:09 +01:00
|
|
|
|
2018-03-19 13:40:04 +01:00
|
|
|
public RecentActivity getRecentActivity(ApiContext apiContext, DatasetDao datasetRepository, DMPDao dataManagementPlanRepository, ProjectDao projectRepository, Principal principal, Integer numberofactivities) {
|
|
|
|
RecentActivity activity = new RecentActivity();
|
|
|
|
UserInfo user = new UserInfo();
|
|
|
|
user.setId(principal.getId());
|
|
|
|
|
|
|
|
RecentActivityDataBuilder recentActivityDataBuilder = apiContext.getOperationsContext().getBuilderFactory().getBuilder(RecentActivityDataBuilder.class);
|
|
|
|
|
|
|
|
CompletableFuture<List<RecentActivityData>> dmps = dataManagementPlanRepository.getAuthenticated(dataManagementPlanRepository.asQueryable(), user)
|
|
|
|
.withHint("dmpRecentActivity")
|
|
|
|
.orderBy((builder, root) -> builder.desc(root.get("modified")))
|
|
|
|
.take(numberofactivities)
|
2018-05-28 11:50:42 +02:00
|
|
|
.selectAsync(item -> recentActivityDataBuilder.label(item.getLabel()).timestamp(item.getModified()).id(item.getId().toString()).build())
|
|
|
|
.whenComplete((dmpActivities, throwable) -> activity.setRecentDmpActivities(dmpActivities));
|
2018-03-19 13:40:04 +01:00
|
|
|
|
|
|
|
CompletableFuture<List<RecentActivityData>> datasets = datasetRepository.getAuthenticated(datasetRepository.asQueryable(), user)
|
|
|
|
.withHint("datasetRecentActivity")
|
|
|
|
.orderBy((builder, root) -> builder.desc(root.get("modified")))
|
|
|
|
.take(numberofactivities)
|
2018-05-28 11:50:42 +02:00
|
|
|
.selectAsync(item -> recentActivityDataBuilder.label(item.getLabel()).timestamp(item.getModified()).id(item.getId().toString()).build())
|
|
|
|
.whenComplete((datasetActivities, throwable) -> activity.setRecentDatasetActivities(datasetActivities));
|
2018-03-19 13:40:04 +01:00
|
|
|
|
|
|
|
CompletableFuture<List<RecentActivityData>> projects = projectRepository.getAuthenticated(projectRepository.asQueryable(), user)
|
|
|
|
.withHint("projectRecentActivity")
|
|
|
|
.orderBy((builder, root) -> builder.desc(root.get("modified")))
|
|
|
|
.take(numberofactivities)
|
2018-05-28 11:50:42 +02:00
|
|
|
.selectAsync(item -> recentActivityDataBuilder.label(item.getLabel()).timestamp(item.getModified()).id(item.getId().toString()).build())
|
|
|
|
.whenComplete((projectActivities, throwable) -> activity.setRecentProjectActivities(projectActivities));
|
2018-03-19 13:40:04 +01:00
|
|
|
|
|
|
|
CompletableFuture.allOf(projects, dmps, datasets).join();
|
|
|
|
return activity;
|
|
|
|
}
|
|
|
|
|
2017-12-14 18:07:09 +01:00
|
|
|
}
|