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);
}
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;
}
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);
}
}
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);
}
}
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);
}
Aggregations