package cn.dreampie.quartz; import cn.dreampie.common.util.Lister; import cn.dreampie.quartz.job.QuartzJob; import org.quartz.SchedulerFactory; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Created by wangrenhui on 14-4-21. */ public class Quartzer { private static SchedulerFactory schedulerFactory; private static List<QuartzJob> quartzJobs = Lister.of(); private static Map<String, Long> quartzKeys = new ConcurrentHashMap<String, Long>(); private Quartzer() { } public static QuartzKey nextKey(String name) { return nextKey(QuartzKey.DEFAULT_GROUP, name); } public static QuartzKey nextKey(String group, String name) { Long id = quartzKeys.get(group + "." + name); if (id == null) { id = 1L; } else { id++; } quartzKeys.put(group + "." + name, id); return new QuartzKey(id, group, name); } public static QuartzJob getJob(QuartzKey quartzKey) { for (QuartzJob quartzJob : quartzJobs) { if (quartzJob.getQuartzKey().equals(quartzKey)) { return quartzJob; } } return null; } public static void stopJob(QuartzKey quartzKey) { for (QuartzJob quartzJob : quartzJobs) { if (quartzJob.getQuartzKey().equals(quartzKey)) { quartzJob.stop(); } } } public static void pauseJob(QuartzKey quartzKey) { for (QuartzJob quartzJob : quartzJobs) { if (quartzJob.getQuartzKey().equals(quartzKey)) { quartzJob.pause(); } } } public static void resumeJob(QuartzKey quartzKey) { for (QuartzJob quartzJob : quartzJobs) { if (quartzJob.getQuartzKey().equals(quartzKey)) { quartzJob.resume(); } } } public static SchedulerFactory getSchedulerFactory() { return schedulerFactory; } public static void setSchedulerFactory(SchedulerFactory schedulerFactory) { Quartzer.schedulerFactory = schedulerFactory; } public static List<QuartzJob> getQuartzJobs() { return quartzJobs; } public static void setQuartzJobs(List<QuartzJob> quartzJobs) { Quartzer.quartzJobs = quartzJobs; } public static void addQuartzJob(QuartzJob startedJob) { Quartzer.quartzJobs.add(startedJob); } public static void removeQuartzJob(QuartzJob startedJob) { Quartzer.quartzJobs.remove(startedJob); } }