internal static AggregateRowInfo CreateAndSaveAggregateInfo(OnDemandProcessingContext odpContext) { AggregateRowInfo aggregateRowInfo = new AggregateRowInfo(); aggregateRowInfo.SaveAggregateInfo(odpContext); return(aggregateRowInfo); }
protected override void SendToInner() { bool peerOuterGroupProcessing = m_odpContext.PeerOuterGroupProcessing; m_dataRegionDef.RuntimeDataRegionObj = m_selfReference; int num = (m_outerGroupings != null) ? m_outerGroupings.Length : 0; AggregateRowInfo aggregateRowInfo = AggregateRowInfo.CreateAndSaveAggregateInfo(m_odpContext); if (m_dataRegionDef.IsMatrixIDC) { if (m_innerGroupings != null) { ProcessInnerHierarchy(aggregateRowInfo); } for (int i = 0; i < num; i++) { ProcessOuterHierarchy(aggregateRowInfo, i); } return; } if (num == 0) { if (m_innerGroupings != null) { ProcessInnerHierarchy(aggregateRowInfo); } } else { if (m_innerGroupsWithCellsForOuterPeerGroupProcessing == null || !peerOuterGroupProcessing) { m_innerGroupsWithCellsForOuterPeerGroupProcessing = new List <IReference <RuntimeDataTablixGroupLeafObj> >(); } for (int j = 0; j < num; j++) { ProcessOuterHierarchy(aggregateRowInfo, j); if (m_innerGroupings == null) { continue; } if (j == 0) { ProcessInnerHierarchy(aggregateRowInfo); continue; } foreach (IReference <RuntimeDataTablixGroupLeafObj> item in m_innerGroupsWithCellsForOuterPeerGroupProcessing) { using (item.PinValue()) { item.Value().PeerOuterGroupProcessCells(); } aggregateRowInfo.RestoreAggregateInfo(m_odpContext); } } } m_odpContext.PeerOuterGroupProcessing = peerOuterGroupProcessing; }
private void ProcessInnerHierarchy(AggregateRowInfo aggregateRowInfo) { for (int i = 0; i < m_innerGroupings.Length; i++) { IReference <RuntimeMemberObj> reference = m_innerGroupings[i]; using (reference.PinValue()) { reference.Value().NextRow(isOuterGrouping: false, m_odpContext); } aggregateRowInfo.RestoreAggregateInfo(m_odpContext); } }
private void ProcessOuterHierarchy(AggregateRowInfo aggregateRowInfo, int outerGroupingIndex) { m_odpContext.PeerOuterGroupProcessing = (outerGroupingIndex != 0); m_dataRegionDef.ResetOuterGroupingIndexesForOuterPeerGroup(0); m_dataRegionDef.ResetOuterGroupingAggregateRowInfo(); m_dataRegionDef.SetDataTablixAggregateRowInfo(aggregateRowInfo); IReference <RuntimeMemberObj> reference = m_outerGroupings[outerGroupingIndex]; using (reference.PinValue()) { reference.Value().NextRow(isOuterGrouping: true, m_odpContext); } aggregateRowInfo.RestoreAggregateInfo(m_odpContext); }
internal void FirstPassNextDataRow(OnDemandProcessingContext odpContext) { AggregateRowInfo aggregateRowInfo = AggregateRowInfo.CreateAndSaveAggregateInfo(odpContext); for (int i = 0; i < m_dataRegionObjs.Count; i++) { RuntimeDataRegionObjReference runtimeDataRegionObjReference = m_dataRegionObjs[i]; if (runtimeDataRegionObjReference != null) { using (runtimeDataRegionObjReference.PinValue()) { runtimeDataRegionObjReference.Value().NextRow(); } aggregateRowInfo.RestoreAggregateInfo(odpContext); } } }
internal void CombineAggregateInfo(OnDemandProcessingContext odpContext, AggregateRowInfo updated) { FieldsImpl fieldsImpl = odpContext.ReportObjectModel.FieldsImpl; if (updated == null) { fieldsImpl.ValidAggregateRow = false; return; } if (!updated.m_validAggregateRow) { fieldsImpl.ValidAggregateRow = false; } for (int i = 0; i < fieldsImpl.Count; i++) { if (updated.m_aggregationFieldChecked[i]) { fieldsImpl.ConsumeAggregationField(i); } } }
internal override void SaveAggregateInfo(OnDemandProcessingContext odpContext) { m_aggregateInfo = new AggregateRowInfo(); m_aggregateInfo.SaveAggregateInfo(odpContext); }