OrgRoleFacade.java 2.01 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.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.OrgRole;
import fi.insomnia.bortal.model.OrgRole_;
import fi.insomnia.bortal.model.User;

/**
 * Session Bean implementation class OrgRoleFacade
 */
@Stateless
@LocalBean
public class OrgRoleFacade extends IntegerPkGenericFacade<OrgRole> {

	@EJB
	EventBeanLocal eventBean;

	public OrgRoleFacade() {
		super(OrgRole.class);
	}

	public List<OrgRole> findForUser(User user) {
		CriteriaBuilder cb = getEm().getCriteriaBuilder();
		CriteriaQuery<OrgRole> cq = cb.createQuery(OrgRole.class);
		Root<OrgRole> root = cq.from(OrgRole.class);
		cq.where(cb.equal(root.get(OrgRole_.eventOrganisation), eventBean
				.getCurrentEvent().getOrganiser()), cb.isMember(user,
				root.get(OrgRole_.users)));

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

	public OrgRole createRole(EventOrganiser org, String roleName) {
		OrgRole ret = new OrgRole();
		ret.setEventOrganisation(org);
		ret.setName(roleName);
		create(ret);
		return ret;
	}

	public List<OrgRole> findAll() {
		CriteriaBuilder cb = getEm().getCriteriaBuilder();
		CriteriaQuery<OrgRole> cq = cb.createQuery(OrgRole.class);
		Root<OrgRole> root = cq.from(OrgRole.class);
		cq.where(cb.equal(root.get(OrgRole_.eventOrganisation), eventBean
				.getCurrentEvent().getOrganiser()));

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

	public List<OrgRole> findByOrganizer(EventOrganiser organiser) {
		CriteriaBuilder cb = getEm().getCriteriaBuilder();
		CriteriaQuery<OrgRole> cq = cb.createQuery(OrgRole.class);
		Root<OrgRole> root = cq.from(OrgRole.class);
		cq.where(cb.equal(root.get(OrgRole_.eventOrganisation), organiser));

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

}