[Trunk | Admin Tools]: Updated version of admin-tools-library | Updated structure of dynamic Menus.
1. pom.xml: Updated version of admin-tools-library to 1.0.5 (used to be 1.0.4). 2. Added Menu.java, MenuFull.java, MenuDAO.java, MongoDBMenuDAO.java. 3. CommunityController.java: On method "deleteCommunities()", delete also dynamic Menus for these pids. 4. Renamed MenuItemController.java to MenuController.java & added or updated methods to get/save/delete/toggle Menu structure instead of MenuItems. 5. Renamed MenuItemService.java to MenuService.java & added or updated methods to get/save/delete Menu structure instead of MenuItems. 6. MenuItem.java & MenuItemFull.java: Added field "String target;" (values _self or _blank) & field "Boolean isFeatured = false;". 7. UoaAdminToolsApplicationTests.java: Added test for sending email. 8. Layout.java: Added field "Date date".
This commit is contained in:
parent
834dcc26f0
commit
a9cc44c443
2
pom.xml
2
pom.xml
|
@ -76,7 +76,7 @@
|
|||
<dependency> <!-- this dependency includes dependency to uoa-authorization-library -->
|
||||
<groupId>eu.dnetlib</groupId>
|
||||
<artifactId>uoa-admin-tools-library</artifactId>
|
||||
<version>1.0.4</version>
|
||||
<version>1.0.5</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
|
|
|
@ -1,17 +1,13 @@
|
|||
package eu.dnetlib.uoaadmintools.controllers;
|
||||
|
||||
import eu.dnetlib.uoaadmintools.entities.Layout;
|
||||
import eu.dnetlib.uoaadmintools.services.LayoutService;
|
||||
import eu.dnetlib.uoaadmintools.services.NotificationsService;
|
||||
import eu.dnetlib.uoaadmintools.services.StatisticsService;
|
||||
import eu.dnetlib.uoaadmintools.services.SubscriberService;
|
||||
import eu.dnetlib.uoaadmintools.services.*;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.entities.Portal;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.entities.fullEntities.PortalResponse;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.handlers.utils.RolesUtils;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.services.PortalService;
|
||||
import eu.dnetlib.uoaauthorizationlibrary.security.AuthorizationService;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
|
@ -40,6 +36,9 @@ public class CommunityController {
|
|||
@Autowired
|
||||
private SubscriberService subscriberService;
|
||||
|
||||
@Autowired
|
||||
private MenuService menuService;
|
||||
|
||||
@Autowired
|
||||
private PortalService portalService;
|
||||
|
||||
|
@ -95,7 +94,7 @@ public class CommunityController {
|
|||
|
||||
@PreAuthorize("hasAnyAuthority(@AuthorizationService.PORTAL_ADMIN)")
|
||||
@RequestMapping(value = "/delete", method = RequestMethod.POST)
|
||||
public Boolean deleteCommunities(@RequestBody List<String> portals) {
|
||||
public Boolean deleteCommunities(@RequestBody List<String> portals) throws Exception {
|
||||
List<String> roles = rolesUtils.getRoles();
|
||||
|
||||
for (String id: portals) {
|
||||
|
@ -115,6 +114,7 @@ public class CommunityController {
|
|||
subscriberService.deletePortalSubscribers(pid);
|
||||
layoutService.deleteByPid(pid);
|
||||
notificationsService.deleteByPid(pid);
|
||||
menuService.deleteMenuByPortalPid(pid);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
package eu.dnetlib.uoaadmintools.controllers;
|
||||
|
||||
import eu.dnetlib.uoaadmintools.dao.NotificationsDAO;
|
||||
import eu.dnetlib.uoaadmintools.entities.Notifications;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.Menu;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.MenuFull;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.MenuItem;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.MenuItemFull;
|
||||
import eu.dnetlib.uoaadmintools.services.MenuItemService;
|
||||
import eu.dnetlib.uoaadmintools.services.MenuService;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.dao.PortalDAO;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.entities.Portal;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.entities.fullEntities.PortalPage;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.handlers.utils.RolesUtils;
|
||||
|
@ -20,55 +19,40 @@ import java.util.List;
|
|||
|
||||
@RestController
|
||||
@CrossOrigin(origins = "*")
|
||||
public class MenuItemController {
|
||||
public class MenuController {
|
||||
private final Logger log = Logger.getLogger(this.getClass());
|
||||
|
||||
@Autowired
|
||||
private MenuItemService menuItemService;
|
||||
private MenuService menuService;
|
||||
@Autowired
|
||||
private PortalDAO portalDAO;
|
||||
@Autowired
|
||||
private RolesUtils rolesUtils;
|
||||
|
||||
// @PreAuthorize("hasAnyAuthority(" +
|
||||
// "@AuthorizationService.PORTAL_ADMIN, " +
|
||||
// "@AuthorizationService.curator('community'), @AuthorizationService.manager('community', #pid))")
|
||||
@RequestMapping(value = "/community/{pid}/menu", method = RequestMethod.GET)
|
||||
public List<MenuItem> getMenuItems(@PathVariable(value = "pid") String pid ) throws ContentNotFoundException {
|
||||
Portal portal = portalDAO.findByPid(pid);
|
||||
if(portal == null){
|
||||
throw new ContentNotFoundException("Portal with pid: "+pid+" not found");
|
||||
}
|
||||
if(!portal.getType().equals("community")) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("Get Notifications: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
}
|
||||
|
||||
List<MenuItem> menuItems = menuItemService.getMenuItems(pid);
|
||||
if(menuItems == null || menuItems.size() == 0){
|
||||
throw new ContentNotFoundException("Menu for community with pid: "+pid+" not found");
|
||||
}
|
||||
return menuItems;
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/community/{pid}/menu/{itemId}/full", method = RequestMethod.GET)
|
||||
public MenuItemFull getMenuItemFull(@PathVariable(value = "pid") String pid, @PathVariable(value = "itemId") String itemId ) throws ContentNotFoundException {
|
||||
Portal portal = portalDAO.findByPid(pid);
|
||||
if(portal == null){
|
||||
throw new ContentNotFoundException("Portal with pid: "+pid+" not found");
|
||||
}
|
||||
if(!portal.getType().equals("community")) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("Get Menu Item Full: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
}
|
||||
|
||||
MenuItemFull menuItem = menuItemService.getMenuItemFull(itemId);
|
||||
if(menuItem == null){
|
||||
throw new ContentNotFoundException("MenuItem with id: "+itemId+" for community with pid: "+pid+" not found");
|
||||
}
|
||||
return menuItem;
|
||||
}
|
||||
// NOT USED - maybe leave it
|
||||
//// @PreAuthorize("hasAnyAuthority(" +
|
||||
//// "@AuthorizationService.PORTAL_ADMIN, " +
|
||||
//// "@AuthorizationService.curator('community'), @AuthorizationService.manager('community', #pid))")
|
||||
// @RequestMapping(value = "/community/{pid}/menu", method = RequestMethod.GET)
|
||||
// public List<MenuItem> getMenuItems(@PathVariable(value = "pid") String pid ) throws ContentNotFoundException {
|
||||
// // @RequestParam(value="featured", required=false) String isFeatured
|
||||
// Portal portal = portalDAO.findByPid(pid);
|
||||
// if(portal == null){
|
||||
// throw new ContentNotFoundException("Portal with pid: "+pid+" not found");
|
||||
// }
|
||||
// if(!portal.getType().equals("community")) {
|
||||
// // EXCEPTION - MismatchingContent
|
||||
// throw new MismatchingContentException("Get Notifications: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
// }
|
||||
//
|
||||
// List<MenuItem> menuItems = menuService.getMenuItems(pid);
|
||||
// if(menuItems == null || menuItems.size() == 0){
|
||||
// throw new ContentNotFoundException("Menu for community with pid: "+pid+" not found");
|
||||
// }
|
||||
// return menuItems;
|
||||
// }
|
||||
|
||||
// OLD endpoint
|
||||
@RequestMapping(value = "/community/{pid}/menu/root/full", method = RequestMethod.GET)
|
||||
public List<MenuItemFull> getRootMenuItemsFull(@PathVariable(value = "pid") String pid ) throws ContentNotFoundException {
|
||||
Portal portal = portalDAO.findByPid(pid);
|
||||
|
@ -80,15 +64,15 @@ public class MenuItemController {
|
|||
throw new MismatchingContentException("getMenuItemsFull: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
}
|
||||
|
||||
List<MenuItemFull> menuItems = menuItemService.getRootMenuItemsFull(pid);
|
||||
List<MenuItemFull> menuItems = menuService.getRootMenuItemsFull(pid);
|
||||
// if(menuItems == null || menuItems.size() == 0){
|
||||
// throw new ContentNotFoundException("Root menu for community with pid: "+pid+" not found");
|
||||
// }
|
||||
return menuItems;
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/community/{pid}/menu/root", method = RequestMethod.GET)
|
||||
public List<MenuItem> getRootMenuItems(@PathVariable(value = "pid") String pid ) throws ContentNotFoundException {
|
||||
@RequestMapping(value = "/community/{pid}/menu/full", method = RequestMethod.GET)
|
||||
public MenuFull getMenuFull(@PathVariable(value = "pid") String pid ) throws ContentNotFoundException {
|
||||
Portal portal = portalDAO.findByPid(pid);
|
||||
if(portal == null){
|
||||
throw new ContentNotFoundException("Portal with pid: "+pid+" not found");
|
||||
|
@ -98,29 +82,8 @@ public class MenuItemController {
|
|||
throw new MismatchingContentException("getMenuItemsFull: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
}
|
||||
|
||||
List<MenuItem> menuItems = menuItemService.getMenuItemsByParent(null, pid);
|
||||
if(menuItems == null || menuItems.size() == 0){
|
||||
throw new ContentNotFoundException("Root menu for community with pid: "+pid+" not found");
|
||||
}
|
||||
return menuItems;
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/community/{pid}/menu/{parentId}/children", method = RequestMethod.GET)
|
||||
public List<MenuItem> getChildrenMenuItemsOfParent(@PathVariable(value = "pid") String pid, @PathVariable(value="parentId") String parentId) throws ContentNotFoundException {
|
||||
Portal portal = portalDAO.findByPid(pid);
|
||||
if(portal == null){
|
||||
throw new ContentNotFoundException("Portal with pid: "+pid+" not found");
|
||||
}
|
||||
if(!portal.getType().equals("community")) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("getMenuItemsFull: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
}
|
||||
|
||||
List<MenuItem> menuItems = menuItemService.getMenuItemsByParent(parentId, pid);
|
||||
if(menuItems == null || menuItems.size() == 0){
|
||||
throw new ContentNotFoundException("Root menu for community with pid: "+pid+" not found");
|
||||
}
|
||||
return menuItems;
|
||||
MenuFull menu = menuService.getMenuFull(pid);
|
||||
return menu;
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyAuthority(" +
|
||||
|
@ -137,6 +100,10 @@ public class MenuItemController {
|
|||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("updateMenuItem: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
}
|
||||
if(menuItemFull.getIsFeatured() && menuItemFull.getItems() != null && menuItemFull.getItems().size() > 0) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("updateMenuItem: MenuItem "+menuItemFull.getId()+" cannot be featured because it has "+menuItemFull.getItems().size() + " sub menu items");
|
||||
}
|
||||
if(menuItemFull.getType() == null ||
|
||||
(menuItemFull.getType().equals("internal") && menuItemFull.getRoute() == null) ||
|
||||
(menuItemFull.getType().equals("external") && menuItemFull.getUrl() == null)) {
|
||||
|
@ -155,7 +122,7 @@ public class MenuItemController {
|
|||
throw new MismatchingContentException("updateMenuItem: This MenuItem has no id.");
|
||||
}
|
||||
|
||||
return menuItemService.updateMenuItem(menuItemFull);
|
||||
return menuService.updateMenu(menuItemFull, pid);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyAuthority(" +
|
||||
|
@ -172,6 +139,10 @@ public class MenuItemController {
|
|||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("insertMenuItem: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
}
|
||||
if(menuItem.getIsFeatured() && menuItem.getItems() != null && menuItem.getItems().size() > 0) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("updateMenuItem: MenuItem "+menuItem.getId()+" cannot be featured because it has "+menuItem.getItems().size() + " sub menu items");
|
||||
}
|
||||
if(menuItem.getType() == null ||
|
||||
(menuItem.getType().equals("internal") && menuItem.getRoute() == null) ||
|
||||
(menuItem.getType().equals("external") && menuItem.getUrl() == null)) {
|
||||
|
@ -190,7 +161,7 @@ public class MenuItemController {
|
|||
throw new MismatchingContentException("insertMenuItem: MenuItem has already an id: "+menuItem.getId());
|
||||
}
|
||||
|
||||
return menuItemService.insertMenuItem(menuItem, pid);
|
||||
return menuService.insertMenuItemInMenu(menuItem, pid);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyAuthority(" +
|
||||
|
@ -205,9 +176,36 @@ public class MenuItemController {
|
|||
}
|
||||
if(!portal.getType().equals("community")) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("Get Notifications: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
throw new MismatchingContentException("deleteMenuItem: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
}
|
||||
|
||||
return menuItemService.deleteMenuItem(menuItemId, pid);
|
||||
return menuService.deleteMenuItem(menuItemId, pid);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyAuthority(" +
|
||||
"@AuthorizationService.PORTAL_ADMIN, " +
|
||||
"@AuthorizationService.curator('community')," +
|
||||
"@AuthorizationService.manager('community', #pid))")
|
||||
@RequestMapping(value = "/community/{pid}/menu/reorder", method = RequestMethod.POST)
|
||||
public Boolean reorderMenuItems(@PathVariable String pid, @RequestBody List<MenuItemFull> menuItems) throws Exception {
|
||||
Portal portal = portalDAO.findByPid(pid);
|
||||
if(portal == null){
|
||||
throw new ContentNotFoundException("Portal with pid: "+pid+" not found");
|
||||
}
|
||||
if(!portal.getType().equals("community")) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("reorderMenuItems: Portal with id: "+portal.getId()+" has type: "+portal.getType()+" instead of community");
|
||||
}
|
||||
|
||||
return menuService.reorderMenuItems(menuItems, pid);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyAuthority(" +
|
||||
"@AuthorizationService.PORTAL_ADMIN, " +
|
||||
"@AuthorizationService.curator('community')," +
|
||||
"@AuthorizationService.manager('community', #pid))")
|
||||
@RequestMapping(value = {"/community/{pid}/menu/toggle"}, method = RequestMethod.POST)
|
||||
public Menu toggleMenu(@PathVariable(value = "pid") String pid, @RequestParam String status, @RequestParam(value="featured", required=false) String isFeatured) throws Exception {
|
||||
return menuService.toggleMenu(pid, status, isFeatured);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
package eu.dnetlib.uoaadmintools.dao;
|
||||
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.Menu;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.MenuItem;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface MenuDAO {
|
||||
List<Menu> findAll();
|
||||
Menu findByPortalPid(String portalPid);
|
||||
|
||||
Menu save(Menu menu);
|
||||
|
||||
void deleteAll();
|
||||
void deleteByPortalPid(String portalPid);
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package eu.dnetlib.uoaadmintools.dao.MongoDBDAOs;
|
||||
|
||||
import eu.dnetlib.uoaadmintools.dao.MenuDAO;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.Menu;
|
||||
import org.springframework.data.mongodb.repository.MongoRepository;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface MongoDBMenuDAO extends MenuDAO, MongoRepository<Menu, String> {
|
||||
List<Menu> findAll();
|
||||
Menu findByPortalPid(String portalPid);
|
||||
|
||||
Menu save(Menu menu);
|
||||
|
||||
void deleteAll();
|
||||
void deleteByPortalPid(String portalPid);
|
||||
}
|
|
@ -7,6 +7,8 @@ import eu.dnetlib.uoaadmintools.entities.layoutEntities.Links;
|
|||
import eu.dnetlib.uoaadmintools.entities.layoutEntities.Panel;
|
||||
import org.springframework.data.annotation.Id;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class Layout {
|
||||
|
||||
@Id
|
||||
|
@ -14,6 +16,7 @@ public class Layout {
|
|||
private String id;
|
||||
private String portalPid;
|
||||
private Object layoutOptions;
|
||||
private Date date ;
|
||||
|
||||
public Layout() { }
|
||||
|
||||
|
@ -40,4 +43,12 @@ public class Layout {
|
|||
public void setLayoutOptions(Object layoutOptions) {
|
||||
this.layoutOptions = layoutOptions;
|
||||
}
|
||||
|
||||
public Date getDate() {
|
||||
return date;
|
||||
}
|
||||
|
||||
public void setDate(Date date) {
|
||||
this.date = date;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
package eu.dnetlib.uoaadmintools.entities.menu;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import org.springframework.data.annotation.Id;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Menu {
|
||||
@Id
|
||||
@JsonProperty("portalPid")
|
||||
String portalPid;
|
||||
public boolean isFeaturedMenuEnabled;
|
||||
public boolean isMenuEnabled;
|
||||
public List<String> featuredMenuItems;
|
||||
public List<String> menuItems;
|
||||
|
||||
public Menu(String portalPid) {
|
||||
this.setPortalPid(portalPid);
|
||||
this.setMenuEnabled(true);
|
||||
this.setFeaturedMenuEnabled(true);
|
||||
this.setMenuItems(new ArrayList<>());
|
||||
this.setFeaturedMenuItems(new ArrayList<>());
|
||||
}
|
||||
|
||||
public String getPortalPid() {
|
||||
return portalPid;
|
||||
}
|
||||
|
||||
public void setPortalPid(String portalPid) {
|
||||
this.portalPid = portalPid;
|
||||
}
|
||||
|
||||
public boolean getIsFeaturedMenuEnabled() {
|
||||
return isFeaturedMenuEnabled;
|
||||
}
|
||||
|
||||
public void setFeaturedMenuEnabled(boolean featuredMenuEnabled) {
|
||||
isFeaturedMenuEnabled = featuredMenuEnabled;
|
||||
}
|
||||
|
||||
public boolean getIsMenuEnabled() {
|
||||
return isMenuEnabled;
|
||||
}
|
||||
|
||||
public void setMenuEnabled(boolean menuEnabled) {
|
||||
isMenuEnabled = menuEnabled;
|
||||
}
|
||||
|
||||
public List<String> getFeaturedMenuItems() {
|
||||
return featuredMenuItems;
|
||||
}
|
||||
|
||||
public void setFeaturedMenuItems(List<String> featuredMenuItems) {
|
||||
this.featuredMenuItems = featuredMenuItems;
|
||||
}
|
||||
|
||||
public List<String> getMenuItems() {
|
||||
return menuItems;
|
||||
}
|
||||
|
||||
public void setMenuItems(List<String> menuItems) {
|
||||
this.menuItems = menuItems;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,51 @@
|
|||
package eu.dnetlib.uoaadmintools.entities.menu;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MenuFull {
|
||||
String portalPid;
|
||||
public boolean isFeaturedMenuEnabled;
|
||||
public boolean isMenuEnabled;
|
||||
public List<MenuItemFull> featuredMenuItems;
|
||||
public List<MenuItemFull> menuItems;
|
||||
|
||||
public String getPortalPid() {
|
||||
return portalPid;
|
||||
}
|
||||
|
||||
public void setPortalPid(String portalPid) {
|
||||
this.portalPid = portalPid;
|
||||
}
|
||||
|
||||
public boolean getIsFeaturedMenuEnabled() {
|
||||
return isFeaturedMenuEnabled;
|
||||
}
|
||||
|
||||
public void setFeaturedMenuEnabled(boolean featuredMenuEnabled) {
|
||||
isFeaturedMenuEnabled = featuredMenuEnabled;
|
||||
}
|
||||
|
||||
public boolean getIsMenuEnabled() {
|
||||
return isMenuEnabled;
|
||||
}
|
||||
|
||||
public void setMenuEnabled(boolean menuEnabled) {
|
||||
isMenuEnabled = menuEnabled;
|
||||
}
|
||||
|
||||
public List<MenuItemFull> getFeaturedMenuItems() {
|
||||
return featuredMenuItems;
|
||||
}
|
||||
|
||||
public void setFeaturedMenuItems(List<MenuItemFull> featuredMenuItems) {
|
||||
this.featuredMenuItems = featuredMenuItems;
|
||||
}
|
||||
|
||||
public List<MenuItemFull> getMenuItems() {
|
||||
return menuItems;
|
||||
}
|
||||
|
||||
public void setMenuItems(List<MenuItemFull> menuItems) {
|
||||
this.menuItems = menuItems;
|
||||
}
|
||||
}
|
|
@ -13,10 +13,12 @@ public class MenuItem {
|
|||
String title;
|
||||
String url; // external url
|
||||
String route; // internal url - using angular routing and components
|
||||
String type; // internal or external
|
||||
String type; // internal or external or noAction
|
||||
String target; // _self or _blank
|
||||
List<String> items;
|
||||
String parentItemId;
|
||||
String portalPid;
|
||||
Boolean isFeatured = false;
|
||||
|
||||
public MenuItem(){
|
||||
|
||||
|
@ -62,6 +64,14 @@ public class MenuItem {
|
|||
this.type = type;
|
||||
}
|
||||
|
||||
public String getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
public void setTarget(String target) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public List<String> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
@ -86,6 +96,14 @@ public class MenuItem {
|
|||
this.portalPid = portalPid;
|
||||
}
|
||||
|
||||
public Boolean getIsFeatured() {
|
||||
return isFeatured;
|
||||
}
|
||||
|
||||
public void setIsFeatured(Boolean isFeatured) {
|
||||
this.isFeatured = isFeatured;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "MenuItem{" +
|
||||
|
|
|
@ -13,10 +13,12 @@ public class MenuItemFull {
|
|||
String title;
|
||||
String url; // external url
|
||||
String route; // internal url - using angular routing and components
|
||||
String type; // internal or external
|
||||
String type; // internal or external or noAction
|
||||
String target; // _self or _blank
|
||||
List<MenuItemFull> items;
|
||||
String parentItemId;
|
||||
String portalPid;
|
||||
Boolean isFeatured = false;
|
||||
|
||||
public MenuItemFull(){}
|
||||
public MenuItemFull(MenuItem menuItem){
|
||||
|
@ -24,9 +26,11 @@ public class MenuItemFull {
|
|||
setTitle(menuItem.getTitle());
|
||||
setUrl(menuItem.getUrl());
|
||||
setType(menuItem.getType());
|
||||
setTarget(menuItem.getTarget());
|
||||
setRoute(menuItem.getRoute());
|
||||
setParentItemId(menuItem.getParentItemId());
|
||||
setPortalPid(menuItem.getPortalPid());
|
||||
setIsFeatured(menuItem.getIsFeatured());
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
|
@ -70,6 +74,14 @@ public class MenuItemFull {
|
|||
this.type = type;
|
||||
}
|
||||
|
||||
public String getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
public void setTarget(String target) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public List<MenuItemFull> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
@ -94,6 +106,14 @@ public class MenuItemFull {
|
|||
this.portalPid = portalPid;
|
||||
}
|
||||
|
||||
public Boolean getIsFeatured() {
|
||||
return isFeatured;
|
||||
}
|
||||
|
||||
public void setIsFeatured(Boolean isFeatured) {
|
||||
this.isFeatured = isFeatured;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "MenuItemFull{" +
|
||||
|
|
|
@ -1,197 +0,0 @@
|
|||
package eu.dnetlib.uoaadmintools.services;
|
||||
|
||||
import eu.dnetlib.uoaadmintools.dao.MenuItemDAO;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.MenuItem;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.MenuItemFull;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class MenuItemService {
|
||||
private final Logger log = Logger.getLogger(this.getClass());
|
||||
|
||||
@Autowired
|
||||
private MenuItemDAO menuItemDAO;
|
||||
|
||||
public MenuItem getMenuItem(String id) {
|
||||
return menuItemDAO.findById(id);
|
||||
}
|
||||
|
||||
public MenuItemFull getMenuItemFull(String id) {
|
||||
return this.getMenuItemFull(id, 1);
|
||||
}
|
||||
|
||||
public MenuItemFull getMenuItemFull(String id, int maxDepth) {
|
||||
MenuItem menuItem = menuItemDAO.findById(id);
|
||||
MenuItemFull menuItemFull = new MenuItemFull(menuItem);
|
||||
if(maxDepth == 0) {
|
||||
menuItemFull.setItems(new ArrayList<>());
|
||||
return menuItemFull;
|
||||
}
|
||||
|
||||
List<MenuItemFull> menuItemsFull = new ArrayList<>();
|
||||
for(String menuItemString : menuItem.getItems()) {
|
||||
menuItemsFull.add(this.getMenuItemFull(menuItemString, maxDepth-1));
|
||||
}
|
||||
menuItemFull.setItems(menuItemsFull);
|
||||
|
||||
return menuItemFull;
|
||||
}
|
||||
|
||||
public List<MenuItem> getMenuItems(String portalPid) {
|
||||
if(portalPid != null) {
|
||||
return menuItemDAO.findByPortalPid(portalPid);
|
||||
} else {
|
||||
return menuItemDAO.findAll();
|
||||
}
|
||||
}
|
||||
|
||||
public List<MenuItem> getMenuItemsByParent(String parentId, String portalPid) {
|
||||
if(portalPid != null) {
|
||||
return menuItemDAO.findByParentItemIdAndPortalPid(parentId, portalPid);
|
||||
} else {
|
||||
return menuItemDAO.findByParentItemId(parentId);
|
||||
}
|
||||
}
|
||||
|
||||
public List<MenuItemFull> getRootMenuItemsFull(String portalPid) {
|
||||
List<MenuItem> rootMenuItems = this.getMenuItemsByParent(null, portalPid);
|
||||
List<MenuItemFull> rootMenuItemsFull = new ArrayList<>();
|
||||
for(MenuItem rootMenuItem : rootMenuItems) {
|
||||
MenuItemFull rootMenuItemFull = new MenuItemFull(rootMenuItem);
|
||||
|
||||
List<MenuItemFull> childrenMenuItemsFull = new ArrayList<>();
|
||||
for(String childMenuItemString : rootMenuItem.getItems()) {
|
||||
childrenMenuItemsFull.add(this.getMenuItemFull(childMenuItemString));
|
||||
}
|
||||
rootMenuItemFull.setItems(childrenMenuItemsFull);
|
||||
rootMenuItemsFull.add(rootMenuItemFull);
|
||||
}
|
||||
|
||||
return rootMenuItemsFull;
|
||||
}
|
||||
|
||||
// public MenuItemFull saveAndReturn(MenuItemFull menuItemFull) {
|
||||
// menuItemFull.setId(save(menuItemFull));
|
||||
// return menuItemFull;
|
||||
// }
|
||||
|
||||
public MenuItemFull insertMenuItem(MenuItem menuItem, String portalPid) {
|
||||
// for(MenuItemFull childMenuItemFull : menuItemFull.getItems()) {
|
||||
// childMenuItemFull.setId(this.save(childMenuItemFull));
|
||||
// }
|
||||
|
||||
// MenuItem menuItem = getMenuItemByMenuItemFull(menuItemFull);
|
||||
// menuItemDAO.save(menuItem);
|
||||
//
|
||||
// return menuItem.getId();
|
||||
|
||||
MenuItem parent = null;
|
||||
if(menuItem.getParentItemId() != null && !menuItem.getParentItemId().equals("")) {
|
||||
parent = getMenuItem(menuItem.getParentItemId());
|
||||
if (!parent.getPortalPid().equals(portalPid)) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("insertMenuItem: parent ("+parent.getParentItemId()+") of MenuItem has portalPid: " + parent.getPortalPid() + " instead of " + portalPid);
|
||||
}
|
||||
} else {
|
||||
menuItem.setParentItemId(null);
|
||||
}
|
||||
|
||||
// MenuItem menuItem = getMenuItemByMenuItemFull(menuItemFull);
|
||||
if(menuItem.getItems() == null) {
|
||||
List<String> menuItems = new ArrayList<String>();
|
||||
menuItem.setItems(menuItems);
|
||||
}
|
||||
menuItemDAO.save(menuItem);
|
||||
|
||||
if(parent != null) {
|
||||
List<String> siblingsOfNew = parent.getItems();
|
||||
siblingsOfNew.add(menuItem.getId());
|
||||
parent.setItems(siblingsOfNew);
|
||||
menuItemDAO.save(parent);
|
||||
}
|
||||
|
||||
MenuItemFull menuItemFull = new MenuItemFull(menuItem);
|
||||
menuItemFull.setItems(new ArrayList<>());
|
||||
|
||||
return menuItemFull;
|
||||
}
|
||||
|
||||
public MenuItemFull updateMenuItem(MenuItemFull menuItemFull) {
|
||||
MenuItem menuItem = getMenuItemByMenuItemFull(menuItemFull);
|
||||
|
||||
// Update should not affect parent or children - only basic info can be updated
|
||||
MenuItem oldMenuItem = getMenuItem(menuItemFull.getId());
|
||||
menuItem.setItems(oldMenuItem.getItems());
|
||||
menuItem.setParentItemId(oldMenuItem.getParentItemId());
|
||||
|
||||
menuItemDAO.save(menuItem);
|
||||
menuItemFull = getMenuItemFull(menuItem.getId());
|
||||
|
||||
return menuItemFull;
|
||||
}
|
||||
|
||||
public Boolean deleteMenuItem(String id, String portalPid) throws Exception {
|
||||
// menuItemDAO.delete(id);
|
||||
log.debug("delete menu item; "+id);
|
||||
List<String> menuItems = new ArrayList<>();
|
||||
menuItems.add(id);
|
||||
return deleteMenuItems(menuItems, portalPid);
|
||||
}
|
||||
|
||||
public Boolean deleteMenuItems(List<String> menuItems, String portalPid) throws Exception {
|
||||
if(menuItems == null) {
|
||||
return true;
|
||||
}
|
||||
for (String id: menuItems) {
|
||||
MenuItem menuItem = menuItemDAO.findById(id);
|
||||
|
||||
if(!portalPid.equals(menuItem.getPortalPid())) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("Delete Menu Items: MenuItem with id: "+id+" has portalPid: "+menuItem.getPortalPid()+" instead of "+portalPid);
|
||||
}
|
||||
|
||||
deleteMenuItems(menuItem.getItems(), portalPid);
|
||||
|
||||
if(menuItem.getParentItemId() != null && !menuItem.getParentItemId().equals("")) {
|
||||
MenuItem parent = menuItemDAO.findById(menuItem.getParentItemId());
|
||||
List<String> siblingsOfDeleted = parent.getItems();
|
||||
siblingsOfDeleted.remove(id);
|
||||
parent.setItems(siblingsOfDeleted);
|
||||
menuItemDAO.save(parent);
|
||||
}
|
||||
|
||||
menuItemDAO.delete(id);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private MenuItem getMenuItemByMenuItemFull(MenuItemFull menuItemFull) {
|
||||
MenuItem menuItem = new MenuItem();
|
||||
menuItem.setId(menuItemFull.getId());
|
||||
menuItem.setTitle(menuItemFull.getTitle());
|
||||
menuItem.setUrl(menuItemFull.getUrl());
|
||||
menuItem.setType(menuItemFull.getType());
|
||||
menuItem.setRoute(menuItemFull.getRoute());
|
||||
menuItem.setPortalPid(menuItemFull.getPortalPid());
|
||||
menuItem.setParentItemId(menuItemFull.getParentItemId());
|
||||
|
||||
List<MenuItemFull> menuItemsFull = menuItemFull.getItems();
|
||||
List<String> menuItems = new ArrayList<String>();
|
||||
if(menuItemsFull != null) {
|
||||
for (MenuItemFull childMenuItemFull : menuItemsFull) {
|
||||
menuItems.add(childMenuItemFull.getId());
|
||||
}
|
||||
}
|
||||
menuItem.setItems(menuItems);
|
||||
|
||||
return menuItem;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,368 @@
|
|||
package eu.dnetlib.uoaadmintools.services;
|
||||
|
||||
import eu.dnetlib.uoaadmintools.dao.MenuDAO;
|
||||
import eu.dnetlib.uoaadmintools.dao.MenuItemDAO;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.Menu;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.MenuFull;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.MenuItem;
|
||||
import eu.dnetlib.uoaadmintools.entities.menu.MenuItemFull;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.handlers.ContentNotFoundException;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.handlers.MismatchingContentException;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class MenuService {
|
||||
private final Logger log = Logger.getLogger(this.getClass());
|
||||
|
||||
@Autowired
|
||||
private MenuDAO menuDAO;
|
||||
|
||||
@Autowired
|
||||
private MenuItemDAO menuItemDAO;
|
||||
|
||||
public MenuItem getMenuItem(String id) {
|
||||
return menuItemDAO.findById(id);
|
||||
}
|
||||
|
||||
public MenuItemFull getMenuItemFull(String id) {
|
||||
return this.getMenuItemFull(id, 1);
|
||||
}
|
||||
|
||||
public MenuItemFull getMenuItemFull(String id, int maxDepth) {
|
||||
MenuItem menuItem = menuItemDAO.findById(id);
|
||||
MenuItemFull menuItemFull = new MenuItemFull(menuItem);
|
||||
if(maxDepth == 0) {
|
||||
menuItemFull.setItems(new ArrayList<>());
|
||||
return menuItemFull;
|
||||
}
|
||||
|
||||
List<MenuItemFull> menuItemsFull = new ArrayList<>();
|
||||
for(String menuItemString : menuItem.getItems()) {
|
||||
menuItemsFull.add(this.getMenuItemFull(menuItemString, maxDepth-1));
|
||||
}
|
||||
menuItemFull.setItems(menuItemsFull);
|
||||
|
||||
return menuItemFull;
|
||||
}
|
||||
|
||||
public List<MenuItem> getMenuItemsByParent(String parentId, String portalPid) {
|
||||
if(portalPid != null) {
|
||||
return menuItemDAO.findByParentItemIdAndPortalPid(parentId, portalPid);
|
||||
} else {
|
||||
return menuItemDAO.findByParentItemId(parentId);
|
||||
}
|
||||
}
|
||||
|
||||
public List<MenuItemFull> getRootMenuItemsFull(String portalPid) {
|
||||
List<MenuItem> rootMenuItems = this.getMenuItemsByParent(null, portalPid);
|
||||
List<MenuItemFull> rootMenuItemsFull = new ArrayList<>();
|
||||
for(MenuItem rootMenuItem : rootMenuItems) {
|
||||
MenuItemFull rootMenuItemFull = new MenuItemFull(rootMenuItem);
|
||||
|
||||
List<MenuItemFull> childrenMenuItemsFull = new ArrayList<>();
|
||||
for(String childMenuItemString : rootMenuItem.getItems()) {
|
||||
childrenMenuItemsFull.add(this.getMenuItemFull(childMenuItemString));
|
||||
}
|
||||
rootMenuItemFull.setItems(childrenMenuItemsFull);
|
||||
rootMenuItemsFull.add(rootMenuItemFull);
|
||||
}
|
||||
|
||||
return rootMenuItemsFull;
|
||||
}
|
||||
|
||||
public MenuFull getMenuFull(String portalPid) {
|
||||
MenuFull menuFull = new MenuFull();
|
||||
|
||||
Menu menu = menuDAO.findByPortalPid(portalPid);
|
||||
List<MenuItemFull> featuredMenuItems = new ArrayList<>();
|
||||
List<MenuItemFull> menuItems = new ArrayList<>();
|
||||
|
||||
if(menu == null) {
|
||||
menuFull.setFeaturedMenuEnabled(true);
|
||||
menuFull.setMenuEnabled(true);
|
||||
} else {
|
||||
for (String menuItemId : menu.getFeaturedMenuItems()) {
|
||||
featuredMenuItems.add(getFullRootMenuItemById(menuItemId, portalPid, true));
|
||||
}
|
||||
|
||||
for (String menuItemId : menu.getMenuItems()) {
|
||||
menuItems.add(getFullRootMenuItemById(menuItemId, portalPid, false));
|
||||
}
|
||||
|
||||
menuFull.setFeaturedMenuEnabled(menu.getIsFeaturedMenuEnabled());
|
||||
menuFull.setMenuEnabled(menu.getIsMenuEnabled());
|
||||
}
|
||||
|
||||
menuFull.setPortalPid(portalPid);
|
||||
menuFull.setFeaturedMenuItems(featuredMenuItems);
|
||||
menuFull.setMenuItems(menuItems);
|
||||
|
||||
return menuFull;
|
||||
}
|
||||
|
||||
private MenuItemFull getFullRootMenuItemById(String menuItemId, String portalPid, Boolean isFeatured) {
|
||||
MenuItem rootMenuItem = menuItemDAO.findById(menuItemId);
|
||||
if(rootMenuItem.getIsFeatured() != isFeatured) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("getFullRootMenuItemById: Menu item should "+(isFeatured ? "" : "not ")+"be featured");
|
||||
}
|
||||
if(!rootMenuItem.getPortalPid().equals(portalPid)) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("getFullRootMenuItemById: Menu item with id: "+rootMenuItem.getId()+" has portal pid: "+rootMenuItem.getPortalPid()+" instead of "+portalPid);
|
||||
}
|
||||
if(rootMenuItem.getParentItemId() != null) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("getFullRootMenuItemById: Menu item should be root (no parentId), but instead parentId: "+rootMenuItem.getParentItemId());
|
||||
}
|
||||
|
||||
MenuItemFull rootMenuItemFull = new MenuItemFull(rootMenuItem);
|
||||
|
||||
List<MenuItemFull> childrenMenuItemsFull = new ArrayList<>();
|
||||
for(String childMenuItemString : rootMenuItem.getItems()) {
|
||||
childrenMenuItemsFull.add(this.getMenuItemFull(childMenuItemString));
|
||||
}
|
||||
rootMenuItemFull.setItems(childrenMenuItemsFull);
|
||||
return rootMenuItemFull;
|
||||
}
|
||||
|
||||
private MenuItemFull insertMenuItem(MenuItem menuItem, String portalPid) {
|
||||
MenuItem parent = null;
|
||||
if(menuItem.getParentItemId() != null && !menuItem.getParentItemId().equals("")) {
|
||||
parent = getMenuItem(menuItem.getParentItemId());
|
||||
if (!parent.getPortalPid().equals(portalPid)) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("insertMenuItem: parent ("+parent.getParentItemId()+") of MenuItem has portalPid: " + parent.getPortalPid() + " instead of " + portalPid);
|
||||
}
|
||||
} else {
|
||||
menuItem.setParentItemId(null);
|
||||
}
|
||||
|
||||
if(menuItem.getItems() == null) {
|
||||
List<String> menuItems = new ArrayList<String>();
|
||||
menuItem.setItems(menuItems);
|
||||
}
|
||||
menuItemDAO.save(menuItem);
|
||||
|
||||
if(parent != null) {
|
||||
List<String> siblingsOfNew = parent.getItems();
|
||||
siblingsOfNew.add(menuItem.getId());
|
||||
parent.setItems(siblingsOfNew);
|
||||
menuItemDAO.save(parent);
|
||||
}
|
||||
|
||||
MenuItemFull menuItemFull = new MenuItemFull(menuItem);
|
||||
menuItemFull.setItems(new ArrayList<>());
|
||||
|
||||
|
||||
|
||||
return menuItemFull;
|
||||
}
|
||||
|
||||
public MenuItemFull insertMenuItemInMenu(MenuItem menuItem, String portalPid) {
|
||||
MenuItemFull menuItemFull = insertMenuItem(menuItem, portalPid);
|
||||
Menu menu = menuDAO.findByPortalPid(portalPid);
|
||||
if(menu == null) {
|
||||
menu = new Menu(portalPid);
|
||||
}
|
||||
if(menuItem.getIsFeatured() && menuItem.getParentItemId() == null) {
|
||||
menu.getFeaturedMenuItems().add(menuItemFull.getId());
|
||||
} else if(menuItem.getParentItemId() == null) {
|
||||
menu.getMenuItems().add(menuItemFull.getId());
|
||||
}
|
||||
menuDAO.save(menu);
|
||||
return menuItemFull;
|
||||
}
|
||||
|
||||
public MenuItemFull updateMenuItem(MenuItemFull menuItemFull) {
|
||||
MenuItem menuItem = getMenuItemByMenuItemFull(menuItemFull);
|
||||
|
||||
// Update should not affect parent or children - only basic info can be updated
|
||||
MenuItem oldMenuItem = getMenuItem(menuItemFull.getId());
|
||||
menuItem.setItems(oldMenuItem.getItems());
|
||||
menuItem.setParentItemId(oldMenuItem.getParentItemId());
|
||||
|
||||
menuItemDAO.save(menuItem);
|
||||
menuItemFull = getMenuItemFull(menuItem.getId());
|
||||
|
||||
return menuItemFull;
|
||||
}
|
||||
|
||||
public MenuItemFull updateMenu(MenuItemFull menuItemFull, String portalPid) {
|
||||
menuItemFull = updateMenuItem(menuItemFull);
|
||||
Menu menu = menuDAO.findByPortalPid(portalPid);
|
||||
if(menu == null) {
|
||||
// EXCEPTION - ContentNotFoundException
|
||||
throw new ContentNotFoundException("updateMenu: No Menu found for portal pid: "+portalPid);
|
||||
}
|
||||
List<String> featuredMenuItems = menu.getFeaturedMenuItems();
|
||||
List<String> menuItems = menu.getMenuItems();
|
||||
if (menuItemFull.getIsFeatured() && menuItemFull.getParentItemId() == null && !featuredMenuItems.contains(menuItemFull.getId())) {
|
||||
featuredMenuItems.add(menuItemFull.getId());
|
||||
} else if ((!menuItemFull.getIsFeatured() || menuItemFull.getParentItemId() != null) && featuredMenuItems.contains(menuItemFull.getId())) {
|
||||
featuredMenuItems.remove(menuItemFull.getId());
|
||||
} else if(!menuItemFull.getIsFeatured() && menuItemFull.getParentItemId() == null && !menuItems.contains(menuItemFull.getId())) {
|
||||
menuItems.add(menuItemFull.getId());
|
||||
} else if ((menuItemFull.getIsFeatured() || menuItemFull.getParentItemId() != null) && menuItems.contains(menuItemFull.getId())) {
|
||||
menuItems.remove(menuItemFull.getId());
|
||||
}
|
||||
menuDAO.save(menu);
|
||||
|
||||
return menuItemFull;
|
||||
}
|
||||
|
||||
public Boolean deleteMenuItem(String id, String portalPid) throws Exception {
|
||||
Menu menu = menuDAO.findByPortalPid(portalPid);
|
||||
if(menu == null) {
|
||||
// EXCEPTION - ContentNotFoundException
|
||||
throw new ContentNotFoundException("deleteMenuItem: No Menu found for portal pid: "+portalPid);
|
||||
}
|
||||
List<String> featuredMenuItems = menu.getFeaturedMenuItems();
|
||||
List<String> menuItems = menu.getMenuItems();
|
||||
if(featuredMenuItems.contains(id)) {
|
||||
featuredMenuItems.remove(id);
|
||||
} else if(menuItems.contains(id)) {
|
||||
menuItems.remove(id);
|
||||
}
|
||||
menuDAO.save(menu);
|
||||
|
||||
// menuItemDAO.delete(id);
|
||||
log.debug("delete menu item; "+id);
|
||||
List<String> menuItemsToDelete = new ArrayList<>();
|
||||
menuItemsToDelete.add(id);
|
||||
return deleteMenuItems(menuItemsToDelete, portalPid);
|
||||
}
|
||||
|
||||
public Boolean deleteMenuItems(List<String> menuItems, String portalPid) throws Exception {
|
||||
if(menuItems == null) {
|
||||
return true;
|
||||
}
|
||||
for (String id: menuItems) {
|
||||
MenuItem menuItem = menuItemDAO.findById(id);
|
||||
|
||||
if(!portalPid.equals(menuItem.getPortalPid())) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("Delete Menu Items: MenuItem with id: "+id+" has portalPid: "+menuItem.getPortalPid()+" instead of "+portalPid);
|
||||
}
|
||||
|
||||
deleteMenuItems(menuItem.getItems(), portalPid);
|
||||
|
||||
if(menuItem.getParentItemId() != null && !menuItem.getParentItemId().equals("")) {
|
||||
MenuItem parent = menuItemDAO.findById(menuItem.getParentItemId());
|
||||
List<String> siblingsOfDeleted = parent.getItems();
|
||||
siblingsOfDeleted.remove(id);
|
||||
parent.setItems(siblingsOfDeleted);
|
||||
menuItemDAO.save(parent);
|
||||
}
|
||||
|
||||
menuItemDAO.delete(id);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public Boolean deleteMenuByPortalPid(String portalPid) throws Exception {
|
||||
Menu menu = menuDAO.findByPortalPid(portalPid);
|
||||
if(menu != null) {
|
||||
deleteMenuItems(menu.getMenuItems(), portalPid);
|
||||
deleteMenuItems(menu.getFeaturedMenuItems(), portalPid);
|
||||
menuDAO.deleteByPortalPid(portalPid);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public Boolean reorderMenuItems(List<MenuItemFull> menuItemsFull, String portalPid) {
|
||||
List<String> menuItemIds = new ArrayList<>();
|
||||
// menuItemIds = menuItemsFull.stream().map((MenuItem menuItem) -> menuItem.getId()).collect(Collectors.toList());
|
||||
boolean isFeatured = menuItemsFull.get(0).getIsFeatured();
|
||||
String parentId = menuItemsFull.get(0).getParentItemId();
|
||||
|
||||
for (MenuItemFull menuItem: menuItemsFull) {
|
||||
if (!portalPid.equals(menuItem.getPortalPid())) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("reorderMenuItems: MenuItems for reordering have not the same portalPid");
|
||||
}
|
||||
if(menuItem.getIsFeatured() != isFeatured) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("reorderMenuItems: MenuItems for reordering have not the same isFeatured");
|
||||
}
|
||||
if((menuItem.getParentItemId() == null && parentId != null) || (parentId == null && menuItem.getParentItemId() != null) || (parentId != null && !menuItem.getParentItemId().equals(parentId))) {
|
||||
// EXCEPTION - MismatchingContent
|
||||
throw new MismatchingContentException("reorderMenuItems: MenuItems for reordering have not the same parentItemId");
|
||||
}
|
||||
menuItemIds.add(menuItem.getId());
|
||||
|
||||
}
|
||||
|
||||
List<String> savedMenuItems;
|
||||
if(parentId != null) {
|
||||
MenuItem parent = menuItemDAO.findById(parentId);
|
||||
savedMenuItems = parent.getItems();
|
||||
menuItemIds = this.addSavedMenuItems(savedMenuItems, menuItemIds, menuItemsFull);
|
||||
parent.setItems(menuItemIds);
|
||||
menuItemDAO.save(parent);
|
||||
} else if(isFeatured) {
|
||||
Menu menu = menuDAO.findByPortalPid(portalPid);
|
||||
savedMenuItems = menu.getFeaturedMenuItems();
|
||||
menuItemIds = this.addSavedMenuItems(savedMenuItems, menuItemIds, menuItemsFull);
|
||||
menu.setFeaturedMenuItems(menuItemIds);
|
||||
menuDAO.save(menu);
|
||||
} else {
|
||||
Menu menu = menuDAO.findByPortalPid(portalPid);
|
||||
savedMenuItems = menu.getMenuItems();
|
||||
menuItemIds = this.addSavedMenuItems(savedMenuItems, menuItemIds, menuItemsFull);
|
||||
menu.setMenuItems(menuItemIds);
|
||||
menuDAO.save(menu);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private List<String> addSavedMenuItems(List<String> savedMenuItems, List<String> menuItemIds, List<MenuItemFull> menuItemsFull) {
|
||||
for (String menuId : savedMenuItems) {
|
||||
if (!menuItemIds.contains(menuId)) {
|
||||
menuItemIds.add(menuId);
|
||||
}
|
||||
}
|
||||
return menuItemIds;
|
||||
}
|
||||
|
||||
|
||||
private MenuItem getMenuItemByMenuItemFull(MenuItemFull menuItemFull) {
|
||||
MenuItem menuItem = new MenuItem();
|
||||
menuItem.setId(menuItemFull.getId());
|
||||
menuItem.setTitle(menuItemFull.getTitle());
|
||||
menuItem.setUrl(menuItemFull.getUrl());
|
||||
menuItem.setType(menuItemFull.getType());
|
||||
menuItem.setTarget(menuItemFull.getTarget());
|
||||
menuItem.setRoute(menuItemFull.getRoute());
|
||||
menuItem.setPortalPid(menuItemFull.getPortalPid());
|
||||
menuItem.setParentItemId(menuItemFull.getParentItemId());
|
||||
menuItem.setIsFeatured(menuItemFull.getIsFeatured());
|
||||
|
||||
List<MenuItemFull> menuItemsFull = menuItemFull.getItems();
|
||||
List<String> menuItems = new ArrayList<String>();
|
||||
if(menuItemsFull != null) {
|
||||
for (MenuItemFull childMenuItemFull : menuItemsFull) {
|
||||
menuItems.add(childMenuItemFull.getId());
|
||||
}
|
||||
}
|
||||
menuItem.setItems(menuItems);
|
||||
|
||||
return menuItem;
|
||||
}
|
||||
|
||||
public Menu toggleMenu(String pid, String status, String isFeatured) throws Exception {
|
||||
Menu menu = menuDAO.findByPortalPid(pid);
|
||||
if(isFeatured != null && Boolean.parseBoolean(isFeatured)) {
|
||||
menu.setFeaturedMenuEnabled(Boolean.parseBoolean(status));
|
||||
} else {
|
||||
menu.setMenuEnabled(Boolean.parseBoolean(status));
|
||||
}
|
||||
return menuDAO.save(menu);
|
||||
}
|
||||
}
|
|
@ -2,13 +2,18 @@ package eu.dnetlib.uoaadmintools;
|
|||
|
||||
import eu.dnetlib.uoaadmintools.dao.*;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.dao.*;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.emailSender.EmailSender;
|
||||
import eu.dnetlib.uoaadmintoolslibrary.entities.Page;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest
|
||||
public class UoaAdminToolsApplicationTests {
|
||||
|
@ -37,6 +42,8 @@ public class UoaAdminToolsApplicationTests {
|
|||
@Autowired
|
||||
private PortalSubscribersDAO portalSubscribersDAO;
|
||||
|
||||
@Autowired
|
||||
private EmailSender emailSender;
|
||||
/*
|
||||
|
||||
@Test
|
||||
|
@ -218,4 +225,11 @@ public class UoaAdminToolsApplicationTests {
|
|||
// }
|
||||
// }
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
String mail = "kgalouni@di.uoa.gr";
|
||||
List<String> mails = new ArrayList<>();
|
||||
mails.add(mail);
|
||||
emailSender.send(mails, "Test Subject", "Test Body", false);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue