EN · DE · RU · FR · ES

#2781: EventManager.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/EventManager.java Servicio Java (Búsqueda de Eventos FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/EventManager.java 60 líneas · 19 código · 33 comentarios · 8 en blanco
Un servicio de búsqueda que resuelve eventos y fuentes de eventos de FullCalendar mediante sus identificadores. Cuando el cliente de FullCalendar envía una devolución de llamada Ajax con un ID de evento y un ID de fuente (por ejemplo, un usuario hizo clic o arrastró un evento), el manejador del lado del servidor utiliza este gestor para localizar los objetos Event y EventSource correspondientes. La búsqueda recorre las fuentes de eventos configuradas del calendario (comparando UUIDs mediante Objects.equal) y delega en el EventProvider de cada fuente para encontrar el evento específico. Lanza excepciones tipificadas (EventSourceNotFoundException, EventNotFoundException) para IDs no coincidentes.

Arquitectura

Cadena de búsqueda

Resolución en dos pasos: getEventSource(String id) itera sobre las fuentes de eventos del calendario (desde Config.getEventSources()) comparando el UUID de cada fuente usando Objects.equal — el ayudante de igualdad seguro para nulos de Wicket. Si hay coincidencia, devuelve la fuente; si no, lanza EventSourceNotFoundException. getEvent(String sourceId, String eventId) primero resuelve la fuente, luego llama a source.getEventProvider().getEventForId(eventId) — delegando la búsqueda del evento al proveedor de la fuente (típicamente una implementación respaldada por DAO). Si el proveedor no puede encontrar el evento, lanza EventNotFoundException.

Constructor de paquete privado

El constructor es de paquete privado — solo FullCalendar puede crear un EventManager (a través de getEventManager()). Esto asegura que el gestor esté siempre asociado con una instancia de calendario específica y su configuración.

Uso en devoluciones de llamada

Este gestor es el puente entre los parámetros de devolución de llamada Ajax (que transportan IDs de cadena) y los objetos de dominio Java. Por ejemplo, al manejar una devolución de llamada de colocación de evento, el manejador llama a getEventManager().getEvent(sourceId, eventId) para recuperar el objeto de evento afectado, actualizar sus horas en la base de datos y devolver una respuesta al cliente.

Historial Git

CommitQué cambió
868d6abb7 hasta ceb63e8a1Seis actualizaciones anuales del encabezado de derechos de autor. La lógica de búsqueda se ha mantenido estable — el patrón de resolución en dos pasos ID→Fuente→Evento cubre todos los escenarios de devolución de llamada, y no se han necesitado métodos de búsqueda adicionales.