
org.sakaiproject.calendar.api.Calendar Maven / Gradle / Ivy
The newest version!
/**********************************************************************************
* $URL$
* $Id$
***********************************************************************************
*
* Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008 The Sakai Foundation
*
* Licensed under the Educational Community License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.opensource.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
**********************************************************************************/
package org.sakaiproject.calendar.api;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.sakaiproject.calendar.api.CalendarEvent.EventAccess;
import org.sakaiproject.entity.api.Entity;
import org.sakaiproject.exception.IdUnusedException;
import org.sakaiproject.exception.IdUsedException;
import org.sakaiproject.exception.InUseException;
import org.sakaiproject.exception.PermissionException;
import org.sakaiproject.javax.Filter;
import org.sakaiproject.time.api.TimeRange;
import org.sakaiproject.time.api.Time;
import org.w3c.dom.Element;
/**
* Calendar is the base interface for Calendar service calendars.
* Calendars contains collections of CalendarEvents.
*/
public interface Calendar
extends Entity
{
/**
* Access the context of the resource.
* @return The context.
*/
public String getContext();
/**
** check if this calendar enables ical exports
** @return true if the calender allows exports; false if not
**/
public boolean getExportEnabled();
/**
** set if this calendar enables ical exports
**/
public void setExportEnabled( boolean enable );
/**
** Get the time of the last modify to this calendar
** @return String representation of current time
**/
public Time getModified();
/**
** Set the time of the last modify for this calendar to now
**/
public void setModified();
/**
* check permissions for getEvents() and getEvent() on a SITE / calendar level.
* @return true if the user is allowed to get events from the calendar, false if not.
*/
public boolean allowGetEvents();
/**
* check permissions for getEvent() for a particular event.
* @return true if the user is allowed to get the event from the calendar, false if not.
*/
public boolean allowGetEvent(String eventId);
/**
* Return a List of all or filtered events in the calendar.
* The order in which the events will be found in the iteration is by event start date.
*
* @param range A time range to limit the iterated events. May be null; all events will be returned.
* @param filter A filtering object to accept events into the iterator, or null if no filtering is desired.
* @return a List of all or filtered CalendarEvents in the calendar (may be empty).
* @exception PermissionException if the user does not have read permission to the calendar.
*/
public List getEvents(TimeRange range, Filter filter)
throws PermissionException;
/**
* Return a List of all or filtered events in the calendar.
* The order in which the events will be found in the iteration is by event start date.
*
* @param range A time range to limit the iterated events. May be null; all events will be returned.
* @param filter A filtering object to accept events into the iterator, or null if no filtering is desired.
* @param limit A limit on how many events get returned for this calendar
* @return a List of all or filtered CalendarEvents in the calendar (may be empty).
* @exception PermissionException if the user does not have read permission to the calendar.
*/
default List getEvents(TimeRange range, Filter filter, Integer limit) throws PermissionException {
return Collections.emptyList();
}
/**
* Return a specific calendar event, as specified by event name.
* @param eventId The id of the event to get.
* @return the CalendarEvent that has the specified id.
* @exception IdUnusedException If this id is not a defined event in this calendar.
* @exception PermissionException If the user does not have any permissions to read the calendar.
*/
public CalendarEvent getEvent(String eventId)
throws IdUnusedException, PermissionException;
/**
* Return the extra fields kept for each event in this calendar.
* @return the extra fields kept for each event in this calendar, formatted into a single string. %%%
*/
public String getEventFields();
/**
* check permissions for addEvent().
* @return true if the user is allowed to addEvent(...), false if not.
*/
public boolean allowAddEvent();
/**
* Check if the user has permission to add a calendar-wide (not grouped) message.
*
* @return true if the user has permission to add a calendar-wide (not grouped) message.
*/
boolean allowAddCalendarEvent();
/**
* Add a new event to this calendar.
* @param range The event's time range.
* @param displayName The event's display name (PROP_DISPLAY_NAME) property value.
* @param description The event's description (PROP_DESCRIPTION) property value.
* @param type The event's calendar event type (PROP_CALENDAR_TYPE) property value.
* @param location The event's calendar event location (PROP_CALENDAR_LOCATION) property value.
* @param access The event's access type site or grouped
* @param groups The groups which can access this event
* @param attachments The event attachments, a vector of Reference objects.
* @return The newly added event.
* @exception PermissionException If the user does not have permission to modify the calendar.
*/
public CalendarEvent addEvent(TimeRange range, String displayName, String description,
String type, String location, EventAccess access, Collection groups, List attachments)
throws PermissionException;
/**
* Add a new event to this calendar.
* @param range The event's time range.
* @param displayName The event's display name (PROP_DISPLAY_NAME) property value.
* @param description The event's description (PROP_DESCRIPTION) property value.
* @param type The event's calendar event type (PROP_CALENDAR_TYPE) property value.
* @param location The event's calendar event location (PROP_CALENDAR_LOCATION) property value.
* @param attachments The event attachments, a vector of Reference objects.
* @return The newly added event.
* @exception PermissionException If the user does not have permission to modify the calendar.
*/
public CalendarEvent addEvent(TimeRange range, String displayName, String description,
String type, String location, List attachments)
throws PermissionException;
/**
* Add a new event to this calendar.
* Must commitEvent() to make official, or cancelEvent() when done!
* @return The newly added event, locked for update.
* @exception PermissionException If the user does not have write permission to the calendar.
*/
public CalendarEventEdit addEvent()
throws PermissionException;
/**
* check permissions for editEvent()
* @param id The event id.
* @return true if the user is allowed to update the event, false if not.
*/
public boolean allowEditEvent(String eventId);
/**
* Return a specific calendar event, as specified by event name, locked for update.
* Must commitEvent() to make official, or cancelEvent(), or removeEvent() when done!
* @param eventId The id of the event to get.
* @param editType add, remove or modifying calendar?
* @return the Event that has the specified id.
* @exception IdUnusedException If this name is not a defined event in this calendar.
* @exception PermissionException If the user does not have any permissions to edit the event.
* @exception InUseException if the event is locked for edit by someone else.
*/
public CalendarEventEdit getEditEvent(String eventId, String editType)
throws IdUnusedException, PermissionException, InUseException;
/**
* Commit the changes made to a CalendarEventEdit object, and release the lock.
* The CalendarEventEdit is disabled, and not to be used after this call.
* @param edit The CalendarEventEdit object to commit.
* @param intention The recurring event modification intention,
* based on values in the GenericCalendarService "MOD_*",
* used if the event is part of a recurring event sequence to determine how much of the sequence is changed by this commmit.
*/
public void commitEvent(CalendarEventEdit edit, int intention);
/**
* Commit the changes made to a CalendarEventEdit object, and release the lock.
* The CalendarEventEdit is disabled, and not to be used after this call.
* Note: if the event is a recurring event, the entire sequence is modified by this commit (MOD_ALL).
* @param edit The CalendarEventEdit object to commit.
*/
public void commitEvent(CalendarEventEdit edit);
/**
* Cancel the changes made to a CalendarEventEdit object, and release the lock.
* The CalendarEventEdit is disabled, and not to be used after this call.
* @param edit The CalendarEventEdit object to commit.
*/
public void cancelEvent(CalendarEventEdit edit);
/**
* Merge in a new event as defined in the xml.
* @param el The event information in XML in a DOM element.
* @exception PermissionException If the user does not have write permission to the calendar.
* @exception IdUsedException if the user id is already used.
*/
public CalendarEventEdit mergeEvent(Element el)
throws PermissionException, IdUsedException;
/**
* check permissions for removeEvent().
* @param event The event from this calendar to remove.
* @return true if the user is allowed to removeEvent(event), false if not.
*/
public boolean allowRemoveEvent(CalendarEvent event);
/**
* Remove an event from the calendar, one locked for edit.
* @param edit The event from this calendar to remove.
* @param intention The recurring event modification intention,
* based on values in the GenericCalendarService "MOD_*",
* used if the event is part of a recurring event sequence to determine how much of the sequence is removed.
* @throws PermissionException if the end user does not have permission to remove.
*/
public void removeEvent(CalendarEventEdit edit, int intention) throws PermissionException;
/**
* Remove an event from the calendar, one locked for edit.
* Note: if the event is a recurring event, the entire sequence is removed by this commit (MOD_ALL).
* @param edit The event from this calendar to remove.
* @throws PermissionException if the end user does not have permission to remove.
*/
public void removeEvent(CalendarEventEdit edit) throws PermissionException;
/**
* Get the collection of Groups defined for the context of this calendar that the end user has add event permissions in.
*
* @return The Collection (Group) of groups defined for the context of this calendar that the end user has add event permissions in, empty if none.
*/
Collection getGroupsAllowAddEvent();
/**
* Get the collection of Group defined for the context of this calendar that the end user has get event permissions in.
*
* @return The Collection (Group) of groups defined for the context of this calendar that the end user has get event permissions in, empty if none.
*/
Collection getGroupsAllowGetEvent();
/**
* Get the collection of Group defined for the context of this channel that the end user has remove event permissions in.
*
* @param own boolean flag indicating whether user owns event
*
* @return The Collection (Group) of groups defined for the context of this channel that the end user has remove event permissions in, empty if none.
*/
Collection getGroupsAllowRemoveEvent( boolean own );
/**
* Checks if user has permission to modify any event (or fields) in this calendar
* @param function
* @return
*/
public boolean canModifyAnyEvent(String function);
} // Calendar
© 2015 - 2025 Weber Informatics LLC | Privacy Policy