internal bool IsSortFilterTarget(bool[] isSortFilterTarget, IReference <IScope> outerScope, IReference <IHierarchyObj> target, ref RuntimeUserSortTargetInfo userSortTargetInfo)
        {
            bool result = false;

            if (m_runtimeSortFilterInfo != null && isSortFilterTarget != null && (outerScope == null || !outerScope.Value().TargetForNonDetailSort))
            {
                for (int i = 0; i < m_runtimeSortFilterInfo.Count; i++)
                {
                    IReference <RuntimeSortFilterEventInfo> reference = m_runtimeSortFilterInfo[i];
                    using (reference.PinValue())
                    {
                        RuntimeSortFilterEventInfo runtimeSortFilterEventInfo = reference.Value();
                        if (isSortFilterTarget[i] && (outerScope == null || outerScope.Value().TargetScopeMatched(i, detailSort: false)))
                        {
                            runtimeSortFilterEventInfo.EventTarget = target;
                            runtimeSortFilterEventInfo.Processed   = false;
                            if (userSortTargetInfo == null)
                            {
                                userSortTargetInfo = new RuntimeUserSortTargetInfo(target, i, reference);
                            }
                            else
                            {
                                userSortTargetInfo.AddSortInfo(target, i, reference);
                            }
                            result = true;
                        }
                    }
                }
            }
            return(result);
        }
