package br.gov.frameworkdemoiselle.fuselage.view.edit; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import br.gov.frameworkdemoiselle.fuselage.business.ProfileBC; import br.gov.frameworkdemoiselle.fuselage.domain.SecurityProfile; import br.gov.frameworkdemoiselle.fuselage.domain.SecurityResource; import br.gov.frameworkdemoiselle.fuselage.domain.SecurityRole; import br.gov.frameworkdemoiselle.message.SeverityType; import br.gov.frameworkdemoiselle.stereotype.ViewController; import br.gov.frameworkdemoiselle.template.contrib.AbstractEditPageBean; import br.gov.frameworkdemoiselle.util.contrib.Faces; @ViewController public class ProfileEditMB extends AbstractEditPageBean<SecurityProfile, Long> { private static final long serialVersionUID = 1L; @Inject private ProfileBC bc; private List<SecurityRole> roles; private List<SecurityRole> selectedRoles = new ArrayList<SecurityRole>(); @Override public String insert() { try { bc.insert(getBean()); Faces.addI18nMessage("fuselage.profile.insert.success", getBean().getName()); } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.profile.insert.failed", SeverityType.ERROR); } return null; } @Override public String update() { try { bc.update(getBean()); Faces.addI18nMessage("fuselage.profile.update.success", getBean().getName()); } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.profile.update.failed", SeverityType.ERROR); } return null; } @Override public String delete() { try { bc.delete(getBean().getId()); Faces.addI18nMessage("fuselage.profile.delete.success", getBean().getName()); } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.profile.delete.failed", SeverityType.ERROR); } return null; } @Override public SecurityProfile load(Long id) { try { return bc.load(id); } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.profile.load.failed", SeverityType.ERROR); } return new SecurityProfile(); } public List<Long> getResourcePriorities() { List<Long> priorities = new ArrayList<Long>(); try { List<Long> usedPriorities = bc.getUsedPrioritiesExceptMyself(getBean()); for (int i = 1; i < 100; i++) if (!usedPriorities.contains(new Long(i))) priorities.add(new Long(i)); } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.generic.business.error", SeverityType.ERROR); } return priorities; } /** * Get all SecurityResources for selectOneMenu to select welcome page * * @return list of all SecurityResources */ public List<SecurityResource> getResourceList() { try { return bc.getResources(); } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.generic.business.error", SeverityType.ERROR); } return new ArrayList<SecurityResource>(); } /** * Get all roles except already in bean */ public List<SecurityRole> getRoleList() { try { if (roles == null) roles = bc.getRolesExceptList(getBean().getRoles()); return roles; } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.generic.business.error", SeverityType.ERROR); } return new ArrayList<SecurityRole>(); } public void clearRoleList() { roles = null; selectedRoles.clear(); } public void unselectRole(SecurityRole securityRole) { getBean().getRoles().remove(securityRole); } public void selectRoles() { if (getBean().getRoles() == null) getBean().setRoles(new ArrayList<SecurityRole>(selectedRoles)); else getBean().getRoles().addAll(selectedRoles); } /** * Get SecurityRoles from current bean as array for datatable selection * * @return array of bean SecurityRoles */ public SecurityRole[] getRoleArray() { return selectedRoles.toArray(new SecurityRole[0]); } /** * Set SecurityRoles on current bean from datatable selection array * * @param selectedRolesArray * array of SecurityRoles to set current bean */ public void setRoleArray(SecurityRole[] selectedRolesArray) { for (SecurityRole role : selectedRolesArray) if (!selectedRoles.contains(role)) selectedRoles.add(role); } }