From c91059c854b338e41f891702c4e5a021efd80c58 Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Tue, 20 Jul 2021 12:55:52 +0300 Subject: [PATCH] Get latest available dataset profile instead of the version that is selected on the DMP --- .../dao/criteria/DatasetProfileCriteria.java | 9 +++++++++ .../dao/entities/DatasetProfileDaoImpl.java | 3 +++ .../java/eu/eudat/controllers/Datasets.java | 2 +- .../logic/managers/DatasetWizardManager.java | 19 ++++++++++++++----- 4 files changed, 27 insertions(+), 6 deletions(-) diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/criteria/DatasetProfileCriteria.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/criteria/DatasetProfileCriteria.java index 8aa20acc2..c64d9970e 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/criteria/DatasetProfileCriteria.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/criteria/DatasetProfileCriteria.java @@ -35,6 +35,7 @@ public class DatasetProfileCriteria extends Criteria { private boolean finalized; private Integer status; private Integer role; + private List ids; public boolean getAllVersions() { return allVersions; } public void setAllVersions(boolean allVersions) { this.allVersions = allVersions; } @@ -78,4 +79,12 @@ public class DatasetProfileCriteria extends Criteria { public void setRole(Integer role) { this.role = role; } + + public List getIds() { + return ids; + } + + public void setIds(List ids) { + this.ids = ids; + } } diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDaoImpl.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDaoImpl.java index c704f4fba..1f2ab533f 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDaoImpl.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DatasetProfileDaoImpl.java @@ -58,6 +58,9 @@ public class DatasetProfileDaoImpl extends DatabaseAccess implem if (criteria.getStatus() != null) { query.where(((builder, root) -> builder.equal(root.get("status"), criteria.getStatus()))); } + if (criteria.getIds() != null) { + query.where(((builder, root) -> root.get("id").in(criteria.getIds()))); + } if (criteria.getFinalized()) { query.where(((builder, root) -> builder.equal(root.get("status"), DatasetProfile.Status.FINALIZED.getValue()))); } else { diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/Datasets.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/Datasets.java index d79ec0a64..631125177 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/Datasets.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/Datasets.java @@ -177,7 +177,7 @@ public class Datasets extends BaseController { @RequestMapping(method = RequestMethod.POST, value = {"/getAvailableProfiles"}, produces = "application/json") public @ResponseBody ResponseEntity>> getAvailableProfiles(@RequestBody DatasetProfileWizardAutocompleteRequest datasetProfileWizardAutocompleteRequest, @ClaimedAuthorities(claims = {ANONYMOUS}) Principal principal) throws IllegalAccessException, InstantiationException { - List dataManagementPlans = DatasetWizardManager.getAvailableProfiles(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), datasetProfileWizardAutocompleteRequest); + List dataManagementPlans = DatasetWizardManager.getAvailableProfiles(this.getApiContext().getOperationsContext().getDatabaseRepository().getDmpDao(), this.getApiContext().getOperationsContext().getDatabaseRepository().getDatasetProfileDao(), datasetProfileWizardAutocompleteRequest); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dataManagementPlans)); } diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java index b989d0153..c3c347bcb 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetWizardManager.java @@ -1,15 +1,17 @@ package eu.eudat.logic.managers; +import eu.eudat.data.dao.criteria.DatasetProfileCriteria; import eu.eudat.data.dao.entities.DMPDao; - +import eu.eudat.data.dao.entities.DatasetProfileDao; import eu.eudat.data.entities.DMP; import eu.eudat.data.entities.Dataset; +import eu.eudat.data.entities.DatasetProfile; import eu.eudat.data.entities.UserInfo; +import eu.eudat.data.query.items.item.dataset.DatasetWizardAutocompleteRequest; +import eu.eudat.data.query.items.item.datasetprofile.DatasetProfileWizardAutocompleteRequest; import eu.eudat.exceptions.datasetwizard.DatasetWizardCannotUnlockException; import eu.eudat.logic.services.ApiContext; import eu.eudat.models.data.datasetwizard.DataManagentPlanListingModel; -import eu.eudat.data.query.items.item.datasetprofile.DatasetProfileWizardAutocompleteRequest; -import eu.eudat.data.query.items.item.dataset.DatasetWizardAutocompleteRequest; import eu.eudat.models.data.dmp.AssociatedProfile; import eu.eudat.models.data.dmp.DataManagementPlan; import eu.eudat.models.data.security.Principal; @@ -19,6 +21,7 @@ import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; public class DatasetWizardManager { @@ -31,12 +34,18 @@ public class DatasetWizardManager { return dataManagementPlans; } - public static List getAvailableProfiles(DMPDao dmpRepository, DatasetProfileWizardAutocompleteRequest datasetProfileWizardAutocompleteRequest) throws InstantiationException, IllegalAccessException { + public static List getAvailableProfiles(DMPDao dmpRepository, DatasetProfileDao profileDao, DatasetProfileWizardAutocompleteRequest datasetProfileWizardAutocompleteRequest) throws InstantiationException, IllegalAccessException { DataManagementPlan dataManagementPlan = new DataManagementPlan().fromDataModel(dmpRepository.find(datasetProfileWizardAutocompleteRequest.getCriteria().getId())); if (dataManagementPlan.getProfiles() == null || dataManagementPlan.getProfiles().isEmpty()) { return new LinkedList<>(); } - List profiles = dataManagementPlan.getProfiles(); + DatasetProfileCriteria criteria = new DatasetProfileCriteria(); + criteria.setIds(dataManagementPlan.getProfiles().stream().map(AssociatedProfile::getId).collect(Collectors.toList())); + List datasetProfiles = profileDao.getWithCriteria(criteria).toList(); + criteria.setIds(null); + criteria.setGroupIds(datasetProfiles.stream().map(DatasetProfile::getGroupId).collect(Collectors.toList())); + datasetProfiles = profileDao.getWithCriteria(criteria).toList(); + List profiles = datasetProfiles.stream().map(profile -> new AssociatedProfile().fromData(profile)).collect(Collectors.toList()); return profiles; }