Package br.com.caelum.vraptor.tasks.events

Source Code of br.com.caelum.vraptor.tasks.events.TasksMonitor

package br.com.caelum.vraptor.tasks.events;

import java.util.Collection;
import java.util.Map;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.event.Event;
import javax.enterprise.inject.Any;
import javax.inject.Inject;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;
import org.quartz.Scheduler;

import br.com.caelum.vraptor.tasks.TaskStatistics;

import com.google.common.collect.Maps;

@ApplicationScoped
public class TasksMonitor implements JobListener {
 
  private Scheduler scheduler;
  private Map<String, TaskStatistics> statistics = Maps.newHashMap();
  @Inject @Any Event<TaskExecution> executionEvent;
 
  public void setScheduler(Scheduler scheduler) {
    this.scheduler = scheduler;
  }
 
  public String getName() {
    return getClass().getSimpleName();
  }

  public void jobWasExecuted(JobExecutionContext context, JobExecutionException exception) {
    String taskId = getId(context);
    TaskStatistics stats = findStats(context);
    stats.update(context, exception, scheduler);
    executionEvent.fire(new TaskExecution(taskId, stats, exception));
  }
 
  private TaskStatistics findStats(JobExecutionContext context) {
    String taskId = getId(context);
    if(!statistics.containsKey(taskId))
      statistics.put(taskId, new TaskStatistics(taskId, context));
    return statistics.get(taskId);
  }
 
  public TaskStatistics getStatisticsFor(String taskId) {
    return statistics.get(taskId);
  }

  public Collection<TaskStatistics> getStatistics() {
    return statistics.values();
  }
 
  private String getId(JobExecutionContext context) {
    return context.getJobDetail().getJobDataMap().getString("task-id");
  }

  public void jobToBeExecuted(JobExecutionContext context) {}

  public void jobExecutionVetoed(JobExecutionContext context) {}

}
TOP

Related Classes of br.com.caelum.vraptor.tasks.events.TasksMonitor

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.