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());


Reply via email to