From 4eaac0ee19e7645ffe10e11a2c6cdd94fa8c13cf Mon Sep 17 00:00:00 2001 From: argirok Date: Wed, 3 Apr 2024 11:20:09 +0300 Subject: [PATCH] add plugin controller and service and related changes --- .../AdminPortalRelationsController.java | 56 ++++++- .../controllers/PageController.java | 11 +- .../controllers/PluginController.java | 137 +++++++++++++++++ .../dao/MongoDBDAOs/MongoDBPluginDAO.java | 21 +++ .../MongoDBDAOs/MongoDBPluginTemplateDAO.java | 23 +++ .../uoaadmintoolslibrary/dao/PluginDAO.java | 18 +++ .../dao/PluginTemplateDAO.java | 16 ++ .../entities/plugin/Plugin.java | 106 +++++++++++++ .../entities/plugin/PluginAttributes.java | 31 ++++ .../entities/plugin/PluginTemplate.java | 144 ++++++++++++++++++ .../services/PluginService.java | 96 ++++++++++++ 11 files changed, 650 insertions(+), 9 deletions(-) create mode 100644 src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/PluginController.java create mode 100644 src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/MongoDBDAOs/MongoDBPluginDAO.java create mode 100644 src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/MongoDBDAOs/MongoDBPluginTemplateDAO.java create mode 100644 src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/PluginDAO.java create mode 100644 src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/PluginTemplateDAO.java create mode 100644 src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/Plugin.java create mode 100644 src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/PluginAttributes.java create mode 100644 src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/PluginTemplate.java create mode 100644 src/main/java/eu/dnetlib/uoaadmintoolslibrary/services/PluginService.java diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/AdminPortalRelationsController.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/AdminPortalRelationsController.java index 08501bc..6d2555f 100644 --- a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/AdminPortalRelationsController.java +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/AdminPortalRelationsController.java @@ -2,19 +2,19 @@ package eu.dnetlib.uoaadmintoolslibrary.controllers; import eu.dnetlib.uoaadmintoolslibrary.entities.*; import eu.dnetlib.uoaadmintoolslibrary.entities.fullEntities.*; +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.Plugin; +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.PluginTemplate; import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException; import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; import eu.dnetlib.uoaadmintoolslibrary.services.*; +import org.apache.http.protocol.ResponseContent; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.security.access.prepost.PreAuthorize; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; @RestController @RequestMapping(value = "{portalType}") @@ -28,6 +28,9 @@ public class AdminPortalRelationsController { @Autowired private DivHelpContentService divHelpContentService; + @Autowired + private PluginService pluginService; + @Autowired private DivIdService divIdService; @@ -127,6 +130,51 @@ public class AdminPortalRelationsController { return mapCount; } + @RequestMapping(value = "/{pid}/pluginTemplate/page/count", method = RequestMethod.GET) + public Map countPluginTemplatesForPages(@PathVariable PortalType portalType, @PathVariable(value = "pid") String pid) { + Map mapCount = new HashMap(); + + List pages = pageService.getAllPages(pid, null, null); + for(Page page : pages){ + List plugin = pluginService.getPluginTemplatesByPage( page.getId()); + if (plugin == null) { + mapCount.put(page.getId(), 0); + } else { + mapCount.put(page.getId(), plugin.size()); + } + } + return mapCount; + } + + @RequestMapping(value = "/{pid}/plugins/page/{pageId}", method = RequestMethod.GET) + public List getPluginsForPage(@PathVariable PortalType portalType,@PathVariable(value = "pid") String pid, @PathVariable(value = "pageId") String pageId) { + return pluginService.getPluginsByPage(pid, pageId); + + } + + @RequestMapping(value = "/{pid}/pluginTemplates/page/{pageId}", method = RequestMethod.GET) + public List getPluginTemplatesForPages(@PathVariable PortalType portalType,@PathVariable(value = "pid") String pid, @PathVariable(value = "pageId") String pageId) { + return pluginService.getPluginTemplatesByPage(pageId); + + } + @RequestMapping(value = "/{pid}/plugins/page/route", method = RequestMethod.GET) + public List getPluginsForPageRoute(@PathVariable PortalType portalType,@PathVariable(value = "pid") String pid, @RequestParam(value = "route") String route) { + Page p = pageService.getPageByPortalTypeAndRoute(portalType + "",route,pid); + if(p != null) { + return pluginService.getPluginsByPage(pid,p.getId()); + } + return new ArrayList<>(); + + } + @RequestMapping(value = "/{pid}/pluginTemplates/page/route", method = RequestMethod.GET) + public List getPluginTemplatesForPageRoute(@PathVariable PortalType portalType,@PathVariable(value = "pid") String pid, + @RequestParam(value = "route") String route) { + Page p = pageService.getPageByPortalTypeAndRoute(portalType + "",route ,pid); + if(p != null) { + return pluginService.getPluginTemplatesByPage(p.getId()); + } + return new ArrayList<>(); + } @PreAuthorize("hasAnyAuthority(" + "@AuthorizationService.PORTAL_ADMIN, " + "@AuthorizationService.curator(#portalType), @AuthorizationService.manager(#portalType, #pid))") diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/PageController.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/PageController.java index c734dfa..aaabb76 100644 --- a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/PageController.java +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/PageController.java @@ -2,6 +2,7 @@ package eu.dnetlib.uoaadmintoolslibrary.controllers; import eu.dnetlib.uoaadmintoolslibrary.entities.Page; import eu.dnetlib.uoaadmintoolslibrary.entities.fullEntities.PortalPage; +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.PluginTemplate; import eu.dnetlib.uoaadmintoolslibrary.handlers.ForbiddenException; import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException; import eu.dnetlib.uoaadmintoolslibrary.handlers.utils.RolesUtils; @@ -107,11 +108,11 @@ public class PageController { return pageService.deletePages(pages); } -// // not used by portals -// @RequestMapping(value = "/page/{id}", method = RequestMethod.GET) -// public Page getPage(@PathVariable(value = "id") String id) { -// return pageService.getPage(id); -// } + //used from admin - manage templates per page + @RequestMapping(value = "/page/{id}", method = RequestMethod.GET) + public Page getPage(@PathVariable(value = "id") String id) { + return pageService.getPage(id); + } // // // not used by portals // @RequestMapping(value = "/page/{id}", method = RequestMethod.DELETE) diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/PluginController.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/PluginController.java new file mode 100644 index 0000000..49fa5f6 --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/controllers/PluginController.java @@ -0,0 +1,137 @@ +package eu.dnetlib.uoaadmintoolslibrary.controllers; + +import eu.dnetlib.uoaadmintoolslibrary.entities.Page; +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.Plugin; +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.PluginTemplate; +import eu.dnetlib.uoaadmintoolslibrary.services.PageService; +import eu.dnetlib.uoaadmintoolslibrary.services.PluginService; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@CrossOrigin(origins = "*") +public class PluginController { + private final Logger log = LogManager.getLogger(this.getClass()); + + @Autowired + private PluginService pluginService; + @Autowired + private PageService pageService; + // used WITHOUT ANY PARAMS + @RequestMapping(value = "/plugins", method = RequestMethod.GET) + public List getPlugins() { + return pluginService.getPlugins(null, null, null); + } + + @RequestMapping(value = "/plugins/template/{id}", method = RequestMethod.GET) + public List getPluginsByTemplate(@PathVariable(value = "id") String id) { + return pluginService.getPluginsByTemplateId(id); + } + + @RequestMapping(value = "/pluginTemplates", method = RequestMethod.GET) + public List getPluginTemplates(/*@RequestParam(required = false) String page, + @RequestParam(required = false) String name, + @RequestParam(value="portal", required = false) String pid*/) { + return pluginService.getPluginTemplates(null, null, null); + } + @RequestMapping(value = "/pluginTemplates/page/{pageId}", method = RequestMethod.GET) + public List getPluginTemplatesByPage(@PathVariable(value = "pageId") String pageId) { + return pluginService.getPluginTemplates(pageId, null, null); + } + @RequestMapping(value = "/pluginTemplates/{id}", method = RequestMethod.GET) + public PluginTemplate getPluginTemplateById(@PathVariable(value = "id") String id) { + return pluginService.getPluginTemplateById(id); + } + + // used + @PreAuthorize("hasAnyAuthority(" + + "@AuthorizationService.PORTAL_ADMIN, " + + "@AuthorizationService.curator('community'))") + @RequestMapping(value = "/pluginTemplate/save", method = RequestMethod.POST) + public PluginTemplate insertTemplate(@RequestBody PluginTemplate pluginTemplate ) { + return pluginService.savePluginTemplate(pluginTemplate); + } + @PreAuthorize("hasAnyAuthority(" + + "@AuthorizationService.PORTAL_ADMIN, " + + "@AuthorizationService.curator('community'))") + @RequestMapping(value = "/pluginTemplate/save/order/{position}", method = RequestMethod.POST) + public PluginTemplate updatePluginTemplateOrder(@RequestBody PluginTemplate pluginTemplate, @PathVariable(value = "position") Integer position ) { + PluginTemplate pt = pluginService.getPluginTemplateById(pluginTemplate.getId()); + pt.setOrder(pt.getOrder() != null ? pt.getOrder() + position: 0 ); + return pluginService.savePluginTemplate(pt); + } + @PreAuthorize("hasAnyAuthority(" + + "@AuthorizationService.PORTAL_ADMIN, " + + "@AuthorizationService.curator('community')," + + "@AuthorizationService.manager('community', #pid))") + @RequestMapping(value = "/community/{pid}/plugin/save/order/{position}", method = RequestMethod.POST) + public Plugin updatePluginOrder(@PathVariable String pid,@RequestBody Plugin plugin, @PathVariable(value = "position") Integer position ) { + Plugin pl = pluginService.getPluginById(plugin.getId()); + pl.setOrder(pl.getOrder() != null ? pl.getOrder() + position: 0 ); + return pluginService.savePlugin(pl); + } + @PreAuthorize("hasAnyAuthority(" + + "@AuthorizationService.PORTAL_ADMIN, " + + "@AuthorizationService.curator('community')," + + "@AuthorizationService.manager('community', #pid))") + @RequestMapping(value = "/community/{pid}/plugin/save", method = RequestMethod.POST) + public Plugin savePlugin(@PathVariable String pid, @RequestBody Plugin plugin ) { + return pluginService.savePlugin(plugin); + } + + @PreAuthorize("hasAnyAuthority(" + + "@AuthorizationService.PORTAL_ADMIN, " + + "@AuthorizationService.curator('community'))") + @RequestMapping(value = "/community/{pid}/plugin/status/{id}", method = RequestMethod.POST) + public Plugin updatePluginStatus(@PathVariable String pid, @PathVariable(value = "id") String id, @RequestBody String status ) { + return pluginService.updatePluginStatus(id,status); + } + + @RequestMapping(value = "/pluginTemplate/page/count", method = RequestMethod.GET) + public Map countPluginTemplatesForPages() { + Map mapCount = new HashMap(); + + List pages = pageService.getAllPages(null, null, null); + for(Page page : pages){ + List plugin = pluginService.getPluginTemplatesByPage( page.getId()); + if (plugin == null) { + mapCount.put(page.getId(), 0); + } else { + mapCount.put(page.getId(), plugin.size()); + } + } + return mapCount; + } + + // not used by portals + @PreAuthorize("hasAnyAuthority(" + + "@AuthorizationService.PORTAL_ADMIN, " + + "@AuthorizationService.curator('community'))") + @RequestMapping(value = "/pluginTemplate/{id}", method = RequestMethod.DELETE) + public void deletePluginTemplate(@PathVariable(value = "id") String id) { + pluginService.deletePluginTemplate(id); + } + + @RequestMapping(value = "/plugin/template/count", method = RequestMethod.GET) + public Map countPluginsByTemplate() { + Map mapCount = new HashMap(); + + List templates = pluginService.getPluginTemplates(null,null,null); + for(PluginTemplate template: templates){ + List plugins = pluginService.getPluginsByTemplateId(template.getId()); + if (plugins == null) { + mapCount.put(template.getId(), 0); + } else { + mapCount.put(template.getId(), plugins.size()); + } + } + return mapCount; + } + } diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/MongoDBDAOs/MongoDBPluginDAO.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/MongoDBDAOs/MongoDBPluginDAO.java new file mode 100644 index 0000000..c24b5af --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/MongoDBDAOs/MongoDBPluginDAO.java @@ -0,0 +1,21 @@ +package eu.dnetlib.uoaadmintoolslibrary.dao.MongoDBDAOs; + +import eu.dnetlib.uoaadmintoolslibrary.dao.PluginDAO; +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.Plugin; +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.PluginTemplate; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; + +import java.util.List; + +public interface MongoDBPluginDAO extends PluginDAO, MongoRepository { + Plugin findById(String Id); + + List findAll(); + List findByPage(String page); + List findByPageAndPid(String page, String pid); + List findByTemplateId(String templateId); + Plugin save(Plugin plugin); + void deleteAll(); + void delete(String id); +} \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/MongoDBDAOs/MongoDBPluginTemplateDAO.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/MongoDBDAOs/MongoDBPluginTemplateDAO.java new file mode 100644 index 0000000..ea027ea --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/MongoDBDAOs/MongoDBPluginTemplateDAO.java @@ -0,0 +1,23 @@ +package eu.dnetlib.uoaadmintoolslibrary.dao.MongoDBDAOs; + +import eu.dnetlib.uoaadmintoolslibrary.dao.DivIdDAO; +import eu.dnetlib.uoaadmintoolslibrary.dao.PluginTemplateDAO; +import eu.dnetlib.uoaadmintoolslibrary.entities.DivId; +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.PluginTemplate; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; + +import java.util.List; + +public interface MongoDBPluginTemplateDAO extends PluginTemplateDAO, MongoRepository { + PluginTemplate findById(String Id); + PluginTemplate findByCode(String code); + List findAll(); + @Query("{ pages: ?0 }") + List findByPages(String page); + PluginTemplate save(PluginTemplate pluginTemplate); + + void deleteAll(); + + void delete(String id); +} \ No newline at end of file diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/PluginDAO.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/PluginDAO.java new file mode 100644 index 0000000..20afb07 --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/PluginDAO.java @@ -0,0 +1,18 @@ +package eu.dnetlib.uoaadmintoolslibrary.dao; + +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.Plugin; + +import java.util.List; + +public interface PluginDAO { + Plugin findById(String Id); + + List findAll(); + List findByPage(String page); + List findByPageAndPid(String page, String pid); + List findByTemplateId(String templateId); + Plugin save(Plugin plugin); + void deleteAll(); + void delete(String id); +} + diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/PluginTemplateDAO.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/PluginTemplateDAO.java new file mode 100644 index 0000000..8aacb97 --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/dao/PluginTemplateDAO.java @@ -0,0 +1,16 @@ +package eu.dnetlib.uoaadmintoolslibrary.dao; + +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.PluginTemplate; +import java.util.List; + +public interface PluginTemplateDAO { + PluginTemplate findById(String Id); + List findAll(); + List findByPage(String page); + PluginTemplate save(PluginTemplate pluginTemplate); + + void deleteAll(); + + void delete(String id); +} + diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/Plugin.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/Plugin.java new file mode 100644 index 0000000..4c1c4c7 --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/Plugin.java @@ -0,0 +1,106 @@ +package eu.dnetlib.uoaadmintoolslibrary.entities.plugin; + +import com.fasterxml.jackson.annotation.JsonProperty; +import org.springframework.data.annotation.Id; + +import java.util.HashMap; +import java.util.Map; + +public class Plugin { + @Id + @JsonProperty("_id") + private String id; + private String pid; + private String templateCode; + private String templateId; + private String page; + private String placement; + private Integer order; + private Boolean isActive = true; + private Map settingsValues = new HashMap<>(); + private Object object; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public String getTemplateCode() { + + + return templateCode; + } + + public void setTemplateCode(String templateCode) { + this.templateCode = templateCode; + } + + public String getTemplateId() { + return templateId; + } + + public void setTemplateId(String templateId) { + this.templateId = templateId; + } + + public String getPage() { + return page; + } + + public void setPage(String page) { + this.page = page; + } + + public String getPlacement() { + return placement; + } + + public void setPlacement(String placement) { + this.placement = placement; + } + + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } + + public Boolean getActive() { + return isActive; + } + + public void setActive(Boolean active) { + isActive = active; + } + + public Map getSettingsValues() { + return settingsValues; + } + + public void setSettingsValues(Map settingsValues) { + this.settingsValues = settingsValues; + } + + public Object getObject() { + return object; + } + + public void setObject(Object object) { + this.object = object; + } + + +} diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/PluginAttributes.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/PluginAttributes.java new file mode 100644 index 0000000..bf03756 --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/PluginAttributes.java @@ -0,0 +1,31 @@ +package eu.dnetlib.uoaadmintoolslibrary.entities.plugin; + +public class PluginAttributes { + String name; + String type; + String value; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } +} diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/PluginTemplate.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/PluginTemplate.java new file mode 100644 index 0000000..b992b85 --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/entities/plugin/PluginTemplate.java @@ -0,0 +1,144 @@ +package eu.dnetlib.uoaadmintoolslibrary.entities.plugin; + +import com.fasterxml.jackson.annotation.JsonProperty; +import eu.dnetlib.uoaadmintoolslibrary.entities.PortalType; +import org.springframework.data.annotation.Id; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class PluginTemplate { + + @Id + @JsonProperty("_id") + private String id; + + private String name; + private String description; + private String code; + private String image; + private String page; + private String placement; + private Integer order; + private PortalType portalType; // explore, connect, community, monitor + private String plan; // e.g basic, ultimate, etc for paid communities + private Boolean defaultIsActive; + private ArrayList portalSpecific = new ArrayList<>(); + private Map settings = new HashMap<>(); + private Object object; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getImage() { + return image; + } + + public void setImage(String image) { + this.image = image; + } + + public PortalType getPortalType() { + return portalType; + } + + public void setPortalType(PortalType portalType) { + this.portalType = portalType; + } + + public String getPlan() { + return plan; + } + + public void setPlan(String plan) { + this.plan = plan; + } + + public Object getObject() { + return object; + } + + public void setObject(Object object) { + this.object = object; + } + + public Map getSettings() { + return settings; + } + + public void setSettings(Map settings) { + this.settings = settings; + } + + + public Integer getOrder() { + return order; + } + + public void setOrder(Integer order) { + this.order = order; + } + + public String getPage() { + return page; + } + + public void setPage(String page) { + this.page = page; + } + + public String getPlacement() { + return placement; + } + + public void setPlacement(String placement) { + this.placement = placement; + } + + public ArrayList getPortalSpecific() { + return portalSpecific; + } + + public void setPortalSpecific(ArrayList portalSpecific) { + this.portalSpecific = portalSpecific; + } + + public Boolean getDefaultIsActive() { + return defaultIsActive; + } + + public void setDefaultIsActive(Boolean defaultIsActive) { + this.defaultIsActive = defaultIsActive; + } +} diff --git a/src/main/java/eu/dnetlib/uoaadmintoolslibrary/services/PluginService.java b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/services/PluginService.java new file mode 100644 index 0000000..1b2ec39 --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintoolslibrary/services/PluginService.java @@ -0,0 +1,96 @@ +package eu.dnetlib.uoaadmintoolslibrary.services; + +import eu.dnetlib.uoaadmintoolslibrary.dao.PluginDAO; +import eu.dnetlib.uoaadmintoolslibrary.dao.PluginTemplateDAO; +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.Plugin; +import eu.dnetlib.uoaadmintoolslibrary.entities.plugin.PluginTemplate; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + +@Service +public class PluginService { + private final Logger log = LogManager.getLogger(this.getClass()); + + @Autowired + private PluginTemplateDAO pluginTemplateDAO; + + @Autowired + private PluginDAO pluginDAO; + + public List getPluginTemplates(String page, String name, String pid) { + List templates; + if(page != null){ + templates = this.pluginTemplateDAO.findByPage(page); + }else { + templates = this.pluginTemplateDAO.findAll(); + } + templates.sort(Comparator.comparingInt(PluginTemplate::getOrder)); + return templates; + } + + public List getPlugins(String page, String name, String pid) { + return this.pluginDAO.findAll(); + } + public Plugin getPluginById(String id) { + return this.pluginDAO.findById(id); + + } + public PluginTemplate getPluginTemplateById(String id) { + return this.pluginTemplateDAO.findById(id); + + } + public List getPluginsByTemplateId(String id) { + return this.pluginDAO.findByTemplateId(id); + } + + public List getPluginTemplatesByPage(String pageId) { + ArrayList pages = new ArrayList(); + pages.add(pageId); + List templates = this.pluginTemplateDAO.findByPage(pageId); + templates.sort(Comparator.comparingInt(PluginTemplate::getOrder)); + return templates; + + } + public List getPluginsByPage(String pid, String pageId) { + ArrayList pages = new ArrayList(); + pages.add(pageId); + return this.pluginDAO.findByPageAndPid(pageId,pid); + + } + + + public PluginTemplate savePluginTemplate(PluginTemplate pluginTemplate) { + return this.pluginTemplateDAO.save(pluginTemplate); + } + public Plugin savePlugin(Plugin plugin) { + return this.pluginDAO.save(plugin); + } + + public Plugin updatePluginStatus(String id, String status) { + Plugin plugin = this.pluginDAO.findById(id); + if(plugin != null) { + plugin.setActive(Boolean.parseBoolean(status)); + } + return this.pluginDAO.save(plugin); + } + + + public void deletePluginTemplate(String id) { + pluginTemplateDAO.delete(id); + List plugins = pluginDAO.findByTemplateId(id); + for(Plugin p: plugins){ + pluginDAO.delete(p.getId()); + } + + } + public void deletePlugin(String id) { + pluginDAO.delete(id); + } + +} \ No newline at end of file