Beispiel #1
0
        internal RuntimeGroupLeafObjReference CreateGroupLeaf()
        {
            RuntimeGroupLeafObj runtimeGroupLeafObj = null;

            switch (base.ObjectType)
            {
            case Microsoft.ReportingServices.ReportProcessing.ObjectType.Tablix:
                runtimeGroupLeafObj = new RuntimeTablixGroupLeafObj((RuntimeDataTablixGroupRootObjReference)base.SelfReference, base.ObjectType);
                break;

            case Microsoft.ReportingServices.ReportProcessing.ObjectType.GaugePanel:
            case Microsoft.ReportingServices.ReportProcessing.ObjectType.Chart:
            case Microsoft.ReportingServices.ReportProcessing.ObjectType.CustomReportItem:
            case Microsoft.ReportingServices.ReportProcessing.ObjectType.MapDataRegion:
                runtimeGroupLeafObj = new RuntimeChartCriGroupLeafObj((RuntimeDataTablixGroupRootObjReference)base.SelfReference, base.ObjectType);
                break;

            default:
                Global.Tracer.Assert(condition: false, "Invalid ObjectType");
                break;
            }
            RuntimeGroupLeafObjReference obj = (RuntimeGroupLeafObjReference)runtimeGroupLeafObj.SelfReference;

            obj.UnPinValue();
            return(obj);
        }
        private void ProcessChildren(object thisKey, IReference <RuntimeGroupLeafObj> parentObj, IReference <RuntimeGroupLeafObj> thisObj)
        {
            ChildLeafInfo value = null;

            if (m_parentInfo != null)
            {
                m_parentInfo.TryGetValue(thisKey, out value);
            }
            if (value == null)
            {
                return;
            }
            for (int i = 0; i < value.Count; i++)
            {
                RuntimeGroupLeafObjReference runtimeGroupLeafObjReference = value[i];
                using (runtimeGroupLeafObjReference.PinValue())
                {
                    RuntimeGroupLeafObj runtimeGroupLeafObj = runtimeGroupLeafObjReference.Value();
                    bool flag = false;
                    IReference <RuntimeGroupObj> reference = parentObj as IReference <RuntimeGroupObj>;
                    while (reference != null && !flag)
                    {
                        RuntimeGroupLeafObj runtimeGroupLeafObj2 = reference.Value() as RuntimeGroupLeafObj;
                        if (runtimeGroupLeafObj2 == runtimeGroupLeafObj)
                        {
                            flag = true;
                        }
                        reference = runtimeGroupLeafObj2?.Parent;
                    }
                    if (!flag)
                    {
                        runtimeGroupLeafObj.RemoveFromParent((RuntimeGroupRootObjReference)m_owner.SelfReference);
                        using (thisObj.PinValue())
                        {
                            thisObj.Value().AddChild(runtimeGroupLeafObjReference);
                        }
                    }
                }
            }
            m_parentInfo.Remove(thisKey);
        }
