private void HandleEvent(RouteNodeAdded request, ITransaction transaction)
        {
            _logger.LogDebug($"Handler got {request.GetType().Name} event seq no: {request.EventSequenceNumber}");

            if (AlreadyProcessed(request.EventId))
            {
                return;
            }

            var envelope = GeoJsonConversionHelper.ConvertFromPointGeoJson(request.Geometry).Envelope.EnvelopeInternal;

            transaction.Add(new RouteNode(request.NodeId, request.RouteNodeInfo?.Function, envelope, request.NamingInfo?.Name), ignoreDublicates: true);
        }
Example #2
0
        protected bool CheckNodeId(RouteNodeAdded routeNodeAdded)
        {
            if (routeNodeAdded.NodeId == null || routeNodeAdded.NodeId == Guid.Empty)
            {
                return(Fail($"NodeId is null or empty on event with id: {routeNodeAdded.EventId}"));
            }
            else
            {
                if (_idsUsed.Contains(routeNodeAdded.NodeId))
                {
                    return(Fail($"NodeId is not unique on event with id: {routeNodeAdded.EventId}"));
                }
            }

            _idsUsed.Add(routeNodeAdded.NodeId);

            return(true);
        }
        private void HandleEvent(RouteNodeAdded request, ITransaction transaction)
        {
            _logger.LogDebug($"Handler got {request.GetType().Name} event seq no: {request.EventSequenceNumber}");

            if (AlreadyProcessed(request.EventId))
            {
                return;
            }

            var routeNode = new RouteNode(request.NodeId, request.Geometry)
            {
                RouteNodeInfo = request.RouteNodeInfo,
                NamingInfo    = request.NamingInfo,
                MappingInfo   = request.MappingInfo,
                LifecycleInfo = request.LifecyleInfo,
                SafetyInfo    = request.SafetyInfo
            };

            transaction.Add(routeNode, ignoreDublicates: true);
        }