Ejemplo n.º 2
0
        internal void CreateInstances(ScopeInstance parentInstance, IReference <RuntimeMemberObj>[] innerMembers, IReference <RuntimeDataTablixGroupLeafObj> innerGroupLeafRef)
        {
            CreateInstancesTraversalContext traversalContext = new CreateInstancesTraversalContext(parentInstance, innerMembers, innerGroupLeafRef);

            m_hierarchyDef.ResetInstancePathCascade();
            TraverseGroupOrSortTree(ProcessingStages.CreateGroupTree, traversalContext);
            if (m_detailDataRows != null)
            {
                m_detailDataRows.Dispose();
            }
            m_detailDataRows           = null;
            m_detailUserSortTargetInfo = null;
        }
 protected void ScopeFinishSorting(ref DataFieldRow firstRow, RuntimeUserSortTargetInfo sortTargetInfo)
 {
     Global.Tracer.Assert(sortTargetInfo != null, "(null != sortTargetInfo)");
     firstRow = null;
     sortTargetInfo.SortTree.Traverse(ProcessingStages.UserSortFilter, ascending: true, null);
     sortTargetInfo.SortTree.Dispose();
     sortTargetInfo.SortTree = null;
     if (sortTargetInfo.AggregateRows != null)
     {
         for (int i = 0; i < sortTargetInfo.AggregateRows.Count; i++)
         {
             sortTargetInfo.AggregateRows[i].SetFields(m_odpContext.ReportObjectModel.FieldsImpl);
             SendToInner();
         }
         sortTargetInfo.AggregateRows = null;
     }
 }
 protected void ScopeNextAggregateRow(RuntimeUserSortTargetInfo sortTargetInfo)
 {
     if (sortTargetInfo != null)
     {
         if (sortTargetInfo.AggregateRows == null)
         {
             sortTargetInfo.AggregateRows = new List <AggregateRow>();
         }
         AggregateRow item = new AggregateRow(m_odpContext.ReportObjectModel.FieldsImpl, getAndSave: true);
         sortTargetInfo.AggregateRows.Add(item);
         if (!sortTargetInfo.TargetForNonDetailSort)
         {
             return;
         }
     }
     SendToInner();
 }
 public override void Deserialize(IntermediateFormatReader reader)
 {
     base.Deserialize(reader);
     reader.RegisterDeclaration(m_declaration);
     IScalabilityCache scalabilityCache = reader.PersistenceHelper as IScalabilityCache;
     while (reader.NextMember())
     {
         switch (reader.CurrentMember.MemberName)
         {
         case MemberName.DataRegionDef:
         {
             int id2 = reader.ReadInt32();
             m_dataRegionDef = (Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion)scalabilityCache.FetchStaticReference(id2);
             break;
         }
         case MemberName.OuterScope:
             m_outerScope = (IReference<IScope>)reader.ReadRIFObject();
             break;
         case MemberName.FirstRow:
             m_firstRow = (DataFieldRow)reader.ReadRIFObject();
             break;
         case MemberName.FirstRowIsAggregate:
             m_firstRowIsAggregate = reader.ReadBoolean();
             break;
         case MemberName.Filters:
         {
             int id = reader.ReadInt32();
             m_filters = (Filters)scalabilityCache.FetchStaticReference(id);
             break;
         }
         case MemberName.NonCustomAggregates:
             m_nonCustomAggregates = reader.ReadListOfRIFObjects<List<Microsoft.ReportingServices.ReportIntermediateFormat.DataAggregateObj>>();
             break;
         case MemberName.CustomAggregates:
             m_customAggregates = reader.ReadListOfRIFObjects<List<Microsoft.ReportingServices.ReportIntermediateFormat.DataAggregateObj>>();
             break;
         case MemberName.DataAction:
             m_dataAction = (DataActions)reader.ReadEnum();
             break;
         case MemberName.OuterDataAction:
             m_outerDataAction = (DataActions)reader.ReadEnum();
             break;
         case MemberName.RunningValues:
             m_runningValues = reader.ReadListOfPrimitives<string>();
             break;
         case MemberName.PreviousValues:
             m_previousValues = reader.ReadListOfPrimitives<string>();
             break;
         case MemberName.RunningValueValues:
             m_runningValueValues = reader.ReadArrayOfRIFObjects<Microsoft.ReportingServices.ReportIntermediateFormat.DataAggregateObjResult>();
             break;
         case MemberName.RunningValueOfAggregateValues:
             m_runningValueOfAggregateValues = reader.ReadArrayOfRIFObjects<Microsoft.ReportingServices.ReportIntermediateFormat.DataAggregateObjResult>();
             break;
         case MemberName.PostSortAggregates:
             m_postSortAggregates = reader.ReadListOfRIFObjects<List<Microsoft.ReportingServices.ReportIntermediateFormat.DataAggregateObj>>();
             break;
         case MemberName.DataRows:
             m_dataRows = reader.ReadRIFObject<ScalableList<DataFieldRow>>();
             break;
         case MemberName.InnerDataAction:
             m_innerDataAction = (DataActions)reader.ReadEnum();
             break;
         case MemberName.UserSortTargetInfo:
             m_userSortTargetInfo = (RuntimeUserSortTargetInfo)reader.ReadRIFObject();
             break;
         case MemberName.SortFilterExpressionScopeInfoIndices:
             m_sortFilterExpressionScopeInfoIndices = reader.ReadInt32Array();
             break;
         case MemberName.InDataRowSortPhase:
             m_inDataRowSortPhase = reader.ReadBoolean();
             break;
         case MemberName.SortedDataRowTree:
             m_sortedDataRowTree = (BTree)reader.ReadRIFObject();
             break;
         case MemberName.DataRowSortExpression:
             m_dataRowSortExpression = (RuntimeExpressionInfo)reader.ReadRIFObject();
             break;
         case MemberName.AggregatesOfAggregates:
             m_aggregatesOfAggregates = (BucketedDataAggregateObjs)reader.ReadRIFObject();
             break;
         case MemberName.PostSortAggregatesOfAggregates:
             m_postSortAggregatesOfAggregates = (BucketedDataAggregateObjs)reader.ReadRIFObject();
             break;
         case MemberName.HasProcessedAggregateRow:
             m_hasProcessedAggregateRow = reader.ReadBoolean();
             break;
         default:
             Global.Tracer.Assert(condition: false);
             break;
         }
     }
 }
