private static MeterSuspensionAndDeploymentPair CreateMeterSuspensionWithBridgeDeployment(
            GaugingSummaryItem summaryItem, MeterSuspensionType meterSuspensionType)
        {
            var bridgeDeploymentMethod = DetermineBridgeDeploymentMethod(summaryItem);

            return(new MeterSuspensionAndDeploymentPair(meterSuspensionType, bridgeDeploymentMethod));
        }
        public ManualGaugingDischargeSection Map(GaugingSummaryItem summaryItem, DischargeActivity dischargeActivity)
        {
            var dischargeSection = CreateDischargeSectionWithRawValuesFromSummaryItem(dischargeActivity.MeasurementPeriod, summaryItem);

            UpdateDischargeSectionWithDerivedValues(dischargeSection, summaryItem);
            UpdateDischargeSectionWithVerticals(dischargeSection, summaryItem);

            return(dischargeSection);
        }
        public void SetUp()
        {
            SetupAutoFixture();
            SetUpMeterCalibrationMapper();

            _gaugingSummaryItem = _fixture.Create <GaugingSummaryItem>();
            _deploymentMethod   = _fixture.Create <DeploymentMethodType>();

            _verticalMapper = new VerticalMapper(_meterCalibrationMapper);
        }
예제 #4
0
        public void SetupForAllTests()
        {
            SetupAutoFixture();

            SetupMockVerticalMapper();

            _gaugingSummaryItem = _fixture.Create <GaugingSummaryItem>();

            _mapper = new PointVelocityMapper(_mockVerticalMapper);
        }
