public VerificationContext(RoadNetworkView view, IRequestedChangeIdentityTranslator translator) { View = view ?? throw new ArgumentNullException(nameof(view)); Translator = translator ?? throw new ArgumentNullException(nameof(translator)); Tolerance = 0.001; // 1 mm }
private AddGradeSeparatedJunction Translate(Messages.AddGradeSeparatedJunction command, IRequestedChangeIdentityTranslator translator) { var permanent = _nextGradeSeparatedJunctionId(); var temporary = new GradeSeparatedJunctionId(command.TemporaryId); var upperSegmentId = new RoadSegmentId(command.UpperSegmentId); RoadSegmentId?temporaryUpperSegmentId; if (translator.TryTranslateToPermanent(upperSegmentId, out var permanentUpperSegmentId)) { temporaryUpperSegmentId = upperSegmentId; upperSegmentId = permanentUpperSegmentId; } else { temporaryUpperSegmentId = null; } var lowerSegmentId = new RoadSegmentId(command.LowerSegmentId); RoadSegmentId?temporaryLowerSegmentId; if (translator.TryTranslateToPermanent(lowerSegmentId, out var permanentLowerSegmentId)) { temporaryLowerSegmentId = lowerSegmentId; lowerSegmentId = permanentLowerSegmentId; } else { temporaryLowerSegmentId = null; } return(new AddGradeSeparatedJunction( permanent, temporary, GradeSeparatedJunctionType.Parse(command.Type), upperSegmentId, temporaryUpperSegmentId, lowerSegmentId, temporaryLowerSegmentId)); }
private AddRoadSegmentToNationalRoad Translate(Messages.AddRoadSegmentToNationalRoad command, IRequestedChangeIdentityTranslator translator) { var permanent = _nextNationalRoadAttributeId(); var temporary = new AttributeId(command.TemporaryAttributeId); var segmentId = new RoadSegmentId(command.SegmentId); RoadSegmentId?temporarySegmentId; if (translator.TryTranslateToPermanent(segmentId, out var permanentSegmentId)) { temporarySegmentId = segmentId; segmentId = permanentSegmentId; } else { temporarySegmentId = null; } var number = NationalRoadNumber.Parse(command.Ident2); return(new AddRoadSegmentToNationalRoad ( permanent, temporary, segmentId, temporarySegmentId, number )); }
private AddRoadSegmentToNumberedRoad Translate(Messages.AddRoadSegmentToNumberedRoad command, IRequestedChangeIdentityTranslator translator) { var permanent = _nextNumberedRoadAttributeId(); var temporary = new AttributeId(command.TemporaryAttributeId); var segmentId = new RoadSegmentId(command.SegmentId); RoadSegmentId?temporarySegmentId; if (translator.TryTranslateToPermanent(segmentId, out var permanentSegmentId)) { temporarySegmentId = segmentId; segmentId = permanentSegmentId; } else { temporarySegmentId = null; } var number = NumberedRoadNumber.Parse(command.Ident8); var direction = RoadSegmentNumberedRoadDirection.Parse(command.Direction); var ordinal = new RoadSegmentNumberedRoadOrdinal(command.Ordinal); return(new AddRoadSegmentToNumberedRoad ( permanent, temporary, segmentId, temporarySegmentId, number, direction, ordinal )); }
private AddRoadSegment Translate(Messages.AddRoadSegment command, IRequestedChangeIdentityTranslator translator) { var permanent = _nextRoadSegmentId(); var temporary = new RoadSegmentId(command.TemporaryId); var startNodeId = new RoadNodeId(command.StartNodeId); RoadNodeId?temporaryStartNodeId; if (translator.TryTranslateToPermanent(startNodeId, out var permanentStartNodeId)) { temporaryStartNodeId = startNodeId; startNodeId = permanentStartNodeId; } else { temporaryStartNodeId = null; } var endNodeId = new RoadNodeId(command.EndNodeId); RoadNodeId?temporaryEndNodeId; if (translator.TryTranslateToPermanent(endNodeId, out var permanentEndNodeId)) { temporaryEndNodeId = endNodeId; endNodeId = permanentEndNodeId; } else { temporaryEndNodeId = null; } var geometry = GeometryTranslator.Translate(command.Geometry); var maintainer = new OrganizationId(command.MaintenanceAuthority); var geometryDrawMethod = RoadSegmentGeometryDrawMethod.Parse(command.GeometryDrawMethod); var morphology = RoadSegmentMorphology.Parse(command.Morphology); var status = RoadSegmentStatus.Parse(command.Status); var category = RoadSegmentCategory.Parse(command.Category); var accessRestriction = RoadSegmentAccessRestriction.Parse(command.AccessRestriction); var leftSideStreetNameId = command.LeftSideStreetNameId.HasValue ? new CrabStreetnameId(command.LeftSideStreetNameId.Value) : new CrabStreetnameId?(); var rightSideStreetNameId = command.RightSideStreetNameId.HasValue ? new CrabStreetnameId(command.RightSideStreetNameId.Value) : new CrabStreetnameId?(); var nextLaneAttributeId = _nextRoadSegmentLaneAttributeId(permanent); var laneAttributes = Array.ConvertAll( command.Lanes, item => new RoadSegmentLaneAttribute( nextLaneAttributeId(), new AttributeId(item.AttributeId), new RoadSegmentLaneCount(item.Count), RoadSegmentLaneDirection.Parse(item.Direction), new RoadSegmentPosition(item.FromPosition), new RoadSegmentPosition(item.ToPosition), new GeometryVersion(0) ) ); var nextWidthAttributeId = _nextRoadSegmentWidthAttributeId(permanent); var widthAttributes = Array.ConvertAll( command.Widths, item => new RoadSegmentWidthAttribute( nextWidthAttributeId(), new AttributeId(item.AttributeId), new RoadSegmentWidth(item.Width), new RoadSegmentPosition(item.FromPosition), new RoadSegmentPosition(item.ToPosition), new GeometryVersion(0) ) ); var nextSurfaceAttributeId = _nextRoadSegmentSurfaceAttributeId(permanent); var surfaceAttributes = Array.ConvertAll( command.Surfaces, item => new RoadSegmentSurfaceAttribute( nextSurfaceAttributeId(), new AttributeId(item.AttributeId), RoadSegmentSurfaceType.Parse(item.Type), new RoadSegmentPosition(item.FromPosition), new RoadSegmentPosition(item.ToPosition), new GeometryVersion(0) ) ); return(new AddRoadSegment ( permanent, temporary, startNodeId, temporaryStartNodeId, endNodeId, temporaryEndNodeId, geometry, maintainer, geometryDrawMethod, morphology, status, category, accessRestriction, leftSideStreetNameId, rightSideStreetNameId, laneAttributes, widthAttributes, surfaceAttributes )); }