Author: tv
Date: Sat Jul 25 20:33:08 2015
New Revision: 1692651
URL: http://svn.apache.org/r1692651
Log:
Add job entry factory method
Modified:
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/AbstractJobEntry.java
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/QuartzSchedulerService.java
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/ScheduleService.java
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TorqueSchedulerService.java
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerService.java
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineScheduler.java
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/QuartzSchedulerServiceTest.java
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerServiceTest.java
Modified:
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/AbstractJobEntry.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/schedule/AbstractJobEntry.java?rev=1692651&r1=1692650&r2=1692651&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/AbstractJobEntry.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/AbstractJobEntry.java
Sat Jul 25 20:33:08 2015
@@ -63,20 +63,20 @@ public abstract class AbstractJobEntry i
* Example 1: Run the DefaultScheduledJob at 8:00am every 15th of
* the month - <br>
*
- * JobEntry je = new JobEntry(0,0,8,15,"DefaultScheduledJob");<br>
+ * JobEntry je = new JobEntry(0,0,8,-1,15,"DefaultScheduledJob");<br>
*
* Example 2: Run the DefaultScheduledJob at 8:00am every day -
* <br>
*
- * JobEntry je = new JobEntry(0,0,8,-1,"DefaultScheduledJob");<br>
+ * JobEntry je = new JobEntry(0,0,8,-1,-1,"DefaultScheduledJob");<br>
*
* Example 3: Run the DefaultScheduledJob every 2 hours. - <br>
*
- * JobEntry je = new JobEntry(0,120,-1,-1,"DefaultScheduledJob");<br>
+ * JobEntry je = new JobEntry(0,120,-1,-1,-1,"DefaultScheduledJob");<br>
*
* Example 4: Run the DefaultScheduledJob every 30 seconds. - <br>
*
- * JobEntry je = new JobEntry(30,-1,-1,-1,"DefaultScheduledJob");<br>
+ * JobEntry je = new JobEntry(30,-1,-1,-1,-1,"DefaultScheduledJob");<br>
*
* @param sec Value for entry "seconds".
* @param min Value for entry "minutes".
@@ -140,8 +140,8 @@ public abstract class AbstractJobEntry i
/**
* Check to see if job is currently active/running
*
- * @return true if job is currently geing run by the
- * workerthread, otherwise false
+ * @return true if job is currently queuing run by the
+ * worker thread, otherwise false
*/
@Override
public boolean isActive()
@@ -198,6 +198,7 @@ public abstract class AbstractJobEntry i
*
* @exception TurbineException a generic exception.
*/
+ @Override
public void calcRunTime()
throws TurbineException
{
Modified:
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/QuartzSchedulerService.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/schedule/QuartzSchedulerService.java?rev=1692651&r1=1692650&r2=1692651&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/QuartzSchedulerService.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/QuartzSchedulerService.java
Sat Jul 25 20:33:08 2015
@@ -19,6 +19,7 @@ package org.apache.turbine.services.sche
* under the License.
*/
+import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@@ -30,11 +31,14 @@ import org.apache.turbine.services.Initi
import org.apache.turbine.services.TurbineBaseService;
import org.apache.turbine.services.TurbineServices;
import org.apache.turbine.util.TurbineException;
+import org.quartz.CronScheduleBuilder;
+import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
+import org.quartz.TriggerBuilder;
import org.quartz.impl.matchers.GroupMatcher;
/**
@@ -93,6 +97,74 @@ public class QuartzSchedulerService
}
/**
+ * @see org.apache.turbine.services.schedule.ScheduleService#newJob(int,
int, int, int, int, java.lang.String)
+ */
+ @Override
+ public JobEntry newJob(int sec, int min, int hour, int wd, int day_mo,
String task) throws TurbineException
+ {
+ try
+ {
+ JobDetail jd = JobBuilder.newJob(JobEntryQuartz.class)
+ .withIdentity(task, JobEntryQuartz.DEFAULT_JOB_GROUP_NAME)
+ .build();
+
+ CronScheduleBuilder csb = createCronExpression(sec, min, hour, wd,
day_mo);
+
+ Trigger t = TriggerBuilder.newTrigger()
+ .withIdentity(task, JobEntryQuartz.DEFAULT_JOB_GROUP_NAME)
+ .withSchedule(csb)
+ .forJob(jd)
+ .build();
+
+ JobEntryQuartz jeq = new JobEntryQuartz(t, jd);
+
+ return jeq;
+ }
+ catch (ParseException e)
+ {
+ throw new TurbineException("Could not create scheduled job " +
task, e);
+ }
+ }
+
+ /**
+ * Create a Cron expression from separate elements
+ *
+ * @param sec Value for entry "seconds".
+ * @param min Value for entry "minutes".
+ * @param hour Value for entry "hours".
+ * @param wd Value for entry "week days".
+ * @param day_mo Value for entry "month days".
+ * @return a CronScheduleBuilder
+ * @throws ParseException if the expression is invalid
+ */
+ private CronScheduleBuilder createCronExpression(int sec, int min, int
hour, int wd, int day_mo) throws ParseException
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.append(sec == -1 ? "*" : String.valueOf(sec)).append(' ');
+ sb.append(min == -1 ? "*" : String.valueOf(min)).append(' ');
+ sb.append(hour == -1 ? "*" : String.valueOf(hour)).append(' ');
+ if (day_mo == -1)
+ {
+ sb.append(wd == -1 ? "*" : "?").append(' ');
+ }
+ else
+ {
+ sb.append(day_mo).append(' ');
+ }
+ sb.append("* "); // Month not supported
+ if (day_mo == -1)
+ {
+ sb.append(wd == -1 ? "?" : String.valueOf(wd));
+ }
+ else
+ {
+ sb.append("*");
+ }
+
+ return CronScheduleBuilder.cronSchedule(sb.toString());
+ }
+
+ /**
* Get a specific Job from Storage.
*
* @param oid The int id for the job.
Modified:
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/ScheduleService.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/schedule/ScheduleService.java?rev=1692651&r1=1692650&r2=1692651&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/ScheduleService.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/ScheduleService.java
Sat Jul 25 20:33:08 2015
@@ -39,13 +39,53 @@ public interface ScheduleService
/** Name of service */
String SERVICE_NAME = "SchedulerService";
- /** TR.props key for intially activating the scheduler thread */
+ /** TR.props key for initially activating the scheduler thread */
String INTIALLY_ACTIVE = "enabled";
/** TR.props key for the logger */
String LOGGER_NAME = "scheduler";
/**
+ * Factory method for a new Job
+ *
+ * Schedule a job to run on a certain point of time.<br>
+ *
+ * Example 1: Run the DefaultScheduledJob at 8:00am every 15th of
+ * the month - <br>
+ *
+ * JobEntry je = newJob(0,0,8,-1,15,"DefaultScheduledJob");<br>
+ *
+ * Example 2: Run the DefaultScheduledJob at 8:00am every day -
+ * <br>
+ *
+ * JobEntry je = newJob(0,0,8,-1,-1,"DefaultScheduledJob");<br>
+ *
+ * Example 3: Run the DefaultScheduledJob every 2 hours. - <br>
+ *
+ * JobEntry je = newJob(0,120,-1,-1,-1,"DefaultScheduledJob");<br>
+ *
+ * Example 4: Run the DefaultScheduledJob every 30 seconds. - <br>
+ *
+ * JobEntry je = newJob(30,-1,-1,-1,-1,"DefaultScheduledJob");<br>
+ *
+ * @param sec Value for entry "seconds".
+ * @param min Value for entry "minutes".
+ * @param hour Value for entry "hours".
+ * @param wd Value for entry "week days".
+ * @param day_mo Value for entry "month days".
+ * @param task Task to execute.
+ *
+ * @return A JobEntry.
+ * @exception TurbineException could not create job
+ */
+ JobEntry newJob(int sec,
+ int min,
+ int hour,
+ int wd,
+ int day_mo,
+ String task) throws TurbineException;
+
+ /**
* Get a specific Job from Storage.
*
* @param oid The int id for the job.
Modified:
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TorqueSchedulerService.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TorqueSchedulerService.java?rev=1692651&r1=1692650&r2=1692651&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TorqueSchedulerService.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TorqueSchedulerService.java
Sat Jul 25 20:33:08 2015
@@ -119,6 +119,23 @@ public class TorqueSchedulerService exte
}
/**
+ * @see org.apache.turbine.services.schedule.ScheduleService#newJob(int,
int, int, int, int, java.lang.String)
+ */
+ @Override
+ public JobEntry newJob(int sec, int min, int hour, int wd, int day_mo,
String task) throws TurbineException
+ {
+ JobEntryTorque jet = new JobEntryTorque();
+ jet.setSecond(sec);
+ jet.setMinute(min);
+ jet.setHour(hour);
+ jet.setWeekDay(wd);
+ jet.setDayOfMonth(day_mo);
+ jet.setTask(task);
+
+ return jet;
+ }
+
+ /**
* Get a specific Job from Storage.
*
* @param oid
Modified:
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerService.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerService.java?rev=1692651&r1=1692650&r2=1692651&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerService.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerService.java
Sat Jul 25 20:33:08 2015
@@ -151,6 +151,15 @@ public class TurbineNonPersistentSchedul
}
/**
+ * @see org.apache.turbine.services.schedule.ScheduleService#newJob(int,
int, int, int, int, java.lang.String)
+ */
+ @Override
+ public JobEntry newJob(int sec, int min, int hour, int wd, int day_mo,
String task) throws TurbineException
+ {
+ return new JobEntryNonPersistent(sec, min, hour, wd, day_mo, task);
+ }
+
+ /**
* This method returns the job element from the internal queue.
*
* @param oid The int id for the job.
Modified:
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineScheduler.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineScheduler.java?rev=1692651&r1=1692650&r2=1692651&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineScheduler.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineScheduler.java
Sat Jul 25 20:33:08 2015
@@ -38,6 +38,49 @@ import org.apache.turbine.util.TurbineEx
public abstract class TurbineScheduler
{
/**
+ * Factory method for a new Job
+ *
+ * Schedule a job to run on a certain point of time.<br>
+ *
+ * Example 1: Run the DefaultScheduledJob at 8:00am every 15th of
+ * the month - <br>
+ *
+ * JobEntry je = newJob(0,0,8,-1,15,"DefaultScheduledJob");<br>
+ *
+ * Example 2: Run the DefaultScheduledJob at 8:00am every day -
+ * <br>
+ *
+ * JobEntry je = newJob(0,0,8,-1,-1,"DefaultScheduledJob");<br>
+ *
+ * Example 3: Run the DefaultScheduledJob every 2 hours. - <br>
+ *
+ * JobEntry je = newJob(0,120,-1,-1,-1,"DefaultScheduledJob");<br>
+ *
+ * Example 4: Run the DefaultScheduledJob every 30 seconds. - <br>
+ *
+ * JobEntry je = newJob(30,-1,-1,-1,-1,"DefaultScheduledJob");<br>
+ *
+ * @param sec Value for entry "seconds".
+ * @param min Value for entry "minutes".
+ * @param hour Value for entry "hours".
+ * @param wd Value for entry "week days".
+ * @param day_mo Value for entry "month days".
+ * @param task Task to execute.
+ *
+ * @return A JobEntry.
+ * @exception TurbineException could not create job
+ */
+ public static JobEntry newJob(int sec,
+ int min,
+ int hour,
+ int wd,
+ int day_mo,
+ String task) throws TurbineException
+ {
+ return getService().newJob(sec, min, hour, wd, day_mo, task);
+ }
+
+ /**
* Get a specific Job from Storage.
*
* @param oid The int id for the job.
Modified:
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/QuartzSchedulerServiceTest.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/test/org/apache/turbine/services/schedule/QuartzSchedulerServiceTest.java?rev=1692651&r1=1692650&r2=1692651&view=diff
==============================================================================
---
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/QuartzSchedulerServiceTest.java
(original)
+++
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/QuartzSchedulerServiceTest.java
Sat Jul 25 20:33:08 2015
@@ -35,12 +35,7 @@ import org.hamcrest.CoreMatchers;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import org.quartz.CronScheduleBuilder;
-import org.quartz.JobBuilder;
-import org.quartz.JobDetail;
import org.quartz.JobKey;
-import org.quartz.Trigger;
-import org.quartz.TriggerBuilder;
/**
* Unit testing for the quartz implementation of the scheduler service.
@@ -102,15 +97,7 @@ public class QuartzSchedulerServiceTest
int jobCount = TurbineScheduler.listJobs().size();
// Add a new job entry
- JobDetail jd = JobBuilder.newJob(JobEntryQuartz.class)
- .withIdentity("SimpleJob1",
JobEntryQuartz.DEFAULT_JOB_GROUP_NAME)
- .build();
- Trigger t = TriggerBuilder.newTrigger()
- .withIdentity("SimpleJob1",
JobEntryQuartz.DEFAULT_JOB_GROUP_NAME)
- .withSchedule(CronScheduleBuilder.cronSchedule("10 * * * *
?"))
- .forJob(jd)
- .build();
- JobEntryQuartz je = new JobEntryQuartz(t, jd);
+ JobEntry je = TurbineScheduler.newJob(10, -1, -1, -1,
-1, "SimpleJob1");
je.setJobId(jobCount + 1);
TurbineScheduler.addJob(je);
Modified:
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerServiceTest.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/test/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerServiceTest.java?rev=1692651&r1=1692650&r2=1692651&view=diff
==============================================================================
---
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerServiceTest.java
(original)
+++
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerServiceTest.java
Sat Jul 25 20:33:08 2015
@@ -113,14 +113,7 @@ public class TurbineNonPersistentSchedul
int jobCount = TurbineScheduler.listJobs().size();
// Add a new job entry
- JobEntryNonPersistent je = new JobEntryNonPersistent();
- je.setJobId(jobCount + 1);
- je.setSecond(0);
- je.setMinute(1);
- je.setHour(-1);
- je.setDayOfMonth(-1);
- je.setWeekDay(-1);
- je.setTask("SimpleJob");
+ JobEntry je = TurbineScheduler.newJob(0, 1, -1, -1, -1,
"SimpleJob");
TurbineScheduler.addJob(je);
assertEquals(jobCount + 1, TurbineScheduler.listJobs().size());