public String toString() { StringBuilder buf = new StringBuilder(); SimpleDateFormat dowFormat = new SimpleDateFormat("EEEE"); dowFormat.setTimeZone(TimeZone.getTimeZone("UTC")); SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss-z"); timeFormat.setTimeZone(TimeZone.getTimeZone("UTC")); TimeInterval ti = theMostRecentIntervalBefore(SystemTime.getUtcCalendar()); formatTimeInterval(buf, ti, timeFormat, false); // Now the localized equivalents, if necessary if (!startTime.getTimeZone().equals(SystemTime.UTC_TIMEZONE) || !endTime.getTimeZone().equals(SystemTime.UTC_TIMEZONE)) { buf.append(" ("); formatTimeInterval(buf, ti, timeFormat, true); buf.append(")"); } return buf.toString(); }
private TimeEndPoint getTimeEndPoint(SessionSettings settings, SessionID sessionID, TimeZone defaultTimeZone, String timeSetting, String daySetting) throws ConfigError, FieldConvertError { Matcher matcher = TIME_PATTERN.matcher(settings.getString(sessionID, timeSetting)); if (!matcher.find()) { throw new ConfigError("Session " + sessionID + ": could not parse time '" + settings.getString(sessionID, timeSetting) + "'."); } return new TimeEndPoint( getDay(settings, sessionID, daySetting, NOT_SET), Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)), Integer.parseInt(matcher.group(3)), getTimeZone(matcher.group(4), defaultTimeZone)); }
@Override public boolean isSameSession(Calendar time1, Calendar time2) { if (isNonStopSession()) return true; TimeInterval interval1 = theMostRecentIntervalBefore(time1); if (!interval1.isContainingTime(time1)) { return false; } TimeInterval interval2 = theMostRecentIntervalBefore(time2); return interval2.isContainingTime(time2) && interval1.equals(interval2); }
public DefaultSessionSchedule(SessionSettings settings, SessionID sessionID) throws ConfigError, FieldConvertError { nonStopSession = settings.isSetting(sessionID, Session.SETTING_NON_STOP_SESSION) && settings.getBool(sessionID, Session.SETTING_NON_STOP_SESSION); TimeZone defaultTimeZone = getDefaultTimeZone(settings, sessionID); if (nonStopSession) { startTime = endTime = new TimeEndPoint(NOT_SET, 0, 0, 0, defaultTimeZone); return; } boolean startDayPresent = settings.isSetting(sessionID, Session.SETTING_START_DAY); boolean endDayPresent = settings.isSetting(sessionID, Session.SETTING_END_DAY); if (startDayPresent && !endDayPresent) { throw new ConfigError("Session " + sessionID + ": StartDay used without EndDay"); } if (endDayPresent && !startDayPresent) { throw new ConfigError("Session " + sessionID + ": EndDay used without StartDay"); } startTime = getTimeEndPoint(settings, sessionID, defaultTimeZone, Session.SETTING_START_TIME, Session.SETTING_START_DAY); endTime = getTimeEndPoint(settings, sessionID, defaultTimeZone, Session.SETTING_END_TIME, Session.SETTING_END_DAY); log.info("[" + sessionID + "] " + toString()); }
private void formatTimeInterval(StringBuilder buf, TimeInterval timeInterval, SimpleDateFormat timeFormat, boolean local) { if (!isDailySession()) { buf.append("weekly, "); formatDayOfWeek(buf, startTime.getDay()); buf.append(" "); } else { buf.append("daily, "); } if (local) { timeFormat.setTimeZone(startTime.getTimeZone()); } buf.append(timeFormat.format(timeInterval.getStart().getTime())); buf.append(" - "); if (!isDailySession()) { formatDayOfWeek(buf, endTime.getDay()); buf.append(" "); } if (local) { timeFormat.setTimeZone(endTime.getTimeZone()); } buf.append(timeFormat.format(timeInterval.getEnd().getTime())); }
!validDayOfWeek(intervalStart)) { intervalStart.add(Calendar.DAY_OF_WEEK, -1); intervalEnd.add(Calendar.DAY_OF_WEEK, -1); if (isSet(startTime.getDay())) { intervalStart.set(Calendar.DAY_OF_WEEK, startTime.getDay()); if (intervalStart.getTimeInMillis() > t.getTimeInMillis()) { if (isSet(endTime.getDay())) { intervalEnd.set(Calendar.DAY_OF_WEEK, endTime.getDay()); if (intervalEnd.getTimeInMillis() <= intervalStart.getTimeInMillis()) {
public SessionSchedule create(SessionID sessionID, SessionSettings settings) throws ConfigError { try { return new DefaultSessionSchedule(settings, sessionID); } catch (final FieldConvertError e) { throw new ConfigError(e.getMessage()); } } }
public boolean isSameSession(Calendar time1, Calendar time2) { if (nonStopSession) return true; TimeInterval interval1 = theMostRecentIntervalBefore(time1); if (!interval1.isContainingTime(time1)) { return false; } TimeInterval interval2 = theMostRecentIntervalBefore(time2); return interval2.isContainingTime(time2) && interval1.equals(interval2); }
TimeZone defaultTimeZone = getDefaultTimeZone(settings, sessionID); if (isNonStopSession) { isWeekdaySession = false; startTime = getTimeEndPoint(settings, sessionID, defaultTimeZone, Session.SETTING_START_TIME, Session.SETTING_START_DAY); endTime = getTimeEndPoint(settings, sessionID, defaultTimeZone, Session.SETTING_END_TIME, Session.SETTING_END_DAY); LOG.info("[{}] {}", sessionID, toString());
} else if (!isDailySession()) { buf.append("weekly, "); formatDayOfWeek(buf, startTime.getDay()); buf.append(" "); } else { if (!isDailySession()) { formatDayOfWeek(buf, endTime.getDay()); buf.append(" ");
@Override public boolean isSessionTime() { if(isNonStopSession()) { return true; } Calendar now = SystemTime.getUtcCalendar(); TimeInterval interval = theMostRecentIntervalBefore(now); return interval.isContainingTime(now); }
!validDayOfWeek(intervalStart)) { intervalStart.add(Calendar.DAY_OF_WEEK, -1); intervalEnd.add(Calendar.DAY_OF_WEEK, -1); if (isSet(startTime.getDay())) { intervalStart.set(Calendar.DAY_OF_WEEK, startTime.getDay()); if (intervalStart.getTimeInMillis() > t.getTimeInMillis()) { if (isSet(endTime.getDay())) { intervalEnd.set(Calendar.DAY_OF_WEEK, endTime.getDay()); if (intervalEnd.getTimeInMillis() <= intervalStart.getTimeInMillis()) {
public SessionSchedule create(SessionID sessionID, SessionSettings settings) throws ConfigError { try { return new DefaultSessionSchedule(settings, sessionID); } catch (final FieldConvertError e) { throw new ConfigError(e.getMessage()); } } }
public boolean isSessionTime() { if(nonStopSession) { return true; } Calendar now = SystemTime.getUtcCalendar(); TimeInterval interval = theMostRecentIntervalBefore(now); return interval.isContainingTime(now); }
TimeZone defaultTimeZone = getDefaultTimeZone(settings, sessionID); if (isNonStopSession) { isWeekdaySession = false; startTime = getTimeEndPoint(settings, sessionID, defaultTimeZone, Session.SETTING_START_TIME, Session.SETTING_START_DAY); endTime = getTimeEndPoint(settings, sessionID, defaultTimeZone, Session.SETTING_END_TIME, Session.SETTING_END_DAY); LOG.info("[{}] {}", sessionID, toString());
private TimeEndPoint getTimeEndPoint(SessionSettings settings, SessionID sessionID, TimeZone defaultTimeZone, String timeSetting, String daySetting) throws ConfigError, FieldConvertError { Matcher matcher = TIME_PATTERN.matcher(settings.getString(sessionID, timeSetting)); if (!matcher.find()) { throw new ConfigError("Session " + sessionID + ": could not parse time '" + settings.getString(sessionID, timeSetting) + "'."); } return new TimeEndPoint(getDay(settings, sessionID, daySetting, NOT_SET), Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)), Integer.parseInt(matcher.group(3)), getTimeZone(matcher.group(4), defaultTimeZone)); }
public String toString() { StringBuilder buf = new StringBuilder(); SimpleDateFormat dowFormat = new SimpleDateFormat("EEEE"); dowFormat.setTimeZone(TimeZone.getTimeZone("UTC")); SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss-z"); timeFormat.setTimeZone(TimeZone.getTimeZone("UTC")); TimeInterval ti = theMostRecentIntervalBefore(SystemTime.getUtcCalendar()); formatTimeInterval(buf, ti, timeFormat, false); // Now the localized equivalents, if necessary if (!startTime.getTimeZone().equals(SystemTime.UTC_TIMEZONE) || !endTime.getTimeZone().equals(SystemTime.UTC_TIMEZONE)) { buf.append(" ("); formatTimeInterval(buf, ti, timeFormat, true); buf.append(")"); } return buf.toString(); }
} else if (!isDailySession()) { buf.append("weekly, "); formatDayOfWeek(buf, startTime.getDay()); buf.append(" "); } else { if (!isDailySession()) { formatDayOfWeek(buf, endTime.getDay()); buf.append(" ");
@Override public boolean isSessionTime() { if(isNonStopSession()) { return true; } Calendar now = SystemTime.getUtcCalendar(); TimeInterval interval = theMostRecentIntervalBefore(now); return interval.isContainingTime(now); }