001/*
002 * The MIT License
003 * Copyright (c) 2012 Microsoft Corporation
004 *
005 * Permission is hereby granted, free of charge, to any person obtaining a copy
006 * of this software and associated documentation files (the "Software"), to deal
007 * in the Software without restriction, including without limitation the rights
008 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
009 * copies of the Software, and to permit persons to whom the Software is
010 * furnished to do so, subject to the following conditions:
011 *
012 * The above copyright notice and this permission notice shall be included in
013 * all copies or substantial portions of the Software.
014 *
015 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
016 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
017 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
018 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
019 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
020 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
021 * THE SOFTWARE.
022 */
023
024package microsoft.exchange.webservices.data.core.service.item;
025
026import microsoft.exchange.webservices.data.attribute.EditorBrowsable;
027import microsoft.exchange.webservices.data.attribute.ServiceObjectDefinition;
028import microsoft.exchange.webservices.data.core.ExchangeService;
029import microsoft.exchange.webservices.data.core.PropertySet;
030import microsoft.exchange.webservices.data.core.XmlElementNames;
031import microsoft.exchange.webservices.data.core.service.schema.MeetingMessageSchema;
032import microsoft.exchange.webservices.data.core.service.schema.ServiceObjectSchema;
033import microsoft.exchange.webservices.data.core.enumeration.attribute.EditorBrowsableState;
034import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
035import microsoft.exchange.webservices.data.core.enumeration.property.MeetingResponseType;
036import microsoft.exchange.webservices.data.core.exception.service.local.ServiceLocalException;
037import microsoft.exchange.webservices.data.property.complex.ItemAttachment;
038import microsoft.exchange.webservices.data.property.complex.ItemId;
039
040import java.util.Date;
041
042/**
043 * Represents a meeting-related message. Properties available on meeting
044 * messages are defined in the MeetingMessageSchema class.
045 */
046
047@ServiceObjectDefinition(xmlElementName = XmlElementNames.MeetingMessage)
048@EditorBrowsable(state = EditorBrowsableState.Never)
049public class MeetingMessage extends EmailMessage {
050
051  /**
052   * Initializes a new instance of the "MeetingMessage" class.
053   *
054   * @param parentAttachment the parent attachment
055   * @throws Exception the exception
056   */
057  public MeetingMessage(ItemAttachment parentAttachment) throws Exception {
058    super(parentAttachment);
059  }
060
061  /**
062   * Initializes a new instance of the "MeetingMessage" class.
063   *
064   * @param service EWS service to which this object belongs.
065   * @throws Exception the exception
066   */
067  public MeetingMessage(ExchangeService service) throws Exception {
068    super(service);
069  }
070
071  /**
072   * Binds to an existing meeting message and loads the specified set of
073   * property. Calling this method results in a call to EWS.
074   *
075   * @param service     The service to use to bind to the meeting message.
076   * @param id          The Id of the meeting message to bind to.
077   * @param propertySet The set of property to load.
078   * @return A MeetingMessage instance representing the meeting message
079   * corresponding to the specified Id.
080   * @throws Exception the exception
081   */
082  public static MeetingMessage bind(ExchangeService service, ItemId id,
083      PropertySet propertySet) throws Exception {
084    return (MeetingMessage) service.bindToItem(id, propertySet);
085  }
086
087  /**
088   * Binds to an existing meeting message and loads its first class
089   * property. Calling this method results in a call to EWS.
090   *
091   * @param service The service to use to bind to the meeting message.
092   * @param id      The Id of the meeting message to bind to.
093   * @return A MeetingMessage instance representing the meeting message
094   * corresponding to the specified Id.
095   * @throws Exception the exception
096   */
097  public static MeetingMessage bind(ExchangeService service, ItemId id)
098      throws Exception {
099    return MeetingMessage.bind(service, id, PropertySet
100        .getFirstClassProperties());
101  }
102
103  /**
104   * Internal method to return the schema associated with this type of object.
105   *
106   * @return The schema associated with this type of object.
107   */
108  @Override public ServiceObjectSchema getSchema() {
109    return MeetingMessageSchema.getInstance();
110  }
111
112  /**
113   * Gets the minimum required server version.
114   *
115   * @return Earliest Exchange version in which this service object type is
116   * supported.
117   */
118  @Override public ExchangeVersion getMinimumRequiredServerVersion() {
119    return ExchangeVersion.Exchange2007_SP1;
120  }
121
122  /**
123   * Gets the associated appointment ID.
124   *
125   * @return the associated appointment ID.
126   * @throws ServiceLocalException the service local exception
127   */
128  public ItemId getAssociatedAppointmentId()
129      throws ServiceLocalException {
130    return getPropertyBag().getObjectFromPropertyDefinition(
131        MeetingMessageSchema.AssociatedAppointmentId);
132  }
133
134  /**
135   * Gets whether the meeting message has been processed.
136   *
137   * @return whether the meeting message has been processed.
138   * @throws ServiceLocalException the service local exception
139   */
140  public Boolean getHasBeenProcessed()
141      throws ServiceLocalException {
142    return getPropertyBag().getObjectFromPropertyDefinition(
143        MeetingMessageSchema.HasBeenProcessed);
144  }
145
146  /**
147   * Gets the response type indicated by this meeting message.
148   *
149   * @return the response type indicated by this meeting message.
150   * @throws ServiceLocalException the service local exception
151   */
152  public MeetingResponseType getResponseType()
153      throws ServiceLocalException {
154    return getPropertyBag().getObjectFromPropertyDefinition(
155        MeetingMessageSchema.ResponseType);
156  }
157
158  /**
159   * Gets the ICalendar Uid.
160   *
161   * @return the ical uid
162   * @throws ServiceLocalException the service local exception
163   */
164  public String getICalUid() throws ServiceLocalException {
165    return getPropertyBag().getObjectFromPropertyDefinition(
166        MeetingMessageSchema.ICalUid);
167  }
168
169  /**
170   * Gets the ICalendar RecurrenceId.
171   *
172   * @return the ical recurrence id
173   * @throws ServiceLocalException the service local exception
174   */
175  public Date getICalRecurrenceId() throws ServiceLocalException {
176    return getPropertyBag().getObjectFromPropertyDefinition(
177        MeetingMessageSchema.ICalRecurrenceId);
178  }
179
180  /**
181   * Gets the ICalendar DateTimeStamp.
182   *
183   * @return the ical date time stamp
184   * @throws ServiceLocalException the service local exception
185   */
186  public Date getICalDateTimeStamp() throws ServiceLocalException {
187    return getPropertyBag().getObjectFromPropertyDefinition(
188        MeetingMessageSchema.ICalDateTimeStamp);
189  }
190
191  /**
192   * Gets the IsDelegated property.
193   *
194   * @return True if delegated; false otherwise.
195   * @throws ServiceLocalException the service local exception
196   */
197  public Boolean getIsDelegated() throws ServiceLocalException {
198    return getPropertyBag().getObjectFromPropertyDefinition(
199        MeetingMessageSchema.IsDelegated);
200  }
201
202  /**
203   * Gets the IsOutOfDate property.
204   *
205   * @return True if out of date; false otherwise.
206   * @throws ServiceLocalException the service local exception
207   */
208  public Boolean getIsOutOfDate() throws ServiceLocalException {
209    return getPropertyBag().getObjectFromPropertyDefinition(
210        MeetingMessageSchema.IsOutOfDate);
211  }
212
213}