EventProvider.javagetEvents(DateTime start, DateTime end) retourne une collection d'événements dans une plage horaire donnée (appelée lorsque FullCalendar récupère des données pour une plage de dates visible), et getEventForId(String id) récupère un seul événement par identifiant (appelée lors des rappels Ajax pour les clics, glissements et redimensionnements d'événements). Les implémentations font le pont entre ce contrat et la couche domaine de ProjectForge — typiquement un fournisseur basé sur DAO qui interroge la base de données pour les événements de calendrier, les saisies de temps ou les enregistrements de congés dans la fenêtre de dates demandée.L'interface étend Serializable, ce qui est obligatoire dans le modèle de composants de Wicket. Les instances de EventProvider sont stockées comme champs de EventSource, qui est sérialisé dans le cadre de l'état de page du composant FullCalendar. Le magasin de pages de Wicket (qui peut persister les pages sur disque ou en base de données entre les requêtes) exige que tous les objets de l'arbre de composants soient sérialisables.
La signature getEvents(DateTime start, DateTime end) suit le protocole de récupération d'événements de FullCalendar : le client envoie les horodatages de début et de fin (en millisecondes epoch) basés sur la vue calendrier actuellement visible, et le serveur retourne uniquement les événements dans cette fenêtre. Cela permet le chargement paresseux — un calendrier avec des années de données ne charge que les événements du mois/semaine actuellement affiché. Les implémentations utilisent DateTime de Joda-Time pour des comparaisons de plage horaire sûres en termes de fuseau horaire.
getEventForId(String id) est la recherche ponctuelle appelée lors des rappels Ajax. Le client envoie l'identifiant textuel de l'événement (généralement une clé primaire de base de données convertie en chaîne), et le fournisseur doit retourner l'Event correspondant ou lever EventNotFoundException. La séparation d'avec getEvents permet des requêtes optimisées pour un seul enregistrement plutôt que de re-scanner toute la plage de dates.
| Commit | Ce qui a changé |
|---|---|
868d6abb7 à ceb63e8a1 | Six mises à jour annuelles des en-têtes de droits d'auteur. Le contrat de l'interface est resté stable — la conception à deux méthodes (requête de plage + recherche ponctuelle) couvre tous les modèles d'accès aux données FullCalendar utilisés par l'application. |