Search in sources :

Example 16 with DtStart

use of net.fortuna.ical4j.model.property.DtStart in project bw-calendar-engine by Bedework.

the class RecurUtil method getRange.

/**
 * Returns range of dates for this recurring event possibly bounded by
 * the supplied maximum end date.
 *
 * @param ev        the recurring event
 * @param maxYears  Provide an upper limit
 * @return the range for this event
 * @throws CalFacadeException
 */
@SuppressWarnings("unchecked")
public static RecurRange getRange(final BwEvent ev, final int maxYears) throws CalFacadeException {
    PropertyList evprops = new PropertyList();
    VEventUtil.doRecurring(ev, evprops);
    RecurRange rr = new RecurRange();
    DtStart start = ev.getDtstart().makeDtStart();
    DtEnd end = ev.getDtend().makeDtEnd();
    Duration duration = new Duration(null, ev.getDuration());
    // boolean durSpecified = ev.getEndType() == BwEvent.endTypeDuration;
    rr.rangeStart = start.getDate();
    for (Object o : evprops) {
        if (o instanceof RDate) {
            RDate rd = (RDate) o;
            for (Object o1 : rd.getDates()) {
                Date d = (Date) o1;
                if (d.before(rr.rangeStart)) {
                    rr.rangeStart = d;
                }
            }
        }
    }
    /* Limit date according to system settings
     */
    Dur dur = new Dur(maxYears * 365, 0, 0, 0);
    Date maxRangeEnd = new Date(dur.getTime(rr.rangeStart));
    if (ev.getParent() != null) {
        BwDateTime pend = ev.getParent().getDtend();
        if (pend != null) {
            Date dt = pend.makeDate();
            if (dt.before(maxRangeEnd)) {
                maxRangeEnd = dt;
            }
        }
    }
    rr.rangeEnd = getLatestRecurrenceDate(evprops, start, end, duration, maxRangeEnd);
    if ((rr.rangeEnd == null) || (rr.rangeEnd.after(maxRangeEnd))) {
        rr.rangeEnd = maxRangeEnd;
    }
    return rr;
}
Also used : Dur(net.fortuna.ical4j.model.Dur) PropertyList(net.fortuna.ical4j.model.PropertyList) DtStart(net.fortuna.ical4j.model.property.DtStart) RDate(net.fortuna.ical4j.model.property.RDate) BwDateTime(org.bedework.calfacade.BwDateTime) Duration(net.fortuna.ical4j.model.property.Duration) BwDuration(org.bedework.calfacade.BwDuration) RDate(net.fortuna.ical4j.model.property.RDate) Date(net.fortuna.ical4j.model.Date) DtEnd(net.fortuna.ical4j.model.property.DtEnd)

Example 17 with DtStart

use of net.fortuna.ical4j.model.property.DtStart in project bw-calendar-engine by Bedework.

the class RecurUtil method getPeriods.

/**
 * Returns a list of instances for this recurring event possibly bounded by
 * the supplied maximum end date.
 *
 * <p>This is mostly a copy of VEvent.getConsumedTime()
 *
 * @param ev        the recurring event
 * @param maxYears  Provide an upper limit
 * @param maxInstances to limit
 * @param startRange null or set earliest
 * @param endRange null or set latest
 * @return a list of periods for this event
 * @throws CalFacadeException on error
 */
