if (event.getRecurrenceExDate() != null && event.getRecurrenceExDate().length() > 7) { String[] exDateSplit = event.getRecurrenceExDate().split(","); for (int i = 0; i < exDateSplit.length - 1; i++) { Date date = ICal4JUtils.parseICalDateString(exDateSplit[i], timezone);
public void persist(final boolean ignoreWarnings) { for (EventHandle eventHandle : singleEventHandles) { this.persist(eventHandle, ignoreWarnings); } // TODO improve handling of recurring events!!!! for (RecurringEventHandle eventHandle : recurringHandles.values()) { TeamEventDO recurringEvent = eventHandle.getEvent(); for (EventHandle additionalEvent : eventHandle.getRelatedEvents()) { this.persist(additionalEvent, ignoreWarnings); // TODO remove this after handling of recurring is fixed! if (recurringEvent != null) { String exDates = recurringEvent.getRecurrenceExDate(); if (exDates != null && exDates.length() > 4) { exDates += ","; } else { exDates = ""; } recurringEvent.setRecurrenceExDate(exDates + additionalEvent.getEvent().getRecurrenceReferenceId()); } } // check if main recurring event is present if (recurringEvent != null) { this.persist(eventHandle, ignoreWarnings); } } }
@Override public boolean toVEvent(final TeamEventDO event, final VEvent vEvent) { if (event.hasRecurrence() == false || event.getRecurrenceExDate() == null) { return false; } final List<Date> exDates = ICal4JUtils.parseCSVDatesAsICal4jDates(event.getRecurrenceExDate(), (false == event.isAllDay()), ICal4JUtils.getUTCTimeZone()); if (CollectionUtils.isEmpty(exDates)) { return false; } for (final Date date : exDates) { final DateList dateList; if (event.isAllDay() == true) { dateList = new DateList(Value.DATE); } else { dateList = new DateList(); dateList.setUtc(true); } dateList.add(date); ExDate exDate; exDate = new ExDate(dateList); vEvent.getProperties().add(exDate); } return true; }
final List<Date> exDates = ICal4JUtils.parseCSVDatesAsJavaUtilDates(event.getRecurrenceExDate(), DateHelper.UTC);
Assert.assertNull(event.getRecurrenceExDate());
Assert.assertEquals(eventExtracted.getRecurrenceExDate(), eventSrc.getRecurrenceExDate()); } else { throw new RuntimeException("Unknown field " + field); Assert.assertNull(eventExtracted.getRecurrenceExDate()); } else { throw new RuntimeException("Unknown field " + field);
+ DateHelper.formatAsUTC(eventOfCaller.getStartDate()) + ". The new string is: " + masterEvent.getRecurrenceExDate()); log.debug("The new event is: " + newEvent);
diff.lastEmail = computeFieldDiff(diff, TeamEventField.LAST_MAIL, fieldFilter, eventNewState.getLastEmail(), eventOldState.getLastEmail()); diff.recurrenceExDate = computeFieldDiff(diff, TeamEventField.RECURRENCE_EX_DATES, fieldFilter, eventNewState.getRecurrenceExDate(), eventOldState.getRecurrenceExDate()); diff.recurrenceRule = computeFieldDiff(diff, TeamEventField.RECURRENCE_RULE, fieldFilter, eventNewState.getRecurrenceRule(), eventOldState.getRecurrenceRule());
Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals(null, event.getRecurrenceReferenceId()); Assert.assertEquals("20170822T140000", event.getRecurrenceExDate()); Assert.assertEquals(null, event.getRecurrenceReferenceId()); Assert.assertEquals("20170822T140000,20170824T140000", event.getRecurrenceExDate()); Assert.assertEquals(null, event.getRecurrenceReferenceId()); Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals("20170824T140000", event.getRecurrenceReferenceId());
Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals(null, event.getRecurrenceReferenceId()); Assert.assertEquals("20170819T111500", event.getRecurrenceExDate()); Assert.assertEquals(null, event.getRecurrenceReferenceId()); Assert.assertEquals("20170819T111500,20170820T111500", event.getRecurrenceExDate()); Assert.assertEquals(null, event.getRecurrenceReferenceId()); Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals("20170820T111500", event.getRecurrenceReferenceId());
Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals(null, event.getRecurrenceReferenceId()); Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals("20170706T124500", event.getRecurrenceReferenceId()); Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals("20170706T124500", event.getRecurrenceReferenceId()); Assert.assertEquals("20170706T124500", event.getRecurrenceExDate()); Assert.assertEquals(null, event.getRecurrenceReferenceId());
private void copyFields(final CalendarEventObject event, final TeamEventDO src) { event.setCalendarId(src.getCalendarId()); event.setRecurrenceRule(src.getRecurrenceRule()); event.setRecurrenceExDate(src.getRecurrenceExDate()); event.setRecurrenceUntil(src.getRecurrenceUntil()); DOConverter.copyFields(event, src); event.setLastUpdate(src.getDtStamp()); if (src.getReminderActionType() != null && src.getReminderDuration() != null && src.getReminderDurationUnit() != null) { event.setReminderType(src.getReminderActionType().toString()); event.setReminderDuration(src.getReminderDuration()); final ReminderDurationUnit unit = src.getReminderDurationUnit(); event.setReminderUnit(unit.toString()); final DateHolder date = new DateHolder(src.getStartDate()); if (unit == ReminderDurationUnit.MINUTES) { date.add(Calendar.MINUTE, -src.getReminderDuration()); event.setReminder(date.getDate()); } else if (unit == ReminderDurationUnit.HOURS) { date.add(Calendar.HOUR, -src.getReminderDuration()); event.setReminder(date.getDate()); } else if (unit == ReminderDurationUnit.DAYS) { date.add(Calendar.DAY_OF_YEAR, -src.getReminderDuration()); event.setReminder(date.getDate()); } else { log.warn("ReminderDurationUnit '" + src.getReminderDurationUnit() + "' not yet implemented."); } } }