Commit effe8361 by Tuomas Riihimäki

Change loop to sql request for role fetching from orgroles

1 parent b4d815cd
......@@ -37,6 +37,7 @@ import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.model.EventOrganiser;
import fi.codecrew.moya.model.EventUser;
import fi.codecrew.moya.model.LanEvent;
import fi.codecrew.moya.model.OrgRole;
import fi.codecrew.moya.model.OrgRole_;
import fi.codecrew.moya.model.Role;
......@@ -51,8 +52,8 @@ import fi.codecrew.moya.model.User;
public class OrgRoleFacade extends IntegerPkGenericFacade<OrgRole> {
@EJB
EventBeanLocal eventBean;
private EventBeanLocal eventbean;
private EventBeanLocal eventBean;
private static final Logger logger = LoggerFactory.getLogger(OrgRoleFacade.class);
public OrgRoleFacade() {
......@@ -113,17 +114,24 @@ public class OrgRoleFacade extends IntegerPkGenericFacade<OrgRole> {
}
// TODO: Väsyttää liikaa... tästä pitäisi tehdä kantakysely
public List<Role> findRolesForUser(EventUser u) {
ArrayList<Role> ret = new ArrayList<>();
for (OrgRole or : findForUser(u.getUser())) {
for (Role r : or.getEventRoles()) {
if (r.getEvent().equals(u.getEvent())) {
ret.add(r);
logger.info("Adding role {} from orgrole {}", r.getName(), or.getName());
}
}
}
LanEvent event = eventBean.getCurrentEvent();
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Role> cq = cb.createQuery(Role.class);
Root<OrgRole> root = cq.from(OrgRole.class);
ListJoin<OrgRole, Role> eventRoles = root.join(OrgRole_.eventRoles);
cq.select(eventRoles);
cq.where(
cb.equal(root.get(OrgRole_.eventOrganisation), event.getOrganiser()),
cb.isMember(u.getUser(), root.get(OrgRole_.users)),
cb.equal(eventRoles.get(Role_.event), event)
);
List<Role> ret = getEm().createQuery(cq).getResultList();
return ret;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!