public static RecurPeriods getPeriods(final BwEvent ev, final int maxYears, final int maxInstances, final String startRange, final String endRange) throws CalFacadeException {
    final PropertyList evprops = new PropertyList();
    VEventUtil.doRecurring(ev, evprops);
    final RecurPeriods rp = new RecurPeriods();
    // DtStart vstart = (DtStart)IcalUtil.getProperty(comp, Property.DTSTART);
    /* BwDateTime evstart = ev.getDtstart();
    String tzid = evstart.getTzid();

    DtStart start = new DtStart();

    if (tzid != null) {
      start.setTimeZone(timezones.getTimeZone(tzid));
    }

    try {
      start.setValue(evstart.getDtval());
    } catch (Throwable t) {
      throw new CalFacadeException(t);
    }*/
    final DtStart start = ev.getDtstart().makeDtStart();
    if (startRange != null) {
        try {
            rp.rangeStart = new DateTime(startRange);
        } catch (final Throwable t) {
            throw new CalFacadeException(t);
        }
    } else {
        // boolean durSpecified = ev.getEndType() == BwEvent.endTypeDuration;
        rp.rangeStart = start.getDate();
        for (final Object o : evprops) {
            if (o instanceof RDate) {
                final RDate rd = (RDate) o;
                for (final Object o1 : rd.getDates()) {
                    final Date d = (Date) o1;
                    if (d.before(rp.rangeStart)) {
                        rp.rangeStart = d;
                    }
                }
            }
        }
    }
    /* Limit date according to system settings
     */
    final Dur dur = new Dur(maxYears * 365, 0, 0, 0);
    Date maxRangeEnd = new Date(dur.getTime(rp.rangeStart));
    if (ev.getParent() != null) {
        final BwDateTime pend = ev.getParent().getDtend();
        if (pend != null) {
            final Date dt = pend.makeDate();
            if (dt.before(maxRangeEnd)) {
                maxRangeEnd = dt;
            }
        }
    }
    final DtEnd end = ev.getDtend().makeDtEnd();
    if (endRange != null) {
        try {
            rp.rangeEnd = new DateTime(endRange);
        } catch (final Throwable t) {
            throw new CalFacadeException(t);
        }
    } else {
        final Duration duration = new Duration(null, ev.getDuration());
        rp.rangeEnd = getLatestRecurrenceDate(evprops, start, end, duration, maxRangeEnd);
        if ((rp.rangeEnd == null) || (rp.rangeEnd.after(maxRangeEnd))) {
            rp.rangeEnd = maxRangeEnd;
        }
    }
    Period rangePeriod = new Period(new DateTime(rp.rangeStart), new DateTime(rp.rangeEnd));
    VEvent vev = new VEvent();
    PropertyList vevprops = vev.getProperties();
    vevprops.addAll(evprops);
    if (!ev.getSuppressed()) {
        // Allow inclusion of master start/end
        vevprops.add(start);
        vevprops.add(end);
    } else {
        // Move start/end outside of our period
        Dur evdur = new Dur(ev.getDuration());
        // Ensure at least a day
        Dur setback = evdur.add(new Dur(1, 0, 0, 0));
        boolean dateOnly = ev.getDtstart().getDateType();
        Date adjustedEnd;
        if (dateOnly) {
            adjustedEnd = new Date(rp.rangeStart);
        } else {
            adjustedEnd = new DateTime(rp.rangeStart);
        }
        adjustedEnd.setTime(setback.negate().getTime(rp.rangeStart).getTime());
        vevprops.add(new DtEnd(adjustedEnd));
        // End now before range - make start evdur before that
        Date adjustedStart;
        if (dateOnly) {
            adjustedStart = new Date(adjustedEnd);
        } else {
            adjustedStart = new DateTime(adjustedEnd);
        }
        adjustedStart.setTime(evdur.negate().getTime(adjustedEnd).getTime());
        vevprops.add(new DtStart(adjustedStart));
    }
    PeriodList pl = vev.calculateRecurrenceSet(rangePeriod);
    /*
    PeriodList periods = new PeriodList();
    if (ev.getDtstart().isUTC()) {
      periods.setUtc(true);
    } else if (start.getDate() instanceof DateTime) {
      periods.setTimeZone(((DateTime)start.getDate()).getTimeZone());
    } else {
      try {
        periods.setTimeZone(Timezones.getDefaultTz());
      } catch (Throwable t) {
        throw new CalFacadeException(t);
      }
    }
    rp.instances = periods;

    // if no start date return empty list..
    if (start == null) {
      return rp;
    }
    // if an explicit event duration is not specified, derive a value for recurring
    // periods from the end date..
    Dur rDuration;
    Dur adjustDuration;
    if (duration == null) {
      if (end == null) {
        rDuration = new Dur(0);
        adjustDuration = new Dur(0, 0, 0, 1); // 1 second fudge
      } else {
        rDuration = new Dur(start.getDate(), end.getDate());
        adjustDuration = rDuration;
      }
    } else {
      rDuration = duration.getDuration();
      adjustDuration = rDuration;
    }
    // adjust range start back by duration to allow for recurrences that
    // start before the range but finish inside..
//  FIXME: See bug #1325558..
    Date adjustedRangeStart = new DateTime(rp.rangeStart);
    adjustedRangeStart.setTime(adjustDuration.negate().getTime(rp.rangeStart).getTime());

    // recurrence dates..
    PropertyList rDates = evprops.getProperties(Property.RDATE);
    for (Iterator i = rDates.iterator(); i.hasNext();) {
      RDate rdate = (RDate) i.next();

      if (Value.PERIOD.equals(rdate.getParameter(Parameter.VALUE))) {
        /* These fully define the period * /
        for (Iterator j = rdate.getPeriods().iterator(); j.hasNext();) {
          Period period = (Period) j.next();
          if (period.getStart().before(rp.rangeEnd) &&
              period.getEnd().after(rp.rangeStart)) {
            periods.add(period);
          }
        }
      } else {
        // Create a period based on rdate and duration
        DateList startDates = rdate.getDates();
        for (int j = 0; j < startDates.size(); j++) {
          Date startDate = (Date) startDates.get(j);
          periods.add(new Period(new DateTime(startDate), rDuration));
        }
      }
    }

    Value startVal = (Value)start.getParameter(Parameter.VALUE);
    if (startVal == null) {
      startVal = Value.DATE_TIME;
    }

    // recurrence rules..
    PropertyList rRules = evprops.getProperties(Property.RRULE);
    for (Iterator i = rRules.iterator(); i.hasNext();) {
      RRule rrule = (RRule) i.next();
      Recur recur = rrule.getRecur();

      // Limit nummber of instances.

      DateList startDates = recur.getDates(start.getDate(),
                                           adjustedRangeStart,
                                           rp.rangeEnd,
                                           startVal,
                                           maxInstances);
//    DateList startDates = rrule.getRecur().getDates(start.getDate(), rangeStart, rangeEnd, (Value) start.getParameters().getParameter(Parameter.VALUE));
      for (int j = 0; j < startDates.size(); j++) {
        Date startDate = (Date) startDates.get(j);
        periods.add(new Period(new DateTime(startDate), rDuration));
      }
    }

    // add initial instance if intersection with the specified period.

    if (!ev.getSuppressed()) {
      Period startPeriod = null;
      if (!durSpecified) {
        startPeriod = new Period(new DateTime(start.getDate()),
                                 new DateTime(end.getDate()));
      } else {
        startPeriod = new Period(new DateTime(start.getDate()),
                                 duration.getDuration());
      }
      if (rangePeriod.intersects(startPeriod)) {
          periods.add(startPeriod);
      }
    }

    // exception dates..
    PropertyList exDates = evprops.getProperties(Property.EXDATE);
    for (Iterator i = exDates.iterator(); i.hasNext();) {
      ExDate exDate = (ExDate) i.next();
      for (Iterator j = periods.iterator(); j.hasNext();) {
        Period period = (Period) j.next();
        DateList dl = exDate.getDates();
        // for DATE-TIME instances check for DATE-based exclusions also..
        if (dl.contains(period.getStart())) {
          j.remove();
        } else if (dl.contains(new Date(period.getStart()))) {
          j.remove();
        }
      }
    }
    // exception rules..
    // FIXME: exception rules should be consistent with exception dates (i.e. not use periods?)..
    PropertyList exRules = evprops.getProperties(Property.EXRULE);
    PeriodList exPeriods = new PeriodList();
    for (Iterator i = exRules.iterator(); i.hasNext();) {
      ExRule exrule = (ExRule) i.next();
//    DateList startDates = exrule.getRecur().getDates(start.getDate(), adjustedRangeStart, rangeEnd, (Value) start.getParameters().getParameter(Parameter.VALUE));
      DateList startDates = exrule.getRecur().getDates(start.getDate(),
                                                       rp.rangeStart,
                                                       rp.rangeEnd,
                                                       startVal);
      for (Iterator j = startDates.iterator(); j.hasNext();) {
        Date startDate = (Date) j.next();
        exPeriods.add(new Period(new DateTime(startDate), rDuration));
      }
    }
    // apply exceptions..
    if (!exPeriods.isEmpty()) {
      periods = periods.subtract(exPeriods);
    }
    // if periods already specified through recurrence, return..
    // ..also normalise before returning.
//    if (!periods.isEmpty()) {
//      periods = periods.normalise();
//    }
 *
 */
    if (pl.size() <= maxInstances) {
        rp.instances = pl;
    } else {
        rp.instances = new TreeSet<Period>();
        for (Object o : pl) {
            rp.instances.add((Period) o);
            if (rp.instances.size() == maxInstances) {
                break;
            }
        }
    }
    return rp;
}
Also used : Dur(net.fortuna.ical4j.model.Dur) VEvent(net.fortuna.ical4j.model.component.VEvent) RDate(net.fortuna.ical4j.model.property.RDate) BwDateTime(org.bedework.calfacade.BwDateTime) Period(net.fortuna.ical4j.model.Period) PeriodList(net.fortuna.ical4j.model.PeriodList) Duration(net.fortuna.ical4j.model.property.Duration) BwDuration(org.bedework.calfacade.BwDuration) DateTime(net.fortuna.ical4j.model.DateTime) BwDateTime(org.bedework.calfacade.BwDateTime) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException) RDate(net.fortuna.ical4j.model.property.RDate) Date(net.fortuna.ical4j.model.Date) PropertyList(net.fortuna.ical4j.model.PropertyList) DtStart(net.fortuna.ical4j.model.property.DtStart) DtEnd(net.fortuna.ical4j.model.property.DtEnd)

