Search in sources :

Example 6 with ExDate

use of net.fortuna.ical4j.model.property.ExDate in project openolat by klemens.

the class CalendarUtils method getRecurrenceExcludeDates.

/**
 * Create list with excluded dates based on the exclusion rule.
 * @param recurrenceExc
 * @return list with excluded dates
 */
public static List<Date> getRecurrenceExcludeDates(String recurrenceExc) {
    List<Date> recurExcDates = new ArrayList<>();
    if (recurrenceExc != null && !recurrenceExc.equals("")) {
        try {
            net.fortuna.ical4j.model.ParameterList pl = new net.fortuna.ical4j.model.ParameterList();
            ExDate exdate = new ExDate(pl, recurrenceExc);
            DateList dl = exdate.getDates();
            for (Object date : dl) {
                Date excDate = (Date) date;
                recurExcDates.add(excDate);
            }
        } catch (ParseException e) {
            log.error("cannot restore recurrence exceptions", e);
        }
    }
    return recurExcDates;
}
Also used : ArrayList(java.util.ArrayList) Date(java.util.Date) ExDate(net.fortuna.ical4j.model.property.ExDate) ExDate(net.fortuna.ical4j.model.property.ExDate) ParseException(java.text.ParseException) DateList(net.fortuna.ical4j.model.DateList)

Example 7 with ExDate

use of net.fortuna.ical4j.model.property.ExDate in project OpenOLAT by OpenOLAT.

the class ICalFileCalendarManager method getRecurringsInPeriod.

private final DateList getRecurringsInPeriod(Date periodStart, Date periodEnd, KalendarEvent kEvent) {
    DateList recurDates = null;
    String recurrenceRule = kEvent.getRecurrenceRule();
    if (StringHelper.containsNonWhitespace(recurrenceRule)) {
        try {
            Recur recur = new Recur(recurrenceRule);
            net.fortuna.ical4j.model.Date periodStartDate = CalendarUtils.createDate(periodStart);
            net.fortuna.ical4j.model.Date periodEndDate = CalendarUtils.createDate(periodEnd);
            net.fortuna.ical4j.model.Date eventStartDate = CalendarUtils.createDate(kEvent.getBegin());
            recurDates = recur.getDates(eventStartDate, periodStartDate, periodEndDate, Value.DATE);
        } catch (ParseException e) {
            log.error("cannot restore recurrence rule: " + recurrenceRule, e);
        }
        String recurrenceExc = kEvent.getRecurrenceExc();
        if (recurrenceExc != null && !recurrenceExc.equals("")) {
            try {
                ExDate exdate = new ExDate();
                // see OLAT-5645
                if (recurrenceExc.length() > 8) {
                    exdate.setValue(recurrenceExc);
                } else {
                    exdate.getParameters().replace(Value.DATE);
                    exdate.setValue(recurrenceExc);
                }
                for (Object date : exdate.getDates()) {
                    if (recurDates.contains(date))
                        recurDates.remove(date);
                }
            } catch (ParseException e) {
                log.error("cannot restore excluded dates for this recurrence: " + recurrenceExc, e);
            }
        }
    }
    return recurDates;
}
Also used : ExDate(net.fortuna.ical4j.model.property.ExDate) ParseException(java.text.ParseException) DateList(net.fortuna.ical4j.model.DateList) Recur(net.fortuna.ical4j.model.Recur)

Example 8 with ExDate

use of net.fortuna.ical4j.model.property.ExDate in project OpenOLAT by OpenOLAT.

the class ICalFileCalendarManager method createKalendarEventRecurringOccurence.

