Package org.cishell.reference.gui.workflow.model

Source Code of org.cishell.reference.gui.workflow.model.SchedulerContentModel

package org.cishell.reference.gui.workflow.model;

import java.util.Calendar;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import org.cishell.app.service.scheduler.SchedulerListener;
import org.cishell.app.service.scheduler.SchedulerService;
import org.cishell.framework.algorithm.Algorithm;
import org.cishell.framework.data.Data;

import org.cishell.reference.gui.workflow.Activator;

/**
* Listens for notification from the scheduler and notifies all registered
* objects
*/
public class SchedulerContentModel implements SchedulerListener {
  private static final SchedulerContentModel INSTANCE = new SchedulerContentModel();

  private SchedulerService schedulerService;
  private List schedulerListenerList;
  private Map classNameToPersistentMap;

  private boolean isRunning;

  private SchedulerContentModel() {
    schedulerService = Activator.getSchedulerService();
    if (schedulerService != null) {
      schedulerService.addSchedulerListener(this);
    }
    schedulerListenerList = new Vector();

    classNameToPersistentMap = new Hashtable();
  }

  public static SchedulerContentModel getInstance() {
    return INSTANCE;
  }

  public void register(SchedulerListener listener) {
    schedulerListenerList.add(listener);
  }

  public void deregister(SchedulerListener listener) {
    schedulerListenerList.remove(listener);
  }

  public void persistObject(String className, Object o) {
    classNameToPersistentMap.put(className, o);
  }

  public Object getPersistedObject(String className) {
    return classNameToPersistentMap.get(className);
  }

  public boolean isRunning() {
    return schedulerService.isRunning();
  }

  public void algorithmError(Algorithm algorithm, Throwable error) {
    for (int i = 0; i < schedulerListenerList.size(); ++i) {
      SchedulerListener schedulerListener = (SchedulerListener) schedulerListenerList
          .get(i);
      schedulerListener.algorithmError(algorithm, error);
    }
  }

  public void algorithmFinished(Algorithm algorithm, Data[] createdData) {
    for (int i = 0; i < schedulerListenerList.size(); ++i) {
      SchedulerListener schedulerListener = (SchedulerListener) schedulerListenerList
          .get(i);
      schedulerListener.algorithmFinished(algorithm, createdData);
    }
  }

  public void algorithmRescheduled(Algorithm algorithm, Calendar time) {
    for (int i = 0; i < schedulerListenerList.size(); ++i) {
      SchedulerListener schedulerListener = (SchedulerListener) schedulerListenerList
          .get(i);
      schedulerListener.algorithmRescheduled(algorithm, time);
    }
  }

  public void algorithmScheduled(Algorithm algorithm, Calendar time) {
    System.out.println("Algorithm Scheduled");
    for (int i = 0; i < schedulerListenerList.size(); ++i) {
      SchedulerListener schedulerListener = (SchedulerListener) schedulerListenerList
          .get(i);
      schedulerListener.algorithmScheduled(algorithm, time);
    }
  }

  public void algorithmStarted(Algorithm algorithm) {
    for (int i = 0; i < schedulerListenerList.size(); ++i) {
      SchedulerListener schedulerListener = (SchedulerListener) schedulerListenerList
          .get(i);
      schedulerListener.algorithmStarted(algorithm);
    }
  }

  public void algorithmUnscheduled(Algorithm algorithm) {
    for (int i = 0; i < schedulerListenerList.size(); ++i) {
      SchedulerListener schedulerListener = (SchedulerListener) schedulerListenerList
          .get(i);
      schedulerListener.algorithmUnscheduled(algorithm);
    }
  }

  public void schedulerCleared() {
    for (int i = 0; i < schedulerListenerList.size(); ++i) {
      SchedulerListener schedulerListener = (SchedulerListener) schedulerListenerList
          .get(i);
      schedulerListener.schedulerCleared();
    }
  }

  public void schedulerRunStateChanged(boolean isRunning) {
    if (this.isRunning != isRunning) {
      this.isRunning = isRunning;
      schedulerService.setRunning(isRunning);
    } else {
      for (int i = 0; i < schedulerListenerList.size(); ++i) {
        SchedulerListener schedulerListener = (SchedulerListener) schedulerListenerList
            .get(i);
        schedulerListener.schedulerRunStateChanged(this.isRunning);
      }
    }
  }
}
TOP

Related Classes of org.cishell.reference.gui.workflow.model.SchedulerContentModel

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.