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.sync;
025    
026    import microsoft.exchange.webservices.data.core.service.item.Item;
027    import microsoft.exchange.webservices.data.core.exception.service.local.ServiceLocalException;
028    import microsoft.exchange.webservices.data.property.complex.ItemId;
029    import microsoft.exchange.webservices.data.property.complex.ServiceId;
030    
031    /**
032     * Represents a change on an item as returned by a synchronization operation.
033     */
034    public final class ItemChange extends Change {
035    
036      /**
037       * The is read.
038       */
039      private boolean isRead;
040    
041      /**
042       * Initializes a new instance of ItemChange.
043       */
044      public ItemChange() {
045        super();
046      }
047    
048      /**
049       * Creates an ItemId instance.
050       *
051       * @return A ItemId.
052       */
053      @Override public ServiceId createId() {
054        return new ItemId();
055      }
056    
057      /**
058       * Gets the item the change applies to. Item is null when ChangeType is
059       * equal to either ChangeType.Delete or ChangeType.ReadFlagChange. In those
060       * cases, use the ItemId property to retrieve the Id of the item that was
061       * deleted or whose IsRead property changed.
062       *
063       * @return the item
064       */
065      public Item getItem() {
066        return (Item) this.getServiceObject();
067      }
068    
069      /**
070       * Gets the IsRead property for the item that the change applies to.
071       * IsRead is only valid when ChangeType is equal to
072       * ChangeType.ReadFlagChange.
073       *
074       * @return the checks if is read
075       */
076      public boolean getIsRead() {
077        return this.isRead;
078      }
079    
080      /**
081       * Sets the checks if is read.
082       *
083       * @param isRead the new checks if is read
084       */
085      public void setIsRead(boolean isRead) {
086        this.isRead = isRead;
087      }
088    
089      /**
090       * Gets the Id of the item the change applies to.
091       *
092       * @return the item id
093       * @throws ServiceLocalException the service local exception
094       */
095      public ItemId getItemId() throws ServiceLocalException {
096        return (ItemId) this.getId();
097      }
098    
099    }