
iCal4j - getNextDate() vrací null - proč?
Ahoj, mám tu problém s metodou getNextDate() třídy Recur knihovny iCal4j. Mám událost, jejíž pravidlo je: RRULE:FREQ=DAILY;UNTIL=20130612T160000Z. Potřebuju tuto jednu událost rozvinout do těch X událostí, které jsou v pravidle zahrnuty. Když do vezmu od dnešního data, potřebuji z této události vytvořit 7 událostí s daty jdoucími klasicky po sobě. Tyto data mi vrací právě getNextDate(), kterou používám následovně:
Property propRRULE = null;
Recur recurrence = null;
VEvent copy = null;
net.fortuna.ical4j.model.Date seedSTART = null;
net.fortuna.ical4j.model.Date seedEND = null;
net.fortuna.ical4j.model.Date startDate = null;
net.fortuna.ical4j.model.Date endDate = null;
VEvent repeatedEvent = repEvent.getEvent();
TreeSet<MyEvent> events = new TreeSet<>();
seedSTART = repeatedEvent.getStartDate().getDate();
startDate = repeatedEvent.getStartDate().getDate();
seedEND = repeatedEvent.getEndDate().getDate();
endDate = repeatedEvent.getEndDate().getDate();
propRRULE = repeatedEvent.getProperty(Property.RRULE);
recurrence = new Recur(propRRULE.getValue());
//DateList dlstart = recurrence.getDates(seedSTART, start, end, Value.DATE_TIME);
//DateList dlend = recurrence.getDates(seedEND, start, end, Value.DATE_TIME);
while(true){
startDate = recurrence.getNextDate(seedSTART, startDate);
endDate = recurrence.getNextDate(seedEND, endDate);
if(startDate == null || endDate == null) break;
copy = (VEvent) repeatedEvent.copy();
copy.getStartDate().setDate(startDate);
copy.getEndDate().setDate(endDate);
events.add(new MyEvent(copy));
}
Postupné získávání dat funguje, ale nevím, proč metoda getNextDate() při posledním průběhu cyklem, tzn. pro datum 12.6., pro startDate vrátí správně 20130612T180000, ale pro endDate vrátí NULL??? Takže mi to poslední den vynechá. Nemluvě o tom, když chci to samé udělat přes DateList (to, co je tam zakomentované), tak mi to poslední datum vynechá úplně - seznam dat končí 11.6. - proč?
Využívám to pravidlo špatně? Nebo špatně používám tu metodu? Fakt to nechápu!
Dík za pomoc.
Debugger, kámo, debugger...
Jak to můžu vydebugovat, když je evidentně problém v té metodě getNextdate()? Knihovna je sice open source, ale jak si pomůžu tím, že uvidím do jejího kódu?
Lépe pochopíš, jak to funguje a možná příjdeš na chybu, kterou děláš (nebo je špatně knihovna).