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); }
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); }
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); }
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); }
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()); }
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)); }