private boolean preCheckSendMail(final TeamEventDO event) { // check event ownership if (event.isOwnership() != null && event.isOwnership() == false) { return false; } // check date, send mails for future events only final Date now = new Date(); if (event.getStartDate().after(now)) { return true; } // No recurrence so event is in the past if (event.getRecurrenceRule() == null) { return false; } // Check rrule to see if an until date exists try { final RRule rRule = new RRule(event.getRecurrenceRule()); final net.fortuna.ical4j.model.Date until = rRule.getRecur().getUntil(); if (until == null) { return true; } final Date untilDate = new Date(until.getTime()); return untilDate.before(now) == false; } catch (ParseException e) { return false; } }
private void testRRule(final TimeZone timeZone) { TeamEventDO event = createEvent(timeZone, "2012-12-21 8:30", "2012-12-21 9:00", null, 1, null, null); assertNull(event.getRecurrenceObject()); event = createEvent(timeZone, "2012-12-21 8:30", "2012-12-21 9:00", RecurrenceFrequency.WEEKLY, 1, null, null); assertEquals("FREQ=WEEKLY;INTERVAL=1", event.getRecurrenceRule()); Collection<TeamEvent> events = getRecurrenceEvents("2012-12-01", "2013-01-31", timeZone, event); assertEvents(events, timeZone, "2012-12-21 08:30", "2012-12-28 08:30", "2013-01-04 08:30", "2013-01-11 08:30", "2013-01-18 08:30", "2013-01-25 08:30"); String untilInTimeZone = "2013-01-31"; if (timeZone.getRawOffset() < 0) { untilInTimeZone = "2013-02-01"; } event = createEvent(timeZone, "2012-12-21 18:30", "2012-12-22 9:00", RecurrenceFrequency.WEEKLY, 2, "2013-01-31", untilInTimeZone); RRule rRule = event.getRecurrenceRuleObject(); final String utcString = DateHelper.formatIsoDate(rRule.getRecur().getUntil(), DateHelper.UTC); assertEquals("WEEKLY", rRule.getRecur().getFrequency()); assertEquals(untilInTimeZone, utcString); assertEquals(2, rRule.getRecur().getInterval()); events = getRecurrenceEvents("2012-12-01", "2013-03-31", timeZone, event); assertEvents(events, timeZone, "2012-12-21 18:30", "2013-01-04 18:30", "2013-01-18 18:30"); assertTrue(events.iterator().next() instanceof TeamEventDO); }
if (event.hasRecurrence()) { try { rRule = new RRule(event.getRecurrenceRule()); } catch (ParseException e) { e.printStackTrace();
if (event.getRecurrenceRule() == null && event.getRecurrenceReferenceId() == null) {
if (event.getStartDate().getTime() < timeInPast.getTime() && event.getRecurrenceRule() == null) { continue;
Assert.assertEquals(eventExtracted.getRecurrenceRule(), eventSrc.getRecurrenceRule()); Assert.assertEquals(eventExtracted.getRecurrenceDate(), eventSrc.getRecurrenceDate()); } else if (VEVENT_RECURRENCE_ID.equals(field)) { Assert.assertNull(eventExtracted.getAttendees()); } else if (VEVENT_RRULE.equals(field)) { Assert.assertNull(eventExtracted.getRecurrenceRule()); Assert.assertNull(eventExtracted.getRecurrenceDate()); } else if (VEVENT_RECURRENCE_ID.equals(field)) {
/** * @see org.projectforge.web.core.importstorage.AbstractImportStoragePanel#addColumns(org.apache.wicket.markup.repeater.RepeatingView, * org.projectforge.framework.persistence.utils.ImportedElement) */ @Override protected void addColumns(final RepeatingView cellRepeater, final ImportedElement<?> element, final String style) { final TeamEventDO event = (TeamEventDO) element.getValue(); addCell(cellRepeater, event.getSubject(), style); addCell(cellRepeater, event.getLocation(), style); addCell(cellRepeater, String.valueOf(event.isAllDay()), style); addCell(cellRepeater, DateTimeFormatter.instance().getFormattedDateTime(event.getStartDate()), style); addCell(cellRepeater, DateTimeFormatter.instance().getFormattedDateTime(event.getEndDate()), style); addCell(cellRepeater, event.getNote(), style); addCell(cellRepeater, event.getRecurrenceRule(), style); addCell(cellRepeater, DateTimeFormatter.instance().getFormattedDate(event.getRecurrenceUntil()), style); } }
diff.recurrenceRule = computeFieldDiff(diff, TeamEventField.RECURRENCE_RULE, fieldFilter, eventNewState.getRecurrenceRule(), eventOldState.getRecurrenceRule()); diff.recurrenceReferenceDate = computeFieldDiff(diff, TeamEventField.RECURRENCE_REFERENCE_DATE, fieldFilter, eventNewState.getRecurrenceDate(), eventOldState.getRecurrenceDate());
Assert.assertEquals(0, event.getAttendees().size()); Assert.assertEquals("FREQ=DAILY;INTERVAL=1", event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals(0, event.getAttendees().size()); Assert.assertEquals("FREQ=DAILY;INTERVAL=1", event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals("20170822T140000", event.getRecurrenceExDate()); Assert.assertEquals(0, event.getAttendees().size()); Assert.assertEquals("FREQ=DAILY;INTERVAL=1", event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals("20170822T140000,20170824T140000", event.getRecurrenceExDate()); Assert.assertEquals(0, event.getAttendees().size()); Assert.assertEquals(null, event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals(null, event.getRecurrenceExDate());
Assert.assertEquals(0, event.getAttendees().size()); Assert.assertEquals("FREQ=DAILY", event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals(0, event.getAttendees().size()); Assert.assertEquals("FREQ=DAILY", event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals("20170819T111500", event.getRecurrenceExDate()); Assert.assertEquals(0, event.getAttendees().size()); Assert.assertEquals("FREQ=DAILY", event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals("20170819T111500,20170820T111500", event.getRecurrenceExDate()); Assert.assertEquals(0, event.getAttendees().size()); Assert.assertEquals(null, event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals(null, event.getRecurrenceExDate());
Assert.assertEquals("FREQ=DAILY", event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals(null, event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals(null, event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals(null, event.getRecurrenceExDate()); Assert.assertEquals("FREQ=DAILY", event.getRecurrenceRule()); Assert.assertEquals(null, event.getRecurrenceUntil()); Assert.assertEquals("20170706T124500", event.getRecurrenceExDate());
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."); } } }