From e92739091fff06969fe36cacdac8bad11a3d615a Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Tue, 20 Feb 2024 09:10:41 +0200 Subject: [PATCH] Move some stakeholder functions to the service. --- .../controllers/StakeholderController.java | 97 ++----------------- .../service/StakeholderService.java | 42 ++++++++ 2 files changed, 49 insertions(+), 90 deletions(-) create mode 100644 src/main/java/eu/dnetlib/uoamonitorservice/service/StakeholderService.java diff --git a/src/main/java/eu/dnetlib/uoamonitorservice/controllers/StakeholderController.java b/src/main/java/eu/dnetlib/uoamonitorservice/controllers/StakeholderController.java index 7fc188f..f6293a4 100644 --- a/src/main/java/eu/dnetlib/uoamonitorservice/controllers/StakeholderController.java +++ b/src/main/java/eu/dnetlib/uoamonitorservice/controllers/StakeholderController.java @@ -7,6 +7,7 @@ import eu.dnetlib.uoamonitorservice.dao.*; import eu.dnetlib.uoamonitorservice.entities.*; import eu.dnetlib.uoamonitorservice.handlers.EntityNotFoundException; import eu.dnetlib.uoaadmintoolslibrary.handlers.ForbiddenException; +import eu.dnetlib.uoamonitorservice.service.StakeholderService; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +26,9 @@ public class StakeholderController { @Autowired private RolesUtils rolesUtils; + @Autowired + private StakeholderService stakeholderService; + @Autowired private StakeholderDAO stakeholderDAO; @@ -349,104 +353,17 @@ public class StakeholderController { @RequestMapping(value = "/stakeholder", method = RequestMethod.GET) public List getAllRealStakeholders(@RequestParam(required = false) String type, @RequestParam(required = false) String defaultId) { -// log.debug("get all NOT default stakeholders" + (type != null ? " with type: "+type : "")); - - List stakeholders; - if(type != null && defaultId != null) { - stakeholders = stakeholderDAO.findByDefaultIdAndType(defaultId, type); - } else if(defaultId != null) { - stakeholders = stakeholderDAO.findByDefaultId(defaultId); - } else if(type != null) { - stakeholders = stakeholderDAO.findByDefaultIdNotAndType(null, type); - } else { - stakeholders = stakeholderDAO.findByDefaultIdNot(null); - } - - //List stakeholdersFull = new ArrayList<>(); - - if(stakeholders != null && stakeholders.size() > 0) { -// List roles = authorizationService.getRoles(); -// if (roles.contains(authorizationService.PORTAL_ADMIN)) { - if (rolesUtils.isPortalAdmin()) { -// for(Stakeholder stakeholder : stakeholders) { -// stakeholdersFull.add(this.setFullEntities(stakeholder)); -// } -// return stakeholdersFull; - return stakeholders; - } - - Iterator stakeholderIterator = stakeholders.iterator(); - while(stakeholderIterator.hasNext()) { - Stakeholder stakeholder = stakeholderIterator.next(); - -// if(roles.contains(authorizationService.curator(stakeholder.getType())) -// || roles.contains(authorizationService.manager(stakeholder.getType(), stakeholder.getAlias())) -// || stakeholder.getVisibility() == Visibility.PUBLIC -// || (stakeholder.getVisibility() == Visibility.RESTRICTED && roles.contains(authorizationService.member(stakeholder.getType(), stakeholder.getAlias())))) { - if(rolesUtils.isCurator(stakeholder.getType()) - || rolesUtils.isManager(stakeholder.getType(), stakeholder.getAlias()) - || stakeholder.getVisibility() == Visibility.PUBLIC - || stakeholder.getVisibility() == Visibility.RESTRICTED) { -// || (stakeholder.getVisibility() == Visibility.RESTRICTED && rolesUtils.isMember(roles, stakeholder.getType(), stakeholder.getAlias()))) { - //stakeholdersFull.add(this.setFullEntities(stakeholder)); - continue; - } - stakeholderIterator.remove(); - } - } - -// log.debug(new Date()); - -// return stakeholdersFull; - return stakeholders; + return stakeholderService.getStakeholdersByTypeAndRole(type, defaultId, false); } @PreAuthorize("isAuthenticated()") @RequestMapping(value = "/my-stakeholder", method = RequestMethod.GET) public List getMyRealStakeholders(@RequestParam(required = false) String type) { // log.debug("get my NOT default stakeholders" + (type != null ? " with type: "+type : "")); - - List stakeholders; - if(type == null) { - stakeholders = stakeholderDAO.findByDefaultIdNot(null); - } else { - stakeholders = stakeholderDAO.findByDefaultIdNotAndType(null, type); - } - - List stakeholdersFull = new ArrayList<>(); - - if(stakeholders != null && stakeholders.size() > 0) { -// if (roles.contains(authorizationService.PORTAL_ADMIN)) { - if (rolesUtils.isPortalAdmin()) { -// for(Stakeholder stakeholder : stakeholders) { -// stakeholdersFull.add(this.setFullEntities(stakeholder, roles)); -// } -// return stakeholdersFull; - return stakeholders; - } - - Iterator stakeholderIterator = stakeholders.iterator(); - while(stakeholderIterator.hasNext()) { - Stakeholder stakeholder = stakeholderIterator.next(); - -// if(roles.contains(authorizationService.curator(stakeholder.getType())) -// || roles.contains(authorizationService.manager(stakeholder.getType(), stakeholder.getAlias()))) { - if(rolesUtils.isCurator(stakeholder.getType()) - || rolesUtils.isManager(stakeholder.getType(), stakeholder.getAlias())) { - //stakeholdersFull.add(this.setFullEntities(stakeholder, roles)); - continue; - } else { - stakeholderIterator.remove(); - } - } - } - -// log.debug(new Date()); - - return stakeholders; + return stakeholderService.getStakeholdersByTypeAndRole(type, null, true); } - @RequestMapping(value = "/stakeholder/{alias}", method = RequestMethod.GET) + @RequestMapping(value = "/stakeholder/{alias:.+}", method = RequestMethod.GET) public Stakeholder getStakeholder(@PathVariable("alias") String alias) { // log.debug("get stakeholder: "+alias); diff --git a/src/main/java/eu/dnetlib/uoamonitorservice/service/StakeholderService.java b/src/main/java/eu/dnetlib/uoamonitorservice/service/StakeholderService.java new file mode 100644 index 0000000..accce6c --- /dev/null +++ b/src/main/java/eu/dnetlib/uoamonitorservice/service/StakeholderService.java @@ -0,0 +1,42 @@ +package eu.dnetlib.uoamonitorservice.service; + +import eu.dnetlib.uoaadmintoolslibrary.handlers.utils.RolesUtils; +import eu.dnetlib.uoamonitorservice.dao.StakeholderDAO; +import eu.dnetlib.uoamonitorservice.entities.Stakeholder; +import eu.dnetlib.uoamonitorservice.entities.Visibility; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class StakeholderService { + + @Autowired + StakeholderDAO dao; + + @Autowired + RolesUtils rolesUtils; + + public List getStakeholdersByTypeAndRole(String type, String defaultId, boolean manage) { + List stakeholders; + if(type != null && defaultId != null) { + stakeholders = dao.findByDefaultIdAndType(defaultId, type); + } else if(defaultId != null) { + stakeholders = dao.findByDefaultId(defaultId); + } else if(type != null) { + stakeholders = dao.findByDefaultIdNotAndType(null, type); + } else { + stakeholders = dao.findByDefaultIdNot(null); + } + return stakeholders.stream().filter(stakeholder -> + (!manage && + (stakeholder.getVisibility() == Visibility.PUBLIC + || stakeholder.getVisibility() == Visibility.RESTRICTED)) + || rolesUtils.isPortalAdmin() + || rolesUtils.isCurator(stakeholder.getType()) + || rolesUtils.isManager(stakeholder.getType(), stakeholder.getId())) + .collect(Collectors.toList()); + } +}