MenuBean.java 7.41 KB
package fi.insomnia.bortal.beans;

import java.util.List;

import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.enums.apps.CompoPermission;
import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.enums.apps.PollPermission;
import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.facade.MenuNavigationFacade;
import fi.insomnia.bortal.facade.MenuitemFacade;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.MenuNavigation;
import fi.insomnia.bortal.model.Menuitem;

/**
 * Session Bean implementation class Menubean
 */
@Stateless
@LocalBean
@DeclareRoles(SpecialPermission.S_SUPERADMIN)
public class MenuBean implements MenuBeanLocal {

	public MenuBean() {
	}

	@EJB
	private MenuNavigationFacade navifacade;

	@EJB
	private MenuitemFacade menuitemfacade;

	@EJB
	private EventBean eventbean;

	@EJB
	private PermissionBeanLocal permbean;

	@SuppressWarnings("unused")
	private static final Logger logger = LoggerFactory.getLogger(MenuBean.class);

	@RolesAllowed(SpecialPermission.S_SUPERADMIN)
	@Override
	public void flushDefaultmenu()
	{
		navifacade.deleteAllDefaults();
		initializeMenu();
	}

	// example....
	private synchronized void initializeReabyMenu() {
		LanEvent ev = eventbean.getCurrentEvent();

		MenuNavigation firstlevel = new MenuNavigation(ev, "firstlevel");

		MenuNavigation secondlevel = new MenuNavigation(ev, "secondlevel");
		firstlevel.getChildren().add(secondlevel);

		MenuNavigation third = new MenuNavigation(ev, "third");
		secondlevel.getChildren().add(third);

		Menuitem page = menuitemfacade.findOrCreate("/index");
		third.addPage(page, UserPermission.ANYUSER);

	}

