protected static Map<String,String> fixOutlookRecurrenceQuirks(Map<String,String> params) { return CalendarRecurrenceHelper.fixOutlookRecurrenceQuirks(params); } }
private static void addMonthToFirstDayOfWeek(Calendar c, int dayOfWeek, int monthInterval) { // Go forward to the 1st of next month addMonthToDayOfMonth(c, 1, monthInterval); // Set the day of the week toDayOfWeekInMonth(c, dayOfWeek, 1); }
/** * Returns the parsed calendar recurrence rule * WARNING - Alfresco use only. Return type will likely shift to * a real object in the near future */ public static Map<String,String> extractRecurrenceRule(CalendarEntry entry) { return extractRecurrenceRule(entry.getRecurrenceRule()); }
Map<String,String> params = extractRecurrenceRule(recurrenceRule); params = fixOutlookRecurrenceQuirks(params); buildDailyRecurrences(currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval); buildWeeklyRecurrences(currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval); buildMonthlyRecurrences(currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval); buildYearlyRecurrences(currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval);
addMonthToDayOfMonth(currentDate, dayOfMonth, monthInterval); addMonthToDayOfMonth(currentDate, dayOfMonth, monthInterval); currentEventEnd = new Date(currentDate.getTimeInMillis() + duration); addMonthToDayOfMonth(currentDate, dayOfMonth, monthInterval); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); Date currentEventEnd = new Date(currentDate.getTimeInMillis() + duration); addMonthToFirstDayOfWeek(currentDate, dayOfWeek, monthInterval); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); currentEventEnd = new Date(currentDate.getTimeInMillis() + duration); addMonthToFirstDayOfWeek(currentDate, dayOfWeek, monthInterval); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); currentEventEnd = new Date(currentDate.getTimeInMillis() + duration); addMonthToFirstDayOfWeek(currentDate, dayOfWeek, monthInterval); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); buildWeekdayAndWeekEndRecurence(currentDate, dates, params, until, monthInterval);
buildWeekdayAndWeekEndRecurence(currentDate, dates, params, until, intervalInMonths); currentDate.set(Calendar.MONTH, month); currentDate.set(Calendar.DAY_OF_MONTH, 1); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); Date thisYear = currentDate.getTime(); currentDate.setTime(origDate); currentDate.set(Calendar.MONTH, month); currentDate.set(Calendar.DAY_OF_MONTH, 1); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); currentDate.set(Calendar.MONTH, month); currentDate.set(Calendar.DAY_OF_MONTH, 1); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); currentEventEnd = new Date(currentDate.getTimeInMillis() + duration); currentDate.set(Calendar.MONTH, month); currentDate.set(Calendar.DAY_OF_MONTH, 1); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth);
protected static void buildDailyRecurrences(Calendar currentDate, long duration, List<Date> dates, Map<String,String> params, Date onOrAfter, Date until, boolean firstOnly, int interval) { CalendarRecurrenceHelper.buildDailyRecurrences( currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval); }
protected static void buildWeeklyRecurrences(Calendar currentDate, long duration, List<Date> dates, Map<String,String> params, Date onOrAfter, Date until, boolean firstOnly, int interval) { CalendarRecurrenceHelper.buildWeeklyRecurrences( currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval); }
protected static void buildMonthlyRecurrences(Calendar currentDate, long duration, List<Date> dates, Map<String,String> params, Date onOrAfter, Date until, boolean firstOnly, int interval) { CalendarRecurrenceHelper.buildMonthlyRecurrences( currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval); }
protected static void buildYearlyRecurrences(Calendar currentDate, long duration, List<Date> dates, Map<String,String> params, Date onOrAfter, Date until, boolean firstOnly, int interval) { CalendarRecurrenceHelper.buildYearlyRecurrences( currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval); }
buildParams(params, days); buildParams(params, days);
Map<String,String> params = extractRecurrenceRule(recurrenceRule); params = fixOutlookRecurrenceQuirks(params); buildDailyRecurrences(currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval); buildWeeklyRecurrences(currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval); buildMonthlyRecurrences(currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval); buildYearlyRecurrences(currentDate, duration, dates, params, onOrAfter, until, firstOnly, interval);
addMonthToDayOfMonth(currentDate, dayOfMonth, monthInterval); addMonthToDayOfMonth(currentDate, dayOfMonth, monthInterval); currentEventEnd = new Date(currentDate.getTimeInMillis() + duration); addMonthToDayOfMonth(currentDate, dayOfMonth, monthInterval); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); Date currentEventEnd = new Date(currentDate.getTimeInMillis() + duration); addMonthToFirstDayOfWeek(currentDate, dayOfWeek, monthInterval); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); currentEventEnd = new Date(currentDate.getTimeInMillis() + duration); addMonthToFirstDayOfWeek(currentDate, dayOfWeek, monthInterval); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); currentEventEnd = new Date(currentDate.getTimeInMillis() + duration); addMonthToFirstDayOfWeek(currentDate, dayOfWeek, monthInterval); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); buildWeekdayAndWeekEndRecurence(currentDate, dates, params, until, monthInterval);
buildWeekdayAndWeekEndRecurence(currentDate, dates, params, until, intervalInMonths); currentDate.set(Calendar.MONTH, month); currentDate.set(Calendar.DAY_OF_MONTH, 1); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); Date thisYear = currentDate.getTime(); currentDate.setTime(origDate); currentDate.set(Calendar.MONTH, month); currentDate.set(Calendar.DAY_OF_MONTH, 1); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); currentDate.set(Calendar.MONTH, month); currentDate.set(Calendar.DAY_OF_MONTH, 1); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth); currentEventEnd = new Date(currentDate.getTimeInMillis() + duration); currentDate.set(Calendar.MONTH, month); currentDate.set(Calendar.DAY_OF_MONTH, 1); toDayOfWeekInMonth(currentDate, dayOfWeek, instanceInMonth);
buildParams(params, days); buildParams(params, days);
/** * ALF-18928: Yearly recurring event specified incorrectly (as monthly) by outlook. */ @Test public void fixOutlookRecurrenceQuirks_MonthlyRecurrenceThatShouldBeYearly() { Map<String, String> in = Params.fromKVPs("BYMONTHDAY=25", "FREQ=MONTHLY", "INTERVAL=24", "BYMONTH=7"); Map<String, String> out = CalendarRecurrenceHelper.fixOutlookRecurrenceQuirks(Params.fromMap(in)); // A yearly recurring event that has been incorrectly specified as monthly, is fixed up. // Note FREQ and INTERVAL have been corrected. assertEquals(Params.fromKVPs("BYMONTHDAY=25", "FREQ=YEARLY", "INTERVAL=2", "BYMONTH=7"), out); }
private static void addMonthToFirstDayOfWeek(Calendar c, int dayOfWeek, int monthInterval) { // Go forward to the 1st of next month addMonthToDayOfMonth(c, 1, monthInterval); // Set the day of the week toDayOfWeekInMonth(c, dayOfWeek, 1); }
/** * Returns the parsed calendar recurrence rule * WARNING - Alfresco use only. Return type will likely shift to * a real object in the near future */ public static Map<String,String> extractRecurrenceRule(CalendarEntry entry) { return extractRecurrenceRule(entry.getRecurrenceRule()); }
@Test public void fixOutLookRecurrenceQuirks_weekdayRecurrenceRule() { Map<String, String> recurrenceRule = Params.fromKVPs("FREQ=MONTHLY", "BYDAY=MO,TU,WE,TH,FR", "INTERVAL=1", "BYSETPOS=1"); Map<String, String> fixedRecurrenceRule = CalendarRecurrenceHelper.fixOutlookRecurrenceQuirks(Params.fromMap(recurrenceRule)); assertEquals(null, fixedRecurrenceRule.get("BYDAY")); assertEquals(null, fixedRecurrenceRule.get("BYSETPOS")); assertEquals("1", fixedRecurrenceRule.get("BYWEEKDAY")); assertEquals("MO,TU,WE,TH,FR", fixedRecurrenceRule.get("WEEKDAYS")); }
@Test public void fixOutLookRecurrenceQuirks_weekendDayRecurrenceRule() { Map<String, String> recurrenceRule = Params.fromKVPs("FREQ=MONTHLY", "BYDAY=SU,SA", "INTERVAL=1", "BYSETPOS=1"); Map<String, String> fixedRecurrenceRule = CalendarRecurrenceHelper.fixOutlookRecurrenceQuirks(Params.fromMap(recurrenceRule)); assertEquals(null, fixedRecurrenceRule.get("BYDAY")); assertEquals(null, fixedRecurrenceRule.get("BYSETPOS")); assertEquals("1", fixedRecurrenceRule.get("BYWEEKENDDAY")); assertEquals("SU,SA", fixedRecurrenceRule.get("WEEKENDS")); }