io.logspace.agent.shaded.quartz.DailyTimeIntervalTrigger Maven / Gradle / Ivy
/*
* All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
*/
package io.logspace.agent.shaded.quartz;
import java.util.Calendar;
import java.util.Set;
import io.logspace.agent.shaded.quartz.DateBuilder.IntervalUnit;
/**
* A {@link Trigger}
that is used to fire a {@link io.logspace.agent.shaded.quartz.JobDetail}
* based upon daily repeating time intervals.
*
* The trigger will fire every N (see {@link #getRepeatInterval()} ) seconds, minutes or hours
* (see {@link #getRepeatIntervalUnit()}) during a given time window on specified days of the week.
*
* For example#1, a trigger can be set to fire every 72 minutes between 8:00 and 11:00 everyday. It's fire times would
* be 8:00, 9:12, 10:24, then next day would repeat: 8:00, 9:12, 10:24 again.
*
* For example#2, a trigger can be set to fire every 23 minutes between 9:20 and 16:47 Monday through Friday.
*
* On each day, the starting fire time is reset to startTimeOfDay value, and then it will add repeatInterval value to it until
* the endTimeOfDay is reached. If you set daysOfWeek values, then fire time will only occur during those week days period.
*
* The default values for fields if not set are: startTimeOfDay defaults to 00:00:00, the endTimeOfDay default to 23:59:59,
* and daysOfWeek is default to every day. The startTime default to current time-stamp now, while endTime has not value.
*
* If startTime is before startTimeOfDay, then it has no affect. Else if startTime after startTimeOfDay, then the first fire time
* for that day will be normal startTimeOfDay incremental values after startTime value. Same reversal logic is applied to endTime
* with endTimeOfDay.
*
* @see DailyTimeIntervalScheduleBuilder
*
* @since 2.1.0
*
* @author James House
* @author Zemian Deng
*/
public interface DailyTimeIntervalTrigger extends Trigger {
/**
*
* Used to indicate the 'repeat count' of the trigger is indefinite. Or in
* other words, the trigger should repeat continually until the trigger's
* ending timestamp.
*
*/
public static final int REPEAT_INDEFINITELY = -1;
/**
*
* Instructs the {@link Scheduler}
that upon a mis-fire
* situation, the {@link DailyTimeIntervalTrigger}
wants to be
* fired now by Scheduler
.
*
*/
public static final int MISFIRE_INSTRUCTION_FIRE_ONCE_NOW = 1;
/**
*
* Instructs the {@link Scheduler}
that upon a mis-fire
* situation, the {@link DailyTimeIntervalTrigger}
wants to have it's
* next-fire-time updated to the next time in the schedule after the
* current time (taking into account any associated {@link Calendar}
,
* but it does not want to be fired now.
*
*/
public static final int MISFIRE_INSTRUCTION_DO_NOTHING = 2;
/**
* Get the interval unit - the time unit on with the interval applies.
*
* The only intervals that are valid for this type of trigger are {@link IntervalUnit#SECOND},
* {@link IntervalUnit#MINUTE}, and {@link IntervalUnit#HOUR}.
*/
public IntervalUnit getRepeatIntervalUnit();
/**
*
* Get the the number of times for interval this trigger should
* repeat, after which it will be automatically deleted.
*
*
* @see #REPEAT_INDEFINITELY
*/
public int getRepeatCount();
/**
*
* Get the the time interval that will be added to the DateIntervalTrigger
's
* fire time (in the set repeat interval unit) in order to calculate the time of the
* next trigger repeat.
*
*/
public int getRepeatInterval();
/**
* The time of day to start firing at the given interval.
*/
public TimeOfDay getStartTimeOfDay();
/**
* The time of day to complete firing at the given interval.
*/
public TimeOfDay getEndTimeOfDay();
/**
* The days of the week upon which to fire.
*
* @return a Set containing the integers representing the days of the week, per the values 1-7 as defined by
* {@link java.util.Calendar#SUNDAY} - {@link java.util.Calendar#SATURDAY}.
*/
public Set getDaysOfWeek();
/**
*
* Get the number of times the DateIntervalTrigger
has already
* fired.
*
*/
public int getTimesTriggered();
public TriggerBuilder getTriggerBuilder();
}