示例#1
0
        private void OnInterSignaalGroepChanged(InterSignaalGroepChangedMessage message)
        {
            // Conflict
            if (message.Conflict != null)
            {
                if (message.Conflict.Waarde == -4)
                {
                    return;
                }

                int fccount = Fasen.Count;
                for (int fcm_from = 0; fcm_from < fccount; ++fcm_from)
                {
                    for (int fcm_to = 0; fcm_to < fccount; ++fcm_to)
                    {
                        if (Fasen[fcm_from].Define == message.Conflict.FaseVan &&
                            Fasen[fcm_to].Define == message.Conflict.FaseNaar)
                        {
                            var cvm2 = ConflictMatrix[fcm_to, fcm_from];
                            switch (ConflictMatrix[fcm_from, fcm_to].ConflictValue)
                            {
                            case "GKL":
                                if (cvm2.ConflictValue != "GK")
                                {
                                    cvm2.ConflictValueNoMessaging = "GK";
                                }
                                break;

                            case "GK":
                                if (!(cvm2.ConflictValue == "GK" || cvm2.ConflictValue == "GKL"))
                                {
                                    cvm2.ConflictValueNoMessaging = "GK";
                                }
                                break;

                            case "FK":
                                if (cvm2.ConflictValue != "FK")
                                {
                                    cvm2.ConflictValueNoMessaging = "FK";
                                }
                                break;

                            case "":
                                if (cvm2.ConflictValue == "*" || cvm2.ConflictValue == "GK" || cvm2.ConflictValue == "GKL" || cvm2.ConflictValue == "FK")
                                {
                                    cvm2.ConflictValueNoMessaging = "";
                                }
                                break;

                            default:
                                int i;
                                if (Int32.TryParse(cvm2.ConflictValue, out i))
                                {
                                    break;
                                }
                                else
                                {
                                    cvm2.ConflictValueNoMessaging = "*";
                                }
                                break;
                            }
                            return;
                        }
                    }
                }
                // conflict not found: faulty state!
                throw new NotImplementedException();
            }

            // Naloop
            if (message.Naloop != null)
            {
                int fccount = Fasen.Count;
                for (int fcm_from = 0; fcm_from < fccount; ++fcm_from)
                {
                    for (int fcm_to = 0; fcm_to < fccount; ++fcm_to)
                    {
                        if (Fasen[fcm_from].Define == message.Naloop.FaseVan &&
                            Fasen[fcm_to].Define == message.Naloop.FaseNaar)
                        {
                            var cvm2 = ConflictMatrix[fcm_to, fcm_from];
                            cvm2.HasOppositeNaloop = message.IsCoupled;
                        }
                    }
                }
            }

            // Voorstart
            if (message.Voorstart != null)
            {
                int fccount = Fasen.Count;
                for (int fcm_from = 0; fcm_from < fccount; ++fcm_from)
                {
                    for (int fcm_to = 0; fcm_to < fccount; ++fcm_to)
                    {
                        if (Fasen[fcm_from].Define == message.Voorstart.FaseVan &&
                            Fasen[fcm_to].Define == message.Voorstart.FaseNaar)
                        {
                            var cvm2 = ConflictMatrix[fcm_to, fcm_from];
                            cvm2.HasOppositeVoorstart = message.IsCoupled;
                        }
                    }
                }
            }

            // Gelijkstart
            if (message.Gelijkstart != null)
            {
                int fccount = Fasen.Count;
                for (int fcm_from = 0; fcm_from < fccount; ++fcm_from)
                {
                    for (int fcm_to = 0; fcm_to < fccount; ++fcm_to)
                    {
                        if (Fasen[fcm_from].Define == message.Gelijkstart.FaseVan &&
                            Fasen[fcm_to].Define == message.Gelijkstart.FaseNaar)
                        {
                            var cvm2 = ConflictMatrix[fcm_to, fcm_from];
                            cvm2.IsCoupledNoMessaging = message.IsCoupled;
                        }
                    }
                }
            }
        }