Example 18 with DtStart

use of net.fortuna.ical4j.model.property.DtStart in project bw-calendar-engine by Bedework.

the class VEventUtil method makeDlp.

private static void makeDlp(final BwEvent val, final boolean exdt, final Collection<BwDateTime> dts, final PropertyList pl) throws Throwable {
    if ((dts == null) || (dts.isEmpty())) {
        return;
    }
    TimeZone tz = null;
    if (!val.getForceUTC()) {
        BwDateTime dtstart = val.getDtstart();
        if ((dtstart != null) && !dtstart.isUTC()) {
            DtStart ds = dtstart.makeDtStart();
            tz = ds.getTimeZone();
        }
    }
    /* Generate as one date per property - matches up to other vendors better */
    for (BwDateTime dt : dts) {
        DateList dl = null;
        /* Always use the UTC values */
        boolean dateType = false;
        if (dt.getDateType()) {
            dl = new DateList(Value.DATE);
            dl.setUtc(true);
            dateType = true;
            dl.add(new Date(dt.getDtval()));
        } else {
            dl = new DateList(Value.DATE_TIME);
            if (tz == null) {
                dl.setUtc(true);
                DateTime dtm = new DateTime(dt.getDate());
                dtm.setUtc(true);
                dl.add(dtm);
            } else {
                dl.setTimeZone(tz);
                DateTime dtm = new DateTime(dt.getDate());
                dtm.setTimeZone(tz);
                dl.add(dtm);
            }
        }
        DateListProperty dlp;
        if (exdt) {
            dlp = new ExDate(dl);
        } else {
            dlp = new RDate(dl);
        }
        if (tz != null) {
            dlp.setTimeZone(tz);
        }
        if (dateType) {
            dlp.getParameters().add(Value.DATE);
        }
        pl.add(dlp);
    }
}
Also used : TimeZone(net.fortuna.ical4j.model.TimeZone) DtStart(net.fortuna.ical4j.model.property.DtStart) RDate(net.fortuna.ical4j.model.property.RDate) BwDateTime(org.bedework.calfacade.BwDateTime) DateListProperty(net.fortuna.ical4j.model.property.DateListProperty) ExDate(net.fortuna.ical4j.model.property.ExDate) DateList(net.fortuna.ical4j.model.DateList) Date(net.fortuna.ical4j.model.Date) RDate(net.fortuna.ical4j.model.property.RDate) ExDate(net.fortuna.ical4j.model.property.ExDate) DateTime(net.fortuna.ical4j.model.DateTime) BwDateTime(org.bedework.calfacade.BwDateTime)

