package de.fhb.autobday.beans; import de.fhb.autobday.data.AbdContact; import de.fhb.autobday.data.AbdGroup; import de.fhb.autobday.data.AbdGroupToContact; import de.fhb.autobday.exception.contact.ContactException; import de.fhb.autobday.exception.contact.ContactNotFoundException; import de.fhb.autobday.exception.contact.ContactToGroupNotFoundException; import de.fhb.autobday.exception.group.GroupException; import de.fhb.autobday.exception.group.GroupNotFoundException; import de.fhb.autobday.manager.contact.ContactManagerLocal; import de.fhb.autobday.manager.group.GroupManagerLocal; import java.util.logging.Level; import java.util.logging.Logger; import javax.enterprise.context.RequestScoped; import javax.faces.application.FacesMessage; import javax.faces.context.FacesContext; import javax.faces.model.ListDataModel; import javax.inject.Inject; import javax.inject.Named; /** * Bean for group-tasks. * * @author Michael Koppen mail: koppen@fh-brandenburg.de */ @Named @RequestScoped public class GroupBean { private final static Logger LOGGER = Logger.getLogger(GroupBean.class.getName()); @Inject private GroupManagerLocal groupManager; @Inject private ContactManagerLocal contactManager; @Inject private SessionBean sessionBean; private ListDataModel<AbdContact> contactList; private boolean activeState = false; private String parsedTemplate = ""; private String template = ""; /** * Creates a new instance of GroupBean */ public GroupBean() { } /** * will redirect to showgroup-page * @return */ public String showGroup() { return "showgroup"; } /** * will redirect to edittemplate-page * @return */ public String showTemplate() { return "edittemplate"; } /** * will edit the given template * @return redirect to showaccount */ public String editTemplate() { try { groupManager.setTemplate(sessionBean.getAktGroup(), template); FacesContext.getCurrentInstance().addMessage( null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Successfully edited template!", "")); } catch (GroupException ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "")); } return "showaccount"; } /** * will get all contacts from given group and format it to ListDataModel */ private void getAllContactsFromGroup() { try { contactList = new ListDataModel(groupManager.getAllContactsFromGroup(sessionBean.getAktGroup())); } catch (Exception ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "")); } } /** * will toggle contact active/deactive * @return */ public String toggleContactActivation() { LOGGER.log(Level.INFO, "toggleContactActivation"); AbdGroup aktGroup = sessionBean.getAktGroup(); AbdContact aktContact = contactList.getRowData(); for (AbdGroupToContact gtc : aktContact.getAbdGroupToContactCollection()) { if (gtc.getAbdGroup().equals(aktGroup)) { try { if (gtc.getActive()) { LOGGER.log(Level.INFO, "was aktive"); contactManager.setActive(aktContact, aktGroup, false); FacesContext.getCurrentInstance().addMessage( null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Successfully deaktivated " + aktContact.getFirstname() + " " + aktContact.getName() + "!", "")); } else { LOGGER.log(Level.INFO, "was inaktive"); contactManager.setActive(aktContact, aktGroup, true); FacesContext.getCurrentInstance().addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Successfully aktivated " + aktContact.getFirstname() + " " + aktContact.getName() + "!", "")); } } catch (ContactNotFoundException ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "")); } catch (ContactToGroupNotFoundException ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "")); } catch (GroupNotFoundException ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "")); } } else { LOGGER.log(Level.SEVERE, null, "Contact is not in a active group."); FacesContext.getCurrentInstance().addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Contact " + aktContact.getFirstname() + " " + aktContact.getName() + " is not in an aktive group!", "")); } } return null; } /** * will change the aktive state of a contact in gui. * @return active */ private boolean changeAktiveState() { AbdGroup aktGroup = sessionBean.getAktGroup(); AbdContact aktContact = contactList.getRowData(); boolean active = false; LOGGER.log(Level.INFO, "group: {0}", aktGroup.getName()); LOGGER.log(Level.INFO, "contact: {0}", aktContact.getFirstname()); try { active = contactManager.getActive(aktContact.getId(), aktGroup.getId()); } catch (ContactNotFoundException ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "")); } catch (GroupNotFoundException ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "")); } return active; } /** * will test a template with the given contact. * @return redirect to showtemplate */ public String testTemplate() { try { AbdContact contact = sessionBean.getAktContact(); AbdGroup group = sessionBean.getAktGroup(); if (contact != null && group != null) { parsedTemplate = groupManager.testTemplate(group.getId(), contact.getId()); LOGGER.log(Level.INFO, "template: {0}", parsedTemplate); } else { LOGGER.log(Level.INFO, "Contact: {0}", contact); LOGGER.log(Level.INFO, "Group: {0}", group); FacesContext.getCurrentInstance().addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Could not parse the template with this user!", "")); parsedTemplate = "ERROR"; } } catch (GroupException ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "")); parsedTemplate = ex.getMessage(); } catch (ContactException ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "")); parsedTemplate = ex.getMessage(); } return "showtemplate"; } public boolean isActiveState() { activeState = changeAktiveState(); LOGGER.log(Level.INFO, "is Aktive?: {0}", activeState); return activeState; } public void setActiveState(boolean activeState) { this.activeState = activeState; } public String getParsedTemplate() { return parsedTemplate; } public void setParsedTemplate(String parsedTemplate) { this.parsedTemplate = parsedTemplate; } public ListDataModel<AbdContact> getContactList() { getAllContactsFromGroup(); return contactList; } public void setContactList(ListDataModel<AbdContact> contactList) { this.contactList = contactList; } public String getTemplate() { template = sessionBean.getAktGroup().getTemplate(); return template; } public void setTemplate(String template) { this.template = template; } }