001 package biweekly.property;
002
003 import java.util.List;
004
005 import biweekly.component.VAlarm;
006 import biweekly.parameter.CalendarUserType;
007 import biweekly.parameter.ParticipationStatus;
008 import biweekly.parameter.Role;
009
010 /*
011 Copyright (c) 2013, Michael Angstadt
012 All rights reserved.
013
014 Redistribution and use in source and binary forms, with or without
015 modification, are permitted provided that the following conditions are met:
016
017 1. Redistributions of source code must retain the above copyright notice, this
018 list of conditions and the following disclaimer.
019 2. Redistributions in binary form must reproduce the above copyright notice,
020 this list of conditions and the following disclaimer in the documentation
021 and/or other materials provided with the distribution.
022
023 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
024 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
025 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
026 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
027 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
028 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
029 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
030 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
031 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
032 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
033 */
034
035 /**
036 * <p>
037 * Defines an attendee (such as a person attending an event). This property has
038 * different meanings depending on the component that it belongs to:
039 * <ul>
040 * <li>{@link VAlarm} (with "EMAIL" action) - An email address that is to
041 * receive the alarm.</li>
042 * <li>All others - An attendee of the event.</li>
043 * </ul>
044 * </p>
045 *
046 * <p>
047 * <b>Examples:</b>
048 *
049 * <pre class="brush:java">
050 * Attendee attendee = Attendee.email("johndoe@example.com")
051 * attendee.setCommonName("John Doe");
052 * attendee.setRsvp(true);
053 * attendee.setRole(Role.CHAIR);
054 * attendee.setParticipationStatus(ParticipationStatus.ACCEPTED);
055 * </pre>
056 *
057 * </p>
058 * @author Michael Angstadt
059 * @rfc 5545 p.107-9
060 */
061 public class Attendee extends TextProperty {
062 /**
063 * Creates an attendee property.
064 * @param uri a URI representing the attendee (typically, an email address,
065 * e.g. "mailto:johndoe@example.com")
066 */
067 public Attendee(String uri) {
068 super(uri);
069 }
070
071 /**
072 * Creates an attendee property using an email address as its value.
073 * @param email the email address (e.g. "johndoe@example.com")
074 * @return the property
075 */
076 public static Attendee email(String email) {
077 return new Attendee("mailto:" + email);
078 }
079
080 /**
081 * Gets the type of user the attendee is (for example, an "individual" or a
082 * "room").
083 * @return the calendar user type or null if not set
084 * @rfc 5545 p.16
085 */
086 public CalendarUserType getCalendarUserType() {
087 return parameters.getCalendarUserType();
088 }
089
090 /**
091 * Sets the type of user the attendee is (for example, an "individual" or a
092 * "room").
093 * @param cutype the calendar user type or null to remove
094 * @rfc 5545 p.16
095 */
096 public void setCalendarUserType(CalendarUserType cutype) {
097 parameters.setCalendarUserType(cutype);
098 }
099
100 /**
101 * Gets the groups that the attendee is a member of.
102 * @return the group URIs (typically, these are email address URIs, e.g.
103 * "mailto:mailinglist@example.com")
104 * @rfc 5545 p.21-2
105 */
106 public List<String> getMembers() {
107 return parameters.getMembers();
108 }
109
110 /**
111 * Adds a group that the attendee is a member of.
112 * @param uri the group URI (typically, an email address URI, e.g.
113 * "mailto:mailinglist@example.com")
114 * @rfc 5545 p.21-2
115 */
116 public void addMember(String uri) {
117 parameters.addMember(uri);
118 }
119
120 /**
121 * Gets the attendee's role (for example, "chair" or
122 * "required participant").
123 * @return the role or null if not set
124 * @rfc 5545 p.25-6
125 */
126 public Role getRole() {
127 return parameters.getRole();
128 }
129
130 /**
131 * Sets the attendee's role (for example, "chair" or
132 * "required participant").
133 * @param role the role or null to remove
134 * @rfc 5545 p.25-6
135 */
136 public void setRole(Role role) {
137 parameters.setRole(role);
138 }
139
140 /**
141 * Gets the attendee's level of participation.
142 * @return the participation status or null if not set
143 * @rfc 5545 p.22-3
144 */
145 public ParticipationStatus getParticipationStatus() {
146 return parameters.getParticipationStatus();
147 }
148
149 /**
150 * Sets the attendee's level of participation.
151 * @param status the participation status or null to remove
152 * @rfc 5545 p.22-3
153 */
154 public void setParticipationStatus(ParticipationStatus status) {
155 parameters.setParticipationStatus(status);
156 }
157
158 /**
159 * Gets whether the organizer requests a response from the attendee.
160 * @return true if an RSVP is requested, false if not, null if not set
161 * @rfc 5545 p.26-7
162 */
163 public Boolean getRsvp() {
164 return parameters.getRsvp();
165 }
166
167 /**
168 * Sets whether the organizer requests a response from the attendee.
169 * @param rsvp true if an RSVP has been requested, false if not, null to
170 * remove
171 * @rfc 5545 p.26-7
172 */
173 public void setRsvp(Boolean rsvp) {
174 parameters.setRsvp(rsvp);
175 }
176
177 /**
178 * Gets the people who have delegated their responsibility to the attendee.
179 * @return the delegators (typically email URIs, e.g.
180 * "mailto:janedoe@example.com")
181 * @rfc 5545 p.17
182 */
183 public List<String> getDelegatedFrom() {
184 return parameters.getDelegatedFrom();
185 }
186
187 /**
188 * Adds a person who has delegated his or her responsibility to the
189 * attendee.
190 * @param uri the delegator (typically an email URI, e.g.
191 * "mailto:janedoe@example.com")
192 * @rfc 5545 p.17
193 */
194 public void addDelegatedFrom(String uri) {
195 parameters.addDelegatedFrom(uri);
196 }
197
198 /**
199 * Gets the people to which the attendee has delegated his or her
200 * responsibility.
201 * @return the delegatees (typically email URIs, e.g.
202 * "mailto:janedoe@example.com")
203 * @rfc 5545 p.17-8
204 */
205 public List<String> getDelegatedTo() {
206 return parameters.getDelegatedTo();
207 }
208
209 /**
210 * Adds a person to which the attendee has delegated his or her
211 * responsibility.
212 * @param uri the delegatee (typically an email URI, e.g.
213 * "mailto:janedoe@example.com")
214 * @rfc 5545 p.17-8
215 */
216 public void addDelegatedTo(String uri) {
217 parameters.addDelegatedTo(uri);
218 }
219
220 @Override
221 public String getSentBy() {
222 return super.getSentBy();
223 }
224
225 @Override
226 public void setSentBy(String uri) {
227 super.setSentBy(uri);
228 }
229
230 @Override
231 public String getCommonName() {
232 return super.getCommonName();
233 }
234
235 @Override
236 public void setCommonName(String commonName) {
237 super.setCommonName(commonName);
238 }
239
240 @Override
241 public String getDirectoryEntry() {
242 return super.getDirectoryEntry();
243 }
244
245 @Override
246 public void setDirectoryEntry(String uri) {
247 super.setDirectoryEntry(uri);
248 }
249
250 /**
251 * Gets the language that the common name parameter is written in.
252 */
253 @Override
254 public String getLanguage() {
255 return super.getLanguage();
256 }
257
258 /**
259 * Sets the language that the common name parameter is written in.
260 */
261 @Override
262 public void setLanguage(String language) {
263 super.setLanguage(language);
264 }
265
266 }