use of net.fortuna.ical4j.model.DateTime in project bw-calendar-engine by Bedework.
the class BwDateTime method makeBwDateTime.
/**
* @param val
* @return initialised BwDateTime
* @throws CalFacadeException
*/
public static BwDateTime makeBwDateTime(final Date val) throws CalFacadeException {
String tzid = null;
boolean dateType = true;
if (val instanceof DateTime) {
dateType = false;
TimeZone tz = ((DateTime) val).getTimeZone();
if (tz != null) {
tzid = tz.getID();
}
}
return makeBwDateTime(dateType, val.toString(), tzid);
}
use of net.fortuna.ical4j.model.DateTime in project bw-calendar-engine by Bedework.
the class BwResource method updateLastmod.
/**
* Update last mod fields
* @param val
*/
public void updateLastmod(final Timestamp val) {
DateTime dt = new DateTime(val);
setLastmod(new LastModified(dt).getValue());
setSequence(val.getNanos() / 100000);
}
use of net.fortuna.ical4j.model.DateTime in project bw-calendar-engine by Bedework.
the class SimpleFilterParser method makeTimeRange.
private TimeRange makeTimeRange(final String startStr, final String endStr) throws ParseFailed {
try {
DateTime start = null;
DateTime end = null;
if (startStr != null) {
start = new DateTime(startStr);
}
if (endStr != null) {
end = new DateTime(endStr);
}
return new TimeRange(start, end);
} catch (final Throwable t) {
throw parseResult.setCfe(new CalFacadeException(t));
}
}
use of net.fortuna.ical4j.model.DateTime in project bw-calendar-engine by Bedework.
the class BwLastMod method updateLastmod.
/* ====================================================================
* Convenience methods
* ==================================================================== */
/**
* Update last mod fields
* @param val
*/
public void updateLastmod(final Timestamp val) {
DateTime dt = new DateTime(val);
setTimestamp(new LastModified(dt).getValue());
setSequence(val.getNanos() / 100000);
}
use of net.fortuna.ical4j.model.DateTime in project bw-calendar-engine by Bedework.
the class RecurUtil method getLatestRecurrenceDate.
/**
* Return the absolute latest end date for this event. Note that
* exclusions may mean the actual latest date is earlier.
*
* @param evprops
* @param vstart
* @param enddt
* @param d
* @param maxRangeEnd
* @return date
* @throws CalFacadeException
*/
private static Date getLatestRecurrenceDate(final PropertyList evprops, final DtStart vstart, final DtEnd enddt, final Duration d, final Date maxRangeEnd) throws CalFacadeException {
boolean debug = getLog().isDebugEnabled();
try {
Date start = vstart.getDate();
Date until = null;
/* Get the duration of the event to get us past the end
*/
Dur dur;
if (d != null) {
dur = d.getDuration();
} else {
Date evend;
if (enddt == null) {
evend = start;
} else {
evend = enddt.getDate();
}
dur = new Dur(start, evend);
}
/* Make a new duration incremented a little to avoid any boundary
conditions */
if (dur.getWeeks() != 0) {
dur = new Dur(dur.getWeeks() + 1);
} else {
dur = new Dur(dur.getDays() + 1, dur.getHours(), dur.getMinutes(), dur.getSeconds());
}
PropertyList rrules = evprops.getProperties(Property.RRULE);
PropertyList rdts = evprops.getProperties(Property.RDATE);
if ((rrules == null) && (rdts == null)) {
// Not a recurring event
return null;
}
if (rrules != null) {
Iterator rit = rrules.iterator();
while (rit.hasNext()) {
RRule r = (RRule) rit.next();
Date nextUntil = getLastDate(r.getRecur(), start, maxRangeEnd);
if (nextUntil == null) {
/* We have a rule without an end date so it's infinite.
*/
return null;
}
if (debug) {
debugMsg("Last date for recur=" + nextUntil);
}
if ((until == null) || (nextUntil.after(until))) {
until = nextUntil;
}
}
/* We have some rules - none have an end date so it's infinite.
*/
if (until == null) {
// infinite
return null;
}
}
if (rdts != null) {
// Get the latest date from each
// XXX are these sorted?
Iterator rit = rdts.iterator();
while (rit.hasNext()) {
RDate r = (RDate) rit.next();
if (Value.PERIOD.equals(r.getParameter(Parameter.VALUE))) {
PeriodList pl = r.getPeriods();
Iterator it = pl.iterator();
while (it.hasNext()) {
Period p = (Period) it.next();
// Not sure if a single date gives a null end
Date nextUntil = p.getEnd();
if (nextUntil == null) {
nextUntil = p.getStart();
}
if ((until == null) || (nextUntil.after(until))) {
until = nextUntil;
}
}
} else {
// date or datetime
DateList startDates = r.getDates();
for (int j = 0; j < startDates.size(); j++) {
Date startDate = (Date) startDates.get(j);
Date endDate = new Date(dur.getTime(startDate));
if ((until == null) || (endDate.after(until))) {
until = endDate;
}
}
}
}
}
if (debug) {
debugMsg("Last date before fix=" + until);
}
/* Now add the duration of the event to get us past the end
*/
if (until instanceof DateTime) {
until = new DateTime(dur.getTime(until));
((DateTime) until).setUtc(true);
} else {
until = new Date(dur.getTime(until));
}
if (debug) {
debugMsg("Last date after fix=" + until);
}
return until;
} catch (Throwable t) {
throw new CalFacadeException(t);
}
}
Aggregations