Методы для работы с расписанием

Вы можете работать с расписанием программно с помощью соответствующих функций класса Schedule:
Получение значения - getValue()

<ValueType> getValue() - Возвращает значение, соответствующее текущей модельной дате.

<ValueType> getValue(double time) - Возвращает значение, соответствующее заданному модельному времени (time).

<ValueType> getValue(Date date) - Возвращает значение, соответствующее заданной модельной дате (date).

Получение таймаута до следующего ключевого момента времени - getTimeoutToNextValue()

double getTimeoutToNextValue() - Возвращает таймаут (в единицах модельного времени) от текущего момента времени до следующего ключевого события расписания.

double getTimeoutToNextValue(double time) - Возвращает таймаут (в единицах модельного времени) от заданного момента времени time до следующего ключевого события расписания. 

double getTimeoutToNextValue(Date date) - Возвращает таймаут (в единицах модельного времени) от заданной даты date до следующего ключевого события расписания. 

Получение времени следующего ключевого момента - getTimeOfNextValue()

double getTimeOfNextValue() - Возвращает время следующего за текущим временем ключевого момента расписания.

double getTimeOfNextValue(double time) -  Возвращает время следующего за заданным моментом времени time ключевого момента расписания. 

double getTimeOfNextValue(Date date) - Возвращает время следующего за заданной датой date ключевого момента расписания. 

Получение даты следующего ключевого момента - getDateOfNextValue()

Date getDateOfNextValue() - Возвращает дату следующего за текущим временем ключевого момента расписания.

Date getDateOfNextValue(double time) - Возвращает дату следующего за заданным моментом времени time ключевого момента расписания. 

Date getDateOfNextValue(Date date) -  Возвращает дату следующего за заданной датой date ключевого момента расписания. 

Получение следующего значения - getNextValue()

<ValueType> getNextValue() - Возвращает значение, соответствующее следующему за текущим временем ключевому моменту расписания.

<ValueType> getNextValue(double time) - Возвращает значение, соответствующее следующему за заданным моментом времени time ключевому моменту расписания. 

<ValueType> getNextValue(Date date) - Возвращает значение, соответствующее следующему за заданной датой date ключевому моменту расписания. 

Получение единиц модельного времени расписания - getTimeUnits()

long getTimeUnits() - Возвращает единицы времени рапсисания (одну из TIME_UNIT_* констант)

Cоздание и инициализация расписания с помощью конструктора
new Schedule<ValueType>(Utilities owner, boolean calendarType, int firstDayOfWeek, long period, long timeUnits, Long snapTo, <ValueType> defaultValue, long[] starts, long[] ends, Object[] values, boolean glueIntervals, boolean[] exceptionsAnnually, boolean singleThreadMode)

Пример:

Schedule<Integer> NursePlan = new Schedule<Integer>(this, true, MONDAY, 1L * TIME_UNIT_DAY, TIME_UNIT_DAY, null, 0, varNursePlanTime, null, varNursePlanNumber, false, null, true );

Параметры:

owner - "владелец" расписания - класс активного объекта или эксперимент, в котором находится расписание.

calendarType - если параметр равен true, то расписание работает с календарными датами. Например, если Вы зададите ежедневный интервал 8:00-17:00, то эти времена будут соблюдаться даже в случае перехода на зимнее или летнее время.
Если этот параметр равен false, то 1 день будет всегда равен 24*60*60 секунд, что удобно при моделировании физических устройств, функционирующих без привязки к календарным временам.

firstDayOfWeek - первый день недели, этот параметр используется, если calendarType == true и timeUnit == TIME_UNIT_WEEK

period - период повторения цикличности, заданной в расписании, измеренный в миллисекундах. Миллисекунды применяются - если calendarType равен false или допускаются - если true, при этом 1000*60*60*24 миллисекунд означают один день независимо от перевода времени на зимнее или летнее время.

timeUnits - единицы времени расписания, одна из констант TIME_UNIT_*

snapTo - абсолютная дата (если calendarType==true) или количество миллисекунд, начиная от нулевого модельного времени (если calendarType==false), указывающие на момент времени, к которому следует привязать расписание (в свойствах расписания аналогичный параметр задается в свойстве Привязать к). Этот момент клонируется в обе стороны по временной оси, через периоды повторения расписания. Параметр может быть равен null - в этом случае расписание будет привязано к дате, сответствующей нулевому модельному времени.

defaultValue - значение по умолчанию, которое будет использоваться расписанием для тех интервалов времени, которые не будут покрыты этим расписанием.

starts - массив начальных времен интервалов, измеренных в миллисекундах от начала периода. Миллисекунды применяются - если calendarType равен false или допускаются - если true, при этом 1000*60*60*24 миллисекунд означают один день независимо от перевода времени на зимнее или летнее время. Этот массив может также содержать начальные времена исключительных периодов (см. описание параметра exceptionsAnnually).

ends - массив конечных времен интервалов, описание см. выше у параметра starts.

values - массив значений интервалов.

glueIntervals - если параметр равен true, то накладывающиеся друг на друга интервалы с одним и тем же значением будут объединены, т.е. два интервала "День1 18:00-24:00 значение=5" и "День2 00:00-02:00 значение=5" будут обрабатываться как один интервал "День 1 18:00 - День 2 02:00 значение=5".

exceptionsAnnually - массив флагов для исключений (true означает ежегодное исключение, false - единожды случающееся), может быть пустым. Число исключений равно длине массива exceptionsAnnually. Данные об исключениях считываются из массивов starts, ends и values. Эти данные хранятся в конце этих массивов. Обратите внмание, что в случае исключений массивы starts и ends содержат абсолютные даты в виде чисел в формате long (см. Date.getTime()).

singleThreadMode - этот параметр задает, будет ли расписание работать в одном потоке или же будет использоваться несколькими параллельно выполняющимися потоками. Обычно в качестве значения этого параметра задается true, если расписание задано в классе активного объекта или в эксперименте, не позволяющем параллельное выполнение итераций (например, в простом эксперименте). Иначе задается значение false

См. также

 Расписание

 Недельное расписание

 Расписание с длительностью в несколько дней или недель

 Расписание без привязки к календарю

 Исключения в расписании

 Предварительный просмотр расписания