Menubean.java 4.49 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.MapPermission;
import fi.insomnia.bortal.enums.apps.PollPermission;
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.MenuNavigation;

/**
 * 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;

	private static final Logger logger = LoggerFactory.getLogger(Menubean.class);

	@Override
	public MenuNavigation getMenuNavigation(String url) {
		MenuNavigation ret = navifacade.find(url, eventbean.getCurrentEvent());
		return ret;
	}

	@Override
	public List<MenuNavigation> getTopnavigations() {
		return navifacade.findToplevels();

		// HashMap<Menuitem, MenuNavigation> ret = new HashMap<Menuitem,
		// MenuNavigation>();
		//
		// for (MenuNavigation navi : )
		// {
		//
		// ret.put(navi.getItem(), navi);
		// }
		// ArrayList<MenuNavigation> retlist = new
		// ArrayList<MenuNavigation>(ret.values());
		// if (retlist.isEmpty())
		// {
		// initializeMenu();
		// }
		// logger.info("Returning topmenus: {}", retlist);
		// Collections.sort(retlist);
		// return retlist;

	}

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

	public void initializeMenu() {
		// Frontpage

		MenuNavigation frontTopnavi = new MenuNavigation();
		frontTopnavi.setKey("topnavi.frontpage");
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/index"), UserPermission.ANYUSER);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/user/create"), UserPermission.CREATE_NEW);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/sendResetMail"), UserPermission.LOGIN);
		navifacade.create(frontTopnavi);

		// User
		MenuNavigation userTopnavi = new MenuNavigation();
		userTopnavi.setKey("topnavi.user");

		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/edit"), UserPermission.VIEW_SELF).setHeader("submenu.user.userlinks");
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/changePassword"), null);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/accountEvents"), null);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/place/myGroups"), null);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/place/insertToken"), null);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/sendPicture"), null);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/list"), UserPermission.VIEW_ALL).setHeader("submenu.user.manageuserlinks");
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/create"), UserPermission.VIEW_ALL);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/role/list"), UserPermission.READ_ROLES).setHeader("submenu.user.rolelinks");
		userTopnavi.addPage(menuitemfacade.findOrCreate("/role/create"), UserPermission.WRITE_ROLES);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/listCardTemplates"), UserPermission.READ_ROLES);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/createCardTemplate"), UserPermission.WRITE_ROLES);
		navifacade.create(userTopnavi);

		MenuNavigation placemapTopmenu = new MenuNavigation();
		placemapTopmenu.setKey("topnavi.placemap");
		placemapTopmenu.addPage(menuitemfacade.findOrCreate("/place/placemap"), MapPermission.VIEW);
		navifacade.create(placemapTopmenu);

		MenuNavigation shopTopmenu = new MenuNavigation();
		shopTopmenu.setKey("topnavi.shop");
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/shop/createBill"), BillPermission.CREATE_BILL);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/bill/list"), BillPermission.VIEW_OWN);
		navifacade.create(shopTopmenu);

		MenuNavigation pollTopmenu = new MenuNavigation();
		pollTopmenu.setKey("topnavi.poll");
		pollTopmenu.addPage(menuitemfacade.findOrCreate("/poll/index"), PollPermission.ANSWER);
		navifacade.create(pollTopmenu);

	}
}