public Span(Calendar begin, int field, long amount) { this(begin, Time.cloneAndAdd(begin, field, amount)); }
@Override protected Span _nextSpan(PointerType pointer) { int direction = (pointer == Pointer.PointerType.FUTURE) ? 1 : -1; if (_currentMonthStart == null) { _currentMonthStart = Time.cloneAndAdd(Time.ym(getNow()), Calendar.MONTH, direction); } else { _currentMonthStart = Time.cloneAndAdd(_currentMonthStart, Calendar.MONTH, direction); } return new Span(_currentMonthStart, Calendar.MONTH, 1); }
@Override public Span getOffset(Span span, int amount, Pointer.PointerType pointer) { int direction = (pointer == Pointer.PointerType.FUTURE) ? 1 : -1; return new Span(Time.cloneAndAdd(span.getBeginCalendar(), Calendar.MONTH, amount * direction), Time.cloneAndAdd(span.getEndCalendar(), Calendar.MONTH, amount * direction)); }
@Override public Span getOffset(Span span, int amount, Pointer.PointerType pointer) { int direction = (pointer == Pointer.PointerType.FUTURE) ? 1 : -1; Calendar newBegin = Time.cloneAndAdd(span.getBeginCalendar(), Calendar.YEAR, amount * direction); Calendar newEnd = Time.cloneAndAdd(span.getEndCalendar(), Calendar.YEAR, amount * direction); return new Span(newBegin, newEnd); }
@Override protected Span _nextSpan(PointerType pointer) { int direction = (pointer == Pointer.PointerType.FUTURE) ? 1 : -1; if (_secondStart == null) { _secondStart = Time.cloneAndAdd(getNow(), Calendar.SECOND, direction); } else { _secondStart.add(Calendar.SECOND, direction); } return new Span(_secondStart, Calendar.SECOND, 1); }
@Override protected Span _thisSpan(PointerType pointer) { Calendar rangeStart = Time.cloneAndAdd(Time.ymd(getNow()), Calendar.SECOND, _range.getBegin()); _currentSpan = new Span(rangeStart, Time.cloneAndAdd(rangeStart, Calendar.SECOND, _range.getWidth())); return _currentSpan; }
@Override protected Span _nextSpan(PointerType pointer) { if (_currentMinuteStart == null) { if (pointer == PointerType.FUTURE) { _currentMinuteStart = Time.cloneAndAdd(Time.ymdhm(getNow()), Calendar.MINUTE, 1); } else if (pointer == PointerType.PAST) { _currentMinuteStart = Time.cloneAndAdd(Time.ymdhm(getNow()), Calendar.MINUTE, -1); } else { throw new IllegalArgumentException("Unable to handle pointer " + pointer + "."); } } else { int direction = (pointer == Pointer.PointerType.FUTURE) ? 1 : -1; _currentMinuteStart.add(Calendar.MINUTE, direction); } return new Span(_currentMinuteStart, Calendar.SECOND, RepeaterMinute.MINUTE_SECONDS); }
@Override protected Span _nextSpan(PointerType pointer) { if (_currentYearStart == null) { if (pointer == PointerType.FUTURE) { _currentYearStart = Time.cloneAndAdd(Time.y(getNow()), Calendar.YEAR, 1); } else if (pointer == PointerType.PAST) { _currentYearStart = Time.cloneAndAdd(Time.y(getNow()), Calendar.YEAR, -1); } else { throw new IllegalArgumentException("Unable to handle pointer " + pointer + "."); } } else { int direction = (pointer == Pointer.PointerType.FUTURE) ? 1 : -1; _currentYearStart.add(Calendar.YEAR, direction); } return new Span(_currentYearStart, Calendar.YEAR, 1); }
@Override protected Span _nextSpan(PointerType pointer) { if (_currentDayStart == null) { if (pointer == PointerType.FUTURE) { _currentDayStart = Time.cloneAndAdd(Time.ymdh(getNow()), Calendar.HOUR, 1); } else if (pointer == PointerType.PAST) { _currentDayStart = Time.cloneAndAdd(Time.ymdh(getNow()), Calendar.HOUR, -1); } else { throw new IllegalArgumentException("Unable to handle pointer " + pointer + "."); } } else { int direction = (pointer == Pointer.PointerType.FUTURE) ? 1 : -1; _currentDayStart.add(Calendar.HOUR, direction); } return new Span(_currentDayStart, Calendar.HOUR, 1); }
public Span handle(List<Token> tokens, Options options) { int month = tokens.get(0).getTag(ScalarMonth.class).getType().intValue(); int day = tokens.get(1).getTag(ScalarDay.class).getType().intValue(); Calendar start = Time.construct(options.getNow().get(Calendar.YEAR), month, day); Calendar end = Time.cloneAndAdd(start, Calendar.DAY_OF_MONTH, 1); return new Span(start, end); }
public Span handle(List<Token> tokens, Options options) { int month = tokens.get(0).getTag(ScalarMonth.class).getType().intValue(); int year = tokens.get(1).getTag(ScalarYear.class).getType().intValue(); Span span; try { Calendar start = Time.construct(year, month); Calendar end = Time.cloneAndAdd(start, Calendar.MONTH, 1); span = new Span(start, end); } catch (IllegalArgumentException e) { if (options.isDebug()) { e.printStackTrace(System.out); } span = null; } return span; }
@Override public Span getOffset(Span span, int amount, PointerType pointer) { int direction = (pointer == Pointer.PointerType.FUTURE) ? 1 : -1; RepeaterWeekend weekend = new RepeaterWeekend(); weekend.setStart(span.getBeginCalendar()); Calendar start = Time.cloneAndAdd(weekend.nextSpan(pointer).getBeginCalendar(), Calendar.SECOND, (amount - 1) * direction * RepeaterWeek.WEEK_SECONDS); return new Span(start, Time.cloneAndAdd(start, Calendar.SECOND, span.getWidth())); }
public Span handle(List<Token> tokens, Options options) { int month = tokens.get(0).getTag(RepeaterMonthName.class).getType().ordinal(); int year = tokens.get(1).getTag(ScalarYear.class).getType().intValue(); Span span; try { Calendar start = Time.construct(year, month); Calendar end = Time.cloneAndAdd(start, Calendar.MONTH, 1); span = new Span(start, end); } catch (IllegalArgumentException e) { if (options.isDebug()) { e.printStackTrace(System.out); } span = null; } return span; }
public Span handle(List<Token> tokens, Span outerSpan, Options options) { Repeater<?> repeater = tokens.get(1).getTag(Repeater.class); repeater.setStart(Time.cloneAndAdd(outerSpan.getBeginCalendar(), Calendar.SECOND, -1)); Integer ordinalValue = tokens.get(0).getTag(Ordinal.class).getType(); Span span = null; for (int i = 0; i < ordinalValue.intValue(); i++) { span = repeater.nextSpan(Pointer.PointerType.FUTURE); if (span.getBegin() > outerSpan.getEnd()) { span = null; break; } } return span; } }
@Override protected Span _thisSpan(PointerType pointer) { Calendar hourStart; Calendar hourEnd; if (pointer == PointerType.FUTURE) { hourStart = Time.cloneAndAdd(Time.ymdhm(getNow()), Calendar.MINUTE, 1); hourEnd = Time.cloneAndAdd(Time.ymdh(getNow()), Calendar.HOUR, 1); } else if (pointer == PointerType.PAST) { hourStart = Time.ymdh(getNow()); hourEnd = Time.ymdhm(getNow()); } else if (pointer == PointerType.NONE) { hourStart = Time.ymdh(getNow()); hourEnd = Time.cloneAndAdd(hourStart, Calendar.HOUR, 1); } else { throw new IllegalArgumentException("Unable to handle pointer " + pointer + "."); } return new Span(hourStart, hourEnd); }
@Override protected Span _thisSpan(PointerType pointer) { Calendar yearStart; Calendar yearEnd; if (pointer == PointerType.FUTURE) { yearStart = Time.cloneAndAdd(Time.ymd(getNow()), Calendar.DAY_OF_MONTH, 1); yearEnd = Time.cloneAndAdd(Time.yJan1(getNow()), Calendar.YEAR, 1); } else if (pointer == PointerType.PAST) { yearStart = Time.yJan1(getNow()); yearEnd = Time.ymd(getNow()); } else if (pointer == PointerType.NONE) { yearStart = Time.yJan1(getNow()); yearEnd = Time.cloneAndAdd(Time.yJan1(getNow()), Calendar.YEAR, 1); } else { throw new IllegalArgumentException("Unable to handle pointer " + pointer + "."); } return new Span(yearStart, yearEnd); }
@Override protected Span _thisSpan(PointerType pointer) { Calendar monthStart; Calendar monthEnd; if (pointer == PointerType.FUTURE) { monthStart = Time.cloneAndAdd(Time.ymd(getNow()), Calendar.DAY_OF_MONTH, 1); monthEnd = Time.cloneAndAdd(Time.ym(getNow()), Calendar.MONTH, 1); } else if (pointer == PointerType.PAST) { monthStart = Time.ym(getNow()); monthEnd = Time.ymd(getNow()); } else if (pointer == PointerType.NONE) { monthStart = Time.ym(getNow()); monthEnd = Time.cloneAndAdd(Time.ym(getNow()), Calendar.MONTH, 1); } else { throw new IllegalArgumentException("Unable to handle pointer " + pointer + "."); } return new Span(monthStart, monthEnd); }
@Override protected Span _thisSpan(PointerType pointer) { Calendar dayBegin; Calendar dayEnd; if (pointer == PointerType.FUTURE) { dayBegin = Time.cloneAndAdd(Time.ymdh(getNow()), Calendar.HOUR, 1); dayEnd = Time.cloneAndAdd(Time.ymd(getNow()), Calendar.DAY_OF_MONTH, 1); } else if (pointer == PointerType.PAST) { dayBegin = Time.ymd(getNow()); dayEnd = Time.ymdh(getNow()); } else if (pointer == PointerType.NONE) { dayBegin = Time.ymd(getNow()); dayEnd = Time.cloneAndAdd(Time.ymdh(getNow()), Calendar.DAY_OF_MONTH, 1); } else { throw new IllegalArgumentException("Unable to handle pointer " + pointer + "."); } return new Span(dayBegin, dayEnd); }
@Override protected Span _thisSpan(PointerType pointer) { Span thisSpan; if (pointer == Pointer.PointerType.FUTURE || pointer == Pointer.PointerType.NONE) { RepeaterDayName saturdayRepeater = new RepeaterDayName(RepeaterDayName.DayName.SATURDAY); saturdayRepeater.setStart((Calendar) getNow().clone()); Span thisSaturdaySpan = saturdayRepeater.nextSpan(Pointer.PointerType.FUTURE); thisSpan = new Span(thisSaturdaySpan.getBeginCalendar(), Time.cloneAndAdd(thisSaturdaySpan.getBeginCalendar(), Calendar.SECOND, RepeaterWeekend.WEEKEND_SECONDS)); } else if (pointer == Pointer.PointerType.PAST) { RepeaterDayName saturdayRepeater = new RepeaterDayName(RepeaterDayName.DayName.SATURDAY); saturdayRepeater.setStart((Calendar) getNow().clone()); Span lastSaturdaySpan = saturdayRepeater.nextSpan(Pointer.PointerType.PAST); thisSpan = new Span(lastSaturdaySpan.getBeginCalendar(), Time.cloneAndAdd(lastSaturdaySpan.getBeginCalendar(), Calendar.SECOND, RepeaterWeekend.WEEKEND_SECONDS)); } else { throw new IllegalArgumentException("Unable to handle pointer " + pointer + "."); } return thisSpan; }
@Override protected Span _thisSpan(PointerType pointer) { Calendar minuteBegin; Calendar minuteEnd; if (pointer == Pointer.PointerType.FUTURE) { minuteBegin = getNow(); minuteEnd = Time.ymdhm(getNow()); } else if (pointer == Pointer.PointerType.PAST) { minuteBegin = Time.ymdhm(getNow()); minuteEnd = getNow(); } else if (pointer == Pointer.PointerType.NONE) { minuteBegin = Time.ymdhm(getNow()); minuteEnd = Time.cloneAndAdd(Time.ymdhm(getNow()), Calendar.SECOND, RepeaterMinute.MINUTE_SECONDS); } else { throw new IllegalArgumentException("Unable to handle pointer " + pointer + "."); } return new Span(minuteBegin, minuteEnd); }