View Javadoc

1   // 
2   //Copyright (c) 2003, Caltha - Gajda, Krzewski, Mach, Potempski Sp.J. 
3   //All rights reserved. 
4   //   
5   //Redistribution and use in source and binary forms, with or without modification,  
6   //are permitted provided that the following conditions are met: 
7   //   
8   //* Redistributions of source code must retain the above copyright notice,  
9   //this list of conditions and the following disclaimer. 
10  //* Redistributions in binary form must reproduce the above copyright notice,  
11  //this list of conditions and the following disclaimer in the documentation  
12  //and/or other materials provided with the distribution. 
13  //* Neither the name of the Caltha - Gajda, Krzewski, Mach, Potempski Sp.J.  
14  //nor the names of its contributors may be used to endorse or promote products  
15  //derived from this software without specific prior written permission. 
16  // 
17  //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"  
18  //AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED  
19  //WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
20  //IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,  
21  //INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,  
22  //BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
23  //OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,  
24  //WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)  
25  //ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE  
26  //POSSIBILITY OF SUCH DAMAGE. 
27  //
28  
29  package org.objectledge.scheduler;
30  
31  import java.util.Date;
32  
33  /**
34   * Describes an algorithm for calculating job execution times.
35   */
36  public interface Schedule
37  {
38      /***
39       * Initialize the schedule.
40       *
41       * @param scheduler the scheduler. 
42       * @param config the configuration.
43       * @throws InvalidScheduleException if the specification is invalid. 
44       */
45      public void init(AbstractScheduler scheduler, String config)
46          throws InvalidScheduleException;
47      
48      /***
49       * Returns the name of the schedule type.
50       *      
51       * @return the name of the schedule type.
52       */
53      public String getType();
54  
55      /***
56       * Return the schedule configuration.
57       *
58       * <p>The format of the string is dependant on the nature of
59       * the schedule.</p>
60       *
61       * @return the schedule configuration.
62       */
63      public String getConfig();
64  
65      /***
66       * Sets the schedule configuration.
67       *
68       * <p>The format of the string is dependant on the nature of
69       * the schedule.</p>
70       *
71       * @param config schedule configuration.
72       * @throws InvalidScheduleException if the specification is invalid
73       */     
74      public void setConfig(String config)
75          throws InvalidScheduleException;
76  
77      /***
78       * Checks if the job should be run at the very startup of the scheduler.
79       *
80       * @return <code>true</code> if the job should be run during the startup
81       *         of the scheduler.
82       */
83      public boolean atStartup();
84  
85      /***
86       * Calculates the time of the job's next run.
87       *
88       * @param currentTime the current time.
89       * @param lastRunTime the last time the job was run, or <code>null</code> 
90       * if unknown.
91       * @return job's next execution time of <code>null</code> for never again.
92       */
93      public Date getNextRunTime(Date currentTime, Date lastRunTime);
94  }