MenuNavigationFacade.java 2.3 KB
package fi.insomnia.bortal.facade;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.Query;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

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

import fi.insomnia.bortal.beans.EventBean;
import fi.insomnia.bortal.beans.PermissionBeanLocal;
import fi.insomnia.bortal.model.MenuNavigation;
import fi.insomnia.bortal.model.MenuNavigation_;
import fi.insomnia.bortal.model.Menuitem_;

@Stateless
@LocalBean
public class MenuNavigationFacade extends IntegerPkGenericFacade<MenuNavigation> {

	public MenuNavigationFacade() {
		super(MenuNavigation.class);
	}

	@EJB
	private MenuitemFacade menuitemfacade;

	@EJB
	private EventBean eventbean;

	@EJB
	private PermissionBeanLocal permbean;

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

	public MenuNavigation find(String url) {
		if (url == null || url.isEmpty())
		{
			return null;
		}
		CriteriaBuilder cb = getEm().getCriteriaBuilder();
		CriteriaQuery<MenuNavigation> cq = cb.createQuery(MenuNavigation.class);
		Root<MenuNavigation> root = cq.from(MenuNavigation.class);

		cq.where(
				cb.equal(root.get(MenuNavigation_.item).get(Menuitem_.url), url),
				cb.equal(root.get(MenuNavigation_.event), eventbean.getCurrentEvent())
				);

		return super.getSingleNullableResult(getEm().createQuery(cq));

	}

	/**
	 * Returns top level navigations
	 * 
	 * @return
	 */
	public List<MenuNavigation> findToplevels() {
		CriteriaBuilder cb = getEm().getCriteriaBuilder();
		CriteriaQuery<MenuNavigation> cq = cb.createQuery(MenuNavigation.class);
		Root<MenuNavigation> root = cq.from(MenuNavigation.class);

		cq.where(cb.isNull(root.get(MenuNavigation_.parent)),
				cb.equal(root.get(MenuNavigation_.event), eventbean.getCurrentEvent()),
				cb.isTrue(root.get(MenuNavigation_.visible)));

		cq.orderBy(cb.asc(root.get(MenuNavigation_.sort)));

		return getEm().createQuery(cq).getResultList();
	}

	public void deleteAllDefaults() {
		Query q = getEm().createQuery("delete from MenuNavigation where event = :event");
		q.setParameter("event", eventbean.getCurrentEvent());
		q.executeUpdate();
	}

}