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.RoleBC; 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 RoleEditMB extends AbstractEditPageBean<SecurityRole, Long> { private static final long serialVersionUID = 1L; @Inject private RoleBC bc; private List<SecurityResource> resources; private List<SecurityResource> selectedResources = new ArrayList<SecurityResource>(); @Override public String insert() { try { bc.insert(getBean()); Faces.addI18nMessage("fuselage.role.insert.success", getBean().getName()); } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.role.insert.failed", SeverityType.ERROR); } return null; } @Override public String update() { try { bc.update(getBean()); Faces.addI18nMessage("fuselage.role.update.success", getBean().getName()); } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.role.update.failed", SeverityType.ERROR); } return null; } @Override public String delete() { try { bc.delete(getBean().getId()); Faces.addI18nMessage("fuselage.role.delete.success", getBean().getName()); } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.role.delete.failed", SeverityType.ERROR); } return null; } @Override public SecurityRole load(Long id) { try { return bc.load(id); } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.role.load.failed", SeverityType.ERROR); } return new SecurityRole(); } /** * Get all resources except already in bean */ public List<SecurityResource> getResourceList() { try { if (resources == null) resources = bc.getResourcesExceptList(getBean().getResources()); return resources; } catch (RuntimeException e) { Faces.validationFailed(); Faces.addI18nMessage("fuselage.generic.business.error", SeverityType.ERROR); } return new ArrayList<SecurityResource>(); } public void clearResourceList() { resources = null; selectedResources.clear(); } public void unselectResource(SecurityResource securityResource) { getBean().getResources().remove(securityResource); } public void selectResources() { if (getBean().getResources() == null) getBean().setResources(new ArrayList<SecurityResource>(selectedResources)); else getBean().getResources().addAll(selectedResources); } /** * Get SecurityResources from current bean as array for datatable selection */ public SecurityResource[] getResourceArray() { return selectedResources.toArray(new SecurityResource[0]); } /** * Set SecurityResources on current bean from datatable selection array * * @param selectedResourcesArray * array of SecurityResources to set current bean */ public void setResourceArray(SecurityResource[] selectedResourcesArray) { for (SecurityResource resource : selectedResourcesArray) if (!selectedResources.contains(resource)) selectedResources.add(resource); } }