Beispiel #3
0
        private void ProcessChildren(object thisKey, IReference <RuntimeGroupLeafObj> parentObj, IReference <RuntimeGroupLeafObj> thisObj)
        {
            ChildLeafInfo childLeafInfo = null;

            if (this.m_parentInfo != null)
            {
                this.m_parentInfo.TryGetValue(thisKey, out childLeafInfo);
            }
            if (childLeafInfo != null)
            {
                for (int i = 0; i < childLeafInfo.Count; i++)
                {
                    RuntimeGroupLeafObjReference runtimeGroupLeafObjReference = ((List <RuntimeGroupLeafObjReference>)childLeafInfo)[i];
                    using (runtimeGroupLeafObjReference.PinValue())
                    {
                        RuntimeGroupLeafObj runtimeGroupLeafObj = runtimeGroupLeafObjReference.Value();
                        bool flag = false;
                        IReference <RuntimeGroupObj> reference = parentObj as IReference <RuntimeGroupObj>;
                        while (reference != null && !flag)
                        {
                            RuntimeGroupLeafObj runtimeGroupLeafObj2 = reference.Value() as RuntimeGroupLeafObj;
                            if (runtimeGroupLeafObj2 == runtimeGroupLeafObj)
                            {
                                flag = true;
                            }
                            reference = ((runtimeGroupLeafObj2 != null) ? runtimeGroupLeafObj2.Parent : null);
                        }
                        if (!flag)
                        {
                            runtimeGroupLeafObj.RemoveFromParent((RuntimeGroupRootObjReference)base.m_owner.SelfReference);
                            using (thisObj.PinValue())
                            {
                                thisObj.Value().AddChild(runtimeGroupLeafObjReference);
                            }
                        }
                    }
                }
                this.m_parentInfo.Remove(thisKey);
            }
        }
 internal void AddChild(RuntimeGroupLeafObjReference child)
 {
     if (null != m_lastChild)
     {
         using (m_lastChild.PinValue())
         {
             m_lastChild.Value().NextLeaf = child;
         }
     }
     else
     {
         m_firstChild = child;
     }
     using (child.PinValue())
     {
         RuntimeGroupLeafObj runtimeGroupLeafObj = child.Value();
         runtimeGroupLeafObj.PrevLeaf = m_lastChild;
         runtimeGroupLeafObj.NextLeaf = null;
         runtimeGroupLeafObj.Parent   = (RuntimeGroupObjReference)m_selfReference;
     }
     m_lastChild = child;
 }
 public void AddChild(RuntimeGroupLeafObjReference child)
 {
     if ((BaseReference)null != (object)this.m_lastChild)
     {
         using (this.m_lastChild.PinValue())
         {
             this.m_lastChild.Value().NextLeaf = child;
         }
     }
     else
     {
         this.m_firstChild = child;
     }
     using (child.PinValue())
     {
         RuntimeGroupLeafObj runtimeGroupLeafObj = child.Value();
         runtimeGroupLeafObj.PrevLeaf = this.m_lastChild;
         runtimeGroupLeafObj.NextLeaf = null;
         runtimeGroupLeafObj.Parent   = (RuntimeGroupObjReference)base.m_selfReference;
     }
     this.m_lastChild = child;
 }
        private void FinishFilters(AggregateUpdateContext context)
        {
            if (m_filterInfo == null)
            {
                return;
            }
            FilterInfo filterInfo = m_filterInfo;

            m_filterInfo       = null;
            m_startFilterIndex = m_currentSpecialFilterIndex + 1;
            bool flag = m_startFilterIndex >= m_filters.Count;

            TrimInstanceSet(filterInfo);
            IEnumerator <object> instances = filterInfo.Instances;

            if (instances != null)
            {
                try
                {
                    Microsoft.ReportingServices.ReportProcessing.ReportProcessing.IFilterOwner filterOwner;
                    if (m_owner != null)
                    {
                        m_owner.PinValue();
                        filterOwner = m_owner.Value();
                    }
                    else
                    {
                        filterOwner = m_ownerObj;
                    }
                    while (instances.MoveNext())
                    {
                        object current = instances.Current;
                        if (FilterTypes.GroupFilter == m_filterType)
                        {
                            IReference <RuntimeGroupLeafObj> reference = (IReference <RuntimeGroupLeafObj>)current;
                            using (reference.PinValue())
                            {
                                RuntimeGroupLeafObj runtimeGroupLeafObj = reference.Value();
                                runtimeGroupLeafObj.SetupEnvironment();
                                if (flag || PassFilters(current))
                                {
                                    runtimeGroupLeafObj.PostFilterNextRow(context);
                                }
                                else
                                {
                                    runtimeGroupLeafObj.FailFilter();
                                }
                            }
                        }
                        else
                        {
                            ((DataFieldRow)current).SetFields(m_processingContext.ReportObjectModel.FieldsImpl);
                            if (flag || PassFilters(current))
                            {
                                filterOwner.PostFilterNextRow();
                            }
                        }
                    }
                }
                finally
                {
                    if (m_owner != null)
                    {
                        m_owner.UnPinValue();
                    }
                }
            }
            filterInfo.RemoveAll();
            filterInfo = null;
            FinishFilters(context);
        }
        private static List <Declaration> BuildDeclarations()
        {
            List <Declaration> list = new List <Declaration>(83);

            list.Add(Aggregate.GetDeclaration());
            list.Add(AggregateRow.GetDeclaration());
            list.Add(Avg.GetDeclaration());
            list.Add(BTree.GetDeclaration());
            list.Add(BTreeNode.GetDeclaration());
            list.Add(BTreeNodeTuple.GetDeclaration());
            list.Add(BTreeNodeTupleList.GetDeclaration());
            list.Add(BTreeNodeHierarchyObj.GetDeclaration());
            list.Add(CalculatedFieldWrapperImpl.GetDeclaration());
            list.Add(ChildLeafInfo.GetDeclaration());
            list.Add(Count.GetDeclaration());
            list.Add(CountDistinct.GetDeclaration());
            list.Add(CountRows.GetDeclaration());
            list.Add(DataAggregateObj.GetDeclaration());
            list.Add(DataAggregateObjResult.GetDeclaration());
            list.Add(DataRegionMemberInstance.GetDeclaration());
            list.Add(DataFieldRow.GetDeclaration());
            list.Add(FieldImpl.GetDeclaration());
            list.Add(First.GetDeclaration());
            list.Add(Last.GetDeclaration());
            list.Add(Max.GetDeclaration());
            list.Add(Min.GetDeclaration());
            list.Add(Previous.GetDeclaration());
            list.Add(RuntimeCell.GetDeclaration());
            list.Add(RuntimeCells.GetDeclaration());
            list.Add(RuntimeCellWithContents.GetDeclaration());
            list.Add(RuntimeChartCriCell.GetDeclaration());
            list.Add(RuntimeChartCriGroupLeafObj.GetDeclaration());
            list.Add(RuntimeChartCriObj.GetDeclaration());
            list.Add(RuntimeChartObj.GetDeclaration());
            list.Add(RuntimeCriObj.GetDeclaration());
            list.Add(RuntimeDataRegionObj.GetDeclaration());
            list.Add(RuntimeDataTablixObj.GetDeclaration());
            list.Add(RuntimeDataTablixGroupLeafObj.GetDeclaration());
            list.Add(RuntimeDataTablixGroupRootObj.GetDeclaration());
            list.Add(RuntimeDataTablixMemberObj.GetDeclaration());
            list.Add(RuntimeDataTablixWithScopedItemsObj.GetDeclaration());
            list.Add(RuntimeDataTablixWithScopedItemsGroupLeafObj.GetDeclaration());
            list.Add(RuntimeDetailObj.GetDeclaration());
            list.Add(RuntimeExpressionInfo.GetDeclaration());
            list.Add(RuntimeGroupLeafObj.GetDeclaration());
            list.Add(RuntimeGroupObj.GetDeclaration());
            list.Add(RuntimeGroupRootObj.GetDeclaration());
            list.Add(RuntimeGroupingObj.GetDeclaration());
            list.Add(RuntimeHierarchyObj.GetDeclaration());
            list.Add(RuntimeMemberObj.GetDeclaration());
            list.Add(RuntimeRDLDataRegionObj.GetDeclaration());
            list.Add(RuntimeRICollection.GetDeclaration());
            list.Add(RuntimeSortDataHolder.GetDeclaration());
            list.Add(RuntimeSortFilterEventInfo.GetDeclaration());
            list.Add(RuntimeSortFilterEventInfo.SortExpressionScopeInstanceHolder.GetDeclaration());
            list.Add(RuntimeSortFilterEventInfo.SortFilterExpressionScopeObj.GetDeclaration());
            list.Add(RuntimeSortFilterEventInfo.SortScopeValuesHolder.GetDeclaration());
            list.Add(RuntimeSortHierarchyObj.GetDeclaration());
            list.Add(RuntimeSortHierarchyObj.SortHierarchyStructure.GetDeclaration());
            list.Add(RuntimeDataRowSortHierarchyObj.GetDeclaration());
            list.Add(RuntimeTablixCell.GetDeclaration());
            list.Add(RuntimeTablixGroupLeafObj.GetDeclaration());
            list.Add(RuntimeTablixObj.GetDeclaration());
            list.Add(RuntimeUserSortTargetInfo.GetDeclaration());
            list.Add(ScopeInstance.GetDeclaration());
            list.Add(ScopeLookupTable.GetDeclaration());
            list.Add(StDev.GetDeclaration());
            list.Add(StDevP.GetDeclaration());
            list.Add(Sum.GetDeclaration());
            list.Add(Var.GetDeclaration());
            list.Add(VarBase.GetDeclaration());
            list.Add(VarP.GetDeclaration());
            list.Add(Filters.FilterKey.GetDeclaration());
            list.Add(RuntimeGaugePanelObj.GetDeclaration());
            list.Add(LookupMatches.GetDeclaration());
            list.Add(LookupMatchesWithRows.GetDeclaration());
            list.Add(LookupTable.GetDeclaration());
            list.Add(RuntimeMapDataRegionObj.GetDeclaration());
            list.Add(DataScopeInfo.GetDeclaration());
            list.Add(BucketedDataAggregateObjs.GetDeclaration());
            list.Add(DataAggregateObjBucket.GetDeclaration());
            list.Add(RuntimeGroupingObjHash.GetDeclaration());
            list.Add(RuntimeGroupingObjTree.GetDeclaration());
            list.Add(RuntimeGroupingObjDetail.GetDeclaration());
            list.Add(RuntimeGroupingObjDetailUserSort.GetDeclaration());
            list.Add(RuntimeGroupingObjLinkedList.GetDeclaration());
            list.Add(RuntimeGroupingObjNaturalGroup.GetDeclaration());
            return(list);
        }
Beispiel #8
0
 internal IHierarchyObj CreateDetailSortHierarchyObj(RuntimeGroupLeafObj rootSortDetailLeafObj)
 {
     Global.Tracer.Assert(m_detailUserSortTargetInfo != null, "(null != m_detailUserSortTargetInfo)");
     return(new RuntimeSortHierarchyObj(this, base.Depth));
 }