예제 #5
0
        public void SetupForEachTest()
        {
            var startDate = _fixture.Create <DateTime>();
            var duration  = _fixture.Create <TimeSpan>().Duration();

            _gaugingSummaryItem = _fixture.Build <GaugingSummaryItem>()
                                  .With(x => x.StartDate, startDate)
                                  .With(x => x.EndDate, startDate.Add(duration))
                                  .Create();
        }
        public DischargeActivity Map(GaugingSummaryItem gaugingSummary, TimeSpan locationTimeZoneOffset)
        {
            var dischargeActivity = CreateDischargeActivity(gaugingSummary, locationTimeZoneOffset);

            dischargeActivity.ChannelMeasurements.Add(CreatePointVelocitySubActivity(gaugingSummary, dischargeActivity));

            foreach (var gageHeightMeasurement in CreateGageHeightMeasurements(gaugingSummary, locationTimeZoneOffset))
            {
                dischargeActivity.GageHeightMeasurements.Add(gageHeightMeasurement);
            }

            return(dischargeActivity);
        }
        private static DischargeActivity CreateDischargeActivity(GaugingSummaryItem gaugingSummary, TimeSpan locationTimeZoneOffset)
        {
            var startTime    = new DateTimeOffset(gaugingSummary.StartDate, locationTimeZoneOffset);
            var endTime      = new DateTimeOffset(gaugingSummary.EndDate, locationTimeZoneOffset);
            var surveyPeriod = new DateTimeInterval(startTime, endTime);
            var discharge    = gaugingSummary.Flow.AsDischargeMeasurement();

            return(new DischargeActivity(surveyPeriod, discharge)
            {
                Party = gaugingSummary.ObserversName,
                MeasurementId = GenerateMeasurementId(gaugingSummary),
                MeanIndexVelocity = GetMeanIndexVelocity(gaugingSummary)
            });
        }
        public List <Vertical> Map(GaugingSummaryItem gaugingSummaryItem, DeploymentMethodType deploymentMethod)
        {
            var verticals = new List <Vertical>();

            foreach (var panelItem in gaugingSummaryItem.PanelItems)
            {
                var vertical = CreateVertical(panelItem);
                vertical.Segment             = CreateSegment(panelItem);
                vertical.VelocityObservation = CreateVelocityObservation(
                    deploymentMethod, panelItem, gaugingSummaryItem.MeterDetailsItem);

                verticals.Add(vertical);
            }

            SetVerticalTypeForFirstAndLastVertical(verticals);
            SetTotalDischargePortion(verticals);

            return(verticals);
        }
        private static DeploymentMethodType DetermineBridgeDeploymentMethod(GaugingSummaryItem summaryItem)
        {
            var startPoint = MapNullableStartPoint(summaryItem.StartBank);

            switch (startPoint)
            {
            case StartPointType.LeftEdgeOfWater:
                return(DeploymentMethodType.BridgeDownstreamSide);

            case StartPointType.RightEdgeOfWater:
                return(DeploymentMethodType.BridgeUpstreamSide);

            case null:
                return(DeploymentMethodType.Unspecified);

            default:
                return(DeploymentMethodType.Unspecified);
            }
        }
 private static Measurement GetMeanIndexVelocity(GaugingSummaryItem gaugingSummary)
 {
     return(gaugingSummary.UseIndexVelocity
         ? gaugingSummary.IndexVelocity.AsVelocityMeasurement()
         : null);
 }
 private static string GenerateMeasurementId(GaugingSummaryItem gaugingSummary)
 {
     return(gaugingSummary.GaugingId.ToString(NumberFormatInfo.InvariantInfo));
 }
        private static IEnumerable <GageHeightMeasurement> CreateGageHeightMeasurements(GaugingSummaryItem gaugingSummary, TimeSpan locationTimeZoneOffset)
        {
            if (gaugingSummary.StartStage != null && gaugingSummary.EndStage != null)
            {
                yield return(CreateGageHeightMeasurement(gaugingSummary.StartStage, gaugingSummary.StartDate, locationTimeZoneOffset));

                yield return(CreateGageHeightMeasurement(gaugingSummary.EndStage, gaugingSummary.EndDate, locationTimeZoneOffset));
            }
            else if (gaugingSummary.MeanStage != null)
            {
                var measurementTime = DateTimeHelper.GetMean(gaugingSummary.StartDate, gaugingSummary.EndDate);

                yield return(CreateGageHeightMeasurement(gaugingSummary.MeanStage, measurementTime, locationTimeZoneOffset));
            }
        }
 private ChannelMeasurementBase CreatePointVelocitySubActivity(GaugingSummaryItem gaugingSummary, DischargeActivity dischargeActivity)
 {
     return(_pointVelocityMapper.Map(gaugingSummary, dischargeActivity));
 }
        private static MeterSuspensionAndDeploymentPair MapMeterSuspensionAndDeploymentMethod(GaugingSummaryItem summaryItem)
        {
            switch (summaryItem.GaugingMethod)
            {
            case GaugingMethod.BridgeWithRods:
                return(CreateMeterSuspensionWithBridgeDeployment(summaryItem, MeterSuspensionType.RoundRod));

            case GaugingMethod.BridgeWithWinch:
                return(CreateMeterSuspensionWithBridgeDeployment(summaryItem, MeterSuspensionType.PackReel));

            case GaugingMethod.BridgeWithHandlines:
                return(CreateMeterSuspensionWithBridgeDeployment(summaryItem, MeterSuspensionType.Handline));

            case GaugingMethod.BoatWithRods:
                return(CreateMeterSuspensionWithBoatDeployment(MeterSuspensionType.RoundRod));

            case GaugingMethod.BoatWithWinch:
                return(CreateMeterSuspensionWithBoatDeployment(MeterSuspensionType.PackReel));

            case GaugingMethod.BoatWithHandlines:
                return(CreateMeterSuspensionWithBoatDeployment(MeterSuspensionType.Handline));

            case GaugingMethod.Ice:
                return(new MeterSuspensionAndDeploymentPair(MeterSuspensionType.IceSurfaceMount, DeploymentMethodType.Ice));

            case GaugingMethod.Waded:
                return(new MeterSuspensionAndDeploymentPair(MeterSuspensionType.Unspecified, DeploymentMethodType.Wading));

            case GaugingMethod.Cableway:
                return(new MeterSuspensionAndDeploymentPair(MeterSuspensionType.Unspecified, DeploymentMethodType.Cableway));

            default:
                return(new MeterSuspensionAndDeploymentPair(MeterSuspensionType.Unspecified, DeploymentMethodType.Unspecified));
            }
        }
        private void UpdateDischargeSectionWithVerticals(ManualGaugingDischargeSection dischargeSection, GaugingSummaryItem summaryItem)
        {
            var verticals = _verticalMapper.Map(summaryItem, dischargeSection.DeploymentMethod);

            foreach (var vertical in verticals)
            {
                dischargeSection.Verticals.Add(vertical);
            }

            dischargeSection.WidthValue = CalculateTotalWidth(verticals);
        }
        private static void UpdateDischargeSectionWithDerivedValues(ManualGaugingDischargeSection dischargeSection, GaugingSummaryItem summaryItem)
        {
            dischargeSection.DischargeMethod           = MapDischargeMethod(summaryItem.FlowCalculationMethod);
            dischargeSection.StartPoint                = MapStartPoint(summaryItem.StartBank);
            dischargeSection.VelocityObservationMethod = DetermineVelocityObservationMethod(summaryItem);

            var meterSuspensionAndDeploymentMethod = MapMeterSuspensionAndDeploymentMethod(summaryItem);

            dischargeSection.MeterSuspension  = meterSuspensionAndDeploymentMethod.MeterSuspension;
            dischargeSection.DeploymentMethod = meterSuspensionAndDeploymentMethod.DeploymentMethod;
        }
        private static ManualGaugingDischargeSection CreateDischargeSectionWithRawValuesFromSummaryItem(DateTimeInterval measurementPeriod, GaugingSummaryItem summaryItem)
        {
            if (!summaryItem.Area.HasValue)
            {
                throw new ArgumentNullException(nameof(summaryItem.Area));
            }
            if (!summaryItem.MeanVelocity.HasValue)
            {
                throw new ArgumentNullException(nameof(summaryItem.MeanVelocity));
            }

            var factory = new ManualGaugingDischargeSectionFactory(ParametersAndMethodsHelper.UnitSystem)
            {
                DefaultChannelName = ParametersAndMethodsHelper.DefaultChannelName
            };

            var dischargeSection = factory.CreateManualGaugingDischargeSection(measurementPeriod, summaryItem.Flow.AsDischargeMeasurement().Value);

            dischargeSection.Party                = summaryItem.ObserversName;
            dischargeSection.Comments             = summaryItem.Comments;
            dischargeSection.AreaValue            = summaryItem.Area.Value;
            dischargeSection.VelocityAverageValue = summaryItem.MeanVelocity.Value;

            return(dischargeSection);
        }
        private static PointVelocityObservationType DetermineVelocityObservationMethod(GaugingSummaryItem summaryItem)
        {
            if (summaryItem.SampleAt2 && summaryItem.SampleAt4 && summaryItem.SampleAt5 && summaryItem.SampleAt6 && summaryItem.SampleAt8 && summaryItem.SampleAtSurface && summaryItem.SampleAtBed)
            {
                return(PointVelocityObservationType.Unknown);
            }

            if (summaryItem.SampleAt2 && summaryItem.SampleAt4 && summaryItem.SampleAt5 && summaryItem.SampleAt6 && summaryItem.SampleAt8 && (summaryItem.SampleAtSurface ^ summaryItem.SampleAtBed))
            {
                return(PointVelocityObservationType.SixPoint);
            }

            if (summaryItem.SampleAt2 && summaryItem.SampleAt4 && summaryItem.SampleAt5 && summaryItem.SampleAt6 && summaryItem.SampleAt8)
            {
                return(PointVelocityObservationType.FivePoint);
            }

            if (summaryItem.SampleAt2 && summaryItem.SampleAt6 && summaryItem.SampleAt8)
            {
                return(PointVelocityObservationType.OneAtPointTwoPointSixAndPointEight);
            }

            if (summaryItem.SampleAt2 && summaryItem.SampleAt8)
            {
                return(PointVelocityObservationType.OneAtPointTwoAndPointEight);
            }

            if (summaryItem.SampleAt6)
            {
                return(PointVelocityObservationType.OneAtPointSix);
            }

            if (summaryItem.SampleAt5)
            {
                return(PointVelocityObservationType.OneAtPointFive);
            }

            if (summaryItem.SampleAtSurface)
            {
                return(PointVelocityObservationType.Surface);
            }

            return(PointVelocityObservationType.Unknown);
        }