public void ResolveReferences(Dictionary <Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.ObjectType, List <MemberReference> > memberReferencesCollection, Dictionary <int, IReferenceable> referenceableItems) { if (!memberReferencesCollection.TryGetValue(m_Declaration.ObjectType, out List <MemberReference> value)) { return; } foreach (MemberReference item in value) { switch (item.MemberName) { case MemberName.DataSet: Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID)); Global.Tracer.Assert(referenceableItems[item.RefID] is DataSet); Global.Tracer.Assert(m_dataSet != (DataSet)referenceableItems[item.RefID]); m_dataSet = (DataSet)referenceableItems[item.RefID]; break; case MemberName.SortTarget: Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID)); Global.Tracer.Assert(referenceableItems[item.RefID] is ISortFilterScope); Global.Tracer.Assert(m_sortTarget != (ISortFilterScope)referenceableItems[item.RefID]); m_sortTarget = (ISortFilterScope)referenceableItems[item.RefID]; break; case MemberName.DetailScopeSubReports: if (m_detailScopeSubReports == null) { m_detailScopeSubReports = new List <SubReport>(); } Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID)); Global.Tracer.Assert(referenceableItems[item.RefID] is SubReport); Global.Tracer.Assert(!m_detailScopeSubReports.Contains((SubReport)referenceableItems[item.RefID])); m_detailScopeSubReports.Add((SubReport)referenceableItems[item.RefID]); break; case MemberName.SortExpressionScope: Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID)); Global.Tracer.Assert(referenceableItems[item.RefID] is ISortFilterScope); Global.Tracer.Assert(m_sortExpressionScope != (ISortFilterScope)referenceableItems[item.RefID]); m_sortExpressionScope = (ISortFilterScope)referenceableItems[item.RefID]; break; case MemberName.GroupsInSortTarget: if (m_groupsInSortTarget == null) { m_groupsInSortTarget = new GroupingList(); } Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID)); Global.Tracer.Assert(referenceableItems[item.RefID] is Grouping); Global.Tracer.Assert(!m_groupsInSortTarget.Contains((Grouping)referenceableItems[item.RefID])); m_groupsInSortTarget.Add((Grouping)referenceableItems[item.RefID]); break; default: Global.Tracer.Assert(condition: false); break; } } }
internal void Add(GroupingList scopeDefs, List <object>[] scopeValues, int value) { if (scopeValues == null || scopeValues.Length == 0) { Global.Tracer.Assert(scopeDefs == null || scopeDefs.Count == 0, "(null == scopeDefs || 0 == scopeDefs.Count)"); m_lookupInt = value; return; } bool lookup = true; if (m_lookupTable == null) { m_lookupTable = new Hashtable(); lookup = false; } Hashtable hashEntries = m_lookupTable; int num = 0; int num2 = 0; for (int i = 0; i < scopeValues.Length; i++) { List <object> list = scopeValues[i]; if (list == null) { num2++; continue; } num = list.Count; if (i == scopeValues.Length - 1) { num--; } GetNullScopeEntries(num2, ref hashEntries, ref lookup); for (int j = 0; j < num; j++) { Hashtable hashtable = (!lookup) ? null : ((Hashtable)hashEntries[list[j]]); if (hashtable == null) { hashtable = new Hashtable(); hashEntries.Add(list[j], hashtable); lookup = false; } hashEntries = hashtable; } num2 = 0; } object key = 1; if (scopeValues[scopeValues.Length - 1] != null) { key = scopeValues[scopeValues.Length - 1][num]; } else { GetNullScopeEntries(num2, ref hashEntries, ref lookup); } Global.Tracer.Assert(!hashEntries.Contains(key), "(!hashEntries.Contains(lastKey))"); hashEntries.Add(key, value); }
internal UserSortFilterContext(UserSortFilterContext parentContext, Microsoft.ReportingServices.ReportIntermediateFormat.SubReport subReport) { m_runtimeSortFilterInfo = parentContext.RuntimeSortFilterInfo; m_dataSetGlobalID = parentContext.DataSetGlobalId; m_inProcessUserSortPhase = parentContext.m_inProcessUserSortPhase; subReport.UpdateSubReportScopes(parentContext); m_containingScopes = subReport.ContainingScopes; m_detailScopeSubReports = subReport.DetailScopeSubReports; }
internal void ResetContextForTopLevelDataSet() { m_dataSetGlobalID = -1; m_currentSortFilterEventSource = null; m_runtimeSortFilterInfo = null; m_currentContainingScope = null; m_containingScopes = null; m_inProcessUserSortPhase = null; }
internal void UpdateSubReportScopes(Microsoft.ReportingServices.OnDemandProcessing.TablixProcessing.UserSortFilterContext context) { if (m_containingScopes != null && 0 < m_containingScopes.Count && m_containingScopes.LastEntry == null) { if (context.DetailScopeSubReports != null) { m_detailScopeSubReports = context.CloneDetailScopeSubReports(); } else { m_detailScopeSubReports = new List <SubReport>(); } m_detailScopeSubReports.Add(this); } else { m_detailScopeSubReports = context.DetailScopeSubReports; } if (context.ContainingScopes != null) { if (m_containingScopes != null && 0 < m_containingScopes.Count) { m_containingScopes.InsertRange(0, context.ContainingScopes); } else { m_containingScopes = context.ContainingScopes; } } if (m_report == null || m_report.EventSources == null) { return; } int count = m_report.EventSources.Count; for (int i = 0; i < count; i++) { IInScopeEventSource inScopeEventSource = m_report.EventSources[i]; if (inScopeEventSource.UserSort != null) { inScopeEventSource.UserSort.DetailScopeSubReports = m_detailScopeSubReports; } if (m_containingScopes != null && 0 < m_containingScopes.Count) { if (inScopeEventSource.ContainingScopes != null && 0 < inScopeEventSource.ContainingScopes.Count) { inScopeEventSource.ContainingScopes.InsertRange(0, m_containingScopes); continue; } inScopeEventSource.IsSubReportTopLevelScope = true; inScopeEventSource.ContainingScopes = m_containingScopes; } } }
internal new GroupingList Clone() { int count = Count; GroupingList groupingList = new GroupingList(count); for (int i = 0; i < count; i++) { groupingList.Add(this[i]); } return(groupingList); }
internal object PublishClone(AutomaticSubtotalContext context, ReportHierarchyNode owner) { int count = Count; GroupingList groupingList = new GroupingList(count); for (int i = 0; i < count; i++) { groupingList.Add(this[i].PublishClone(context, owner)); } return(groupingList); }
internal override void InitializeRVDirectionDependentItems(InitializationContext context) { m_containingScopes = context.GetContainingScopes(); for (int i = 0; i < m_containingScopes.Count; i++) { m_containingScopes[i].SaveGroupExprValues = true; } if (m_isDetailScope) { m_containingScopes.Add(null); } }
public override void ResolveReferences(Dictionary <Microsoft.ReportingServices.ReportIntermediateFormat.Persistence.ObjectType, List <MemberReference> > memberReferencesCollection, Dictionary <int, IReferenceable> referenceableItems) { base.ResolveReferences(memberReferencesCollection, referenceableItems); if (!memberReferencesCollection.TryGetValue(m_Declaration.ObjectType, out List <MemberReference> value)) { return; } foreach (MemberReference item in value) { switch (item.MemberName) { case MemberName.ContainingScopes: if (m_containingScopes == null) { m_containingScopes = new GroupingList(); } if (item.RefID != -2) { Global.Tracer.Assert(referenceableItems.ContainsKey(item.RefID)); Global.Tracer.Assert(referenceableItems[item.RefID] is Grouping); Global.Tracer.Assert(!m_containingScopes.Contains((Grouping)referenceableItems[item.RefID])); m_containingScopes.Add((Grouping)referenceableItems[item.RefID]); } else { m_containingScopes.Add(null); } break; case MemberName.RecursiveMember: { if (referenceableItems.TryGetValue(item.RefID, out IReferenceable value2)) { m_recursiveMember = (value2 as TablixMember); } break; } default: Global.Tracer.Assert(condition: false); break; } } }
internal int Lookup(GroupingList scopeDefs, List <object>[] scopeValues) { object obj = null; if (scopeValues == null || scopeValues.Length == 0) { Global.Tracer.Assert(scopeDefs == null || scopeDefs.Count == 0, "(null == scopeDefs || 0 == scopeDefs.Count)"); obj = m_lookupInt; } else { Hashtable hashtable = m_lookupTable; int num = 0; for (int i = 0; i < scopeValues.Length; i++) { List <object> list = scopeValues[i]; if (list == null) { num++; continue; } hashtable = (Hashtable)hashtable[num]; for (int j = 0; j < list.Count; j++) { obj = hashtable[list[j]]; if (i < scopeValues.Length - 1 || j < list.Count - 1) { hashtable = (Hashtable)obj; Global.Tracer.Assert(hashtable != null, "(null != hashEntries)"); } } num = 0; } if (scopeValues[scopeValues.Length - 1] == null) { hashtable = (Hashtable)hashtable[num]; obj = hashtable[1]; } } Global.Tracer.Assert(obj is int, "(value is int)"); return((int)obj); }
public void Deserialize(IntermediateFormatReader reader) { reader.RegisterDeclaration(m_Declaration); while (reader.NextMember()) { switch (reader.CurrentMember.MemberName) { case MemberName.DataSet: m_dataSet = reader.ReadReference <DataSet>(this); break; case MemberName.SortExpressionScope: m_sortExpressionScope = reader.ReadReference <ISortFilterScope>(this); break; case MemberName.GroupsInSortTarget: m_groupsInSortTarget = reader.ReadListOfReferences <GroupingList, Grouping>(this); break; case MemberName.SortTarget: m_sortTarget = reader.ReadReference <ISortFilterScope>(this); break; case MemberName.SortExpressionIndex: m_sortExpressionIndex = reader.ReadInt32(); break; case MemberName.DetailScopeSubReports: m_detailScopeSubReports = reader.ReadGenericListOfReferences <SubReport>(this); break; default: Global.Tracer.Assert(condition: false); break; } } }
public override void Deserialize(IntermediateFormatReader reader) { base.Deserialize(reader); reader.RegisterDeclaration(m_Declaration); while (reader.NextMember()) { switch (reader.CurrentMember.MemberName) { case MemberName.Parameters: m_parameters = reader.ReadGenericListOfRIFObjects <ParameterValue>(); break; case MemberName.NoRowsMessage: m_noRowsMessage = (ExpressionInfo)reader.ReadRIFObject(); break; case MemberName.MergeTransactions: m_mergeTransactions = reader.ReadBoolean(); break; case MemberName.ContainingScopes: if (reader.ReadListOfReferencesNoResolution(this) == 0) { m_containingScopes = new GroupingList(); } break; case MemberName.IsTablixCellScope: m_isTablixCellScope = reader.ReadBoolean(); break; case MemberName.ReportName: m_reportName = reader.ReadString(); break; case MemberName.OmitBorderOnPageBreak: m_omitBorderOnPageBreak = reader.ReadBoolean(); break; case MemberName.KeepTogether: m_keepTogether = reader.ReadBoolean(); break; case MemberName.Location: m_location = (Microsoft.ReportingServices.ReportPublishing.LocationFlags)reader.ReadEnum(); break; case MemberName.IndexInCollection: m_indexInCollection = reader.ReadInt32(); break; case MemberName.ContainingSection: m_containingSection = reader.ReadReference <ReportSection>(this); break; default: Global.Tracer.Assert(condition: false); break; } } }
internal bool PopulateRuntimeSortFilterEventInfo(OnDemandProcessingContext odpContext, Microsoft.ReportingServices.ReportIntermediateFormat.DataSet myDataSet) { if (odpContext.TopLevelContext.UserSortFilterInfo == null || odpContext.TopLevelContext.UserSortFilterInfo.OdpSortInfo == null || odpContext.TopLevelContext.OldSortFilterEventInfo == null) { return(false); } if (-1 != m_dataSetGlobalID) { return(false); } m_runtimeSortFilterInfo = null; EventInformation.OdpSortEventInfo odpSortInfo = odpContext.TopLevelContext.UserSortFilterInfo.OdpSortInfo; for (int i = 0; i < odpSortInfo.Count; i++) { string uniqueNameAt = odpSortInfo.GetUniqueNameAt(i); Microsoft.ReportingServices.ReportIntermediateFormat.SortFilterEventInfo sortFilterEventInfo = odpContext.TopLevelContext.OldSortFilterEventInfo[uniqueNameAt]; if (sortFilterEventInfo == null || sortFilterEventInfo.EventSource.UserSort == null) { continue; } int num = sortFilterEventInfo.EventSource.UserSort.SubReportDataSetGlobalId; if (-1 == num) { num = sortFilterEventInfo.EventSource.UserSort.DataSet.GlobalID; } if (num == myDataSet.GlobalID) { if (m_runtimeSortFilterInfo == null) { m_runtimeSortFilterInfo = new List <IReference <RuntimeSortFilterEventInfo> >(); } RuntimeSortFilterEventInfo runtimeSortFilterEventInfo = new RuntimeSortFilterEventInfo(sortFilterEventInfo.EventSource, uniqueNameAt, odpSortInfo.GetSortDirectionAt(i), sortFilterEventInfo.EventSourceScopeInfo, odpContext, (m_currentContainingScope == null) ? 1 : m_currentContainingScope.Value().Depth); runtimeSortFilterEventInfo.SelfReference.UnPinValue(); m_runtimeSortFilterInfo.Add(runtimeSortFilterEventInfo.SelfReference); } } if (m_runtimeSortFilterInfo != null) { int count = m_runtimeSortFilterInfo.Count; for (int j = 0; j < count; j++) { IReference <RuntimeSortFilterEventInfo> reference = m_runtimeSortFilterInfo[j]; using (reference.PinValue()) { RuntimeSortFilterEventInfo runtimeSortFilterEventInfo2 = reference.Value(); IInScopeEventSource eventSource = runtimeSortFilterEventInfo2.EventSource; Microsoft.ReportingServices.ReportIntermediateFormat.ISortFilterScope sortExpressionScope = eventSource.UserSort.SortExpressionScope; if (sortExpressionScope != null) { sortExpressionScope.IsSortFilterExpressionScope = SetSortFilterInfo(sortExpressionScope.IsSortFilterExpressionScope, count, j); } Microsoft.ReportingServices.ReportIntermediateFormat.ISortFilterScope sortTarget = eventSource.UserSort.SortTarget; if (sortTarget != null) { sortTarget.IsSortFilterTarget = SetSortFilterInfo(sortTarget.IsSortFilterTarget, count, j); } if (eventSource.ContainingScopes != null && 0 < eventSource.ContainingScopes.Count) { int num2 = 0; int num3 = 0; for (int k = 0; k < eventSource.ContainingScopes.Count; k++) { Microsoft.ReportingServices.ReportIntermediateFormat.Grouping grouping = eventSource.ContainingScopes[k]; if (grouping != null && grouping.IsDetail) { continue; } List <object> list = runtimeSortFilterEventInfo2.SortSourceScopeInfo[num2]; if (grouping != null) { if (grouping.SortFilterScopeInfo == null) { grouping.SortFilterScopeInfo = new List <object> [count]; for (int l = 0; l < count; l++) { grouping.SortFilterScopeInfo[l] = null; } grouping.SortFilterScopeIndex = new int[count]; for (int m = 0; m < count; m++) { grouping.SortFilterScopeIndex[m] = -1; } } grouping.SortFilterScopeInfo[j] = list; grouping.SortFilterScopeIndex[j] = num2; } else { List <Microsoft.ReportingServices.ReportIntermediateFormat.SubReport> detailScopeSubReports = eventSource.UserSort.DetailScopeSubReports; Microsoft.ReportingServices.ReportIntermediateFormat.ReportItem reportItem = (detailScopeSubReports == null || num3 >= detailScopeSubReports.Count) ? eventSource.Parent : detailScopeSubReports[num3++].Parent; while (reportItem != null && !reportItem.IsDataRegion) { reportItem = reportItem.Parent; } Global.Tracer.Assert(reportItem.IsDataRegion, "(parent.IsDataRegion)"); Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion dataRegion = (Microsoft.ReportingServices.ReportIntermediateFormat.DataRegion)reportItem; if (dataRegion.SortFilterSourceDetailScopeInfo == null) { dataRegion.SortFilterSourceDetailScopeInfo = new int[count]; for (int n = 0; n < count; n++) { dataRegion.SortFilterSourceDetailScopeInfo[n] = -1; } } Global.Tracer.Assert(list != null && 1 == list.Count, "(null != scopeValues && 1 == scopeValues.Count)"); dataRegion.SortFilterSourceDetailScopeInfo[j] = (int)list[0]; } num2++; } } Microsoft.ReportingServices.ReportIntermediateFormat.GroupingList groupsInSortTarget = eventSource.UserSort.GroupsInSortTarget; if (groupsInSortTarget != null) { for (int num4 = 0; num4 < groupsInSortTarget.Count; num4++) { groupsInSortTarget[num4].NeedScopeInfoForSortFilterExpression = SetSortFilterInfo(groupsInSortTarget[num4].NeedScopeInfoForSortFilterExpression, count, j); } } List <int> peerSortFilters = eventSource.GetPeerSortFilters(create: false); if (peerSortFilters == null || peerSortFilters.Count == 0) { continue; } if (runtimeSortFilterEventInfo2.PeerSortFilters == null) { runtimeSortFilterEventInfo2.PeerSortFilters = new Hashtable(); } for (int num5 = 0; num5 < peerSortFilters.Count; num5++) { if (eventSource.ID != peerSortFilters[num5]) { runtimeSortFilterEventInfo2.PeerSortFilters.Add(peerSortFilters[num5], null); } } } } } return(true); }
public override void Deserialize(IntermediateFormatReader reader) { base.Deserialize(reader); reader.RegisterDeclaration(m_Declaration); while (reader.NextMember()) { switch (reader.CurrentMember.MemberName) { case MemberName.Paragraphs: m_paragraphs = reader.ReadGenericListOfRIFObjects <Paragraph>(); break; case MemberName.Value: { TextRun orCreateSingleTextRun = GetOrCreateSingleTextRun(reader); ExpressionInfo expressionInfo = (ExpressionInfo)reader.ReadRIFObject(); m_hasValue = true; m_hasExpressionBasedValue = expressionInfo.IsExpression; orCreateSingleTextRun.Value = expressionInfo; if (m_styleClass != null) { orCreateSingleTextRun.Paragraph.StyleClass = new ParagraphFilteredStyle(m_styleClass); orCreateSingleTextRun.StyleClass = new TextRunFilteredStyle(m_styleClass); m_styleClass = new TextBoxFilteredStyle(m_styleClass); } break; } case MemberName.CanScrollVertically: m_canScrollVertically = reader.ReadBoolean(); break; case MemberName.CanGrow: m_canGrow = reader.ReadBoolean(); break; case MemberName.CanShrink: m_canShrink = reader.ReadBoolean(); break; case MemberName.HideDuplicates: m_hideDuplicates = reader.ReadString(); break; case MemberName.Action: m_action = (Action)reader.ReadRIFObject(); break; case MemberName.IsToggle: m_isToggle = reader.ReadBoolean(); break; case MemberName.InitialToggleState: m_initialToggleState = (ExpressionInfo)reader.ReadRIFObject(); break; case MemberName.ValueReferenced: m_valueReferenced = reader.ReadBoolean(); break; case MemberName.TextRunValueReferenced: m_textRunValueReferenced = reader.ReadBoolean(); break; case MemberName.RecursiveSender: m_recursiveSender = reader.ReadBoolean(); break; case MemberName.DataElementStyleAttribute: m_dataElementStyleAttribute = reader.ReadBoolean(); break; case MemberName.ContainingScopes: if (reader.ReadListOfReferencesNoResolution(this) == 0) { m_containingScopes = new GroupingList(); } break; case MemberName.UserSort: m_userSort = (EndUserSort)reader.ReadRIFObject(); break; case MemberName.IsTablixCellScope: m_isTablixCellScope = reader.ReadBoolean(); break; case MemberName.IsSubReportTopLevelScope: m_isSubReportTopLevelScope = reader.ReadBoolean(); break; case MemberName.DataType: GetOrCreateSingleTextRun(reader).DataType = (DataType)reader.ReadEnum(); break; case MemberName.KeepTogether: m_keepTogether = reader.ReadBoolean(); break; case MemberName.SequenceID: m_sequenceID = reader.ReadInt32(); break; case MemberName.RecursiveMember: m_recursiveMember = reader.ReadReference <TablixMember>(this); break; case MemberName.HasExpressionBasedValue: m_hasExpressionBasedValue = reader.ReadBoolean(); break; case MemberName.HasValue: m_hasValue = reader.ReadBoolean(); break; case MemberName.IsSimple: m_isSimple = reader.ReadBoolean(); break; case MemberName.HasNonRecursiveSender: m_hasNonRecursiveSender = reader.ReadBoolean(); break; default: Global.Tracer.Assert(condition: false); break; } } }