Beispiel #1
0
 internal ConversationMembersQueryResult(MapiTable mapiTable, ICollection <PropertyDefinition> propertyDefinitions, IList <PropTag> alteredProperties, StoreSession session, bool isTableOwned, SortOrder sortOrder, AggregationExtension aggregationExtension) : base(mapiTable, PropertyDefinitionCollection.Merge <PropertyDefinition>(propertyDefinitions, ConversationMembersQueryResult.RequiredProperties), alteredProperties, session, isTableOwned, sortOrder)
 {
     this.originalProperties   = propertyDefinitions;
     this.aggregationExtension = aggregationExtension;
 }
        internal QueryResult InternalItemQuery(ContentsTableFlags flags, QueryFilter queryFilter, SortBy[] sortColumns, QueryExclusionType queryExclusionType, ICollection <PropertyDefinition> dataColumns, AggregationExtension aggregationExtension)
        {
            Util.ThrowOnNullArgument(dataColumns, "dataColumns");
            if ((flags & ContentsTableFlags.ExpandedConversationView) == ContentsTableFlags.ExpandedConversationView)
            {
                if ((flags & ContentsTableFlags.ShowConversations) != ContentsTableFlags.ShowConversations)
                {
                    throw new ArgumentException("flags", "ContentsTableFlags.ExpandedConversationView requires ContentsTableFlags.ShowConversations");
                }
                foreach (PropertyDefinition propertyDefinition in dataColumns)
                {
                    if (!(propertyDefinition is ApplicationAggregatedProperty))
                    {
                        throw new ArgumentException("dataColumns", "All columns must be ApplicationAggregatedProperty. Offending dataColumn: " + propertyDefinition.Name + ":" + propertyDefinition.GetType().Name);
                    }
                }
            }
            flags |= ContentsTableFlags.DeferredErrors;
            MapiTable   mapiTable   = this.GetContentsTable(flags);
            QueryResult queryResult = null;
            bool        flag        = false;
            QueryResult result;

            try
            {
                MailboxSession mailboxSession = this.Session as MailboxSession;
                if (mailboxSession != null && mailboxSession.FilterPrivateItems && queryExclusionType == QueryExclusionType.Row)
                {
                    if (queryFilter != null)
                    {
                        queryFilter = new AndFilter(true, new QueryFilter[]
                        {
                            QueryExecutor.privateItemsFilter,
                            queryFilter
                        });
                    }
                    else if ((flags & ContentsTableFlags.ShowSoftDeletes) != ContentsTableFlags.ShowSoftDeletes)
                    {
                        queryFilter = QueryExecutor.privateItemsFilter;
                    }
                }
                if ((flags & ContentsTableFlags.ExpandedConversationView) == ContentsTableFlags.ExpandedConversationView)
                {
                    queryResult = this.CreateConversationMembersQueryResult(mapiTable, queryFilter, sortColumns, dataColumns, aggregationExtension);
                }
                else
                {
                    queryResult = this.CreateQueryResult(mapiTable, queryFilter, sortColumns, dataColumns);
                }
                if (this.Session != null)
                {
                    this.Session.MessagesWereDownloaded = true;
                }
                flag   = true;
                result = queryResult;
            }
            finally
            {
                if (!flag)
                {
                    if (queryResult != null)
                    {
                        queryResult.Dispose();
                        queryResult = null;
                    }
                    if (mapiTable != null)
                    {
                        mapiTable.Dispose();
                        mapiTable = null;
                    }
                }
            }
            return(result);
        }
        private QueryResult CreateConversationMembersQueryResult(MapiTable mapiTable, QueryFilter queryFilter, SortBy[] sortColumns, ICollection <PropertyDefinition> dataColumns, AggregationExtension aggregationExtension)
        {
            List <PropTag> alteredProperties = null;

            this.SetTableFilter(mapiTable, queryFilter);
            SortOrder sortOrder = this.GetSortOrder(mapiTable, sortColumns, null, 0, ref alteredProperties);

            return(new ConversationMembersQueryResult(mapiTable, dataColumns, alteredProperties, this.Session, true, sortOrder, aggregationExtension));
        }
 public virtual IQueryResult PersonItemQuery(QueryFilter queryFilter, QueryFilter aggregationFilter, SortBy[] sortColumns, ICollection <PropertyDefinition> dataColumns, AggregationExtension aggregationExtension)
 {
     throw new NotImplementedException();
 }