public class TimeIntervalCron
extends java.lang.Object
Diese Klasse stellt ein ZeitIntervallCron dar.
Die Spezifikation erfolgt durch die Angabe von 5 Terminfeldern, wobei im ersten Feld die Minute [0;59], im zweiten Feld die Stunde [0;23], im dritten Feld der Tag [1;31], im viertem Feld der Monat [1;12] und im letzten Feld der Wochentag {Mo,Di,Mi,Do,Fr,Sa,So} angegeben werden kann. Pro Terminfeld sind mehrere Einträge, die durch Kommata getrennt werden müssen, möglich. Die Eingabe eines ‘‘ deckt den gesamten Bereich eines Terminfeldes ab. Mit dem Zeichen ’-‘ können Teilbereiche abgedeckt werden. Die Angaben aller Terminfelder sind UND-verknüpft. Reihenfolge und Bedeutung der Felder Die Syntax ist im Vergleich zu Cron reduziert. Insbesondere können keine Schritte (etwa ’
Feld Mögliche Werte Minute 0-59 Stunde 0-23 Tag 1-31 Monat 1-12 Wochentag >Mo/Di/Mi/Do/Fr/Sa/So
Außerdem muss beachtet werden, dass alle Felder UND-Verknüpft sind. Das heißt, ‘0 0 1 * Mo’ steht für “um Mitternacht wenn der Montag auch der erste eines Monats ist”. Unter Linux/Cron bedeutet diese Angabe jedoch “Mitternachts an jedem Montag und am ersten eines Monats.”
Modifier and Type | Field and Description |
---|---|
private java.util.Calendar |
c |
private static java.util.HashMap<java.lang.String,java.lang.Integer> |
DAYNAMES |
private boolean[] |
dayOfMonth |
private boolean[] |
dayOfWeek |
private boolean |
hasParseErrors |
private boolean[] |
hour |
private boolean[] |
minute |
private boolean[] |
month |
private java.lang.String |
originalTimeIntervalCron |
Constructor and Description |
---|
TimeIntervalCron()
Standardkonstruktor.
|
TimeIntervalCron(java.lang.String fields) |
Modifier and Type | Method and Description |
---|---|
java.util.Calendar |
getNextRun(java.util.Calendar startingFrom)
Berechnet das Datum des nächsten Ausführungstages.
|
java.lang.String |
getParsedInterval()
Gibt den analysierten String wieder aus, nur als Aufzählung (ohne “-” oder *)
|
boolean |
hasParseErrors()
Liefert wahr, wenn es beim letzten setFields() zu Parsefehlern kam
|
boolean |
hasValues()
Gibt an, ob Zeiten gespeichert sind.
|
private void |
init()
Initialisert die internen Felder mit leeren Arrays
|
private int |
nameToNumber(java.lang.String s) |
private void |
parseField(java.lang.String field,
boolean[] destArray,
int offset)
Anaylsiert ein einzelnen Feld und setzt alle nötigen Einträge im Boolean Array dest auf true;
|
void |
setFields(java.lang.String fields)
Analysiert den übergebenen String und setzt intern die Felder für das entsprechende Datum.
|
boolean |
shouldRun(java.util.Date date)
Prüft, ob die übergebene Zeit in das Interval fällt, zu dem der Job laufen soll.
|
java.lang.String |
toString()
Gibt das übergebene String-Pattern wieder aus, oder ‘ParseError’, wenn er sich nicht hat parsen lassen
|
private static final java.util.HashMap<java.lang.String,java.lang.Integer> DAYNAMES
private boolean hasParseErrors
private java.lang.String originalTimeIntervalCron
private boolean[] minute
private boolean[] hour
private boolean[] dayOfMonth
private boolean[] month
private boolean[] dayOfWeek
private java.util.Calendar c
public TimeIntervalCron()
Standardkonstruktor. Es wird keine Zeit gesetzt, daher wird bei jeder Anfrage false (also nicht-starten) geantwortet, bis mittels set() ein String in Cron-Sytnax übergeben wird.
public TimeIntervalCron(java.lang.String fields)
fields
- public void setFields(java.lang.String fields)
Analysiert den übergebenen String und setzt intern die Felder für das entsprechende Datum. Alte Einstellungen gehen dabei verlohren.
Wenn der übergebene String Syntaxfehler enthält, werden alle alle Felder deaktiviert so dass es nie zu einer Ausführung kommt.
fields
- public boolean shouldRun(java.util.Date date)
Prüft, ob die übergebene Zeit in das Interval fällt, zu dem der Job laufen soll. Die Sekunden werden dabei ignoriert, d.h. es wird immer abgerundet.
date
- Milisekunde eines Zeitpunkts, der überprüft werden sollpublic java.util.Calendar getNextRun(java.util.Calendar startingFrom)
Berechnet das Datum des nächsten Ausführungstages. Berücksichtigt wird dabei nur der Zeitraum eines Jahres.
startingFrom
- Datum von dem ab gesucht werden soll. Null falls von “jetzt” an gesucht werden soll.public boolean hasValues()
Gibt an, ob Zeiten gespeichert sind.
public java.lang.String toString()
Gibt das übergebene String-Pattern wieder aus, oder ‘ParseError’, wenn er sich nicht hat parsen lassen
toString
in class java.lang.Object
public java.lang.String getParsedInterval()
Gibt den analysierten String wieder aus, nur als Aufzählung (ohne “-” oder *)
public boolean hasParseErrors()
Liefert wahr, wenn es beim letzten setFields() zu Parsefehlern kam
private void parseField(java.lang.String field, boolean[] destArray, int offset) throws java.text.ParseException
Anaylsiert ein einzelnen Feld und setzt alle nötigen Einträge im Boolean Array dest auf true;
field
- String, der analysiert werden soll.destArray
- Ziel array, in dem die zugehärigen Felder auf true gesetzt werden sollenoffset
- offset, falls das Array nicht bei 0 anfängt (Tag und Monat beginnen mit 1).java.text.ParseException
private int nameToNumber(java.lang.String s)
private void init()
Initialisert die internen Felder mit leeren Arrays