static void ImportRouteSegments(IMediator CommandBus, Wgs84GraphBuilder graphBuilder)
        {
            // Import node objects to database
            var segmentJsonText = File.ReadAllText(_builderDataPath + "RouteSegments.geojson");

            var segmentsJson = JsonConvert.DeserializeObject(segmentJsonText) as JObject;

            var features = segmentsJson["features"];

            foreach (var feature in features)
            {
                var properties = feature["properties"] as JObject;

                var geometry = feature["geometry"];

                var geometryType = geometry["type"].ToString();
                var geometryCoordinates = geometry["coordinates"].ToString().Replace("\r\n", "").Replace(" ", "");

                var segmentId = _segmentIdPrefix + properties["Id"].ToString().PadLeft(6, '0');
                var segmentKind = properties["RouteSegmentKind"].ToString();
                var assetStatus = properties["Status"].ToString();

                if (properties["BuildTestData"].ToString() != "")
                {
                    var buildCodes = properties["BuildTestData"].ToString().Split(';');
                    _segmentBuildCodes.Add(segmentId, buildCodes);
                }

                // Add link to graph
                var coordinates = geometry["coordinates"] as JArray;
                var startX = coordinates.First[0];
                var startY = coordinates.First[1];

                var endX = coordinates.Last[0];
                var endY = coordinates.Last[1];

                graphBuilder.AddLinkToGraph(segmentId, (double)startX, (double)startY, (double)endX, (double)endY);

                // Derive node and function kind
                var segmentKindCode = RouteSegmentKindEnum.Unknown;

                if (segmentKind == "buried")
                {
                    segmentKindCode = RouteSegmentKindEnum.Underground;
                }

                var link = _routeGraph.Links[segmentId];

                var addSegmentCmd = new AddSegmentCommand()
                {
                    Id = Guid.Parse(segmentId),
                    FromNodeId = Guid.Parse(link.StartNode.Id),
                    ToNodeId = Guid.Parse(link.EndNode.Id),
                    SegmentKind = segmentKindCode,
                    Geometry = new Geometry(geometryType, geometryCoordinates)
                };

                CommandBus.Send(addSegmentCmd).Wait();
            }
        }
        public Task <Unit> Handle(AddSegmentCommand request, CancellationToken cancellationToken)
        {
            routeNetworkAggregate.AddRouteSegment(request.Id, request.FromNodeId, request.ToNodeId, request.SegmentKind, request.Geometry);
            repo.Store(routeNetworkAggregate);

            /*
             *
             * // Id check
             * if (request.Id == null || request.Id == Guid.Empty)
             *  throw new ArgumentException("Id cannot be null or empty");
             *
             * // Check that not already exists
             * if (routeQueryService.CheckIfRouteSegmentIdExists(request.Id))
             * {
             *  throw new ArgumentException("A route segment with id: " + request.Id + " already exists");
             * }
             *
             * if (!routeQueryService.CheckIfRouteNodeIdExists(request.FromNodeId))
             * {
             *  throw new ArgumentException("Cannot find from node with id: " + request.FromNodeId);
             * }
             *
             * if (!routeQueryService.CheckIfRouteNodeIdExists(request.ToNodeId))
             * {
             *  throw new ArgumentException("Cannot find to node with id: " + request.FromNodeId);
             * }
             *
             * var routeSegment = new RouteSegment(request.Id,  request.FromNodeId, request.ToNodeId, request.SegmentKind, request.Geometry);
             * repo.Store(routeSegment);
             */

            return(Unit.Task);
        }
Ejemplo n.º 3
0
        public void AddSegmentsCommandRedo()
        {
            this.PatchSketchObject.Width            = 3;
            this.PatchSketchObject.ResolutionWidth  = 4;
            this.PatchSketchObject.ResolutionHeight = 4;

            AddSegmentCommand addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                                                 new List <Vector3> {
                new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(2, 0, 0)
            });

            Invoker.ExecuteCommand(addCommand);

            addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                               new List <Vector3> {
                new Vector3(0, 0, 2), new Vector3(1, 1, 2), new Vector3(2, 0, 2)
            });
            Invoker.ExecuteCommand(addCommand);

            addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                               new List <Vector3> {
                new Vector3(0, 0, 3), new Vector3(1, 0, 3), new Vector3(2, 0, 3)
            });
            Invoker.ExecuteCommand(addCommand);
            Invoker.Undo();
            Invoker.Redo();

            Assert.AreEqual(8 * 8, this.PatchSketchObject.GetComponent <MeshFilter>().sharedMesh.vertices.Length);
        }