Ejemplo n.º 6
0
 protected RuntimeGroupRootObj(IReference <IScope> outerScope, Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode hierarchyDef, DataActions dataAction, OnDemandProcessingContext odpContext, Microsoft.ReportingServices.ReportProcessing.ObjectType objectType)
     : base(odpContext, objectType, outerScope.Value().Depth + 1)
 {
     m_hierarchyRoot = (RuntimeHierarchyObjReference)m_selfReference;
     m_outerScope    = outerScope;
     m_hierarchyDef  = hierarchyDef;
     Microsoft.ReportingServices.ReportIntermediateFormat.Grouping grouping = hierarchyDef.Grouping;
     Global.Tracer.Assert(grouping != null, "(null != groupDef)");
     m_isDetailGroup = grouping.IsDetail;
     if (m_isDetailGroup)
     {
         m_expression = null;
     }
     else
     {
         m_expression = new RuntimeExpressionInfo(grouping.GroupExpressions, grouping.ExprHost, grouping.SortDirections, 0);
     }
     if (m_odpContext.RuntimeSortFilterInfo != null)
     {
         int count = m_odpContext.RuntimeSortFilterInfo.Count;
         using (outerScope.PinValue())
         {
             IScope scope = outerScope.Value();
             for (int i = 0; i < count; i++)
             {
                 IReference <RuntimeSortFilterEventInfo> reference = m_odpContext.RuntimeSortFilterInfo[i];
                 using (reference.PinValue())
                 {
                     RuntimeSortFilterEventInfo runtimeSortFilterEventInfo = reference.Value();
                     if (runtimeSortFilterEventInfo.EventSource.ContainingScopes != null && runtimeSortFilterEventInfo.EventSource.ContainingScopes.Count != 0 && !runtimeSortFilterEventInfo.HasEventSourceScope && (!m_isDetailGroup || !runtimeSortFilterEventInfo.EventSource.IsSubReportTopLevelScope))
                     {
                         continue;
                     }
                     bool flag = false;
                     if (m_isDetailGroup)
                     {
                         if (!scope.TargetForNonDetailSort && IsTargetForSort(i, detailSort: true) && runtimeSortFilterEventInfo.EventTarget != base.SelfReference && scope.TargetScopeMatched(i, detailSort: true))
                         {
                             flag = true;
                             if (m_detailUserSortTargetInfo == null)
                             {
                                 m_detailUserSortTargetInfo = new RuntimeUserSortTargetInfo((IReference <IHierarchyObj>)base.SelfReference, i, reference);
                             }
                             else
                             {
                                 m_detailUserSortTargetInfo.AddSortInfo((IReference <IHierarchyObj>)base.SelfReference, i, reference);
                             }
                         }
                     }
                     else if (grouping.IsSortFilterExpressionScope != null)
                     {
                         flag = (grouping.IsSortFilterExpressionScope[i] && m_odpContext.UserSortFilterContext.InProcessUserSortPhase(i) && TargetScopeMatched(i, detailSort: false));
                     }
                     if (flag)
                     {
                         if (m_builtinSortOverridden == null)
                         {
                             m_builtinSortOverridden = new bool[count];
                         }
                         m_builtinSortOverridden[i] = true;
                     }
                 }
             }
         }
     }
     if (m_detailUserSortTargetInfo != null)
     {
         m_groupingType = RuntimeGroupingObj.GroupingTypes.DetailUserSort;
     }
     else if (grouping.GroupAndSort && !BuiltinSortOverridden)
     {
         m_groupingType = RuntimeGroupingObj.GroupingTypes.Sort;
     }
     else if (grouping.IsDetail && grouping.Parent == null && !BuiltinSortOverridden)
     {
         m_groupingType = RuntimeGroupingObj.GroupingTypes.Detail;
     }
     else if (grouping.NaturalGroup)
     {
         m_groupingType = RuntimeGroupingObj.GroupingTypes.NaturalGroup;
     }
     else
     {
         m_groupingType = RuntimeGroupingObj.GroupingTypes.Hash;
     }
     m_grouping = RuntimeGroupingObj.CreateGroupingObj(m_groupingType, this, objectType);
     if (grouping.Filters == null)
     {
         m_dataAction      = dataAction;
         m_outerDataAction = dataAction;
     }
     if (grouping.RecursiveAggregates != null)
     {
         m_dataAction |= DataActions.RecursiveAggregates;
     }
     if (grouping.PostSortAggregates != null)
     {
         m_dataAction |= DataActions.PostSortAggregates;
     }
     if (grouping.Parent != null)
     {
         m_parentExpression = new RuntimeExpressionInfo(grouping.Parent, grouping.ParentExprHost, null, 0);
     }
 }
Ejemplo n.º 7
0
        public override void Deserialize(IntermediateFormatReader reader)
        {
            base.Deserialize(reader);
            IScalabilityCache scalabilityCache = reader.PersistenceHelper as IScalabilityCache;

            reader.RegisterDeclaration(m_declaration);
            while (reader.NextMember())
            {
                switch (reader.CurrentMember.MemberName)
                {
                case MemberName.HierarchyDef:
                {
                    int id2 = reader.ReadInt32();
                    m_hierarchyDef = (Microsoft.ReportingServices.ReportIntermediateFormat.ReportHierarchyNode)scalabilityCache.FetchStaticReference(id2);
                    break;
                }

                case MemberName.OuterScope:
                    m_outerScope = (IReference <IScope>)reader.ReadRIFObject();
                    break;

                case MemberName.ProcessingStage:
                    m_processingStage = (ProcessingStages)reader.ReadEnum();
                    break;

                case MemberName.ScopedRunningValues:
                    m_scopedRunningValues = reader.ReadListOfPrimitives <string>();
                    break;

                case MemberName.RunningValuesInGroup:
                    m_runningValuesInGroup = reader.ReadListOfPrimitives <string>();
                    break;

                case MemberName.PreviousValuesInGroup:
                    m_previousValuesInGroup = reader.ReadListOfPrimitives <string>();
                    break;

                case MemberName.GroupCollection:
                    m_groupCollection = reader.ReadStringRIFObjectDictionary <IReference <RuntimeGroupRootObj> >();
                    break;

                case MemberName.DataAction:
                    m_dataAction = (DataActions)reader.ReadEnum();
                    break;

                case MemberName.OuterDataAction:
                    m_outerDataAction = (DataActions)reader.ReadEnum();
                    break;

                case MemberName.GroupingType:
                    m_groupingType = (RuntimeGroupingObj.GroupingTypes)reader.ReadEnum();
                    break;

                case MemberName.Filters:
                {
                    int id = reader.ReadInt32();
                    m_groupFilters = (Filters)scalabilityCache.FetchStaticReference(id);
                    break;
                }

                case MemberName.ParentExpression:
                    m_parentExpression = (RuntimeExpressionInfo)reader.ReadRIFObject();
                    break;

                case MemberName.CurrentGroupExprValue:
                    m_currentGroupExprValue = reader.ReadVariant();
                    break;

                case MemberName.SaveGroupExprValues:
                    m_saveGroupExprValues = reader.ReadBoolean();
                    break;

                case MemberName.SortFilterExpressionScopeInfoIndices:
                    m_sortFilterExpressionScopeInfoIndices = reader.ReadInt32Array();
                    break;

                case MemberName.BuiltinSortOverridden:
                    m_builtinSortOverridden = reader.ReadBooleanArray();
                    break;

                case MemberName.IsDetailGroup:
                    m_isDetailGroup = reader.ReadBoolean();
                    break;

                case MemberName.DetailUserSortTargetInfo:
                    m_detailUserSortTargetInfo = (RuntimeUserSortTargetInfo)reader.ReadRIFObject();
                    break;

                case MemberName.DetailRows:
                    m_detailDataRows = reader.ReadRIFObject <ScalableList <DataFieldRow> >();
                    break;

                default:
                    Global.Tracer.Assert(condition: false);
                    break;
                }
            }
        }