?? cmsscheduledjobinfo.java
字號:
/*
* File : $Source: /usr/local/cvs/opencms/src/org/opencms/scheduler/CmsScheduledJobInfo.java,v $
* Date : $Date: 2006/03/27 14:52:20 $
* Version: $Revision: 1.19 $
*
* This library is part of OpenCms -
* the Open Source Content Mananagement System
*
* Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* For further information about Alkacon Software GmbH, please see the
* company website: http://www.alkacon.com
*
* For further information about OpenCms, please see the
* project website: http://www.opencms.org
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.opencms.scheduler;
import org.opencms.configuration.I_CmsConfigurationParameterHandler;
import org.opencms.main.CmsContextInfo;
import org.opencms.main.CmsIllegalArgumentException;
import org.opencms.main.CmsLog;
import org.opencms.main.CmsRuntimeException;
import org.opencms.util.CmsStringUtil;
import java.util.Collections;
import java.util.Date;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import org.apache.commons.logging.Log;
import org.quartz.CronTrigger;
import org.quartz.Trigger;
/**
* Describes a scheduled job for the OpenCms scheduler.<p>
*
* <p>
* The time the scheduled job is executed is defined with Unix 'cron-like' definitions.
* </p>
*
* <p>
* For those unfamiliar with "cron", this means being able to create a firing
* schedule such as: "At 8:00am every Monday through Friday" or "At 1:30am
* every last Friday of the month".
* </p>
*
* <p>
* A "Cron-Expression" is a string comprised of 6 or 7 fields separated by
* white space. The 6 mandatory and 1 optional fields are as follows: <br>
*
* <table cellspacing="8">
* <tr>
* <th align="left">Field Name</th>
* <th align="left"> </th>
* <th align="left">Allowed Values</th>
* <th align="left"> </th>
* <th align="left">Allowed Special Characters</th>
* </tr>
* <tr>
* <td align="left"><code>Seconds</code></td>
* <td align="left"> </td>
* <td align="left"><code>0-59</code></td>
* <td align="left"> </td>
* <td align="left"><code>, - * /</code></td>
* </tr>
* <tr>
* <td align="left"><code>Minutes</code></td>
* <td align="left"> </td>
* <td align="left"><code>0-59</code></td>
* <td align="left"> </td>
* <td align="left"><code>, - * /</code></td>
* </tr>
* <tr>
* <td align="left"><code>Hours</code></td>
* <td align="left"> </td>
* <td align="left"><code>0-23</code></td>
* <td align="left"> </td>
* <td align="left"><code>, - * /</code></td>
* </tr>
* <tr>
* <td align="left"><code>Day-of-month</code></td>
* <td align="left"> </td>
* <td align="left"><code>1-31</code></td>
* <td align="left"> </td>
* <td align="left"><code>, - * ? / L C</code></td>
* </tr>
* <tr>
* <td align="left"><code>Month</code></td>
* <td align="left"> </td>
* <td align="left"><code>1-12 or JAN-DEC</code></td>
* <td align="left"> </td>
* <td align="left"><code>, - * /</code></td>
* </tr>
* <tr>
* <td align="left"><code>Day-of-Week</code></td>
* <td align="left"> </td>
* <td align="left"><code>1-7 or SUN-SAT</code></td>
* <td align="left"> </td>
* <td align="left"><code>, - * ? / L C #</code></td>
* </tr>
* <tr>
* <td align="left"><code>Year (Optional)</code></td>
* <td align="left"> </td>
* <td align="left"><code>empty, 1970-2099</code></td>
* <td align="left"> </td>
* <td align="left"><code>, - * /</code></td>
* </tr>
* </table>
* </p>
*
* <p>
* The '*' character is used to specify all values. For example, "*" in the
* minute field means "every minute".
* </p>
*
* <p>
* The '?' character is allowed for the day-of-month and day-of-week fields. It
* is used to specify 'no specific value'. This is useful when you need to
* specify something in one of the two fileds, but not the other. See the
* examples below for clarification.
* </p>
*
* <p>
* The '-' character is used to specify ranges For example "10-12" in the hour
* field means "the hours 10, 11 and 12".
* </p>
*
* <p>
* The ',' character is used to specify additional values. For example
* "MON,WED,FRI" in the day-of-week field means "the days Monday, Wednesday,
* and Friday".
* </p>
*
* <p>
* The '/' character is used to specify increments. For example "0/15" in the
* seconds field means "the seconds 0, 15, 30, and 45". And "5/15" in the
* seconds field means "the seconds 5, 20, 35, and 50". You can also specify
* '/' after the '*' character - in this case '*' is equivalent to having '0'
* before the '/'.
* </p>
*
* <p>
* The 'L' character is allowed for the day-of-month and day-of-week fields.
* This character is short-hand for "last", but it has different meaning in
* each of the two fields. For example, the value "L" in the day-of-month field
* means "the last day of the month" - day 31 for January, day 28 for February
* on non-leap years. If used in the day-of-week field by itself, it simply
* means "7" or "SAT". But if used in the day-of-week field after another
* value, it means "the last xxx day of the month" - for example "6L" means
* "the last friday of the month". When using the 'L' option, it is important
* not to specify lists, or ranges of values, as you'll get confusing results.
* </p>
*
* <p>
* The 'W' character is allowed for the day-of-month field. This character
* is used to specify the weekday (Monday-Friday) nearest the given day. As an
* example, if you were to specify "15W" as the value for the day-of-month
* field, the meaning is: "the nearest weekday to the 15th of the month". So
* if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the
* 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is
* a Tuesday, then it will fire on Tuesday the 15th. However if you specify
* "1W" as the value for day-of-month, and the 1st is a Saturday, the trigger
* will fire on Monday the 3rd, as it will not 'jump' over the boundary of a
* month's days. The 'W' character can only be specified when the day-of-month
* is a single day, not a range or list of days.
* </p>
*
* <p>
* The 'L' and 'W' characters can also be combined for the day-of-month
* expression to yield 'LW', which translates to "last weekday of the month".
* </p>
*
* <p>
* The '#' character is allowed for the day-of-week field. This character is
* used to specify "the nth" XXX day of the month. For example, the value of
* "6#3" in the day-of-week field means the third Friday of the month (day 6 =
* Friday and "#3" = the 3rd one in the month). Other examples: "2#1" = the
* first Monday of the month and "4#5" = the fifth Wednesday of the month. Note
* that if you specify "#5" and there is not 5 of the given day-of-week in the
* month, then no firing will occur that month.
* </p>
*
* <p>
* The 'C' character is allowed for the day-of-month and day-of-week fields.
* This character is short-hand for "calendar". This means values are
* calculated against the associated calendar, if any. If no calendar is
* associated, then it is equivalent to having an all-inclusive calendar. A
* value of "5C" in the day-of-month field means "the first day included by the
* calendar on or after the 5th". A value of "1C" in the day-of-week field
* means "the first day included by the calendar on or after sunday".
* </p>
*
* <p>
* The legal characters and the names of months and days of the week are not
* case sensitive.
* </p>
*
* <p>
* Here are some full examples: <br><table cellspacing="8">
* <tr>
* <th align="left">Expression</th>
* <th align="left"> </th>
* <th align="left">Meaning</th>
* </tr>
* <tr>
* <td align="left"><code>"0 0 12 * * ?"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 12pm (noon) every day</code></td>
* </tr>
* <tr>
* <td align="left"><code>"0 15 10 ? * *"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 10:15am every day</code></td>
* </tr>
* <tr>
* <td align="left"><code>"0 15 10 * * ?"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 10:15am every day</code></td>
* </tr>
* <tr>
* <td align="left"><code>"0 15 10 * * ? *"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 10:15am every day</code></td>
* </tr>
* <tr>
* <td align="left"><code>"0 15 10 * * ? 2005"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 10:15am every day during the year 2005</code>
* </td>
* </tr>
* <tr>
* <td align="left"><code>"0 * 14 * * ?"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire every minute starting at 2pm and ending at 2:59pm, every day</code>
* </td>
* </tr>
* <tr>
* <td align="left"><code>"0 0/5 14 * * ?"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day</code>
* </td>
* </tr>
* <tr>
* <td align="left"><code>"0 0/5 14,18 * * ?"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day</code>
* </td>
* </tr>
* <tr>
* <td align="left"><code>"0 0-5 14 * * ?"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire every minute starting at 2pm and ending at 2:05pm, every day</code>
* </td>
* </tr>
* <tr>
* <td align="left"><code>"0 10,44 14 ? 3 WED"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.</code>
* </td>
* </tr>
* <tr>
* <td align="left"><code>"0 15 10 ? * MON-FRI"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday</code>
* </td>
* </tr>
* <tr>
* <td align="left"><code>"0 15 10 15 * ?"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 10:15am on the 15th day of every month</code>
* </td>
* </tr>
* <tr>
* <td align="left"><code>"0 15 10 L * ?"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 10:15am on the last day of every month</code>
* </td>
* </tr>
* <tr>
* <td align="left"><code>"0 15 10 ? * 6L"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 10:15am on the last Friday of every month</code>
* </td>
* </tr>
* <tr>
* <td align="left"><code>"0 15 10 ? * 6L"</code></td>
* <td align="left"> </td>
* <td align="left"><code>Fire at 10:15am on the last Friday of every month</code>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -