Search in sources :

Example 1 with Recur

use of net.fortuna.ical4j.model.Recur in project openremote by openremote.

the class AssetStorageService method calendarEventActiveOn.

protected static boolean calendarEventActiveOn(CalendarEvent calendarEvent, Date when) {
    if (calendarEvent.getRecurrence() == null) {
        return (!when.before(calendarEvent.getStart()) && !when.after(calendarEvent.getEnd()));
    }
    RecurrenceRule recurrenceRule = calendarEvent.getRecurrence();
    Recur recurrence;
    if (recurrenceRule.getCount() != null) {
        recurrence = new Recur(recurrenceRule.getFrequency().name(), recurrenceRule.getCount());
    } else if (recurrenceRule.getUntil() != null) {
        recurrence = new Recur(recurrenceRule.getFrequency().name(), new net.fortuna.ical4j.model.Date(recurrenceRule.getUntil()));
    } else {
        recurrence = new Recur(recurrenceRule.getFrequency().name(), null);
    }
    if (recurrenceRule.getInterval() != null) {
        recurrence.setInterval(recurrenceRule.getInterval());
    }
    RRule rRule = new RRule(recurrence);
    VEvent vEvent = new VEvent(new DateTime(calendarEvent.getStart()), new DateTime(calendarEvent.getEnd()), "");
    vEvent.getProperties().add(rRule);
    Period period = new Period(new DateTime(when), new Dur(0, 0, 1, 0));
    PeriodRule periodRule = new PeriodRule(period);
    return periodRule.evaluate(vEvent);
}
Also used : RecurrenceRule(org.openremote.model.calendar.RecurrenceRule) VEvent(net.fortuna.ical4j.model.component.VEvent) Dur(net.fortuna.ical4j.model.Dur) RRule(net.fortuna.ical4j.model.property.RRule) PeriodRule(net.fortuna.ical4j.filter.PeriodRule) Period(net.fortuna.ical4j.model.Period) DateTime(net.fortuna.ical4j.model.DateTime) Recur(net.fortuna.ical4j.model.Recur)

Example 2 with Recur

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

the class RecurRuleComponents method fromEventXrules.

private static Collection<RecurRuleComponents> fromEventXrules(BwEvent ev, Collection<String> rules) throws CalFacadeException {
    Collection<RecurRuleComponents> rrcs = new ArrayList<RecurRuleComponents>();
    if (!ev.isRecurringEntity()) {
        return rrcs;
    }
    if (rules == null) {
        return rrcs;
    }
    try {
        for (String rule : rules) {
            RecurRuleComponents rrc = new RecurRuleComponents();
            Recur recur = new Recur(rule);
            rrc.setRule(rule);
            rrc.setFreq(Freq.valueOf(recur.getFrequency()));
            Date until = recur.getUntil();
            if (until != null) {
                rrc.setUntil(until);
            } else {
                rrc.setCount(recur.getCount());
            }
            rrc.setInterval(recur.getInterval());
            rrc.setBySecond(checkNumList(recur.getSecondList()));
            rrc.setByMinute(checkNumList(recur.getMinuteList()));
            rrc.setByHour(checkNumList(recur.getHourList()));
            /* Group by position */
            Collection wds = recur.getDayList();
            if (wds != null) {
                HashMap<Integer, Collection<String>> hm = new HashMap<Integer, Collection<String>>();
                for (Object o : wds) {
                    WeekDay wd = (WeekDay) o;
                    Collection<String> c = hm.get(wd.getOffset());
                    if (c == null) {
                        c = new ArrayList<>();
                        hm.put(wd.getOffset(), c);
                    }
                    c.add(wd.getDay().name());
                }
                final Collection<PosDays> pds = new ArrayList<>();
                final Set<Integer> poss = hm.keySet();
                for (final Integer pos : poss) {
                    pds.add(new PosDays(pos, hm.get(pos)));
                }
                rrc.setByDay(pds);
            }
            rrc.setByMonthDay(checkNumList(recur.getMonthDayList()));
            rrc.setByYearDay(checkNumList(recur.getYearDayList()));
            rrc.setByWeekNo(checkNumList(recur.getWeekNoList()));
            rrc.setByMonth(checkNumList(recur.getMonthList()));
            rrc.setBySetPos(checkNumList(recur.getSetPosList()));
            if (recur.getWeekStartDay() != null) {
                rrc.setWkst(recur.getWeekStartDay().name());
            }
            rrcs.add(rrc);
        }
    } catch (Throwable t) {
        throw new CalFacadeException(t);
    }
    return rrcs;
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Date(net.fortuna.ical4j.model.Date) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException) WeekDay(net.fortuna.ical4j.model.WeekDay) Collection(java.util.Collection) Recur(net.fortuna.ical4j.model.Recur)

Example 3 with Recur

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

the class ToXEvent method doRecurring.

/**
 * Build recurring properties from event.
 *
 * @param pattern
 * @param compCl - component class for pattern matching
 * @param val
 * @param pl
 * @throws CalFacadeException
 */
public static void doRecurring(final BaseComponentType pattern, final Class compCl, final BwEvent val, final List<JAXBElement<? extends BasePropertyType>> pl) throws CalFacadeException {
    try {
        if (emit(pattern, compCl, RrulePropType.class) && val.hasRrules()) {
            for (String s : val.getRrules()) {
                RRule rule = new RRule();
                rule.setValue(s);
                Recur r = rule.getRecur();
                RecurType rt = new RecurType();
                rt.setFreq(FreqRecurType.fromValue(r.getFrequency()));
                if (r.getCount() > 0) {
                    rt.setCount(BigInteger.valueOf(r.getCount()));
                }
                Date until = r.getUntil();
                if (until != null) {
                    UntilRecurType u = new UntilRecurType();
                    /*
            if (until instanceof DateTime) {
              u.setDateTime(until.toString());
            } else {
              u.setDate(until.toString());
            }
            */
                    XcalUtil.initUntilRecur(u, until.toString());
                }
                if (r.getInterval() > 0) {
                    rt.setInterval(String.valueOf(r.getInterval()));
                }
                listFromNumberList(rt.getBysecond(), r.getSecondList());
                listFromNumberList(rt.getByminute(), r.getMinuteList());
                listFromNumberList(rt.getByhour(), r.getHourList());
                if (r.getDayList() != null) {
                    List<String> l = rt.getByday();
                    for (WeekDay wd : r.getDayList()) {
                        l.add(wd.getDay().name());
                    }
                }
                listFromNumberList(rt.getByyearday(), r.getYearDayList());
                intlistFromNumberList(rt.getBymonthday(), r.getMonthDayList());
                listFromNumberList(rt.getByweekno(), r.getWeekNoList());
                intlistFromNumberList(rt.getBymonth(), r.getMonthList());
                bigintlistFromNumberList(rt.getBysetpos(), r.getSetPosList());
                RrulePropType rrp = new RrulePropType();
                rrp.setRecur(rt);
                pl.add(of.createRrule(rrp));
            }
        }
    /*
      if (emit(pattern, compCl, ExrulePropType.class) &&
          val.hasExrules()) {
        for(String s: val.getExrules()) {
          ExRule rule = new ExRule();
          rule.setValue(s);

          pl.add(rule);
        }
      }

      if (emit(pattern, compCl, RdatePropType.class) {
        makeDlp(false, val.getRdates(), pl);
      }

      if (emit(pattern, compCl, ExdatePropType.class) {
        makeDlp(true, val.getExdates(), pl);
      }
      */
    // } catch (CalFacadeException cfe) {
    // throw cfe;
    } catch (Throwable t) {
        throw new CalFacadeException(t);
    }
}
Also used : UntilRecurType(ietf.params.xml.ns.icalendar_2.UntilRecurType) WeekDay(net.fortuna.ical4j.model.WeekDay) RRule(net.fortuna.ical4j.model.property.RRule) FreqRecurType(ietf.params.xml.ns.icalendar_2.FreqRecurType) RecurType(ietf.params.xml.ns.icalendar_2.RecurType) UntilRecurType(ietf.params.xml.ns.icalendar_2.UntilRecurType) BwString(org.bedework.calfacade.BwString) RrulePropType(ietf.params.xml.ns.icalendar_2.RrulePropType) Date(net.fortuna.ical4j.model.Date) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException) Recur(net.fortuna.ical4j.model.Recur)

Example 4 with Recur

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

the class IcalTranslator method xmlProperty.