Example 19 with DtStart

use of net.fortuna.ical4j.model.property.DtStart in project bw-calendar-engine by Bedework.

the class VEventUtil method makeZonedDt.

private static Date makeZonedDt(final BwEvent val, final String dtval) throws Throwable {
    BwDateTime dtstart = val.getDtstart();
    Date dt = new DateTime(dtval);
    if (dtstart.getDateType()) {
        // RECUR - fix all day recurrences sometime
        if (dtval.length() > 8) {
            // Try to fix up bad all day recurrence ids. - assume a local timezone
            ((DateTime) dt).setTimeZone(null);
            return new Date(dt.toString().substring(0, 8));
        }
        return dt;
    }
    if (val.getForceUTC()) {
        return dt;
    }
    if ((dtstart != null) && !dtstart.isUTC()) {
        DtStart ds = dtstart.makeDtStart();
        ((DateTime) dt).setTimeZone(ds.getTimeZone());
    }
    return dt;
}
Also used : DtStart(net.fortuna.ical4j.model.property.DtStart) BwDateTime(org.bedework.calfacade.BwDateTime) Date(net.fortuna.ical4j.model.Date) RDate(net.fortuna.ical4j.model.property.RDate) ExDate(net.fortuna.ical4j.model.property.ExDate) DateTime(net.fortuna.ical4j.model.DateTime) BwDateTime(org.bedework.calfacade.BwDateTime)

