@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; }
@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) { 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; }
@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; }
@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) { 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; }
@Override public DateList transform(DateList dates) { if (dayList.isEmpty()) { return dates; } final DateList weekDayDates = Dates.getDateListInstance(dates); Function<Date, List<Date>> transformer = null; switch (getFrequency()) { case WEEKLY: transformer = new WeeklyExpansionFilter(dates.getType()); break; case MONTHLY: transformer = new MonthlyExpansionFilter(dates.getType()); break; case YEARLY: transformer = new YearlyExpansionFilter(dates.getType()); break; case DAILY: default: transformer = new LimitFilter(); } for (final Date date : dates) { List<Date> transformed = transformer.apply(date); // filter by offset List<Date> filtered = new ArrayList<>(); dayList.forEach(day -> filtered.addAll(getOffsetDates(transformed.stream().filter(d -> getCalendarInstance(d, true).get(Calendar.DAY_OF_WEEK) == WeekDay.getCalendarDay(day)) .collect(Collectors.toCollection(() -> Dates.getDateListInstance(weekDayDates))), day.getOffset()))); weekDayDates.addAll(filtered); } return weekDayDates; }
@Override public DateList transform(DateList dates) { if (dayList.isEmpty()) { return dates; } final DateList weekDayDates = Dates.getDateListInstance(dates); Function<Date, List<Date>> transformer = null; switch (getFrequency()) { case WEEKLY: transformer = new WeeklyExpansionFilter(dates.getType()); break; case MONTHLY: transformer = new MonthlyExpansionFilter(dates.getType()); break; case YEARLY: transformer = new YearlyExpansionFilter(dates.getType()); break; case DAILY: default: transformer = new LimitFilter(); } for (final Date date : dates) { List<Date> transformed = transformer.apply(date); // filter by offset List<Date> filtered = new ArrayList<>(); dayList.forEach(day -> filtered.addAll(getOffsetDates(transformed.stream().filter(d -> getCalendarInstance(d, true).get(Calendar.DAY_OF_WEEK) == WeekDay.getCalendarDay(day)) .collect(Collectors.toCollection(() -> Dates.getDateListInstance(weekDayDates))), day.getOffset()))); weekDayDates.addAll(filtered); } return weekDayDates; }
@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 (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; }
@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 (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; }
public DateList getExceptionDates() { DateList dateList = null; PropertyList<ExDate> exDatesProperties = getEvent().getProperties().getProperties(Property.EXDATE); for (ExDate exdate : exDatesProperties) { if(dateList==null) { if(Value.DATE.equals(exdate.getParameter(Parameter.VALUE))) { dateList = new DateList(Value.DATE); } else { dateList = new DateList(Value.DATE_TIME, exdate.getDates().getTimeZone()); } } dateList.addAll(exdate.getDates()); } return dateList; }
public DateList getExceptionDates() { DateList dateList = null; PropertyList<ExDate> exDatesProperties = getEvent().getProperties().getProperties(Property.EXDATE); for (ExDate exdate : exDatesProperties) { if(dateList==null) { if(Value.DATE.equals(exdate.getParameter(Parameter.VALUE))) { dateList = new DateList(Value.DATE); } else { dateList = new DateList(Value.DATE_TIME, exdate.getDates().getTimeZone()); } } dateList.addAll(exdate.getDates()); } return dateList; }
public DateList getRecurrenceDates() { DateList dateList = null; VEvent event = getEvent(); if (event == null) { return null; } PropertyList<RDate> rDateProperties = getEvent().getProperties().getProperties(Property.RDATE); for (RDate rdate : rDateProperties) { if (dateList == null) { if (Value.DATE.equals(rdate.getParameter(Parameter.VALUE))) { dateList = new DateList(Value.DATE); } else { dateList = new DateList(Value.DATE_TIME, rdate.getDates().getTimeZone()); } } dateList.addAll(rdate.getDates()); } return dateList; }
public DateList getRecurrenceDates() { DateList dateList = null; VEvent event = getEvent(); if (event == null) { return null; } PropertyList<RDate> rDateProperties = getEvent().getProperties().getProperties(Property.RDATE); for (RDate rdate : rDateProperties) { if (dateList == null) { if (Value.DATE.equals(rdate.getParameter(Parameter.VALUE))) { dateList = new DateList(Value.DATE); } else { dateList = new DateList(Value.DATE_TIME, rdate.getDates().getTimeZone()); } } dateList.addAll(rdate.getDates()); } return dateList; }
/** * Applies BYDAY rules specified in this Recur instance to the specified date list. If no BYDAY rules are specified * the date list is returned unmodified. * * @param dates * @return */ private DateList getDayVariants(final DateList dates) { if (getDayList().isEmpty()) { return dates; } final DateList weekDayDates = getDateListInstance(dates); for (final Date date : dates) { for (final WeekDay weekDay : getDayList()) { // if BYYEARDAY or BYMONTHDAY is specified filter existing // list.. if (!getYearDayList().isEmpty() || !getMonthDayList().isEmpty()) { final Calendar cal = getCalendarInstance(date, true); if (weekDay.equals(WeekDay.getWeekDay(cal))) { weekDayDates.add(date); } } else { weekDayDates.addAll(getAbsWeekDays(date, dates.getType(), weekDay)); } } } return weekDayDates; }
/** * Applies BYDAY rules specified in this Recur instance to the specified date list. If no BYDAY rules are specified * the date list is returned unmodified. * * @param dates * @return */ private DateList getDayVariants(final DateList dates) { if (getDayList().isEmpty()) { return dates; } final DateList weekDayDates = getDateListInstance(dates); for (final Date date : dates) { for (final WeekDay weekDay : getDayList()) { // if BYYEARDAY or BYMONTHDAY is specified filter existing // list.. if (!getYearDayList().isEmpty() || !getMonthDayList().isEmpty()) { final Calendar cal = getCalendarInstance(date, true); if (weekDay.equals(WeekDay.getWeekDay(cal))) { weekDayDates.add(date); } } else { weekDayDates.addAll(getAbsWeekDays(date, dates.getType(), weekDay)); } } } return weekDayDates; }