001/*
002 *  Copyright 2014 Anyware Services
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.ametys.plugins.workspaces.calendars.events;
017
018import java.time.ZoneId;
019import java.time.ZonedDateTime;
020import java.util.List;
021
022import org.ametys.core.user.UserIdentity;
023import org.ametys.plugins.repository.data.ametysobject.ModifiableModelAwareDataAwareAmetysObject;
024
025/**
026 * Modifiable Calendar Event Interface
027 */
028public interface ModifiableCalendarEvent extends CalendarEvent, ModifiableModelAwareDataAwareAmetysObject
029{
030    /**
031     * Set the title of the event
032     * @param title the title
033     */
034    public void setTitle(String title);
035    
036    /**
037     * Set the description of the event
038     * @param desc the description
039     */
040    public void setDescription(String desc);
041    
042    /**
043     * Set the location of the event
044     * @param location the location
045     */
046    public void setLocation(String location);
047    
048    /**
049     * Set the startDate of the event
050     * @param startDate the start date
051     */
052    public void setStartDate(ZonedDateTime startDate);
053
054    /**
055     * Set the endDate of the event
056     * @param endDate the end date
057     */
058    public void setEndDate(ZonedDateTime endDate);
059    
060    /**
061     * Set the date zone of the event
062     * @param dateZone the date zone
063     */
064    public void setZone(ZoneId dateZone);
065
066    /**
067     * Set if the event last all the day
068     * @param fullDay is a fullday event
069     */
070    public void setFullDay(Boolean fullDay);
071    
072    /**
073     * Set the creator
074     * @param user The creator
075     */
076    public void setCreator(UserIdentity user);
077    
078    /**
079     * Set the creation date
080     * @param date The creation date
081     */
082    public void setCreationDate(ZonedDateTime date);
083    
084    /**
085     * Set the last contributor
086     * @param user The last contributor
087     */
088    public void setLastContributor(UserIdentity user);
089    
090    /**
091     * Set the last modified date
092     * @param date The last modified date
093     */
094    public void setLastModified(ZonedDateTime date);
095    
096    /**
097     * Set the recurrence type.
098     * @param recurrenceType the recurrence type
099     */
100    public void setRecurrenceType(String recurrenceType);
101    /**
102     * Set the end date of the frequency.
103     * @param untilDate the end date of the recurrence
104     */
105    public void setRepeatUntil(ZonedDateTime untilDate);
106    /**
107     * Set the list of excluded event date.
108     * @param excludedOccurrences excluded date
109     */
110    public void setExcludedOccurrences(List<ZonedDateTime> excludedOccurrences);
111    
112    /**
113     * Set the oragniser
114     * @param user The oragniser
115     */
116    public void setOrganiser(UserIdentity user);
117
118    /**
119     * Set the resources
120     * @param resources The resources
121     */
122    void setResources(List<String> resources);
123    
124}