Ejemplo n.º 4
0
        public void AddSegmentContinuousCommand2()
        {
            this.PatchSketchObject.Width            = 3;
            this.PatchSketchObject.ResolutionWidth  = 4;
            this.PatchSketchObject.ResolutionHeight = 4;

            ICommand addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                                        new List <Vector3> {
                new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(2, 0, 0)
            });

            Invoker.ExecuteCommand(addCommand);

            addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                               new List <Vector3> {
                new Vector3(0, 0, 2), new Vector3(1, 1, 2), new Vector3(2, 0, 2)
            });
            Invoker.ExecuteCommand(addCommand);

            addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                               new List <Vector3> {
                new Vector3(0, 0, 3), new Vector3(1, 0, 3), new Vector3(2, 0, 3)
            });
            Invoker.ExecuteCommand(addCommand);

            addCommand = new AddSegmentContinuousCommand(this.PatchSketchObject,
                                                         new List <Vector3> {
                new Vector3(0, 0, 3.5f), new Vector3(1, 0, 3.5f), new Vector3(2, 0, 3.5f)
            });
            Invoker.ExecuteCommand(addCommand);

            Assert.AreEqual(8 * 12, this.PatchSketchObject.GetComponent <MeshFilter>().sharedMesh.vertices.Length);
            Assert.AreEqual(12, this.PatchSketchObject.GetControlPoints().Count);
        }
Ejemplo n.º 5
0
        public void DeleteSegmentCommandRedo()
        {
            this.PatchSketchObject.Width            = 3;
            this.PatchSketchObject.ResolutionWidth  = 4;
            this.PatchSketchObject.ResolutionHeight = 4;

            AddSegmentCommand addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                                                 new List <Vector3> {
                new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(2, 0, 0)
            });

            Invoker.ExecuteCommand(addCommand);

            addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                               new List <Vector3> {
                new Vector3(0, 0, 2), new Vector3(1, 1, 2), new Vector3(2, 0, 2)
            });
            Invoker.ExecuteCommand(addCommand);

            addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                               new List <Vector3> {
                new Vector3(0, 0, 3), new Vector3(1, 0, 3), new Vector3(2, 0, 3)
            });
            Invoker.ExecuteCommand(addCommand);

            DeleteSegmentCommand deleteCommand = new DeleteSegmentCommand(this.PatchSketchObject);

            Invoker.ExecuteCommand(deleteCommand);
            Invoker.Undo();
            Invoker.Redo();

            Assert.AreEqual(null, this.PatchSketchObject.GetComponent <MeshFilter>().sharedMesh);
            Assert.AreEqual(6, this.PatchSketchObject.GetControlPoints().Count);
        }
Ejemplo n.º 6
0
        public void AddFirstSegmentCommand()
        {
            this.PatchSketchObject.Width            = 3;
            this.PatchSketchObject.ResolutionWidth  = 4;
            this.PatchSketchObject.ResolutionHeight = 4;

            AddSegmentCommand addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                                                 new List <Vector3> {
                new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(2, 0, 0)
            });

            Invoker.ExecuteCommand(addCommand);

            Assert.AreEqual(null, this.PatchSketchObject.GetComponent <MeshFilter>().sharedMesh);
            Assert.AreEqual(3, this.PatchSketchObject.GetControlPointsCount());
        }
Ejemplo n.º 7
0
        public void DeleteFirstSegmentCommand()
        {
            this.PatchSketchObject.Width            = 3;
            this.PatchSketchObject.ResolutionWidth  = 4;
            this.PatchSketchObject.ResolutionHeight = 4;

            AddSegmentCommand addCommand = new AddSegmentCommand(this.PatchSketchObject,
                                                                 new List <Vector3> {
                new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(2, 0, 0)
            });

            Invoker.ExecuteCommand(addCommand);

            DeleteSegmentCommand deleteCommand = new DeleteSegmentCommand(this.PatchSketchObject);

            Invoker.ExecuteCommand(deleteCommand);

            Assert.AreEqual(null, this.PatchSketchObject.GetComponent <MeshFilter>().sharedMesh);
            Assert.AreEqual(0, this.PatchSketchObject.GetControlPoints().Count);
            Assert.IsTrue(SketchWorld.ActiveSketchWorld.IsObjectDeleted(this.PatchSketchObject));
        }