Example #1
0
        internal Grouping CloneForDomainScope(AutomaticSubtotalContext context, ReportHierarchyNode cloneOwner)
        {
            Grouping grouping = new Grouping(ConstructionPhase.Publishing);

            grouping.m_isClone         = true;
            grouping.m_ID              = context.GenerateID();
            grouping.m_owner           = cloneOwner;
            cloneOwner.OriginalScopeID = Owner.DataScopeInfo.ScopeID;
            Global.Tracer.Assert(m_name != null, "Group Name cannot be null");
            grouping.m_name = context.CreateAndRegisterUniqueGroupName(m_name, m_isClone, isDomainScope: true);
            CloneGroupExpressions(context, grouping);
            return(grouping);
        }
Example #2
0
        internal object PublishClone(AutomaticSubtotalContext context, ReportHierarchyNode owner)
        {
            Grouping grouping = (Grouping)MemberwiseClone();

            grouping.m_isClone = true;
            grouping.m_ID      = context.GenerateID();
            grouping.m_owner   = owner;
            if (DomainScope != null)
            {
                grouping.DomainScope = context.GetNewScopeName(DomainScope);
                if (string.CompareOrdinal(DomainScope, grouping.DomainScope) != 0)
                {
                    context.DomainScopeGroups.Add(grouping);
                }
                else
                {
                    grouping.m_scopeIDForDomainScope = Owner.DataScopeInfo.ScopeID;
                }
            }
            context.AddAggregateHolder(grouping);
            Global.Tracer.Assert(m_name != null);
            grouping.m_name = context.CreateAndRegisterUniqueGroupName(m_name, m_isClone);
            context.AddSortTarget(grouping.m_name, grouping);
            CloneGroupExpressions(context, grouping);
            if (m_groupLabel != null)
            {
                grouping.m_groupLabel = (ExpressionInfo)m_groupLabel.PublishClone(context);
            }
            if (m_sortDirections != null)
            {
                grouping.m_sortDirections = new List <bool>(m_sortDirections.Count);
                foreach (bool sortDirection in m_sortDirections)
                {
                    grouping.m_sortDirections.Add(sortDirection);
                }
            }
            grouping.m_aggregates          = new List <DataAggregateInfo>();
            grouping.m_recursiveAggregates = new List <DataAggregateInfo>();
            grouping.m_postSortAggregates  = new List <DataAggregateInfo>();
            if (m_filters != null)
            {
                grouping.m_filters = new List <Filter>(m_filters.Count);
                foreach (Filter filter in m_filters)
                {
                    grouping.m_filters.Add((Filter)filter.PublishClone(context));
                }
            }
            if (m_parent != null)
            {
                grouping.m_parent = new List <ExpressionInfo>(m_parent.Count);
                foreach (ExpressionInfo item in m_parent)
                {
                    grouping.m_parent.Add((ExpressionInfo)item.PublishClone(context));
                }
            }
            if (m_dataElementName != null)
            {
                grouping.m_dataElementName = (string)m_dataElementName.Clone();
            }
            if (m_userSortExpressions != null)
            {
                grouping.m_userSortExpressions = new List <ExpressionInfo>(m_userSortExpressions.Count);
                foreach (ExpressionInfo userSortExpression in m_userSortExpressions)
                {
                    grouping.m_userSortExpressions.Add((ExpressionInfo)userSortExpression.PublishClone(context));
                }
            }
            if (m_variables != null)
            {
                grouping.m_variables = new List <Variable>(m_variables.Count);
                foreach (Variable variable in m_variables)
                {
                    grouping.m_variables.Add((Variable)variable.PublishClone(context));
                }
            }
            if (m_nonDetailSortFiltersInScope != null)
            {
                grouping.m_nonDetailSortFiltersInScope = new InScopeSortFilterHashtable(m_nonDetailSortFiltersInScope.Count);
                foreach (DictionaryEntry item2 in m_nonDetailSortFiltersInScope)
                {
                    List <int> obj  = (List <int>)item2.Value;
                    List <int> list = new List <int>(obj.Count);
                    foreach (int item3 in obj)
                    {
                        list.Add(item3);
                    }
                    grouping.m_nonDetailSortFiltersInScope.Add(item2.Key, list);
                }
            }
            if (m_detailSortFiltersInScope != null)
            {
                grouping.m_detailSortFiltersInScope = new InScopeSortFilterHashtable(m_detailSortFiltersInScope.Count);
                foreach (DictionaryEntry item4 in m_detailSortFiltersInScope)
                {
                    List <int> obj2  = (List <int>)item4.Value;
                    List <int> list2 = new List <int>(obj2.Count);
                    foreach (int item5 in obj2)
                    {
                        list2.Add(item5);
                    }
                    grouping.m_detailSortFiltersInScope.Add(item4.Key, list2);
                }
            }
            if (m_pageBreak != null)
            {
                grouping.m_pageBreak = (PageBreak)m_pageBreak.PublishClone(context);
            }
            if (m_pageName != null)
            {
                grouping.m_pageName = (ExpressionInfo)m_pageName.PublishClone(context);
            }
            return(grouping);
        }
        public object PublishClone(AutomaticSubtotalContext context, ReportHierarchyNode owner)
        {
            Grouping grouping = (Grouping)base.MemberwiseClone();

            grouping.m_isClone = true;
            grouping.m_ID      = context.GenerateID();
            grouping.m_owner   = owner;
            if (this.DomainScope != null)
            {
                grouping.DomainScope = context.GetNewScopeName(this.DomainScope);
                if (string.CompareOrdinal(this.DomainScope, grouping.DomainScope) != 0)
                {
                    context.DomainScopeGroups.Add(grouping);
                }
                else
                {
                    grouping.m_scopeIDForDomainScope = this.Owner.DataScopeInfo.ScopeID;
                }
            }
            context.AddAggregateHolder(grouping);
            Global.Tracer.Assert(this.m_name != null);
            grouping.m_name = context.CreateAndRegisterUniqueGroupName(this.m_name, this.m_isClone);
            context.AddSortTarget(grouping.m_name, grouping);
            this.CloneGroupExpressions(context, grouping);
            if (this.m_groupLabel != null)
            {
                grouping.m_groupLabel = (ExpressionInfo)this.m_groupLabel.PublishClone(context);
            }
            if (this.m_sortDirections != null)
            {
                grouping.m_sortDirections = new List <bool>(this.m_sortDirections.Count);
                foreach (bool sortDirection in this.m_sortDirections)
                {
                    grouping.m_sortDirections.Add(sortDirection);
                }
            }
            grouping.m_aggregates          = new List <DataAggregateInfo>();
            grouping.m_recursiveAggregates = new List <DataAggregateInfo>();
            grouping.m_postSortAggregates  = new List <DataAggregateInfo>();
            if (this.m_filters != null)
            {
                grouping.m_filters = new List <Filter>(this.m_filters.Count);
                foreach (Filter filter in this.m_filters)
                {
                    grouping.m_filters.Add((Filter)filter.PublishClone(context));
                }
            }
            if (this.m_parent != null)
            {
                grouping.m_parent = new List <ExpressionInfo>(this.m_parent.Count);
                foreach (ExpressionInfo item in this.m_parent)
                {
                    grouping.m_parent.Add((ExpressionInfo)item.PublishClone(context));
                }
            }
            if (this.m_dataElementName != null)
            {
                grouping.m_dataElementName = (string)this.m_dataElementName.Clone();
            }
            if (this.m_userSortExpressions != null)
            {
                grouping.m_userSortExpressions = new List <ExpressionInfo>(this.m_userSortExpressions.Count);
                foreach (ExpressionInfo userSortExpression in this.m_userSortExpressions)
                {
                    grouping.m_userSortExpressions.Add((ExpressionInfo)userSortExpression.PublishClone(context));
                }
            }
            if (this.m_variables != null)
            {
                grouping.m_variables = new List <Variable>(this.m_variables.Count);
                foreach (Variable variable in this.m_variables)
                {
                    grouping.m_variables.Add((Variable)variable.PublishClone(context));
                }
            }
            if (this.m_nonDetailSortFiltersInScope != null)
            {
                grouping.m_nonDetailSortFiltersInScope = new InScopeSortFilterHashtable(this.m_nonDetailSortFiltersInScope.Count);
                IDictionaryEnumerator enumerator6 = this.m_nonDetailSortFiltersInScope.GetEnumerator();
                try
                {
                    while (enumerator6.MoveNext())
                    {
                        object          current6        = enumerator6.Current;
                        DictionaryEntry dictionaryEntry = (DictionaryEntry)current6;
                        List <int>      list            = (List <int>)dictionaryEntry.Value;
                        List <int>      list2           = new List <int>(list.Count);
                        foreach (int item2 in list)
                        {
                            list2.Add(item2);
                        }
                        grouping.m_nonDetailSortFiltersInScope.Add(dictionaryEntry.Key, list2);
                    }
                }
                finally
                {
                    IDisposable disposable = enumerator6 as IDisposable;
                    if (disposable != null)
                    {
                        disposable.Dispose();
                    }
                }
            }
            if (this.m_detailSortFiltersInScope != null)
            {
                grouping.m_detailSortFiltersInScope = new InScopeSortFilterHashtable(this.m_detailSortFiltersInScope.Count);
                IDictionaryEnumerator enumerator8 = this.m_detailSortFiltersInScope.GetEnumerator();
                try
                {
                    while (enumerator8.MoveNext())
                    {
                        object          current8         = enumerator8.Current;
                        DictionaryEntry dictionaryEntry2 = (DictionaryEntry)current8;
                        List <int>      list3            = (List <int>)dictionaryEntry2.Value;
                        List <int>      list4            = new List <int>(list3.Count);
                        foreach (int item3 in list3)
                        {
                            list4.Add(item3);
                        }
                        grouping.m_detailSortFiltersInScope.Add(dictionaryEntry2.Key, list4);
                    }
                }
                finally
                {
                    IDisposable disposable2 = enumerator8 as IDisposable;
                    if (disposable2 != null)
                    {
                        disposable2.Dispose();
                    }
                }
            }
            if (this.m_pageBreak != null)
            {
                grouping.m_pageBreak = (PageBreak)this.m_pageBreak.PublishClone(context);
            }
            if (this.m_pageName != null)
            {
                grouping.m_pageName = (ExpressionInfo)this.m_pageName.PublishClone(context);
            }
            return(grouping);
        }