Расширение календаря

Необходимо в эвенте календаря хранить дополнительное поле, отображаться на календаре оно не должно, но должна быть возможность его извлечения. Не пойму какой класс необходимо экстендить?

Дополнительное поле должно храниться в базе?
Тогда расширяйте тот класс, который является источником данных для календаря и хранит данные в БД.

Класс который дает данные для календаря имеет гораздо больше полей чем необходимо календарю, вот к этим полям мне и нужно получить доступ при манипуляции с эвентами.

Тогда явно надо больше информации о том, при каких именно “манипуляциях с эвентами” нужно получить доступ к исходным данным.
И то том, как реализовано использование календаря: через CalendarEventProvider или EntityCalendarEventProvider?
При использовании последнего, с виду, во всех событиях календаря можно добраться до экземпляра исходной сущности через event.getEntity().

Похоже мне нужно воспользоваться EntityCalendarEventProvider, но как его установить для календаря? В документации очень скудно на этот счет написано. Если так делать:

EntityCalendarEventProvider entityCalendarEventProvider = new EntityCalendarEventProvider(???);
calendar.setEventProvider(entityCalendarEventProvider);

То EntityCalendarEventProvider хочет в качестве аргумента
CollectionDatasource а программное создание CollectionDatasource признано устаревшим.

В документации просто приведен фрагмент кода для legacy экрана.
Посмотрите sampler, там на новом API, с использованием dataContainer:

<calendar id="calendar"
                  captionProperty="caption"
                  dataContainer="calendarEventsDc"
                  descriptionProperty="description"
                  endDate="2016-10-31"
                  endDateProperty="endDate"
                  height="100%"
                  startDate="2016-10-01"
                  startDateProperty="startDate"
                  stylenameProperty="stylename"
                  width="100%"/>

Да, я делаю так же как в примере. Но в событиях календаря у меня нет event.getEntity().

calendar.addEventClickListener(event ->{
event.getEntity(); //Отдает экз. сущности, отображенной в календаре
});

Да, действительно… при клике на эвент event.getEntity() отдает экземпляр сущности, а вот при перетаскивании addEventMoveListener() нет.

Да, в событии Calendar.CalendarEventMoveEvent под рукой почему-то нет доступа к экземпляру сущности источника данных календаря.
Но там можно через event.getCalendarEvent()), а дальше через приведение.
Примерно так:

Entity entity = ((EntityCalendarEvent) event.getCalendarEvent()).getEntity();
Order movedOrder = (Order)entity;
2 симпатии

Андрей, огромное Вам спасибо! Все получилось.

1 симпатия