Commit 92c3f6d2 by Juho Juopperi

OrgRole stuff

1 parent 7cdee1b7
......@@ -107,6 +107,8 @@ public class Menubean implements MenubeanLocal {
adminuser.addPage(menuitemfacade.findOrCreate("/role/list"), UserPermission.READ_ROLES).setHeader("submenu.user.rolelinks");
adminuser.addPage(menuitemfacade.findOrCreate("/role/create"), UserPermission.WRITE_ROLES);
adminuser.addPage(menuitemfacade.findOrCreate("/role/edit"), null).setVisible(false);
adminuser.addPage(menuitemfacade.findOrCreate("/orgrole/list"), UserPermission.READ_ORGROLES);
adminuser.addPage(menuitemfacade.findOrCreate("/orgrole/create"), UserPermission.WRITE_ORGROLES);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/listCardTemplates"), UserPermission.READ_ROLES);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/createCardTemplate"), UserPermission.WRITE_ROLES);
adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/editCardTemplate"), null).setVisible(false);
......
package fi.insomnia.bortal.beans;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import javax.annotation.security.DeclareRoles;
......@@ -13,6 +15,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.facade.OrgRoleFacade;
import fi.insomnia.bortal.model.OrgRole;
import fi.insomnia.bortal.utilities.jpa.ModelInterface;
/**
* Session Bean implementation class OrgRoleBean
......@@ -40,4 +43,47 @@ public class OrgRoleBean implements OrgRoleBeanLocal {
.getOrganiser());
}
@Override
public ModelInterface find(Integer id) {
return orgRoleFacade.find(id);
}
@Override
public List<OrgRole> getPossibleParents(OrgRole orgRole) {
List<OrgRole> roleList = orgRoleFacade.findAll();
if (orgRole == null) {
return roleList;
}
List<OrgRole> children = getAllChilds(orgRole, new HashSet<OrgRole>());
for (OrgRole unit : children) {
if (roleList.contains(unit)) {
roleList.remove(unit);
}
}
roleList.remove(orgRole);
return roleList;
}
private List<OrgRole> getAllChilds(OrgRole orgRole,
HashSet<OrgRole> checkedRoles) {
List<OrgRole> returnList = new ArrayList<OrgRole>();
if (checkedRoles.contains(orgRole) || orgRole == null) {
return returnList;
}
for (OrgRole unit : orgRole.getChildren()) {
List<OrgRole> someList = getAllChilds(unit, checkedRoles);
returnList.addAll(someList);
}
checkedRoles.add(orgRole);
return returnList;
}
}
......@@ -5,10 +5,15 @@ import java.util.List;
import javax.ejb.Local;
import fi.insomnia.bortal.model.OrgRole;
import fi.insomnia.bortal.utilities.jpa.ModelInterface;
@Local
public interface OrgRoleBeanLocal {
List<OrgRole> listOrgRoles();
ModelInterface find(Integer id);
List<OrgRole> getPossibleParents(OrgRole orgRole);
}
......@@ -18,24 +18,15 @@
<h:outputText value="#{i18n['orgrole.parents']}" />
<h:selectManyCheckbox converter="#{roleConverter}"
layout="pageDirection" id="roleparents"
value="#{roleView.role.parents}">
<h:selectManyCheckbox converter="#{orgRoleConverter}"
layout="pageDirection" id="orgroleparents"
value="#{orgRoleView.orgRole.parents}">
<f:selectItems var="par" itemLabel="#{par.name}"
value="#{roleView.possibleParents}" />
value="#{orgRoleView.possibleParents}" />
</h:selectManyCheckbox>
<h:outputLabel value="#{i18n['role.cardtemplate']}" />
<h:selectOneMenu converter="#{cardTemplateConverter}"
value="#{roleView.role.cardTemplate}">
<f:selectItems var="role" itemLabel="#{role.name}"
value="#{cardView.templatesWithNull}" />
</h:selectOneMenu>
</h:panelGrid>
</ui:composition>
</html>
......
package fi.insomnia.bortal.web.cdiview.user;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;
import fi.insomnia.bortal.beans.EventBeanLocal;
import fi.insomnia.bortal.beans.OrgRoleBeanLocal;
import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.OrgRole;
import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.web.cdiview.GenericCDIView;
@ConversationScoped
......@@ -13,17 +18,38 @@ import fi.insomnia.bortal.web.cdiview.GenericCDIView;
public class OrgRoleView extends GenericCDIView {
private static final long serialVersionUID = -2492481531713504212L;
private OrgRole orgRole;
@EJB
private OrgRoleBeanLocal orgRoleBean;
@EJB
private EventBeanLocal eventBean;
public void permissionList() {
requirePermissions(permbean.hasPermission(UserPermission.READ_ORGROLES));
}
public void initForCreate() {
requirePermissions(permbean
.hasPermission(UserPermission.WRITE_ORGROLES));
if (requirePermissions(permbean.hasPermission(UserPermission.WRITE_ORGROLES))) {
OrgRole role = new OrgRole();
role.setEventOrganizer(eventBean.getCurrentEvent().getOrganiser());
setOrgRole(role);
super.beginConversation();
}
}
public OrgRole getOrgRole() {
return orgRole;
}
public void setOrgRole(OrgRole orgRole) {
this.orgRole = orgRole;
}
public List<OrgRole> getPossibleParents() {
return orgRoleBean.getPossibleParents(getOrgRole());
}
}
package fi.insomnia.bortal.web.converter;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import fi.insomnia.bortal.beans.OrgRoleBeanLocal;
import fi.insomnia.bortal.utilities.jpa.ModelInterface;
import fi.insomnia.bortal.utilities.jsf.GenericIntegerEntityConverter;
@Named("orgRoleConverter")
@RequestScoped
public class OrgRoleConverter extends GenericIntegerEntityConverter {
@EJB
private OrgRoleBeanLocal orgRoleBean;
@Override
protected ModelInterface find(Integer id) {
return orgRoleBean.find(id);
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!