public RoadSegmentEnumerator(SqlConnection connection, IClock clock, WellKnownBinaryReader reader, ILogger <ImportedRoadSegmentsReader> logger)
            {
                _connection = connection;
                _clock      = clock;
                _reader     = reader;
                _logger     = logger;

                _state = State.Initial;
                _batch = Array.Empty <ImportedRoadSegment>();
                _index = -1;
            }
Exemplo n.º 2
0
        public LegacyEventReader(IClock clock, WellKnownBinaryReader wkbReader, ILoggerFactory loggerFactory)
        {
            if (clock == null)
            {
                throw new ArgumentNullException(nameof(clock));
            }
            if (wkbReader == null)
            {
                throw new ArgumentNullException(nameof(wkbReader));
            }
            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            _clock  = clock;
            _reader = new CompositeEventReader(
                new TimedEventReader(
                    new ImportedOrganizationsReader(clock, loggerFactory.CreateLogger <ImportedOrganizationsReader>()),
                    100,
                    loggerFactory.CreateLogger <TimedEventReader>()
                    ),
                new TimedEventReader(
                    new ImportedRoadNodesReader(clock, wkbReader,
                                                loggerFactory.CreateLogger <ImportedRoadNodesReader>()),
                    TimedEventReader.DefaultThreshold,
                    loggerFactory.CreateLogger <TimedEventReader>()
                    ),
                new TimedEventReader(
                    new ImportedRoadSegmentsReader(clock, wkbReader,
                                                   loggerFactory.CreateLogger <ImportedRoadSegmentsReader>()),
                    TimedEventReader.DefaultThreshold,
                    loggerFactory.CreateLogger <TimedEventReader>()
                    ),
                new TimedEventReader(
                    new ImportedGradeSeparatedJunctionsReader(clock,
                                                              loggerFactory.CreateLogger <ImportedGradeSeparatedJunctionsReader>()),
                    100,
                    loggerFactory.CreateLogger <TimedEventReader>()
                    ));
        }
        public Task When_road_segments_were_imported()
        {
            var imported_segments = Enumerable
                                    .Range(0, new Random().Next(10))
                                    .Select(index => new ImportedRoadSegment
            {
                Id                   = _fixture.Create <int>(),
                StartNodeId          = _fixture.Create <int>(),
                EndNodeId            = _fixture.Create <int>(),
                Geometry             = BackOffice.Core.GeometryTranslator.Translate(_fixture.Create <MultiLineString>()),
                GeometryVersion      = _fixture.Create <int>(),
                MaintenanceAuthority = _fixture.Create <MaintenanceAuthority>(),
                GeometryDrawMethod   = _fixture.Create <RoadSegmentGeometryDrawMethod>(),
                Morphology           = _fixture.Create <RoadSegmentMorphology>(),
                Status               = _fixture.Create <RoadSegmentStatus>(),
                Category             = _fixture.Create <RoadSegmentCategory>(),
                AccessRestriction    = _fixture.Create <RoadSegmentAccessRestriction>(),
                LeftSide             = _fixture.Create <ImportedRoadSegmentSideAttributes>(),
                RightSide            = _fixture.Create <ImportedRoadSegmentSideAttributes>(),
                PartOfEuropeanRoads  = _fixture.CreateMany <ImportedRoadSegmentEuropeanRoadAttributes>().ToArray(),
                PartOfNationalRoads  = _fixture.CreateMany <ImportedRoadSegmentNationalRoadAttributes>().ToArray(),
                PartOfNumberedRoads  = _fixture.CreateMany <ImportedRoadSegmentNumberedRoadAttributes>().ToArray(),
                Lanes                = _fixture.CreateMany <ImportedRoadSegmentLaneAttributes>().ToArray(),
                Widths               = _fixture.CreateMany <ImportedRoadSegmentWidthAttributes>().ToArray(),
                Surfaces             = _fixture.CreateMany <ImportedRoadSegmentSurfaceAttributes>().ToArray(),
                Version              = _fixture.Create <int>(),
                RecordingDate        = _fixture.Create <DateTime>(),
                Origin               = _fixture.Create <ImportedOriginProperties>()
            })
                                    .ToArray();
            var givens = Array.ConvertAll(imported_segments, imported => (object)imported);
            var reader = new WellKnownBinaryReader();

            return(new RoadNetworkInfoProjection()
                   .Scenario()
                   .Given(
                       new BeganRoadNetworkImport()
                       )
                   .Given(givens)
                   .Expect(
                       new RoadNetworkInfo
            {
                Id = 0,
                CompletedImport = false,
                OrganizationCount = 0,
                RoadNodeCount = 0,
                TotalRoadNodeShapeLength = 0,
                RoadSegmentCount = imported_segments.Length,
                RoadSegmentSurfaceAttributeCount = imported_segments.Aggregate(0,
                                                                               (current, imported) => current + imported.Surfaces.Length),
                RoadSegmentLaneAttributeCount = imported_segments.Aggregate(0,
                                                                            (current, imported) => current + imported.Lanes.Length),
                RoadSegmentWidthAttributeCount = imported_segments.Aggregate(0,
                                                                             (current, imported) => current + imported.Widths.Length),
                RoadSegmentEuropeanRoadAttributeCount = imported_segments.Aggregate(0,
                                                                                    (current, imported) => current + imported.PartOfEuropeanRoads.Length),
                RoadSegmentNationalRoadAttributeCount = imported_segments.Aggregate(0,
                                                                                    (current, imported) => current + imported.PartOfNationalRoads.Length),
                RoadSegmentNumberedRoadAttributeCount = imported_segments.Aggregate(0,
                                                                                    (current, imported) => current + imported.PartOfNumberedRoads.Length),
                TotalRoadSegmentShapeLength = imported_segments.Aggregate(new WordLength(0),
                                                                          (current, imported) => current
                                                                          .Plus(
                                                                              new PolyLineMShapeContent(
                                                                                  GeometryTranslator.FromGeometryMultiLineString(
                                                                                      BackOffice.Core.GeometryTranslator.Translate(imported.Geometry)
                                                                                      )
                                                                                  )
                                                                              .ContentLength
                                                                              .Plus(ShapeRecord.HeaderLength)
                                                                              )
                                                                          )
                                              .ToInt32(),
                GradeSeparatedJunctionCount = 0
            }
                       ));
        }
 public ImportedRoadSegmentsReader(IClock clock, WellKnownBinaryReader reader, ILogger <ImportedRoadSegmentsReader> logger)
 {
     _clock  = clock ?? throw new ArgumentNullException(nameof(clock));
     _reader = reader ?? throw new ArgumentNullException(nameof(reader));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }
 public ImportedRoadNodesReader(IClock clock, WellKnownBinaryReader wkbReader, ILogger <ImportedRoadNodesReader> logger)
 {
     _clock     = clock ?? throw new ArgumentNullException(nameof(clock));
     _wkbReader = wkbReader ?? throw new ArgumentNullException(nameof(wkbReader));
     _logger    = logger ?? throw new ArgumentNullException(nameof(logger));
 }