public int getRunPeriodSeconds(int defaultRunPeriod) { return server.getRunPeriodSeconds() == null || server.getRunPeriodSeconds().intValue() <= 0 ? defaultRunPeriod : server.getRunPeriodSeconds().intValue(); }
private Trigger createTrigger(Server server) throws ParseException { int runPeriod = configuration.getRunPeriod(); Trigger trigger; if (server.getCronExpression() != null && CronExpression.isValidExpression(server.getCronExpression())) { CronTrigger cTrigger = new CronTrigger(); cTrigger.setCronExpression(server.getCronExpression()); trigger = cTrigger; } else { if (server.getRunPeriodSeconds() != null) { runPeriod = server.getRunPeriodSeconds(); } trigger = TriggerUtils.makeSecondlyTrigger(runPeriod); // TODO replace Quartz with a ScheduledExecutorService } trigger.setName(server.getHost() + ":" + server.getPort() + "-" + Long.toString(System.nanoTime())); trigger.setStartTime(computeSpreadStartDate(runPeriod)); return trigger; }
private void scheduleJob(Server server) throws ParseException, SchedulerException { String name = server.getHost() + ":" + server.getPort() + "-" + System.currentTimeMillis() + "-" + RandomStringUtils.randomNumeric(10); JobDetail jd = new JobDetail(name, "ServerJob", ServerJob.class); JobDataMap map = new JobDataMap(); map.put(Server.class.getName(), server); jd.setJobDataMap(map); Trigger trigger; if ((server.getCronExpression() != null) && CronExpression.isValidExpression(server.getCronExpression())) { trigger = new CronTrigger(); ((CronTrigger) trigger).setCronExpression(server.getCronExpression()); trigger.setName(server.getHost() + ":" + server.getPort() + "-" + Long.toString(System.currentTimeMillis())); trigger.setStartTime(computeSpreadStartDate(configuration.getRunPeriod())); } else { int runPeriod = configuration.getRunPeriod(); if (server.getRunPeriodSeconds() != null) runPeriod = server.getRunPeriodSeconds(); Trigger minuteTrigger = TriggerUtils.makeSecondlyTrigger(runPeriod); minuteTrigger.setName(server.getHost() + ":" + server.getPort() + "-" + Long.toString(System.currentTimeMillis())); minuteTrigger.setStartTime(computeSpreadStartDate(runPeriod)); trigger = minuteTrigger; // TODO replace Quartz with a ScheduledExecutorService } serverScheduler.scheduleJob(jd, trigger); if (log.isDebugEnabled()) { log.debug("Scheduled job: " + jd.getName() + " for server: " + server); } }