private void xmlProperty(final XmlEmit xml, final Property val) throws CalFacadeException {
    try {
        QName tag = openTag(xml, val.getName());
        ParameterList pl = val.getParameters();
        if (pl.size() > 0) {
            xml.openTag(XcalTags.parameters);
            Iterator pli = pl.iterator();
            while (pli.hasNext()) {
                xmlParameter(xml, (Parameter) pli.next());
            }
            xml.closeTag(XcalTags.parameters);
        }
        PropertyInfoIndex pii = PropertyInfoIndex.fromName(val.getName());
        QName ptype = XcalTags.textVal;
        if (pii != null) {
            DataType dtype = pii.getPtype();
            if (dtype != null) {
                ptype = dtype.getXcalType();
            }
        }
        if (ptype == null) {
            // Special processing I haven't done
            warn("Unimplemented value type for " + val.getName());
            ptype = XcalTags.textVal;
        }
        if (ptype.equals(XcalTags.recurVal)) {
            // Emit individual parts of recur rule
            xml.openTag(ptype);
            Recur r;
            if (val instanceof ExRule) {
                r = ((ExRule) val).getRecur();
            } else {
                r = ((RRule) val).getRecur();
            }
            xml.property(XcalTags.freq, r.getFrequency());
            xmlProp(xml, XcalTags.wkst, r.getWeekStartDay().name());
            if (r.getUntil() != null) {
                xmlProp(xml, XcalTags.until, r.getUntil().toString());
            }
            xmlProp(xml, XcalTags.count, String.valueOf(r.getCount()));
            xmlProp(xml, XcalTags.interval, String.valueOf(r.getInterval()));
            xmlProp(xml, XcalTags.bymonth, r.getMonthList());
            xmlProp(xml, XcalTags.byweekno, r.getWeekNoList());
            xmlProp(xml, XcalTags.byyearday, r.getYearDayList());
            xmlProp(xml, XcalTags.bymonthday, r.getMonthDayList());
            xmlProp(xml, XcalTags.byday, r.getDayList());
            xmlProp(xml, XcalTags.byhour, r.getHourList());
            xmlProp(xml, XcalTags.byminute, r.getMinuteList());
            xmlProp(xml, XcalTags.bysecond, r.getSecondList());
            xmlProp(xml, XcalTags.bysetpos, r.getSetPosList());
            xml.closeTag(ptype);
        } else {
            xml.property(ptype, val.getValue());
        }
        xml.closeTag(tag);
    } catch (CalFacadeException cfe) {
        throw cfe;
    } catch (Throwable t) {
        throw new CalFacadeException(t);
    }
}
Also used : PropertyInfoIndex(org.bedework.util.calendar.PropertyIndex.PropertyInfoIndex) QName(javax.xml.namespace.QName) Iterator(java.util.Iterator) ParameterList(net.fortuna.ical4j.model.ParameterList) DataType(org.bedework.util.calendar.PropertyIndex.DataType) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException) Recur(net.fortuna.ical4j.model.Recur) ExRule(net.fortuna.ical4j.model.property.ExRule)

Example 5 with Recur

use of net.fortuna.ical4j.model.Recur in project ofbiz-framework by apache.

the class ICalRecurConverter method visit.

@SuppressWarnings("unchecked")
@Override
public void visit(TemporalExpressions.DayOfMonthRange expr) {
    int startDay = expr.getStartDay();
    int endDay = expr.getEndDay();
    NumberList dayList = new NumberList();
    dayList.add(startDay);
    while (startDay != endDay) {
        startDay++;
        dayList.add(startDay);
    }
    Recur recur = new Recur(Recur.DAILY, 0);
    recur.getMonthDayList().addAll(dayList);
    this.state.addRecur(recur);
}
Also used : NumberList(net.fortuna.ical4j.model.NumberList) Recur(net.fortuna.ical4j.model.Recur)

Aggregations

Recur (net.fortuna.ical4j.model.Recur)25 ParseException (java.text.ParseException)13 ExDate (net.fortuna.ical4j.model.property.ExDate)9 RRule (net.fortuna.ical4j.model.property.RRule)9 DateTime (net.fortuna.ical4j.model.DateTime)8 Date (java.util.Date)6 NumberList (net.fortuna.ical4j.model.NumberList)4 WeekDay (net.fortuna.ical4j.model.WeekDay)4 WeekDayList (net.fortuna.ical4j.model.WeekDayList)4 Date (net.fortuna.ical4j.model.Date)3 TimeZone (net.fortuna.ical4j.model.TimeZone)3 VEvent (net.fortuna.ical4j.model.component.VEvent)3 CalFacadeException (org.bedework.calfacade.exc.CalFacadeException)3 URISyntaxException (java.net.URISyntaxException)2 PropertyList (net.fortuna.ical4j.model.PropertyList)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 LastModified (net.fortuna.ical4j.model.property.LastModified)2 Location (net.fortuna.ical4j.model.property.Location)2