	private synchronized void initializeMenu() {

		logger.info("Initializing menu");
		LanEvent ev = eventbean.getCurrentEvent();

		// Etusivu
		MenuNavigation frontnavi = new MenuNavigation(ev, "topnavi.frontpage");
		frontnavi.addPage(menuitemfacade.findOrCreate("/index"), UserPermission.ANYUSER);
		navifacade.create(frontnavi);		
		
		// Kauppa
		MenuNavigation shopTopmenu = new MenuNavigation(ev, "topnavi.shop");
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/place/placemap"), MapPermission.VIEW);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/place/myGroups"), UserPermission.VIEW_SELF);
		shopTopmenu.addPage(null, null);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/shop/createBill"), BillPermission.CREATE_BILL);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/user/accountEvents"), UserPermission.VIEW_SELF);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/bill/list"), BillPermission.VIEW_OWN);
		
			MenuNavigation prodsubmenu = shopTopmenu.addPage(null, null);
			prodsubmenu.setKey("topnavi.shop.products");
			prodsubmenu.addPage(menuitemfacade.findOrCreate("/product/list"), ShopPermission.LIST_ALL_PRODUCTS);
			prodsubmenu.addPage(menuitemfacade.findOrCreate("/product/create"), ShopPermission.MANAGE_PRODUCTS);
			
		MenuNavigation adminshop = shopTopmenu.addPage(null, null);
		adminshop.setKey("topnavi.shop.adminshop");
		adminshop.addPage(menuitemfacade.findOrCreate("/shop/showReaderEvents"), ShopPermission.SHOP_TO_OTHERS);
		adminshop.addPage(menuitemfacade.findOrCreate("/shop/listReaders"), ShopPermission.SHOP_TO_OTHERS);

		MenuNavigation billnavi = shopTopmenu.addPage(null, null);
		billnavi.setKey("topnavi.shop.bill");
		billnavi.addPage(menuitemfacade.findOrCreate("/bill/billSummary"), BillPermission.READ_ALL);
		billnavi.addPage(menuitemfacade.findOrCreate("/bill/listAll"), BillPermission.WRITE_ALL);
		navifacade.create(shopTopmenu);
		
		
		MenuNavigation eventTopmenu = new MenuNavigation(ev, "topnavi.event");
		eventTopmenu.addPage(menuitemfacade.findOrCreate("/map/list"), MapPermission.MANAGE_MAPS);
		eventTopmenu.addPage(menuitemfacade.findOrCreate("/map/create"), MapPermission.MANAGE_MAPS);
		eventTopmenu.addPage(null, null);
		eventTopmenu.addPage(menuitemfacade.findOrCreate("/voting/compolist"), CompoPermission.VIEW_COMPOS);
		eventTopmenu.addPage(menuitemfacade.findOrCreate("/voting/myEntries"), CompoPermission.VIEW_COMPOS);
		eventTopmenu.addPage(menuitemfacade.findOrCreate("/voting/create"), CompoPermission.MANAGE);
		
		eventTopmenu.addPage(null, null);
		eventTopmenu.addPage(menuitemfacade.findOrCreate("/poll/index"), PollPermission.ANSWER);
		navifacade.create(eventTopmenu);

		MenuNavigation profileTopmenu = new MenuNavigation(ev, "topnavi.profile");
		profileTopmenu.addPage(menuitemfacade.findOrCreate("/useradmin/create"), UserPermission.VIEW_ALL);
		profileTopmenu.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL).setHeader("submenu.user.manageuserlinks");
		profileTopmenu.addPage(menuitemfacade.findOrCreate("/user/edit"), UserPermission.VIEW_SELF);
		profileTopmenu.addPage(menuitemfacade.findOrCreate("/user/changePassword"), UserPermission.VIEW_SELF);
		MenuNavigation usermgmt = profileTopmenu.addPage(null, null);
		usermgmt.setKey("topnavi.user.mgmt");
		usermgmt.addPage(menuitemfacade.findOrCreate("/role/create"), UserPermission.WRITE_ROLES);
		usermgmt.addPage(menuitemfacade.findOrCreate("/role/list"), UserPermission.READ_ROLES).setHeader("submenu.user.rolelinks");
		usermgmt.addPage(menuitemfacade.findOrCreate("/orgrole/list"), UserPermission.READ_ORGROLES);
		usermgmt.addPage(menuitemfacade.findOrCreate("/orgrole/create"), UserPermission.WRITE_ORGROLES);
		usermgmt.addPage(menuitemfacade.findOrCreate("/useradmin/listCardTemplates"), UserPermission.READ_ROLES);
		usermgmt.addPage(menuitemfacade.findOrCreate("/useradmin/createCardTemplate"), UserPermission.WRITE_ROLES);
	
		
		navifacade.create(profileTopmenu);

		MenuNavigation miscTopmenu = new MenuNavigation(ev, "topnavi.misc");

		
	
		miscTopmenu.addPage(menuitemfacade.findOrCreate("/pages/list"), ContentPermission.MANAGE_PAGES);
		miscTopmenu.addPage(menuitemfacade.findOrCreate("/pages/create"), ContentPermission.MANAGE_PAGES);
		miscTopmenu.addPage(menuitemfacade.findOrCreate("/utils/flushCache"), ContentPermission.MANAGE_PAGES);

		
		navifacade.create(miscTopmenu);
		
		

	//	frontTopnavi.addPage(menuitemfacade.findOrCreate("/user/create"), UserPermission.CREATE_NEW);
	//	frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/sendResetMail"), UserPermission.LOGIN);
	//	frontTopnavi.addPage(menuitemfacade.findOrCreate("/user/invite"), UserPermission.INVITE_USERS);
	
		//////////////////////////////////////////////////////
		//////////////////////////////////////////////////////
		//////////////////////////////////////////////////////
		//////////////////////////////////////////////////////
		//////////////////////////////////////////////////////
		//////////////////////////////////////////////////////
		//////////////////////////////////////////////////////

		
		
		
		

		
	

	}

	@Override
	public MenuNavigation findNavigation(String pagename) {

		return navifacade.find(pagename);

	}

	@Override
	public List<MenuNavigation> getTopmenus() {
		List<MenuNavigation> ret = navifacade.findToplevels();
		if (ret == null || ret.isEmpty())
		{
			initializeMenu();
			navifacade.flush();
			ret = navifacade.findToplevels();
		}
		return ret;

	}

}