Example 20 with DtStart

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

the class ICalFileCalendarManager method getKalendarEvent.

/**
 * Build a KalendarEvent out of a source VEvent.
 * @param event
 * @return
 */
private KalendarEvent getKalendarEvent(VEvent event) {
    // subject
    Summary eventsummary = event.getSummary();
    String subject = "";
    if (eventsummary != null)
        subject = eventsummary.getValue();
    // start
    DtStart dtStart = event.getStartDate();
    Date start = dtStart.getDate();
    Duration dur = event.getDuration();
    // end
    Date end = null;
    if (dur != null) {
        end = dur.getDuration().getTime(start);
    } else if (event.getEndDate() != null) {
        end = event.getEndDate().getDate();
    }
    // check all day event first
    boolean isAllDay = false;
    Parameter dateParameter = event.getProperties().getProperty(Property.DTSTART).getParameters().getParameter(Value.DATE.getName());
    if (dateParameter != null) {
        isAllDay = true;
        // Make sure the time of the dates are 00:00 localtime because DATE fields in iCal are GMT 00:00
        // Note that start date and end date can have different offset because of daylight saving switch
        java.util.TimeZone timezone = java.util.GregorianCalendar.getInstance().getTimeZone();
        start = new Date(start.getTime() - timezone.getOffset(start.getTime()));
        end = new Date(end.getTime() - timezone.getOffset(end.getTime()));
        // adjust end date: ICal sets end dates to the next day
        end = new Date(end.getTime() - (1000 * 60 * 60 * 24));
    } else if (start != null && end != null && (end.getTime() - start.getTime()) == (24 * 60 * 60 * 1000)) {
        // check that start has no hour, no minute and no second
        java.util.Calendar cal = java.util.Calendar.getInstance();
        cal.setTime(start);
        isAllDay = cal.get(java.util.Calendar.HOUR_OF_DAY) == 0 && cal.get(java.util.Calendar.MINUTE) == 0 && cal.get(java.util.Calendar.SECOND) == 0 && cal.get(java.util.Calendar.MILLISECOND) == 0;
        // adjust end date: ICal sets end dates to the next day
        end = new Date(end.getTime() - (1000 * 60 * 60 * 24));
    }
    Uid eventuid = event.getUid();
    String uid;
    if (eventuid != null) {
        uid = eventuid.getValue();
    } else {
        uid = CodeHelper.getGlobalForeverUniqueID();
    }
    RecurrenceId eventRecurenceId = event.getRecurrenceId();
    String recurrenceId = null;
    if (eventRecurenceId != null) {
        recurrenceId = eventRecurenceId.getValue();
    }
    KalendarEvent calEvent = new KalendarEvent(uid, recurrenceId, subject, start, end);
    calEvent.setAllDayEvent(isAllDay);
    // classification
    Clazz classification = event.getClassification();
    if (classification != null) {
        String sClass = classification.getValue();
        int iClassification = KalendarEvent.CLASS_PRIVATE;
        if (sClass.equals(ICAL_CLASS_PRIVATE.getValue()))
            iClassification = KalendarEvent.CLASS_PRIVATE;
        else if (sClass.equals(ICAL_CLASS_X_FREEBUSY.getValue()))
            iClassification = KalendarEvent.CLASS_X_FREEBUSY;
        else if (sClass.equals(ICAL_CLASS_PUBLIC.getValue()))
            iClassification = KalendarEvent.CLASS_PUBLIC;
        calEvent.setClassification(iClassification);
    }
    // created/last modified
    Created created = event.getCreated();
    if (created != null) {
        calEvent.setCreated(created.getDate().getTime());
    }
    // created/last modified
    Contact contact = (Contact) event.getProperty(Property.CONTACT);
    if (contact != null) {
        calEvent.setCreatedBy(contact.getValue());
    }
    LastModified lastModified = event.getLastModified();
    if (lastModified != null) {
        calEvent.setLastModified(lastModified.getDate().getTime());
    }
    Description description = event.getDescription();
    if (description != null) {
        calEvent.setDescription(description.getValue());
    }
    // location
    Location location = event.getLocation();
    if (location != null) {
        calEvent.setLocation(location.getValue());
    }
    // links if any
    PropertyList linkProperties = event.getProperties(ICAL_X_OLAT_LINK);
    List<KalendarEventLink> kalendarEventLinks = new ArrayList<KalendarEventLink>();
    for (Iterator<?> iter = linkProperties.iterator(); iter.hasNext(); ) {
        XProperty linkProperty = (XProperty) iter.next();
        if (linkProperty != null) {
            String encodedLink = linkProperty.getValue();
            StringTokenizer st = new StringTokenizer(encodedLink, "§", false);
            if (st.countTokens() >= 4) {
                String provider = st.nextToken();
                String id = st.nextToken();
                String displayName = st.nextToken();
                String uri = st.nextToken();
                String iconCss = "";
                // migration: iconCss has been added later, check if available first
                if (st.hasMoreElements()) {
                    iconCss = st.nextToken();
                }
                KalendarEventLink eventLink = new KalendarEventLink(provider, id, displayName, uri, iconCss);
                kalendarEventLinks.add(eventLink);
            }
        }
    }
    calEvent.setKalendarEventLinks(kalendarEventLinks);
    Property comment = event.getProperty(ICAL_X_OLAT_COMMENT);
    if (comment != null)
        calEvent.setComment(comment.getValue());
    Property numParticipants = event.getProperty(ICAL_X_OLAT_NUMPARTICIPANTS);
    if (numParticipants != null)
        calEvent.setNumParticipants(Integer.parseInt(numParticipants.getValue()));
    Property participants = event.getProperty(ICAL_X_OLAT_PARTICIPANTS);
    if (participants != null) {
        StringTokenizer strTok = new StringTokenizer(participants.getValue(), "§", false);
        String[] parts = new String[strTok.countTokens()];
        for (int i = 0; strTok.hasMoreTokens(); i++) {
            parts[i] = strTok.nextToken();
        }
        calEvent.setParticipants(parts);
    }
    Property sourceNodId = event.getProperty(ICAL_X_OLAT_SOURCENODEID);
    if (sourceNodId != null) {
        calEvent.setSourceNodeId(sourceNodId.getValue());
    }
    // managed properties
    Property managed = event.getProperty(ICAL_X_OLAT_MANAGED);
    if (managed != null) {
        String value = managed.getValue();
        if ("true".equals(value)) {
            value = "all";
        }
        CalendarManagedFlag[] values = CalendarManagedFlag.toEnum(value);
        calEvent.setManagedFlags(values);
    }
    Property externalId = event.getProperty(ICAL_X_OLAT_EXTERNAL_ID);
    if (externalId != null) {
        calEvent.setExternalId(externalId.getValue());
    }
    Property externalSource = event.getProperty(ICAL_X_OLAT_EXTERNAL_SOURCE);
    if (externalSource != null) {
        calEvent.setExternalSource(externalSource.getValue());
    }
    // recurrence
    if (event.getProperty(ICAL_RRULE) != null) {
        calEvent.setRecurrenceRule(event.getProperty(ICAL_RRULE).getValue());
    }
    // recurrence exclusions
    if (event.getProperty(ICAL_EXDATE) != null) {
        calEvent.setRecurrenceExc(event.getProperty(ICAL_EXDATE).getValue());
    }
    return calEvent;
}
Also used : Description(net.fortuna.ical4j.model.property.Description) ArrayList(java.util.ArrayList) KalendarEventLink(org.olat.commons.calendar.model.KalendarEventLink) Created(net.fortuna.ical4j.model.property.Created) LastModified(net.fortuna.ical4j.model.property.LastModified) CalendarManagedFlag(org.olat.commons.calendar.CalendarManagedFlag) Clazz(net.fortuna.ical4j.model.property.Clazz) XProperty(net.fortuna.ical4j.model.property.XProperty) Property(net.fortuna.ical4j.model.Property) XProperty(net.fortuna.ical4j.model.property.XProperty) Calendar(net.fortuna.ical4j.model.Calendar) KalendarEvent(org.olat.commons.calendar.model.KalendarEvent) Duration(net.fortuna.ical4j.model.property.Duration) Date(java.util.Date) ExDate(net.fortuna.ical4j.model.property.ExDate) Contact(net.fortuna.ical4j.model.property.Contact) Uid(net.fortuna.ical4j.model.property.Uid) StringTokenizer(java.util.StringTokenizer) DtStart(net.fortuna.ical4j.model.property.DtStart) PropertyList(net.fortuna.ical4j.model.PropertyList) Summary(net.fortuna.ical4j.model.property.Summary) Parameter(net.fortuna.ical4j.model.Parameter) RecurrenceId(net.fortuna.ical4j.model.property.RecurrenceId) Location(net.fortuna.ical4j.model.property.Location)