示例#2
0
        private void OnInterSignaalGroepChanged(InterSignaalGroepChangedMessage message)
        {
            _MatrixChanged = true;

            if (message.IsNew)
            {
                BuildConflictMatrix();
                return;
            }

            // Conflict
            if (message.Conflict != null)
            {
                var fccount = Fasen.Count;
                for (var fcm_from = 0; fcm_from < fccount; ++fcm_from)
                {
                    for (var fcm_to = 0; fcm_to < fccount; ++fcm_to)
                    {
                        if (Fasen[fcm_from].Naam == message.Conflict.FaseVan &&
                            Fasen[fcm_to].Naam == message.Conflict.FaseNaar)
                        {
                            var cvm2 = ConflictMatrix[fcm_to, fcm_from];
                            switch (ConflictMatrix[fcm_from, fcm_to].ConflictValue)
                            {
                            case "GKL":
                                if (cvm2.ConflictValue != "GK")
                                {
                                    cvm2.ConflictValueNoMessaging = "GK";
                                }
                                break;

                            case "GK":
                                if (!(cvm2.ConflictValue == "GK" || cvm2.ConflictValue == "GKL"))
                                {
                                    cvm2.ConflictValueNoMessaging = "GK";
                                }
                                break;

                            case "FK":
                                if (cvm2.ConflictValue != "FK")
                                {
                                    cvm2.ConflictValueNoMessaging = "FK";
                                }
                                break;

                            case "":
                                if (cvm2.ConflictValue == "*" || cvm2.ConflictValue == "GK" || cvm2.ConflictValue == "GKL" || cvm2.ConflictValue == "FK")
                                {
                                    cvm2.ConflictValueNoMessaging = "";
                                }
                                else
                                {
                                    if (int.TryParse(cvm2.ConflictValue, out _))
                                    {
                                        ConflictMatrix[fcm_from, fcm_to].ConflictValueNoMessaging = "*";
                                    }
                                }
                                break;

                            default:
                                if (int.TryParse(cvm2.ConflictValue, out _))
                                {
                                    break;
                                }
                                else
                                {
                                    cvm2.ConflictValueNoMessaging = "*";
                                }
                                break;
                            }
                            return;
                        }
                    }
                }
                // conflict not found: faulty state!
                throw new InvalidOperationException();
            }

            // Naloop
            if (message.Naloop != null)
            {
                var fccount = Fasen.Count;
                for (var fcm_from = 0; fcm_from < fccount; ++fcm_from)
                {
                    for (var fcm_to = 0; fcm_to < fccount; ++fcm_to)
                    {
                        if (Fasen[fcm_from].Naam == message.Naloop.FaseVan &&
                            Fasen[fcm_to].Naam == message.Naloop.FaseNaar)
                        {
                            var cvm2 = ConflictMatrix[fcm_to, fcm_from];
                            cvm2.HasOppositeNaloop = message.IsCoupled;
                        }
                    }
                }
            }

            // Voorstart
            if (message.Voorstart != null)
            {
                var fccount = Fasen.Count;
                for (var fcm_from = 0; fcm_from < fccount; ++fcm_from)
                {
                    for (var fcm_to = 0; fcm_to < fccount; ++fcm_to)
                    {
                        if (Fasen[fcm_from].Naam == message.Voorstart.FaseVan &&
                            Fasen[fcm_to].Naam == message.Voorstart.FaseNaar)
                        {
                            var cvm2 = ConflictMatrix[fcm_to, fcm_from];
                            cvm2.HasOppositeVoorstart = message.IsCoupled;
                        }
                    }
                }
            }

            // LateRelease
            if (message.LateRelease != null)
            {
                var fccount = Fasen.Count;
                for (var fcm_from = 0; fcm_from < fccount; ++fcm_from)
                {
                    for (var fcm_to = 0; fcm_to < fccount; ++fcm_to)
                    {
                        if (Fasen[fcm_from].Naam == message.LateRelease.FaseVan &&
                            Fasen[fcm_to].Naam == message.LateRelease.FaseNaar)
                        {
                            var cvm2 = ConflictMatrix[fcm_to, fcm_from];
                            cvm2.HasOppositeLateRelease = message.IsCoupled;
                        }
                    }
                }
            }

            // Gelijkstart
            if (message.Gelijkstart != null)
            {
                var fccount = Fasen.Count;
                for (var fcm_from = 0; fcm_from < fccount; ++fcm_from)
                {
                    for (var fcm_to = 0; fcm_to < fccount; ++fcm_to)
                    {
                        if (Fasen[fcm_from].Naam == message.Gelijkstart.FaseVan &&
                            Fasen[fcm_to].Naam == message.Gelijkstart.FaseNaar)
                        {
                            var cvm2 = ConflictMatrix[fcm_to, fcm_from];
                            cvm2.IsCoupledNoMessaging = message.IsCoupled;
                        }
                    }
                }
            }

            // Meeaanvraag
            if (message.Meeaanvraag != null)
            {
                var fccount = Fasen.Count;
                for (var fcm_from = 0; fcm_from < fccount; ++fcm_from)
                {
                    for (var fcm_to = 0; fcm_to < fccount; ++fcm_to)
                    {
                        if (Fasen[fcm_from].Naam == message.Meeaanvraag.FaseVan &&
                            Fasen[fcm_to].Naam == message.Meeaanvraag.FaseNaar)
                        {
                            var cvm2 = ConflictMatrix[fcm_to, fcm_from];
                            cvm2.HasOppositeMeeaanvraag = message.IsCoupled;
                        }
                    }
                }
            }
        }