package de.fhb.autobday.beans; import de.fhb.autobday.data.AbdContact; import de.fhb.autobday.data.AbdGroup; import de.fhb.autobday.exception.account.AccountNotFoundException; import de.fhb.autobday.exception.contact.ContactNotFoundException; import de.fhb.autobday.exception.group.GroupNotFoundException; import de.fhb.autobday.exception.group.NoGroupGivenException; import de.fhb.autobday.manager.account.AccountManagerLocal; import de.fhb.autobday.manager.contact.ContactManagerLocal; import de.fhb.autobday.manager.group.GroupManagerLocal; import java.util.ArrayList; import java.util.Calendar; import java.util.List; 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.inject.Inject; import javax.inject.Named; import org.primefaces.model.DefaultScheduleEvent; import org.primefaces.model.DefaultScheduleModel; import org.primefaces.model.ScheduleModel; /** * Bean for schedule-tasks. * * @author Michael Koppen mail: koppen@fh-brandenburg.de */ @Named @RequestScoped public class ScheduleBean { private final static Logger LOGGER = Logger.getLogger(ScheduleBean.class.getName()); @Inject private AccountManagerLocal accountManager; @Inject private GroupManagerLocal groupManager; @Inject private ContactManagerLocal contactManager; @Inject private SessionBean sessionBean; private ScheduleModel eventModel; /** * Creates a new instance of ScheduleBean */ public ScheduleBean() { } /** * will get all contacts of all groups from the given account and add it to the schedule. */ private void getAllContactsFromAccount() { List<AbdGroup> groups = new ArrayList<AbdGroup>(); List<AbdContact> contacts = new ArrayList<AbdContact>(); try { groups = accountManager.getAllGroupsFromAccount(sessionBean.getAktAccount()); //getAllActiveContatcts for (AbdGroup abdGroup : groups) { List<AbdContact> tempcontacts = groupManager.getAllContactsFromGroup(abdGroup); for (AbdContact abdContact : tempcontacts) { try { if (contactManager.getActive(abdContact.getId(), abdGroup.getId())) { contacts.add(abdContact); } } catch (ContactNotFoundException ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); } } } eventModel = new DefaultScheduleModel(); for (AbdContact abdContact : contacts) { int i = 0; for (int j = 0; j < 120; j++) { Calendar bday = Calendar.getInstance(); bday.setTime(abdContact.getBday()); //bday.add(bday.HOUR, -1); bday.add(bday.YEAR, +i); eventModel.addEvent(new DefaultScheduleEvent(abdContact.getFirstname() + " " + abdContact.getName(), bday.getTime(), bday.getTime(), true)); i++; } } } catch (AccountNotFoundException ex) { LOGGER.log(Level.SEVERE, null, ex.getMessage()); FacesContext.getCurrentInstance().addMessage( null, new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "")); } catch (NoGroupGivenException 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(), "")); } } public ScheduleModel getEventModel() { getAllContactsFromAccount(); return eventModel; } public void setEventModel(ScheduleModel eventModel) { this.eventModel = eventModel; } }