Aggregations

DtStart (net.fortuna.ical4j.model.property.DtStart)21 DateTime (net.fortuna.ical4j.model.DateTime)10 DtEnd (net.fortuna.ical4j.model.property.DtEnd)10 BwDateTime (org.bedework.calfacade.BwDateTime)10 Date (net.fortuna.ical4j.model.Date)9 PropertyList (net.fortuna.ical4j.model.PropertyList)8 CalFacadeException (org.bedework.calfacade.exc.CalFacadeException)8 Calendar (net.fortuna.ical4j.model.Calendar)6 Dur (net.fortuna.ical4j.model.Dur)6 VEvent (net.fortuna.ical4j.model.component.VEvent)6 Duration (net.fortuna.ical4j.model.property.Duration)6 ExDate (net.fortuna.ical4j.model.property.ExDate)6 Summary (net.fortuna.ical4j.model.property.Summary)6 Uid (net.fortuna.ical4j.model.property.Uid)6 BwEvent (org.bedework.calfacade.BwEvent)6 TimeZone (net.fortuna.ical4j.model.TimeZone)5 Date (java.util.Date)4 Parameter (net.fortuna.ical4j.model.Parameter)4 Property (net.fortuna.ical4j.model.Property)4 Description (net.fortuna.ical4j.model.property.Description)4