@Override public DateList transform(DateList dates) { if (hourList.isEmpty()) { return dates; } final DateList hourlyDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (EnumSet.of(DAILY, WEEKLY, MONTHLY, YEARLY).contains(getFrequency())) { hourlyDates.addAll(new ExpansionFilter(hourlyDates.getType()).apply(date)); } else { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { hourlyDates.add(limit.get()); } } } return hourlyDates; }
@Override public DateList transform(DateList dates) { // return if no SETPOS rules specified.. if (setPosList.isEmpty()) { return dates; } // sort the list before processing.. Collections.sort(dates); final DateList setPosDates = Dates.getDateListInstance(dates); final int size = dates.size(); for (final Integer setPos : setPosList) { final int pos = setPos; if (pos > 0 && pos <= size) { setPosDates.add(dates.get(pos - 1)); } else if (pos < 0 && pos >= -size) { setPosDates.add(dates.get(size + pos)); } } return setPosDates; } }
@Override public DateList transform(DateList dates) { if (hourList.isEmpty()) { return dates; } final DateList hourlyDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (EnumSet.of(DAILY, WEEKLY, MONTHLY, YEARLY).contains(getFrequency())) { hourlyDates.addAll(new ExpansionFilter(hourlyDates.getType()).apply(date)); } else { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { hourlyDates.add(limit.get()); } } } return hourlyDates; }
@Override public DateList transform(DateList dates) { // return if no SETPOS rules specified.. if (setPosList.isEmpty()) { return dates; } // sort the list before processing.. Collections.sort(dates); final DateList setPosDates = Dates.getDateListInstance(dates); final int size = dates.size(); for (final Integer setPos : setPosList) { final int pos = setPos; if (pos > 0 && pos <= size) { setPosDates.add(dates.get(pos - 1)); } else if (pos < 0 && pos >= -size) { setPosDates.add(dates.get(size + pos)); } } return setPosDates; } }
@Override public DateList transform(DateList dates) { if (monthDayList.isEmpty()) { return dates; } final DateList monthDayDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (EnumSet.of(MONTHLY, YEARLY).contains(getFrequency())) { monthDayDates.addAll(new ExpansionFilter(monthDayDates.getType()).apply(date)); } else { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { monthDayDates.add(limit.get()); } } } return monthDayDates; }
/** * Applies BYSECOND rules specified in this Recur instance to the specified date list. If no BYSECOND rules are * specified the date list is returned unmodified. * @param dates * @return */ private DateList getSecondVariants(final DateList dates) { if (getSecondList().isEmpty()) { return dates; } final DateList secondlyDates = getDateListInstance(dates); for (final Iterator i = dates.iterator(); i.hasNext();) { final Date date = (Date) i.next(); final Calendar cal = getCalendarInstance(date, true); for (final Iterator j = getSecondList().iterator(); j.hasNext();) { final Integer second = (Integer) j.next(); cal.set(Calendar.SECOND, second.intValue()); secondlyDates.add(Dates.getInstance(cal.getTime(), secondlyDates.getType())); } } return secondlyDates; }
@Override public DateList transform(DateList dates) { if (minuteList.isEmpty()) { return dates; } final DateList minutelyDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (EnumSet.of(HOURLY, DAILY, WEEKLY, MONTHLY, YEARLY).contains(getFrequency())) { minutelyDates.addAll(new ExpansionFilter(minutelyDates.getType()).apply(date)); } else { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { minutelyDates.add(limit.get()); } } } return minutelyDates; }
/** * Applies BYWEEKNO rules specified in this Recur instance to the specified date list. If no BYWEEKNO rules are * specified the date list is returned unmodified. * @param dates * @return */ private DateList getWeekNoVariants(final DateList dates) { if (getWeekNoList().isEmpty()) { return dates; } final DateList weekNoDates = getDateListInstance(dates); for (final Iterator i = dates.iterator(); i.hasNext();) { final Date date = (Date) i.next(); final Calendar cal = getCalendarInstance(date, true); for (final Iterator j = getWeekNoList().iterator(); j.hasNext();) { final Integer weekNo = (Integer) j.next(); cal.set(Calendar.WEEK_OF_YEAR, Dates.getAbsWeekNo(cal.getTime(), weekNo.intValue())); weekNoDates.add(Dates.getInstance(cal.getTime(), weekNoDates.getType())); } } return weekNoDates; }
@Override public DateList transform(DateList dates) { if (monthDayList.isEmpty()) { return dates; } final DateList monthDayDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (EnumSet.of(MONTHLY, YEARLY).contains(getFrequency())) { monthDayDates.addAll(new ExpansionFilter(monthDayDates.getType()).apply(date)); } else { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { monthDayDates.add(limit.get()); } } } return monthDayDates; }
/** * Applies BYWEEKNO rules specified in this Recur instance to the specified date list. If no BYWEEKNO rules are * specified the date list is returned unmodified. * * @param dates * @return */ private DateList getWeekNoVariants(final DateList dates) { if (getWeekNoList().isEmpty()) { return dates; } final DateList weekNoDates = getDateListInstance(dates); for (final Date date : dates) { final Calendar cal = getCalendarInstance(date, true); for (final Integer weekNo : getWeekNoList()) { cal.set(Calendar.WEEK_OF_YEAR, Dates.getAbsWeekNo(cal.getTime(), weekNo)); weekNoDates.add(Dates.getInstance(cal.getTime(), weekNoDates.getType())); } } return weekNoDates; }
@Override public DateList transform(DateList dates) { if (minuteList.isEmpty()) { return dates; } final DateList minutelyDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (EnumSet.of(HOURLY, DAILY, WEEKLY, MONTHLY, YEARLY).contains(getFrequency())) { minutelyDates.addAll(new ExpansionFilter(minutelyDates.getType()).apply(date)); } else { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { minutelyDates.add(limit.get()); } } } return minutelyDates; }
/** * Applies BYYEARDAY rules specified in this Recur instance to the specified date list. If no BYYEARDAY rules are * specified the date list is returned unmodified. * * @param dates * @return */ private DateList getYearDayVariants(final DateList dates) { if (getYearDayList().isEmpty()) { return dates; } final DateList yearDayDates = getDateListInstance(dates); for (final Date date : dates) { final Calendar cal = getCalendarInstance(date, true); for (final Integer yearDay : getYearDayList()) { cal.set(Calendar.DAY_OF_YEAR, Dates.getAbsYearDay(cal.getTime(), yearDay)); yearDayDates.add(Dates.getInstance(cal.getTime(), yearDayDates.getType())); } } return yearDayDates; }
@Override public DateList transform(DateList dates) { if (yearDayList.isEmpty()) { return dates; } final DateList yearDayDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (getFrequency() == YEARLY) { yearDayDates.addAll(new ExpansionFilter(yearDayDates.getType()).apply(date)); } else { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { yearDayDates.add(limit.get()); } } } return yearDayDates; }
/** * Applies BYMINUTE rules specified in this Recur instance to the specified date list. If no BYMINUTE rules are * specified the date list is returned unmodified. * * @param dates * @return */ private DateList getMinuteVariants(final DateList dates) { if (getMinuteList().isEmpty()) { return dates; } final DateList minutelyDates = getDateListInstance(dates); for (final Date date : dates) { final Calendar cal = getCalendarInstance(date, true); for (final Integer minute : getMinuteList()) { cal.set(Calendar.MINUTE, minute); minutelyDates.add(Dates.getInstance(cal.getTime(), minutelyDates.getType())); } } return minutelyDates; }
@Override public DateList transform(DateList dates) { if (monthList.isEmpty()) { return dates; } final DateList monthlyDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (getFrequency() == Frequency.YEARLY) { monthlyDates.addAll(new ExpansionFilter(monthlyDates.getType()).apply(date)); } else { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { monthlyDates.add(limit.get()); } } } return monthlyDates; }
/** * Applies BYSECOND rules specified in this Recur instance to the specified date list. If no BYSECOND rules are * specified the date list is returned unmodified. * * @param dates * @return */ private DateList getSecondVariants(final DateList dates) { if (getSecondList().isEmpty()) { return dates; } final DateList secondlyDates = getDateListInstance(dates); for (final Date date : dates) { final Calendar cal = getCalendarInstance(date, true); for (final Integer second : getSecondList()) { cal.set(Calendar.SECOND, second); secondlyDates.add(Dates.getInstance(cal.getTime(), secondlyDates.getType())); } } return secondlyDates; }
@Override public DateList transform(DateList dates) { if (secondList.isEmpty()) { return dates; } final DateList secondlyDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (getFrequency() == Frequency.SECONDLY) { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { secondlyDates.add(limit.get()); } } else { secondlyDates.addAll(new ExpansionFilter(secondlyDates.getType()).apply(date)); } } return secondlyDates; }
@Override public DateList transform(DateList dates) { if (secondList.isEmpty()) { return dates; } final DateList secondlyDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (getFrequency() == Frequency.SECONDLY) { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { secondlyDates.add(limit.get()); } } else { secondlyDates.addAll(new ExpansionFilter(secondlyDates.getType()).apply(date)); } } return secondlyDates; }
@Override public DateList transform(DateList dates) { if (yearDayList.isEmpty()) { return dates; } final DateList yearDayDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (getFrequency() == YEARLY) { yearDayDates.addAll(new ExpansionFilter(yearDayDates.getType()).apply(date)); } else { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { yearDayDates.add(limit.get()); } } } return yearDayDates; }
@Override public DateList transform(DateList dates) { if (monthList.isEmpty()) { return dates; } final DateList monthlyDates = Dates.getDateListInstance(dates); for (final Date date : dates) { if (getFrequency() == Frequency.YEARLY) { monthlyDates.addAll(new ExpansionFilter(monthlyDates.getType()).apply(date)); } else { Optional<Date> limit = new LimitFilter().apply(date); if (limit.isPresent()) { monthlyDates.add(limit.get()); } } } return monthlyDates; }