Exemple #1
0
        /// <summary>
        /// Create and configure the segment iterator to be used
        /// </summary>
        /// <param name="passFilter"></param>
        private void SetupForCellPassStackExamination(ICellPassAttributeFilter passFilter)
        {
            SegmentIterator = new SubGridSegmentIterator(null, null, SiteModel.PrimaryStorageProxy);

            if (passFilter.ReturnEarliestFilteredCellPass ||
                (passFilter.HasElevationTypeFilter && passFilter.ElevationType == ElevationType.First))
            {
                SegmentIterator.IterationDirection = IterationDirection.Forwards;
            }
            else
            {
                SegmentIterator.IterationDirection = IterationDirection.Backwards;
            }

            if (passFilter.HasMachineFilter)
            {
                if (passFilter.SiteModel == null)
                {
                    passFilter.SiteModel = SiteModel;
                }
                SegmentIterator.SetMachineRestriction(passFilter.GetMachineIDsSet());
            }

            // Create and configure the cell pass iterator to be used
            CellPassIterator = new SubGridSegmentCellPassIterator_NonStatic
            {
                SegmentIterator = SegmentIterator
            };

            CellPassIterator.SetTimeRange(passFilter.HasTimeFilter, passFilter.StartTime, passFilter.EndTime);
        }
Exemple #2
0
        protected virtual void SetupForCellPassStackExamination()
        {
            if (!_commonCellPassStackExaminationDone)
            {
                _populationControl.PreparePopulationControl(_gridDataType, _liftParams, _filter.AttributeFilter, _clientGrid.EventPopulationFlags);

                _filter.AttributeFilter.RequestedGridDataType = _gridDataType;

                // Create and configure the segment iterator to be used
                _segmentIterator = new SubGridSegmentIterator(_subGridAsLeaf, _subGridAsLeaf.Directory, _storageProxy);

                if (_filter.AttributeFilter.HasMachineFilter)
                {
                    _segmentIterator.SetMachineRestriction(_filter.AttributeFilter.GetMachineIDsSet());
                }

                // Create and configure the cell pass iterator to be used

                _cellPassIterator = new SubGridSegmentCellPassIterator_NonStatic(_segmentIterator, _maxNumberOfPassesToReturn);
                _cellPassIterator.SetTimeRange(_filter.AttributeFilter.HasTimeFilter, _filter.AttributeFilter.StartTime, _filter.AttributeFilter.EndTime);

                _commonCellPassStackExaminationDone = true;
            }

            if (_filter.AttributeFilter.ReturnEarliestFilteredCellPass ||
                (_filter.AttributeFilter.HasElevationTypeFilter && _filter.AttributeFilter.ElevationType == ElevationType.First))
            {
                _segmentIterator.IterationDirection = IterationDirection.Forwards;
            }
            else
            {
                _segmentIterator.IterationDirection = IterationDirection.Backwards;
            }

            _segmentIterator.SubGrid   = _subGridAsLeaf;
            _segmentIterator.Directory = _subGridAsLeaf.Directory;

            // Some display types require lift processing to be able to select the appropriate cell pass containing the filtered value required.
            if (_clientGrid.WantsLiftProcessingResults())
            {
                _segmentIterator.IterationDirection         = IterationDirection.Forwards;
                _cellPassIterator.MaxNumberOfPassesToReturn = _maxNumberOfPassesToReturn;
            }
        }