From 499149ea93dc95270a7f0aabd54488308818069b Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Thu, 20 Jun 2019 16:25:49 +0300 Subject: [PATCH] Adds "make public DMP" service on backend. --- .../web/src/main/java/eu/eudat/controllers/DMPs.java | 11 ++++++++++- .../logic/managers/DataManagementPlanManager.java | 11 +++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java index 94daaf4b4..a391fbe53 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java +++ b/dmp-backend/web/src/main/java/eu/eudat/controllers/DMPs.java @@ -237,5 +237,14 @@ public class DMPs extends BaseController { dmp.setTotalCount(query.getQuery().count()); return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem>().status(ApiMessageCode.NO_MESSAGE).payload(dmp)); } -} + @RequestMapping(method = RequestMethod.GET, value = {"/makepublic/{id}"}) + public ResponseEntity> makePublic(@PathVariable String id, Principal principal) { + try { + this.dataManagementPlanManager.makePublic(UUID.fromString(id), principal); + return ResponseEntity.status(HttpStatus.OK).body(new ResponseItem().status(ApiMessageCode.SUCCESS_MESSAGE).message("Successfully Data Datamanagement Plan made public")); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(new ResponseItem().status(ApiMessageCode.ERROR_MESSAGE).message(e.getMessage())); + } + } +} diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java index b031a2662..4d00947d6 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DataManagementPlanManager.java @@ -897,4 +897,15 @@ public class DataManagementPlanManager { return data; } + + public void makePublic(UUID id, Principal principal) throws Exception { + DMP dmp = this.apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().find(id); + // Check if dmp is finalized and if user is owner. + if (!dmp.getUsers().stream().filter(userDMP -> userDMP.getRole().equals(UserDMP.UserDMPRoles.OWNER.getValue())).findFirst().get().getUser().getId().equals(principal.getId())) + throw new Exception("User does not have the privilege to do this action."); + if (!dmp.getStatus().equals(DMP.DMPStatus.FINALISED.getValue())) + throw new Exception("DMP is not finalized"); + dmp.setPublic(true); + apiContext.getOperationsContext().getDatabaseRepository().getDmpDao().createOrUpdate(dmp); + } }