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.property.complex;
025
026import microsoft.exchange.webservices.data.core.EwsServiceXmlReader;
027import microsoft.exchange.webservices.data.core.EwsServiceXmlWriter;
028import microsoft.exchange.webservices.data.core.EwsUtilities;
029import microsoft.exchange.webservices.data.core.XmlElementNames;
030import microsoft.exchange.webservices.data.core.enumeration.property.MeetingResponseType;
031
032import java.util.Date;
033
034/**
035 * Represents an attendee to a meeting.
036 */
037
038public final class Attendee extends EmailAddress {
039
040  /**
041   * The response type.
042   */
043  private MeetingResponseType responseType;
044
045  /**
046   * The last response time.
047   */
048  private Date lastResponseTime;
049
050  /**
051   * Initializes a new instance of the Attendee class.
052   */
053  public Attendee() {
054    super();
055  }
056
057  /**
058   * Initializes a new instance of the Attendee class.
059   *
060   * @param smtpAddress the smtp address
061   * @throws Exception the exception
062   */
063  public Attendee(String smtpAddress) throws Exception {
064    super(smtpAddress);
065    EwsUtilities.validateParam(smtpAddress, "smtpAddress");
066  }
067
068  /**
069   * Initializes a new instance of the Attendee class.
070   *
071   * @param name        the name
072   * @param smtpAddress the smtp address
073   */
074  public Attendee(String name, String smtpAddress) {
075    super(name, smtpAddress);
076  }
077
078  /**
079   * Initializes a new instance of the Attendee class.
080   *
081   * @param name        the name
082   * @param smtpAddress the smtp address
083   * @param routingType the routing type
084   */
085  public Attendee(String name, String smtpAddress, String routingType) {
086    super(name, smtpAddress, routingType);
087  }
088
089  /**
090   * Initializes a new instance of the Attendee class.
091   *
092   * @param mailbox the mailbox
093   * @throws Exception the exception
094   */
095  public Attendee(EmailAddress mailbox) throws Exception {
096    super(mailbox);
097  }
098
099  /**
100   * Gets the type of response the attendee gave to the meeting invitation
101   * it received.
102   *
103   * @return the response type
104   */
105  public MeetingResponseType getResponseType() {
106    return responseType;
107  }
108
109  /**
110   * Gets the last response time.
111   *
112   * @return the last response time
113   */
114  public Date getLastResponseTime() {
115    return lastResponseTime;
116  }
117
118  /**
119   * Tries to read element from XML.
120   *
121   * @param reader the reader
122   * @return True if element was read.
123   * @throws Exception the exception
124   */
125  public boolean tryReadElementFromXml(EwsServiceXmlReader reader)
126      throws Exception {
127    if (reader.getLocalName().equalsIgnoreCase(XmlElementNames.Mailbox)) {
128      this.loadFromXml(reader, reader.getLocalName());
129      return true;
130    } else if (reader.getLocalName().equalsIgnoreCase(
131        XmlElementNames.ResponseType)) {
132      this.responseType = reader
133          .readElementValue(MeetingResponseType.class);
134      return true;
135    } else if (reader.getLocalName().equalsIgnoreCase(
136        XmlElementNames.LastResponseTime)) {
137      this.lastResponseTime = reader.readElementValueAsDateTime();
138      return true;
139    } else {
140      return super.tryReadElementFromXml(reader);
141    }
142  }
143
144  /**
145   * Writes the elements to XML.
146   *
147   * @param writer the writer
148   * @throws Exception the exception
149   */
150  public void writeElementsToXml(EwsServiceXmlWriter writer)
151      throws Exception {
152    writer.writeStartElement(this.getNamespace(), XmlElementNames.Mailbox);
153    super.writeElementsToXml(writer);
154    writer.writeEndElement();
155  }
156}