EN · DE · RU · FR · ES

#2781: EventManager.java

projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/EventManager.java Java-сервис (поиск событий FullCalendar) · projectforge-wicket/src/main/java/net/ftlines/wicket/fullcalendar/EventManager.java 60 строк · 19 кода · 33 комментария · 8 пустых
Сервис поиска, который находит события FullCalendar и источники событий по их идентификаторам. Когда клиент FullCalendar отправляет Ajax-обратный вызов с идентификатором события и идентификатором источника (например, пользователь щёлкнул или перетащил событие), обработчик на стороне сервера использует этот менеджер для поиска соответствующих объектов Event и EventSource. Поиск проходит по настроенным источникам событий календаря (сравнивая UUID через Objects.equal) и делегирует поиск конкретного события EventProvider каждого источника. В случае отсутствия совпадений выбрасываются типизированные исключения (EventSourceNotFoundException, EventNotFoundException).

Архитектура

Цепочка поиска

Двухэтапное разрешение: getEventSource(String id) перебирает источники событий календаря (из Config.getEventSources()), сравнивая UUID каждого источника с помощью Objects.equal — null-безопасного помощника Wicket для сравнения. При совпадении возвращает источник; при отсутствии совпадения выбрасывает EventSourceNotFoundException. getEvent(String sourceId, String eventId) сначала находит источник, затем вызывает source.getEventProvider().getEventForId(eventId) — делегируя поиск события провайдеру источника (обычно реализация на основе DAO). Если провайдер не может найти событие, выбрасывается EventNotFoundException.

Конструктор с пакетным доступом

Конструктор имеет пакетный доступ — только FullCalendar может создать EventManager (через getEventManager()). Это гарантирует, что менеджер всегда связан с конкретным экземпляром календаря и его конфигурацией.

Использование в обратных вызовах

Этот менеджер является мостом между параметрами Ajax-обратного вызова (которые содержат строковые идентификаторы) и объектами предметной области Java. Например, при обработке обратного вызова перетаскивания события обработчик вызывает getEventManager().getEvent(sourceId, eventId) для получения затронутого объекта события, обновляет его время в базе данных и возвращает ответ клиенту.

История Git

КоммитЧто изменилось
868d6abb7ceb63e8a1Шесть ежегодных обновлений заголовков авторских прав. Логика поиска оставалась стабильной — двухэтапный шаблон ID→Источник→Событие покрывает все сценарии обратных вызовов, и дополнительные методы поиска не потребовались.