package net.techreadiness.service;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
public interface BatchJobSchedulerService extends BaseService {
public static String JOB_SCOPE_ID = "jobScopeId";
public static String JOB_USER_ID = "jobUserId";
public static String JOB_ORG_ID = "jobOrgId";
public static String JOB_FILE_ID = "jobFileId";
public static String JOB_FILE_NAME = "jobFileName";
public static String JOB_TEMP_FILE_NAME = "jobTempFileName";
public static String SPRING_BATCH_JOB_NAME = "spring.batch.job.name";
public static String JOB_MODE = "jobMode";
public enum JOB_TIME {
AT_MIDNIGHT, AT_ONE_AM, AT_ONE_THIRTY_AM, AT_TWO_AM, AT_THREE_AM, HOURLY
}
public void schedule(ServiceContext context, Long fileId) throws Exception;
public void scheduleImmediateOneTimeJob(ServiceContext context, Class<? extends Job> jobClass, String jobName,
String jobGroupName);
public void scheduleImmediateOneTimeJobNoServiceContext(Class<? extends Job> jobClass, String jobName,
String jobGroupName);
public SchedulerFactoryBean getQuartzScheduler();
public JobDetail getJobDetail(JobKey jobKey);
// jobs will run outside of any servlet context, but will need the servicecontext. they have the data,
// just need to put in a more friendly format.
public ServiceContext buildServiceContext(Long scopeId, Long userId, Long orgId);
public void scheduleJob(JOB_TIME jobTime, Class<? extends Job> jobClass, String jobName, String jobGroupName);
public void scheduleJobWithDelay(Class<? extends Job> jobClass, String jobName, String jobGroupName, int delayMinutes,
JobDataMap jobDataMap);
}