Package com.din.din.webapp.beans.interfaces

Source Code of com.din.din.webapp.beans.interfaces.EventManager

package com.din.din.webapp.beans.interfaces;

import java.io.Serializable;
import java.util.Comparator;
import java.util.List;

import org.primefaces.model.DefaultScheduleModel;
import org.primefaces.model.ScheduleEvent;
import org.primefaces.model.ScheduleModel;

import com.din.din.model.dao.PlannedMenuDAO;
import com.din.din.model.dao.PlannedMenuEventDAO;
import com.din.din.model.entities.KeyEntity;
import com.din.din.model.entities.PlannedMenu;
import com.din.din.model.entities.PlannedMenuEvent;
import com.din.din.model.entities.Project;
import com.din.din.model.util.EntityCachingManager;
import com.din.din.model.util.EntityCachingManager.CacheLoader;
import com.din.din.webapp.beans.interfaces.wrappers.DinDinScheduleEvent;

public class EventManager implements Serializable {
  private static final long serialVersionUID = -8232721248715079159L;
 
  private ScheduleModel eventModel; 
  private Project project;
  private PlannedMenu plannedMenu;
  private EntityCachingManager cache;
 
  //private TreeSet<PlannedMenuEvent> events;
 
  public EventManager(Project project, EntityCachingManager cache) {
    this.project = project;
    this.cache = cache;
   
    loadEventModel();
  }
 
  private void loadEventModel() {
    if(eventModel == null) {
      eventModel = new DefaultScheduleModel();
    } else {
      eventModel.clear();
    }

    //events = new TreeSet<PlannedMenuEvent>(new EventComparator()); 
    if(plannedMenu == null) {
      List<KeyEntity> plannedMenus;
      try {
        plannedMenus = cache.getChildren(PlannedMenu.class, "project", project, new CacheLoader<PlannedMenu>() {
          public List<PlannedMenu> onCacheLoad() {
            return PlannedMenuDAO.getPlannedMenuByProject(project);
          }
        });   
        plannedMenu = plannedMenus != null && plannedMenus.size() > 0 ? (PlannedMenu)plannedMenus.get(0) : null;
      } catch (Exception e) {
        e.printStackTrace();
      }         
    }
   
    if(plannedMenu != null) {
      loadEvents()
    }
  }

  private void loadEvents() {
    try {
      List<KeyEntity> plannedMenuEvents = cache.getChildren(PlannedMenuEvent.class, "plannedMenu", plannedMenu, new CacheLoader<PlannedMenuEvent>() {
        public List<PlannedMenuEvent> onCacheLoad() {
          return PlannedMenuEventDAO.getPlannedMenuEventsByPlannedMenu(plannedMenu);
        }
      });

      for(KeyEntity keyEntity : plannedMenuEvents) {
        PlannedMenuEvent event = (PlannedMenuEvent)keyEntity;
        addEvent(event);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void addEvent(DinDinScheduleEvent scheduleEvent) {
    if(scheduleEvent.getId() == null)
      eventModel.addEvent(scheduleEvent);
    else
      eventModel.updateEvent(scheduleEvent);
  }
 
  public boolean isValid(DinDinScheduleEvent selected) {
    boolean isValid = true;
    for(ScheduleEvent event : eventModel.getEvents()) {
      DinDinScheduleEvent dindinEvent = (DinDinScheduleEvent)event;
      if(dindinEvent.getStartDate().equals(selected.getStartDate()) &&
          dindinEvent.getMealType().equals(selected.getMealType()) &&
          selected != dindinEvent) {
        isValid = false;
        break;
      }
    }

    return isValid;
 
 
  private void addEvent(PlannedMenuEvent event) {
    DinDinScheduleEvent scheduleEvent = new DinDinScheduleEvent(event, project, cache);
    addEvent(scheduleEvent);
  }

  public ScheduleModel getEventModel() {
    return eventModel;
  }

  public void setEventModel(ScheduleModel eventModel) {
    this.eventModel = eventModel;
 
 
  protected class EventComparator implements Comparator<DinDinScheduleEvent> {
    public int compare(DinDinScheduleEvent o1, DinDinScheduleEvent o2) {
      int compareVal = o1.getStartDate().compareTo(o2.getStartDate());
      if(compareVal == 0) {
        int mealType2 = o2.getData().getMealType() != null ? o2.getData().getMealType().ordinal() : -1;
        int mealType1 = o1.getData().getMealType() != null ? o1.getData().getMealType().ordinal() : -1;
        compareVal = mealType2 - mealType1;
      }
      return compareVal;
    }   
  } 
}
TOP

Related Classes of com.din.din.webapp.beans.interfaces.EventManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.