@Override
public KalendarEvent createKalendarEventRecurringOccurence(KalendarRecurEvent recurEvent) {
    KalendarEvent rootEvent = recurEvent.getCalendar().getEvent(recurEvent.getID(), null);
    VEvent vEvent = getVEvent(recurEvent);
    PropertyList vEventProperties = vEvent.getProperties();
    for (Iterator<?> objIt = vEventProperties.iterator(); objIt.hasNext(); ) {
        Object property = objIt.next();
        if (property instanceof RRule || property instanceof ExDate) {
            objIt.remove();
        }
    }
    try {
        Kalendar calendar = recurEvent.getCalendar();
        Date startDate = recurEvent.getOccurenceDate();
        String startString = CalendarUtils.formatRecurrenceDate(startDate, rootEvent.isAllDayEvent());
        RecurrenceId recurId;
        if (rootEvent.isAllDayEvent()) {
            recurId = new RecurrenceId(tz);
            recurId.setDate(CalendarUtils.createDate(startDate));
        } else {
            recurId = new RecurrenceId(startString, tz);
        }
        vEventProperties.add(recurId);
        KalendarEvent kEvent = getKalendarEvent(vEvent);
        kEvent.setKalendar(calendar);
        return kEvent;
    } catch (ParseException e) {
        log.error("", e);
        return null;
    }
}
Also used : VEvent(net.fortuna.ical4j.model.component.VEvent) PropertyList(net.fortuna.ical4j.model.PropertyList) RRule(net.fortuna.ical4j.model.property.RRule) Kalendar(org.olat.commons.calendar.model.Kalendar) ExDate(net.fortuna.ical4j.model.property.ExDate) KalendarEvent(org.olat.commons.calendar.model.KalendarEvent) RecurrenceId(net.fortuna.ical4j.model.property.RecurrenceId) ParseException(java.text.ParseException) Date(java.util.Date) ExDate(net.fortuna.ical4j.model.property.ExDate)

Example 9 with ExDate

use of net.fortuna.ical4j.model.property.ExDate in project OpenOLAT by OpenOLAT.

the class CalendarUtils method getRecurrenceExcludeRule.

/**
 * Create exclusion rule based on list with dates.
 * @param dates
 * @return string with exclude rule
 */
public static String getRecurrenceExcludeRule(List<Date> dates) {
    if (dates != null && dates.size() > 0) {
        DateList dl = new DateList();
        for (Date date : dates) {
            net.fortuna.ical4j.model.Date dd = CalendarUtils.createDate(date);
            dl.add(dd);
        }
        ExDate exdate = new ExDate(dl);
        return exdate.getValue();
    }
    return null;
}
Also used : ExDate(net.fortuna.ical4j.model.property.ExDate) DateList(net.fortuna.ical4j.model.DateList) Date(java.util.Date) ExDate(net.fortuna.ical4j.model.property.ExDate)

Example 10 with ExDate

use of net.fortuna.ical4j.model.property.ExDate in project OpenOLAT by OpenOLAT.

the class CalendarUtils method getRecurrenceExcludeDates.

/**
 * Create list with excluded dates based on the exclusion rule.
 * @param recurrenceExc
 * @return list with excluded dates
 */
public static List<Date> getRecurrenceExcludeDates(String recurrenceExc) {
    List<Date> recurExcDates = new ArrayList<>();
    if (recurrenceExc != null && !recurrenceExc.equals("")) {
        try {
            net.fortuna.ical4j.model.ParameterList pl = new net.fortuna.ical4j.model.ParameterList();
            ExDate exdate = new ExDate(pl, recurrenceExc);
            DateList dl = exdate.getDates();
            for (Object date : dl) {
                Date excDate = (Date) date;
                recurExcDates.add(excDate);
            }
        } catch (ParseException e) {
            log.error("cannot restore recurrence exceptions", e);
        }
    }
    return recurExcDates;
}
Also used : ArrayList(java.util.ArrayList) Date(java.util.Date) ExDate(net.fortuna.ical4j.model.property.ExDate) ExDate(net.fortuna.ical4j.model.property.ExDate) ParseException(java.text.ParseException) DateList(net.fortuna.ical4j.model.DateList)

Aggregations

ExDate (net.fortuna.ical4j.model.property.ExDate)12 ParseException (java.text.ParseException)8 Date (java.util.Date)8 DateList (net.fortuna.ical4j.model.DateList)7 PropertyList (net.fortuna.ical4j.model.PropertyList)4 Recur (net.fortuna.ical4j.model.Recur)4 VEvent (net.fortuna.ical4j.model.component.VEvent)4 RRule (net.fortuna.ical4j.model.property.RRule)4 RecurrenceId (net.fortuna.ical4j.model.property.RecurrenceId)4 DateTime (net.fortuna.ical4j.model.DateTime)3 URISyntaxException (java.net.URISyntaxException)2 ArrayList (java.util.ArrayList)2 Contact (net.fortuna.ical4j.model.property.Contact)2 Created (net.fortuna.ical4j.model.property.Created)2 Description (net.fortuna.ical4j.model.property.Description)2 DtStart (net.fortuna.ical4j.model.property.DtStart)2 LastModified (net.fortuna.ical4j.model.property.LastModified)2 Location (net.fortuna.ical4j.model.property.Location)2 Uid (net.fortuna.ical4j.model.property.Uid)2 Url (net.fortuna.ical4j.model.property.Url)2