EventProvider.javagetEvents(DateTime start, DateTime end) gibt eine Sammlung von Ereignissen innerhalb eines bestimmten Zeitraums zurück (aufgerufen, wenn FullCalendar Daten für einen sichtbaren Datumsbereich abruft), und getEventForId(String id) ruft ein einzelnes Ereignis anhand seiner Kennung ab (aufgerufen während Ajax-Callbacks für Ereignis-Klicks, Drags und Größenänderungen). Implementierungen vermitteln zwischen diesem Vertrag und der Domänenschicht von ProjectForge – typischerweise ein DAO-gestützter Provider, der die Datenbank nach Kalenderereignissen, Zeiterfassungseinträgen oder Urlaubsaufzeichnungen innerhalb des angeforderten Datumsfensters abfragt.Das Interface erweitert Serializable, was im Wicket-Komponentenmodell zwingend erforderlich ist. EventProvider-Instanzen werden als Felder von EventSource gespeichert, das als Teil des Seitenstatus der FullCalendar-Komponente serialisiert wird. Der Wicket-Seitenspeicher (der Seiten zwischen Anfragen auf die Festplatte oder in eine Datenbank persistieren kann) erfordert, dass alle Objekte im Komponentenbaum serialisierbar sind.
Die Signatur getEvents(DateTime start, DateTime end) folgt dem FullCalendar-Ereignisabrufprotokoll: Der Client sendet Start- und Endzeitstempel (als Epochen-Millisekunden) basierend auf der aktuell sichtbaren Kalenderansicht, und der Server gibt nur Ereignisse innerhalb dieses Fensters zurück. Dies ermöglicht verzögertes Laden – ein Kalender mit Jahren an Daten lädt nur Ereignisse für den aktuell angezeigten Monat/die aktuelle Woche. Implementierungen verwenden Joda-Times DateTime für zeitzonensichere Bereichsvergleiche.
getEventForId(String id) ist die Punktsuche, die während Ajax-Callbacks aufgerufen wird. Der Client sendet die Zeichenfolgen-ID des Ereignisses (typischerweise ein Datenbank-Primärschlüssel, der in eine Zeichenfolge umgewandelt wurde), und der Provider muss das entsprechende Event zurückgeben oder eine EventNotFoundException auslösen. Die Trennung von getEvents ermöglicht optimierte Einzeldatensatzabfragen anstatt den gesamten Datumsbereich erneut zu durchsuchen.
| Commit | Was geändert wurde |
|---|---|
868d6abb7 bis ceb63e8a1 | Sechs jährliche Aktualisierungen der Copyright-Header. Der Interface-Vertrag ist stabil geblieben – das Zwei-Methoden-Design (Bereichsabfrage + Punktsuche) deckt alle von der Anwendung verwendeten FullCalendar-Datenzugriffsmuster ab. |