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.search;
025    
026    import microsoft.exchange.webservices.data.core.EwsUtilities;
027    import microsoft.exchange.webservices.data.core.service.item.Item;
028    
029    import java.util.ArrayList;
030    import java.util.Collection;
031    import java.util.List;
032    
033    /**
034     * Represents a group of item as returned by grouped item search operations.
035     *
036     * @param <TItem> the generic type
037     */
038    public final class ItemGroup<TItem extends Item> {
039    
040      /**
041       * The group index.
042       */
043      private String groupIndex;
044    
045      /**
046       * The item.
047       */
048      private Collection<TItem> items;
049    
050      /**
051       * Initializes a new instance of the class.
052       *
053       * @param groupIndex the group index
054       * @param items      the item
055       */
056      public ItemGroup(String groupIndex, List<TItem> items) {
057        EwsUtilities.ewsAssert(groupIndex != null, "ItemGroup.ctor", "groupIndex is null");
058        EwsUtilities
059            .ewsAssert(items != null, "ItemGroup.ctor", "item is null");
060    
061        this.groupIndex = groupIndex;
062        this.items = new ArrayList<TItem>(items);
063      }
064    
065      /**
066       * Gets an index identifying the group.
067       *
068       * @return the group index
069       */
070      public String getGroupIndex() {
071        return this.groupIndex;
072      }
073    
074      /**
075       * Sets an index identifying the group.
076       */
077      private void setGroupIndex(String value) {
078        this.groupIndex = value;
079      }
080    
081      /**
082       * Gets a collection of the item in this group.
083       *
084       * @return the item
085       */
086      public Collection<TItem> getItems() {
087        return this.items;
088      }
089    
090      /**
091       * Sets a collection of the item in this group.
092       */
093      private void setItems(Collection<TItem> value) {
094        this.items = value;
095      }
096    }