@Override public void emitValue(final JsonGenerator jgen, final Property prop) throws Throwable { final ExDate p = (ExDate)prop; jgen.writeStartArray(); final DateList dl = p.getDates(); for (final Object o: dl) { jgen.writeString(XcalUtil.getXmlFormatDateTime(o.toString())); } jgen.writeEndArray(); } }
private void fixExDates(Component comp) throws Exception { PropertyList<ExDate> exDates = comp.getProperties(Property.EXDATE); List<Property> toAdd = new ArrayList<>(); List<Property> toRemove = new ArrayList<>(); for(ExDate exDate : exDates) { // ical likes a single exdate if(exDate.getDates().size()==1) { continue; } // remove exdate with multiple dates toRemove.add(exDate); // create single dates instead for(Date date : exDate.getDates()) { ExDate singleEx = (ExDate) exDate.copy(); singleEx.getDates().clear(); singleEx.getDates().add(date); toAdd.add(singleEx); } } // remove exdates with multiple dates comp.getProperties().removeAll(toRemove); // Add all single exdates comp.getProperties().addAll(toAdd); }
private void fixExDates(Component comp) throws Exception { PropertyList<ExDate> exDates = comp.getProperties(Property.EXDATE); List<Property> toAdd = new ArrayList<>(); List<Property> toRemove = new ArrayList<>(); for(ExDate exDate : exDates) { // ical likes a single exdate if(exDate.getDates().size()==1) { continue; } // remove exdate with multiple dates toRemove.add(exDate); // create single dates instead for(Date date : exDate.getDates()) { ExDate singleEx = (ExDate) exDate.copy(); singleEx.getDates().clear(); singleEx.getDates().add(date); toAdd.add(singleEx); } } // remove exdates with multiple dates comp.getProperties().removeAll(toRemove); // Add all single exdates comp.getProperties().addAll(toAdd); }
public DateList getExceptionDates() { DateList dateList = null; PropertyList<ExDate> exDatesProperties = getEvent().getProperties().getProperties(Property.EXDATE); for (ExDate exdate : exDatesProperties) { if(dateList==null) { if(Value.DATE.equals(exdate.getParameter(Parameter.VALUE))) { dateList = new DateList(Value.DATE); } else { dateList = new DateList(Value.DATE_TIME, exdate.getDates().getTimeZone()); } } dateList.addAll(exdate.getDates()); } return dateList; }
public DateList getExceptionDates() { DateList dateList = null; PropertyList<ExDate> exDatesProperties = getEvent().getProperties().getProperties(Property.EXDATE); for (ExDate exdate : exDatesProperties) { if(dateList==null) { if(Value.DATE.equals(exdate.getParameter(Parameter.VALUE))) { dateList = new DateList(Value.DATE); } else { dateList = new DateList(Value.DATE_TIME, exdate.getDates().getTimeZone()); } } dateList.addAll(exdate.getDates()); } return dateList; }
/** * Ensure timezones are correctly parsed for this property. * @throws Exception */ public void testTimeZones() throws Exception { CalendarBuilder builder = new CalendarBuilder(); Calendar calendar = builder.build(getClass().getResourceAsStream("/samples/valid/EXDATE.ics")); Component event = calendar.getComponent(Component.VEVENT); List<ExDate> exdates = event.getProperties(Property.EXDATE); for (ExDate exDate : exdates) { assertNotNull("This EXDATE should have a timezone", exDate.getDates().getTimeZone()); } }
@SuppressWarnings("unchecked") public static void convert(TemporalExpression expr, PropertyList eventProps) { ICalRecurConverter converter = new ICalRecurConverter(); expr.accept(converter); DtStart dateStart = (DtStart) eventProps.getProperty(Property.DTSTART); if (converter.dateStart != null) { if (dateStart != null) { eventProps.remove(dateStart); } dateStart = converter.dateStart; eventProps.add(dateStart); } if (dateStart != null && converter.exRuleList.size() > 0) { // iCalendar quirk - if exclusions exist, then the start date must be excluded also ExDate exdate = new ExDate(); exdate.getDates().add(dateStart.getDate()); converter.exDateList.add(exdate); } eventProps.addAll(converter.incDateList); eventProps.addAll(converter.incRuleList); eventProps.addAll(converter.exDateList); eventProps.addAll(converter.exRuleList); }
public void testShouldPreserveUtcTimezoneForExDate() throws Exception { CalendarBuilder builder = new CalendarBuilder(); Calendar calendar = builder.build(getClass().getResourceAsStream("/samples/valid/EXDATE-IN-UTC.ics")); Component event = calendar.getComponent(Component.VEVENT); List<ExDate> exdates = event.getProperties(Property.EXDATE); for (ExDate exDate : exdates) { for (Date dateEx : exDate.getDates()) { DateTime dateTimeEx = (DateTime) dateEx; assertNotNull(dateTimeEx); assertTrue("This exception date should be in UTC", dateTimeEx.isUtc()); } } }
List<Date> exDates = exDateProps.stream().map(e -> e.getDates()).flatMap(DateList::stream) .collect(Collectors.toList());
List<Date> exDates = exDateProps.stream().map(e -> e.getDates()).flatMap(DateList::stream) .collect(Collectors.toList());
for (Date sd : exDate.getDates()) { sd = convertToUTCIfNecessary(sd); sd = adjustFloatingDateIfNecessary(sd);
for (Date sd : exDate.getDates()) { sd = convertToUTCIfNecessary(sd); sd = adjustFloatingDateIfNecessary(sd);