Commit 4109b346 by Juho Juopperi

OrgRole and OrgRoleFacade

1 parent e09f6ef3
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_.eventOrganizer), 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.setEventOrganizer(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_.eventOrganizer), eventBean
.getCurrentEvent().getOrganiser()));
return getEm().createQuery(cq).getResultList();
}
}
package fi.insomnia.bortal.model;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;
/**
* Entity implementation class for Entity: OrganizationalRole
*
*/
@Entity
@Table(name = "org_roles", uniqueConstraints = { @UniqueConstraint(columnNames = { OrgRole.NAME_COLUMN }) })
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class OrgRole extends GenericEntity {
private static final long serialVersionUID = 1L;
protected static final String NAME_COLUMN = "role_name";
@Column(name = NAME_COLUMN, nullable = false)
private String name;
@ManyToMany()
@JoinTable(name = "org_role_memberships",
joinColumns = { @JoinColumn(name = "org_role_id", referencedColumnName = OrgRole.ID_COLUMN) },
inverseJoinColumns = { @JoinColumn(name = "user_id", referencedColumnName = User.ID_COLUMN) })
private List<User> users;
@ManyToMany()
@JoinTable(name = "org_role_parents",
joinColumns = { @JoinColumn(name = "parent_id", referencedColumnName = OrgRole.ID_COLUMN) },
inverseJoinColumns = { @JoinColumn(name = "org_role_id", referencedColumnName = OrgRole.ID_COLUMN) })
private List<OrgRole> parents = new ArrayList<OrgRole>();
@ManyToMany(mappedBy = "parents")
private List<OrgRole> children = new ArrayList<OrgRole>();
@Column(nullable = false)
@ManyToOne()
private EventOrganiser eventOrganizer;
public OrgRole() {
super();
}
public List<User> getUsers() {
return this.users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public List<OrgRole> getParents() {
return parents;
}
public void setParents(List<OrgRole> parents) {
this.parents = parents;
}
public List<OrgRole> getChildren() {
return children;
}
public void setChildren(List<OrgRole> children) {
this.children = children;
}
public EventOrganiser getEventOrganizer() {
return eventOrganizer;
}
public void setEventOrganizer(EventOrganiser eventOrganizer) {
this.eventOrganizer = eventOrganizer;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!