package org.safehaus.penrose.management.scheduler; import org.safehaus.penrose.partition.Partition; import org.safehaus.penrose.partition.PartitionConfig; import org.safehaus.penrose.partition.PartitionManager; import org.safehaus.penrose.scheduler.*; import org.safehaus.penrose.management.BaseService; import org.safehaus.penrose.management.PenroseJMXService; /** * @author Endi Sukma Dewata */ public class JobService extends BaseService implements JobServiceMBean { private PartitionManager partitionManager; private String partitionName; private String jobName; public JobService( PenroseJMXService jmxService, PartitionManager partitionManager, String partitionName, String jobName ) { this.jmxService = jmxService; this.partitionManager = partitionManager; this.partitionName = partitionName; this.jobName = jobName; } public String getObjectName() { return JobClient.getStringObjectName(partitionName, jobName); } public Object getObject() { return getJob(); } public JobConfig getJobConfig() throws Exception { return getSchedulerConfig().getJobConfig(jobName); } public Job getJob() { Scheduler scheduler = getScheduler(); if (scheduler == null) return null; return scheduler.getJob(jobName); } public SchedulerConfig getSchedulerConfig() { return getPartitionConfig().getSchedulerConfig(); } public Scheduler getScheduler() { return getPartition().getScheduler(); } public PartitionConfig getPartitionConfig() { return partitionManager.getPartitionConfig(partitionName); } public Partition getPartition() { return partitionManager.getPartition(partitionName); } public void start() throws Exception { log.debug("Starting job "+partitionName+"/"+jobName+"..."); Job job = getJob(); job.init(); log.debug("Job started."); } public void stop() throws Exception { log.debug("Stopping job "+partitionName+"/"+jobName+"..."); Job job = getJob(); job.destroy(); log.debug("Job stopped."); } public void restart() throws Exception { log.debug("Restarting job "+partitionName+"/"+jobName+"..."); Job job = getJob(); job.destroy(); job.init(); log.debug("Module restarted."); } }