Ical4j - Lazy Loading von Events?

internet

Top Contributor
Hallo,

ich möchte gerne einen ical - Kalender auslesen.
Dazu nutze ich die Library: ical4j -> https://www.ical4j.org/indexing/

Die Events bekomme ich ja so:

Java:
List<Component> componentList = calendar.getComponents(Component.VEVENT);

Nun kann es aber ja sein, dass ich 10.000 Events im Kalender habe.
Nun würde ich gerne nach und nach (Lazy Loading) die Einträge dieser Liste mir holen.

Hat jemand eine Idee wie ich das machen kann?

Mache ich das so, dass ich bspw. einen int start und int end habe und dann dies immer wieder in meine Liste hinzufügen?
Code:
calendar.getComponents(Component.VEVENT).subList(start, end)

Nutzen würde ich für die Ausgabe gerne:

Kann jemand helfen?
 

mihe7

Top Contributor
Mache ich das so, dass ich bspw. einen int start und int end habe und dann dies immer wieder in meine Liste hinzufügen?
Jein. PrimeFaces hat ein LazyScheduleModel. Wenn das UI aktualisiert wird, z. B. weil der Anwender sich einen anderen Monat ausgesucht hat, wird in diesem Model die Methode loadEvents aufgerufen. Diese Methode bekommt den anzuzeigenden Zeitraum als Start- und Endezeitpunkt übergeben.

Du musst also nur loadEvents überschreiben und dafür sorgen, dass die anzuzeigenden Events dem Model hinzugefügt werden (addEvent-Methode von ScheduleModel). Dabei bietet es sich ggf. an, das Model vorher zu säubern, je nach Anwendungsfall kann hierfür ein clear() ausreichend sein.

Achtung: das hat nur in Bezug auf das UI etwas mit lazy loading zu tun. Wenn Du mit der iCal-Datei arbeitest, werden vermutlich alle Events in den Speicher (des Servers) geladen. Hier bietet es sich ggf. an, die iCal-Datei in eine DB zu importieren. Dann ist lazy loading richtig sinnvoll.
 

internet

Top Contributor
Jein. PrimeFaces hat ein LazyScheduleModel. Wenn das UI aktualisiert wird, z. B. weil der Anwender sich einen anderen Monat ausgesucht hat, wird in diesem Model die Methode loadEvents aufgerufen. Diese Methode bekommt den anzuzeigenden Zeitraum als Start- und Endezeitpunkt übergeben.

Du musst also nur loadEvents überschreiben und dafür sorgen, dass die anzuzeigenden Events dem Model hinzugefügt werden (addEvent-Methode von ScheduleModel). Dabei bietet es sich ggf. an, das Model vorher zu säubern, je nach Anwendungsfall kann hierfür ein clear() ausreichend sein.

Achtung: das hat nur in Bezug auf das UI etwas mit lazy loading zu tun. Wenn Du mit der iCal-Datei arbeitest, werden vermutlich alle Events in den Speicher (des Servers) geladen. Hier bietet es sich ggf. an, die iCal-Datei in eine DB zu importieren. Dann ist lazy loading richtig sinnvoll.
Ich denke das ist nach was ich suche:
 

Ähnliche Java Themen

Neue Themen


Oben