Package org.exoplatform.agenda.service
Interface AgendaEventService
public interface AgendaEventService
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringBroadcast once a colleague holding an edit share on a personal calendar (EXO-90378) — and holding no older right over the event — added, changed or removed one of its events; source theCalendarEditorChange, data the calendar owner's identity identifier. -
Method Summary
Modifier and TypeMethodDescriptionbooleancanAccessEvent(Event event, long identityId) Check whether user can access event or not.booleancanCreateEvent(Calendar calendar, long userIdentityId) Check whether user can create an event in selected Calendar or not.booleancanUpdateEvent(Event event, long userIdentityId) Check whether user can update or delete an event or not.longcountEventDatePolls(List<Long> ownerIds, long attendeeId) Count pending date polls where the current user is invitedlongcountPendingEvents(List<Long> ownerIds, long userIdentityId) Count pending events that the selected user didn't answered yetcreateEvent(Event event, List<EventAttendee> attendees, List<EventConference> conferences, List<EventReminder> reminders, List<EventDateOption> dateOptions, RemoteEvent remoteEvent, boolean sendInvitation, long userIdentityId) Creates an event in designated calendar or in user personal calendar if nullcreateEventExceptionalOccurrence(long eventId, List<EventAttendee> attendees, List<EventConference> conferences, List<EventReminder> reminders, ZonedDateTime occurrenceId) Create a new exceptional occurrence for a parent recurrent eventdeleteEventById(long eventId, long userIdentityId) Deletes an existing eventgetEventAccess(Event event, long identityId) How a user may read an event (EXO-90357): fully, only through a calendar share — in which case a private event is rendered as busy time — or not at all.getEventById(long eventId) Retrieves an event identified by its technical identifier.getEventById(long eventId, ZoneId timeZone, long identityId) Retrieves an event identified by its technical identifier.getEventDatePolls(EventFilter eventFilter, ZoneId userTimeZone, long attendeeId) Retrieves the list of pending date polls where the current user is invitedgetEventOccurrence(long parentEventId, ZonedDateTime occurrenceId, ZoneId userTimeZone, long identityId) Retrieves Event Occurrence identified by parent recurrence Event identifier and occurrence dategetEventOccurrencesInPeriod(Event recurrentEvent, ZonedDateTime start, ZonedDateTime end, ZoneId timezone, int limit) Retrieves occurrences, without exceptional, of a recurrent event in a given period of time.getEvents(EventFilter eventFilter, ZoneId userTimeZone, long userIdentityId) Retrieves the list of events available for a designated user filtered by criteria defined in a filter.getExceptionalOccurrenceEvent(long eventId, ZonedDateTime occurrenceId) Retrieves an event identified by its technical identifier.getExceptionalOccurrenceEvents(long eventId, ZoneId timeZone, long userIdentityId) Retrieves the list of exceptional occurrences of an event identified by its technical identifier.getParentRecurrentEvents(ZonedDateTime start, ZonedDateTime end, ZoneId timeZone) Retrieve parent recurrent events switch event filter.getPendingEvents(List<Long> ownerIds, long userIdentityId, ZoneId userTimeZone, int offset, int limit) Retrieve pending events that the selected user didn't answered yetmoveExceptionalOccurrences(long fromEventId, long toEventId, ZonedDateTime fromDate, long userIdentityId) Moves the exceptional occurrences of a recurring event dated from a given day on under another recurring event: the second half of a "this and upcoming" split, whose continuing series is created first so that the dates the organiser had customised from the split point on survive the shortening of the first series instead of being dropped with their answers.saveEventExceptionalOccurrence(long eventId, ZonedDateTime occurrenceId) Creates an exceptional occurrence for a recurrent event and occurrence IDsearch(AgendaEventSearchFilter filter) Search the list of events available with query for the currentUservoidselectEventDateOption(long eventId, long dateOptionId, long userIdentityId) Choose a selectedEventDateOptionfor a givenEventupdateEvent(Event event, List<EventAttendee> attendees, List<EventConference> conferences, List<EventReminder> reminders, List<EventDateOption> dateOptions, RemoteEvent remoteEvent, boolean sendInvitation, long userIdentityId) Updates an existing event in-place when the user is owner of parentCalendar, else this will duplicate the event and add it into his personal calendarvoidupdateEventFields(long eventId, Map<String, List<String>> fields, boolean updateAllOccurrences, boolean sendInvitation, long userIdentityId) Updates a single field for a givenEventidentified by its technical identifier.
-
Field Details
-
CALENDAR_EDITED_BY_SHAREE_EVENT
Broadcast once a colleague holding an edit share on a personal calendar (EXO-90378) — and holding no older right over the event — added, changed or removed one of its events; source theCalendarEditorChange, data the calendar owner's identity identifier.Raised by the event service alone, which is the one place that knows by what right a writer wrote. The owner is told about the one case they cannot otherwise see coming; a change of their own, of a space manager, of the event's creator or of an attendee allowed to update raises nothing.
- See Also:
-
-
Method Details
-
getEvents
List<Event> getEvents(EventFilter eventFilter, ZoneId userTimeZone, long userIdentityId) throws IllegalAccessException Retrieves the list of events available for a designated user filtered by criteria defined in a filter.The filter's
calendarIds(EventFilter) name the calendars other users shared with the reader (EXO-90357): each is checked against the reader — accessible, or shared with them — and the whole request is refused otherwise. A private event of a shared calendar comes back masked (Event.isMasked()).- Parameters:
eventFilter- a filter used to define criteria to get list of objectsuserTimeZone- User time zoneuserIdentityId- userIdentityidentifier- Returns:
ListofEventaccessible to user- Throws:
IllegalAccessException- when user is not allowed to access events, or names a calendar incalendarIdsthey may not read
-
getParentRecurrentEvents
Retrieve parent recurrent events switch event filter. -
getEventById
Retrieves an event identified by its technical identifier.- Parameters:
eventId- technical identifier of eventtimeZone- used timezone to convert datesidentityId-Identitytechnical identifier- Returns:
- Corresponding
Eventor null if not found - Throws:
IllegalAccessException- when user is not allowed to access event
-
getEventById
Retrieves an event identified by its technical identifier.- Parameters:
eventId- technical identifier of event- Returns:
- Corresponding
Eventor null if not found
-
getEventOccurrence
Event getEventOccurrence(long parentEventId, ZonedDateTime occurrenceId, ZoneId userTimeZone, long identityId) throws IllegalAccessException Retrieves Event Occurrence identified by parent recurrence Event identifier and occurrence date- Parameters:
parentEventId-Eventtechnical identifieroccurrenceId- Date of occurrenceuserTimeZone- used user timezoneidentityId- userIdentityidentifier requesting event- Returns:
Eventrepresenting occurrence of parent recurrent event- Throws:
IllegalAccessException- when the user can't access the event served (seecanAccessEvent(Event, long)): a stored exceptional occurrence is checked through its own row, as an event of its own; a computed occurrence through its parent
-
getExceptionalOccurrenceEvents
List<Event> getExceptionalOccurrenceEvents(long eventId, ZoneId timeZone, long userIdentityId) throws IllegalAccessException Retrieves the list of exceptional occurrences of an event identified by its technical identifier.- Parameters:
eventId- technical identifier of parent recurrent eventtimeZone- used timezone to compute eventsuserIdentityId-- Returns:
- list of Exceptional
Events if found, else null - Throws:
IllegalAccessException- when user is not allowed to access event
-
moveExceptionalOccurrences
List<Long> moveExceptionalOccurrences(long fromEventId, long toEventId, ZonedDateTime fromDate, long userIdentityId) throws IllegalAccessException, AgendaException Moves the exceptional occurrences of a recurring event dated from a given day on under another recurring event: the second half of a "this and upcoming" split, whose continuing series is created first so that the dates the organiser had customised from the split point on survive the shortening of the first series instead of being dropped with their answers. Each moved row is then merged into its new series as a date individually modified is merged into a series change: what was customised on the date is kept, what was not follows the new series, and a day the new series does not produce is dropped, as a series change drops it. A row the new series already holds for a date a kept row moved to — the reminder computing listener materialises the next days of a series on its creation — is deleted when it carries nothing of its own against the new series, so that a date keeps one row.- Parameters:
fromEventId- the recurring event the rows belong totoEventId- the recurring event they move under, in the same calendarfromDate- the occurrence the split starts from, inclusive, compared as occurrences are, within twelve hoursuserIdentityId- who is splitting; must be allowed to update both events- Returns:
- the identifiers of the rows moved and kept by the merge
- Throws:
IllegalAccessException- when the user may not update one of the two eventsAgendaException- when one of the two events does not existIllegalArgumentException- when the two events are one, when one of them is not a recurring series or when they live in different calendars; the message is the codeagenda.seriesSplit.notAllowed
-
getExceptionalOccurrenceEvent
Retrieves an event identified by its technical identifier.- Parameters:
eventId- technical identifier of parent recurrent eventoccurrenceId- technical occurrence event identifier- Returns:
- Exceptional
Eventif found, else null
-
createEventExceptionalOccurrence
Event createEventExceptionalOccurrence(long eventId, List<EventAttendee> attendees, List<EventConference> conferences, List<EventReminder> reminders, ZonedDateTime occurrenceId) throws AgendaException Create a new exceptional occurrence for a parent recurrent event- Parameters:
eventId- technical identifier of parent recurrent eventattendees-Listof attendeesconferences-Listof conferencesreminders-Listof remindersoccurrenceId- event occurent identifier- Returns:
- newly created
Event - Throws:
AgendaException- when the event attributes aren't valid
-
saveEventExceptionalOccurrence
Event saveEventExceptionalOccurrence(long eventId, ZonedDateTime occurrenceId) throws AgendaException Creates an exceptional occurrence for a recurrent event and occurrence ID- Parameters:
eventId- parent recurrent event identifieroccurrenceId- Occurrence identifier- Returns:
- created
Event - Throws:
AgendaException- when an error occurs hile creating event
-
createEvent
Event createEvent(Event event, List<EventAttendee> attendees, List<EventConference> conferences, List<EventReminder> reminders, List<EventDateOption> dateOptions, RemoteEvent remoteEvent, boolean sendInvitation, long userIdentityId) throws IllegalAccessException, AgendaException Creates an event in designated calendar or in user personal calendar if null- Parameters:
event-Eventto createattendees- event attendees of typeEventAttendeeconferences- event conferences of typeEventConferencereminders-Listof preferred user reminders of typeEventReminderdateOptions-ListofEventDateOptionof corresponding eventremoteEvent-RemoteEventof synchronized event by user to remote connectorsendInvitation- whether send invitation to attendees or notuserIdentityId- userIdentityidentifier- Returns:
- Created
Eventwith technichal identifier - Throws:
IllegalAccessException- when user is not allowed to create event on calendar, or creates an exceptional occurrence of a recurring event (a parent) that they aren't allowed to updateAgendaException- when the event attributes aren't valid, or when the parent event isn't found
-
updateEvent
Event updateEvent(Event event, List<EventAttendee> attendees, List<EventConference> conferences, List<EventReminder> reminders, List<EventDateOption> dateOptions, RemoteEvent remoteEvent, boolean sendInvitation, long userIdentityId) throws IllegalAccessException, org.exoplatform.commons.exception.ObjectNotFoundException, AgendaException Updates an existing event in-place when the user is owner of parentCalendar, else this will duplicate the event and add it into his personal calendar- Parameters:
event-Eventto createattendees- event attendees of typeEventAttendeeconferences- event conferences of typeEventConferencereminders-Listof preferred user reminders of typeEventReminderdateOptions-ListofEventDateOptionof corresponding eventremoteEvent-RemoteEventof synchronized event by user to remote connectorsendInvitation- whether re-send invitation to attendees or notuserIdentityId- userIdentityidentifier- Returns:
- Updated
Event - Throws:
IllegalAccessException- when user is not allowed to update event, or moves it to another calendar in which they can't create eventsorg.exoplatform.commons.exception.ObjectNotFoundException- when the event identified by its technical identifier is not foundAgendaException- when the event attributes aren't valid
-
updateEventFields
void updateEventFields(long eventId, Map<String, List<String>> fields, boolean updateAllOccurrences, boolean sendInvitation, long userIdentityId) throws IllegalAccessException, org.exoplatform.commons.exception.ObjectNotFoundException, AgendaExceptionUpdates a single field for a givenEventidentified by its technical identifier. When the event is of type 'recurrent', if parameter updateAllOccurrences is set to true, it will update the event field for all exceptional occurrences as well.- Parameters:
eventId- Event technical identifier to updatefields-Eventfields with field name as map key and field value as map valueupdateAllOccurrences- whether apply modification on all exceptional occurrences as well or notsendInvitation- whether re-send invitation to attendees or notuserIdentityId- userIdentityidentifier- Throws:
IllegalAccessException- when user is not allowed to update event, or moves it to another calendar in which they can't create eventsorg.exoplatform.commons.exception.ObjectNotFoundException- when the event identified by its technical identifier is not foundAgendaException- when the event attribute isn't valid
-
deleteEventById
Event deleteEventById(long eventId, long userIdentityId) throws IllegalAccessException, org.exoplatform.commons.exception.ObjectNotFoundException Deletes an existing event- Parameters:
eventId- Event technical identifier to deleteuserIdentityId- userIdentityidentifier- Returns:
- deleted
Event - Throws:
IllegalAccessException- when user is not authorized to delete the eventorg.exoplatform.commons.exception.ObjectNotFoundException- when the event identified by its technical identifier is not found
-
canAccessEvent
Check whether user can access event or not.- Parameters:
event-Eventto check its permissionidentityId-Identitytechnical identifier- Returns:
- true if the user is a member of
CalendarownerIdentityor is anEventAttendee, else return false.
-
getEventAccess
How a user may read an event (EXO-90357): fully, only through a calendar share — in which case a private event is rendered as busy time — or not at all.canAccessEvent(org.exoplatform.agenda.model.Event, long)is this answer being anything butEventAccess.NONE.- Parameters:
event-Eventto checkidentityId-Identitytechnical identifier of the reader- Returns:
- the access, never null
-
canUpdateEvent
Check whether user can update or delete an event or not.- Parameters:
event-Eventto check its permissionuserIdentityId- userIdentityidentifier- Returns:
- true if the user is a manager of
CalendarownerIdentityor is anEventAttendee, else return false.
-
canCreateEvent
Check whether user can create an event in selected Calendar or not. -
search
Search the list of events available with query for the currentUser- Parameters:
filter-AgendaEventSearchFilterused to filter the events- Returns:
ListofEventSearchResult
-
getEventOccurrencesInPeriod
List<Event> getEventOccurrencesInPeriod(Event recurrentEvent, ZonedDateTime start, ZonedDateTime end, ZoneId timezone, int limit) Retrieves occurrences, without exceptional, of a recurrent event in a given period of time. -
selectEventDateOption
void selectEventDateOption(long eventId, long dateOptionId, long userIdentityId) throws org.exoplatform.commons.exception.ObjectNotFoundException, IllegalAccessException Choose a selectedEventDateOptionfor a givenEvent- Parameters:
eventId- technical identifier ofEventdateOptionId- Technical identifier ofEventDateOptionuserIdentityId- userIdentityidentifier- Throws:
org.exoplatform.commons.exception.ObjectNotFoundException- whenEventis not found using identifier orEventDateOptionis not found using technical identifierIllegalAccessException- when user is not an allowed participant of the event who can modifies it
-
getEventDatePolls
List<Event> getEventDatePolls(EventFilter eventFilter, ZoneId userTimeZone, long attendeeId) throws IllegalAccessException Retrieves the list of pending date polls where the current user is invited- Parameters:
eventFilter- a filter used to define criteria to get list of objectsuserTimeZone- used to compute events dates switch given time zoneattendeeId- userIdentityidentifier- Returns:
Listdate pollEventfor user- Throws:
IllegalAccessException- when user is not an allowed to access one of ownerIds events
-
countEventDatePolls
Count pending date polls where the current user is invited- Parameters:
ownerIds-ListofIdentitytechnical identifierattendeeId- userIdentityidentifier- Returns:
Listdate pollEventfor user- Throws:
IllegalAccessException- when user is not an allowed to access one of ownerIds events
-
getPendingEvents
List<Event> getPendingEvents(List<Long> ownerIds, long userIdentityId, ZoneId userTimeZone, int offset, int limit) throws Exception Retrieve pending events that the selected user didn't answered yet- Parameters:
ownerIds-ListofIdentitytechnical identifieruserIdentityId- userIdentityidentifieruserTimeZone- User time zoneoffset- offset of the events to retrievelimit- Limit of events to retrieve- Returns:
ListofEvent- Throws:
IllegalAccessException- when user is not an allowed to access one of ownerIds eventsException
-
countPendingEvents
Count pending events that the selected user didn't answered yet- Parameters:
ownerIds-ListofIdentitytechnical identifieruserIdentityId- userIdentityidentifier- Returns:
- pending events count
- Throws:
IllegalAccessException- when user is not an allowed to access one of ownerIds eventsException
-