Example #4
0
        private bool CheckNodeAddedEventProperties(RouteNodeAdded routeNodeAddedEvent, RouteNodeRecord sourceNode)
        {
            var allTestsOk = true;

            if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.Id, routeNodeAddedEvent.NodeId, "NodeId"))
            {
                allTestsOk = false;
            }

            // Check route node info
            if (!TestPropertyValueNoEquals(routeNodeAddedEvent, sourceNode.RouteNodeInfo, routeNodeAddedEvent.RouteNodeInfo, "RouteNodeInfo"))
            {
                allTestsOk = false;
            }
            else if (routeNodeAddedEvent.RouteNodeInfo != null)
            {
                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.RouteNodeInfo.Function, routeNodeAddedEvent.RouteNodeInfo.Function, "RouteNodeInfo.Function"))
                {
                    allTestsOk = false;
                }

                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.RouteNodeInfo.Kind, routeNodeAddedEvent.RouteNodeInfo.Kind, "RouteNodeInfo.Kind"))
                {
                    allTestsOk = false;
                }
            }

            // general

            // Check event type
            if (!TestPropertyValue(routeNodeAddedEvent, "RouteNodeAdded", routeNodeAddedEvent.EventType, "EventType"))
            {
                allTestsOk = false;
            }

            // Check command type
            if (!TestPropertyValue(routeNodeAddedEvent, "NewRouteNodeDigitized", routeNodeAddedEvent.CmdType, "CmdType"))
            {
                allTestsOk = false;
            }

            // Check IsLastEventInCmd
            if (!TestPropertyValue(routeNodeAddedEvent, true, routeNodeAddedEvent.IsLastEventInCmd, "IsLastEventInCmd"))
            {
                allTestsOk = false;
            }

            // Check event id uniqueness
            if (!TestIfIdNotAlreadyUsed(routeNodeAddedEvent, routeNodeAddedEvent.EventId, _ids, "EventId"))
            {
                allTestsOk = false;
            }

            // Check cmd id uniqueness
            if (!TestIfIdNotAlreadyUsed(routeNodeAddedEvent, routeNodeAddedEvent.CmdId, _ids, "CmdId"))
            {
                allTestsOk = false;
            }

            if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.ApplicationName, routeNodeAddedEvent.ApplicationName, "ApplicationName"))
            {
                allTestsOk = false;
            }

            if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.ApplicationInfo, routeNodeAddedEvent.ApplicationInfo, "ApplicationInfo"))
            {
                allTestsOk = false;
            }

            if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.Username, routeNodeAddedEvent.UserName, "UserName"))
            {
                allTestsOk = false;
            }

            if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.WorkTaskMrid, routeNodeAddedEvent.WorkTaskMrid, "WorkTaskMrid"))
            {
                allTestsOk = false;
            }


            // Check naming info
            if (!TestPropertyValueNoEquals(routeNodeAddedEvent, sourceNode.NamingInfo, routeNodeAddedEvent.NamingInfo, "NamingInfo"))
            {
                allTestsOk = false;
            }
            else if (routeNodeAddedEvent.NamingInfo != null)
            {
                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.NamingInfo.Name, routeNodeAddedEvent.NamingInfo.Name, "NamingInfo.Name"))
                {
                    allTestsOk = false;
                }

                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.NamingInfo.Description, routeNodeAddedEvent.NamingInfo.Description, "NamingInfo.Description"))
                {
                    allTestsOk = false;
                }
            }


            // Check mapping info
            if (!TestPropertyValueNoEquals(routeNodeAddedEvent, sourceNode.MappingInfo, routeNodeAddedEvent.MappingInfo, "MappingInfo"))
            {
                allTestsOk = false;
            }
            else if (routeNodeAddedEvent.MappingInfo != null)
            {
                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.MappingInfo.Method, routeNodeAddedEvent.MappingInfo.Method, "MappingInfo.Method"))
                {
                    allTestsOk = false;
                }

                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.MappingInfo.HorizontalAccuracy, routeNodeAddedEvent.MappingInfo.HorizontalAccuracy, "MappingInfo.HorizontalAccuracy"))
                {
                    allTestsOk = false;
                }

                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.MappingInfo.VerticalAccuracy, routeNodeAddedEvent.MappingInfo.VerticalAccuracy, "MappingInfo.VerticalAccuracy"))
                {
                    allTestsOk = false;
                }

                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.MappingInfo.SurveyDate, routeNodeAddedEvent.MappingInfo.SurveyDate, "MappingInfo.SurveyDate"))
                {
                    allTestsOk = false;
                }

                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.MappingInfo.SourceInfo, routeNodeAddedEvent.MappingInfo.SourceInfo, "MappingInfo.SourceInfo"))
                {
                    allTestsOk = false;
                }
            }

            // Check lifecycle info
            if (!TestPropertyValueNoEquals(routeNodeAddedEvent, sourceNode.LifecycleInfo, routeNodeAddedEvent.LifecyleInfo, "LifecycleInfo"))
            {
                allTestsOk = false;
            }
            else if (routeNodeAddedEvent.LifecyleInfo != null)
            {
                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.LifecycleInfo.DeploymentState, routeNodeAddedEvent.LifecyleInfo.DeploymentState, "LifecycleInfo.DeploymentState"))
                {
                    allTestsOk = false;
                }

                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.LifecycleInfo.InstallationDate, routeNodeAddedEvent.LifecyleInfo.InstallationDate, "LifecycleInfo.InstallationDate"))
                {
                    allTestsOk = false;
                }

                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.LifecycleInfo.RemovalDate, routeNodeAddedEvent.LifecyleInfo.RemovalDate, "LifecycleInfo.RemovalDate"))
                {
                    allTestsOk = false;
                }
            }

            // Check safety info
            if (!TestPropertyValueNoEquals(routeNodeAddedEvent, sourceNode.SafetyInfo, routeNodeAddedEvent.SafetyInfo, "SafetyInfo"))
            {
                allTestsOk = false;
            }
            else if (routeNodeAddedEvent.SafetyInfo != null)
            {
                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.SafetyInfo.Classification, routeNodeAddedEvent.SafetyInfo.Classification, "SafetyInfo.Classification"))
                {
                    allTestsOk = false;
                }

                if (!TestPropertyValue(routeNodeAddedEvent, sourceNode.SafetyInfo.Remark, routeNodeAddedEvent.SafetyInfo.Remark, "SafetyInfo.Remark"))
                {
                    allTestsOk = false;
                }
            }

            return(allTestsOk);
        }