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    
024    package microsoft.exchange.webservices.data.property.complex;
025    
026    import microsoft.exchange.webservices.data.core.XmlElementNames;
027    import microsoft.exchange.webservices.data.core.exception.misc.ArgumentNullException;
028    
029    /**
030     * Represents the Id of a Conversation.
031     */
032    public class ConversationId extends ServiceId {
033    
034      /**
035       * Initializes a new instance of the ConversationId class.
036       */
037      public ConversationId() {
038        super();
039      }
040    
041      /**
042       * Defines an implicit conversion between string and ConversationId.
043       *
044       * @param uniqueId the unique id
045       * @return A ConversationId initialized with the specified unique Id.
046       * @throws Exception the exception
047       */
048      public static ConversationId getConversationIdFromUniqueId(String uniqueId)
049          throws Exception {
050        return new ConversationId(uniqueId);
051      }
052    
053      /**
054       * Defines an implicit conversion between ConversationId and String.
055       *
056       * @param conversationId the conversation id
057       * @return A ConversationId initialized with the specified unique Id.
058       * @throws ArgumentNullException the argument null exception
059       */
060      public static String getStringFromConversationId(
061          ConversationId conversationId) throws ArgumentNullException {
062        if (conversationId == null) {
063          throw new ArgumentNullException("conversationId");
064        }
065    
066        if (null == conversationId.getUniqueId()
067            || conversationId.getUniqueId().isEmpty()) {
068          return "";
069        } else {
070          // Ignoring the change key info
071          return conversationId.getUniqueId();
072        }
073      }
074    
075      /**
076       * Gets the name of the XML element.
077       *
078       * @return XML element name.
079       */
080      @Override
081      public String getXmlElementName() {
082        return XmlElementNames.ConversationId;
083      }
084    
085      /**
086       * Initializes a new instance of ConversationId.
087       *
088       * @param uniqueId the unique id
089       * @throws Exception the exception
090       */
091      public ConversationId(String uniqueId) throws Exception {
092        super(uniqueId);
093      }
094    
095      /**
096       * Gets a string representation of the Conversation Id.
097       *
098       * @return The string representation of the conversation id.
099       */
100      @Override
101      public String toString() {
102        // We have ignored the change key portion
103        return this.getUniqueId();
104      }
105    }