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 16d6f03b5..e4da1164f 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 @@ -193,6 +193,7 @@ public class DashBoardManager { @Transactional public List getNewRecentActivity(RecentActivityTableRequest tableRequest, Principal principal) { + boolean isAuthenticated = principal.getId() != null; List recentActivityModels = new ArrayList<>(); DMPDao dataManagementPlanRepository = databaseRepository.getDmpDao(); DatasetDao datasetRepository = databaseRepository.getDatasetDao(); @@ -201,26 +202,67 @@ public class DashBoardManager { DatasetCriteria datasetCriteria = new DatasetCriteria(); datasetCriteria.setLike(tableRequest.getCriteria().getLike()); datasetCriteria.setAllVersions(false); + datasetCriteria.setIsPublic(!isAuthenticated); DataManagementPlanCriteria dataManagementPlanCriteria = new DataManagementPlanCriteria(); dataManagementPlanCriteria.setAllVersions(false); dataManagementPlanCriteria.setLike(tableRequest.getCriteria().getLike()); + dataManagementPlanCriteria.setIsPublic(!isAuthenticated); + dataManagementPlanCriteria.setOnlyPublic(!isAuthenticated); QueryableList dmpList; QueryableList datasetList; - if (principal.getId() != null) { - datasetCriteria.setIsPublic(false); - List roles = new LinkedList<>(); - dmpList = dataManagementPlanRepository.getAuthenticated(dataManagementPlanRepository.getWithCriteria(dataManagementPlanCriteria), principal.getId(), roles); - datasetList = datasetRepository.getAuthenticated(datasetRepository.getWithCriteria(datasetCriteria), user, roles); + List datasets = null; + List dmps = null; + + if (apiContext.getOperationsContext().getElasticRepository().getDatasetRepository() != null) { + try { + eu.eudat.elastic.criteria.DatasetCriteria datasetElasticCriteria = new eu.eudat.elastic.criteria.DatasetCriteria(); + datasetElasticCriteria.setLike(tableRequest.getCriteria().getLike()); + datasetElasticCriteria.setAllowAllVersions(false); + datasetElasticCriteria.setPublic(!isAuthenticated); + datasets = apiContext.getOperationsContext().getElasticRepository().getDatasetRepository().query(datasetElasticCriteria); + }catch (Exception e) { + logger.warn(e.getMessage(), e); + datasets = null; + } + } + + if (apiContext.getOperationsContext().getElasticRepository().getDmpRepository() != null) { + try { + eu.eudat.elastic.criteria.DmpCriteria dmpElasticCriteria = new eu.eudat.elastic.criteria.DmpCriteria(); + dmpElasticCriteria.setLike(tableRequest.getCriteria().getLike()); + dmpElasticCriteria.setAllowAllVersions(false); + dmpElasticCriteria.setPublic(!isAuthenticated); + dmps = apiContext.getOperationsContext().getElasticRepository().getDmpRepository().query(dmpElasticCriteria); + }catch (Exception e) { + logger.warn(e.getMessage(), e); + datasets = null; + } + } + + if (dmps != null) { + List finalDmps = dmps; + dmpList = dataManagementPlanRepository.asQueryable().where((builder, root) -> root.get("id").in(finalDmps.stream().map(Dmp::getId).collect(Collectors.toList()))).distinct(); + } else { + dmpList = dataManagementPlanRepository.getWithCriteria(dataManagementPlanCriteria).distinct(); + } + + if (datasets != null) { + List finalDatasets = datasets; + datasetList = datasetRepository.asQueryable().where((builder, root) -> root.get("id").in(finalDatasets.stream().map(x -> UUID.fromString(x.getId())).collect(Collectors.toList()))); } else { - dataManagementPlanCriteria.setIsPublic(true); - dataManagementPlanCriteria.setOnlyPublic(true); - datasetCriteria.setIsPublic(true); - dmpList = dataManagementPlanRepository.getWithCriteria(dataManagementPlanCriteria); datasetList = datasetRepository.getWithCriteria(datasetCriteria); } + if (isAuthenticated) { + + List roles = new LinkedList<>(); + dmpList = dataManagementPlanRepository.getAuthenticated(dmpList, principal.getId(), roles); + datasetList = datasetRepository.getAuthenticated(datasetList, user, roles); + + } + /*CompletableFuture future = CompletableFuture.runAsync(() -> */{ recentActivityModels.addAll(dmpList .withHint(HintedModelFactory.getHint(RecentDmpModel.class))