Beispiel #1
0
        public override void Deserialize(IntermediateFormatReader reader)
        {
            base.Deserialize(reader);
            reader.RegisterDeclaration(RuntimeHierarchyObj.m_declaration);
            while (reader.NextMember())
            {
                switch (reader.CurrentMember.MemberName)
                {
                case MemberName.Grouping:
                    this.m_grouping = (RuntimeGroupingObj)reader.ReadRIFObject();
                    if (this.m_grouping != null)
                    {
                        this.m_grouping.SetOwner(this);
                    }
                    break;

                case MemberName.Expression:
                    this.m_expression = (RuntimeExpressionInfo)reader.ReadRIFObject();
                    break;

                case MemberName.HierarchyRoot:
                    this.m_hierarchyRoot = (RuntimeHierarchyObjReference)reader.ReadRIFObject();
                    break;

                case MemberName.HierarchyObjs:
                    this.m_hierarchyObjs = reader.ReadListOfRIFObjects <List <IReference <RuntimeHierarchyObj> > >();
                    break;

                default:
                    Global.Tracer.Assert(false);
                    break;
                }
            }
        }
Beispiel #2
0
 private void ConstructorHelper(int exprIndex, RuntimeHierarchyObjReference hierarchyRoot)
 {
     this.m_hierarchyRoot = hierarchyRoot;
     using (this.m_hierarchyRoot.PinValue())
     {
         RuntimeGroupRootObj runtimeGroupRootObj = this.m_hierarchyRoot.Value() as RuntimeGroupRootObj;
         Global.Tracer.Assert(null != runtimeGroupRootObj, "(null != groupRoot)");
         List <AspNetCore.ReportingServices.ReportIntermediateFormat.ExpressionInfo> list;
         IndexedExprHost expressionsHost;
         List <bool>     directions;
         if (ProcessingStages.Grouping == runtimeGroupRootObj.ProcessingStage)
         {
             list            = runtimeGroupRootObj.GroupExpressions;
             expressionsHost = runtimeGroupRootObj.GroupExpressionHost;
             directions      = runtimeGroupRootObj.GroupDirections;
         }
         else
         {
             Global.Tracer.Assert(ProcessingStages.SortAndFilter == runtimeGroupRootObj.ProcessingStage, "(ProcessingStages.SortAndFilter == groupRoot.ProcessingStage)");
             list            = runtimeGroupRootObj.SortExpressions;
             expressionsHost = runtimeGroupRootObj.SortExpressionHost;
             directions      = runtimeGroupRootObj.SortDirections;
         }
         if (exprIndex == -1 || exprIndex >= list.Count)
         {
             this.m_hierarchyObjs = new List <IReference <RuntimeHierarchyObj> >();
             RuntimeGroupLeafObjReference runtimeGroupLeafObjReference     = null;
             IScalabilityCache            tablixProcessingScalabilityCache = base.m_odpContext.TablixProcessingScalabilityCache;
             if (ProcessingStages.Grouping == runtimeGroupRootObj.ProcessingStage)
             {
                 runtimeGroupLeafObjReference = runtimeGroupRootObj.CreateGroupLeaf();
                 if (!runtimeGroupRootObj.HasParent)
                 {
                     runtimeGroupRootObj.AddChildWithNoParent(runtimeGroupLeafObjReference);
                 }
             }
             if ((BaseReference)null != (object)runtimeGroupLeafObjReference)
             {
                 this.m_hierarchyObjs.Add(runtimeGroupLeafObjReference);
             }
         }
         else
         {
             this.m_expression = new RuntimeExpressionInfo(list, expressionsHost, directions, exprIndex);
             this.m_grouping   = RuntimeGroupingObj.CreateGroupingObj(runtimeGroupRootObj.GroupingType, this, base.m_objectType);
         }
     }
 }