示例#1
0
        public FormMain()
        {
            InitializeComponent();

            _fxGUIList     = new List <IConfigPage>();
            _entityGUIList = new List <IConfigUI>();
            _agent         = new EntityConfigAgent(Program.ConfigMgt.Config.EntityAssembly, Program.Log);
        }
示例#2
0
        private void LoadSetting(EntityAssemblyConfig entityCfg)
        {
            _entityAgent = new EntityConfigAgent(entityCfg, Program.Log);
            if (!_entityAgent.Initialize(entityCfg.InitializeArgument))
            {
                return;
            }

            LoadMainConfigTabPage();
            LoadTransformPage();

            _cfgConfig = Program.ConfigMgr.Config.GetMessageEntityConfigConfig(entityCfg.EntityInfo.Name);
            if (_cfgConfig != null)
            {
                this.Size = _cfgConfig.ConfigWindowSize;
            }
            this.Text = entityCfg.EntityInfo.Name + " Configuration";
        }
示例#3
0
        static void DeleteChannel(string[] args)
        {
            int count = 3;

            if (args.Length < count)
            {
                Program.Log.Write("Arguement is not enough.");
                return;
            }

            try
            {
                string type     = args[1];
                string entityID = args[2];
                Guid   eID      = new Guid(entityID);

                switch (type.ToLowerInvariant())
                {
                case "publisher":
                {
                    EntityConfigAgent agent = new EntityConfigAgent(Program.ConfigMgt.Config.EntityAssembly, Program.Log);
                    if (agent.Initialize(Program.ConfigMgt.Config.EntityAssembly.InitializeArgument))
                    {
                        EntityConfigBase cfg = agent.EntityConfig;
                        if (cfg == null || cfg.SubscribeConfig == null)
                        {
                            Program.Log.Write("Cannot read SubscribeConfig from configuration file.");
                        }
                        else
                        {
                            List <PushChannelConfig> dlist = new List <PushChannelConfig>();
                            foreach (PushChannelConfig c in cfg.SubscribeConfig.Channels)
                            {
                                if (c.SenderEntityID == eID)
                                {
                                    dlist.Add(c);
                                }
                            }
                            foreach (PushChannelConfig c in dlist)
                            {
                                cfg.SubscribeConfig.Channels.Remove(c);
                            }
                            agent.EntityConfigInstance.SaveConfiguration();
                        }
                        agent.Uninitialize();
                    }
                    break;
                }

                case "responser":
                {
                    EntityConfigAgent agent = new EntityConfigAgent(Program.ConfigMgt.Config.EntityAssembly, Program.Log);
                    if (agent.Initialize(Program.ConfigMgt.Config.EntityAssembly.InitializeArgument))
                    {
                        EntityConfigBase cfg = agent.EntityConfig;
                        if (cfg == null || cfg.RequestConfig == null)
                        {
                            Program.Log.Write("Cannot read SubscribeConfig from configuration file.");
                        }
                        else
                        {
                            List <PushChannelConfig> dlist = new List <PushChannelConfig>();
                            foreach (PushChannelConfig c in cfg.RequestConfig.Channels)
                            {
                                if (c.ReceiverEntityID == eID)
                                {
                                    dlist.Add(c);
                                }
                            }
                            foreach (PushChannelConfig c in dlist)
                            {
                                cfg.RequestConfig.Channels.Remove(c);
                            }
                            agent.EntityConfigInstance.SaveConfiguration();
                        }
                        agent.Uninitialize();
                    }
                    break;
                }
                }
            }
            catch (Exception err)
            {
                Log.Write(err);
            }
        }
示例#4
0
        static bool UpdateChannelInResponser(PullChannelConfig cfg)
        {
            EntityAssemblyConfig acfg = null;

            foreach (EntityContractBase c in Program.SolutionMgt.Config.Entities)
            {
                if (c.EntityID == cfg.ReceiverEntityID)
                {
                    acfg = c.AssemblyConfig;
                    break;
                }
            }

            if (acfg == null)
            {
                Program.Log.Write(LogType.Error, "Cannot find responser in the integration solution: "
                                  + cfg.ReceiverEntityName + " (" + cfg.ReceiverEntityID + ")");
                return(false);
            }

            bool ret = false;

            acfg = GetEntityAssemblyConfigForEntity(acfg);
            EntityConfigAgent agent = new EntityConfigAgent(acfg, Program.Log);

            if (agent.Initialize(acfg.InitializeArgument))
            {
                EntityConfigBase ecfg = agent.EntityConfig;
                if (ecfg == null)
                {
                    Program.Log.Write(LogType.Error, "Cannot get responser configuration: "
                                      + cfg.ReceiverEntityName + " (" + cfg.ReceiverEntityID + ")");
                }
                else
                {
                    List <PullChannelConfig> deleteList = new List <PullChannelConfig>();
                    foreach (PullChannelConfig chn in ecfg.ResponseConfig.Channels)
                    {
                        if (chn.SenderEntityID == cfg.SenderEntityID)
                        {
                            deleteList.Add(chn);
                            break;
                        }
                    }

                    foreach (PullChannelConfig chn in deleteList)
                    {
                        ecfg.ResponseConfig.Channels.Remove(chn);
                    }

                    ecfg.ResponseConfig.Channels.Add(cfg);

                    if (agent.EntityConfigInstance.SaveConfiguration())
                    {
                        ret = true;
                        Program.Log.Write("Save responser configuration succeeded: "
                                          + cfg.ReceiverEntityName + " (" + cfg.ReceiverEntityID + ")");
                    }
                    else
                    {
                        Program.Log.Write(LogType.Error, "Save responser configuration failed: "
                                          + cfg.ReceiverEntityName + " (" + cfg.ReceiverEntityID + ")");
                    }
                }

                agent.Uninitialize();
            }

            return(ret);
        }
示例#5
0
        static void ApplyChannelConfigurations(bool showMsg)
        {
            try
            {
                EntityConfigAgent agent = new EntityConfigAgent(Program.ConfigMgt.Config.EntityAssembly, Program.Log);
                if (agent.Initialize(Program.ConfigMgt.Config.EntityAssembly.InitializeArgument))
                {
                    EntityConfigBase cfg = agent.EntityConfig;

                    if ((cfg.Interaction & InteractionTypes.Subscriber) == InteractionTypes.Subscriber)
                    {
                        bool res = true;
                        foreach (PushChannelConfig chn in cfg.SubscribeConfig.Channels)
                        {
                            if (!UpdateChannelInPublisher(chn))
                            {
                                res = false;
                                break;
                            }
                        }

                        if (res)
                        {
                            string str = "Apply channels to publisher succeeded.";
                            Log.Write(str);

                            if (showMsg)
                            {
                                MessageBox.Show(str, "Information",
                                                MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                        }
                        else
                        {
                            string str = "Apply channels to publisher failed.";
                            Log.Write(LogType.Error, str);

                            if (showMsg)
                            {
                                MessageBox.Show(str, "Error",
                                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                    }

                    if ((cfg.Interaction & InteractionTypes.Requester) == InteractionTypes.Requester)
                    {
                        bool res = true;
                        foreach (PullChannelConfig chn in cfg.RequestConfig.Channels)
                        {
                            if (!UpdateChannelInResponser(chn))
                            {
                                res = false;
                                break;
                            }
                        }

                        if (res)
                        {
                            string str = "Apply channels to responser succeeded.";
                            Log.Write(str);

                            if (showMsg)
                            {
                                MessageBox.Show(str, "Information",
                                                MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                        }
                        else
                        {
                            string str = "Apply channels to responser failed.";
                            Log.Write(LogType.Error, str);

                            if (showMsg)
                            {
                                MessageBox.Show(str, "Error",
                                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                            }
                        }
                    }

                    //else
                    //{
                    //    MessageBox.Show("No channel need to be applied.", "Information",
                    //        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    //}

                    agent.Uninitialize();
                }
            }
            catch (Exception err)
            {
                Log.Write(err);
            }
        }
示例#6
0
        static void AddAndApplyChannel(string[] args)
        {
            int count = 6;

            if (args.Length < count)
            {
                Program.Log.Write("Arguement is not enough.");
                return;
            }

            try
            {
                string type         = args[1];
                string entityID     = args[2];
                string entityName   = args[3];
                string messageType  = args[4];
                string protocolType = args[5];

                switch (type.ToLowerInvariant())
                {
                case "publisher":
                {
                    MessageType mt = MessageType.Parse(messageType);
                    if (mt == null)
                    {
                        Program.Log.Write("Message Type can not be parse from: " + messageType);
                        return;
                    }

                    PushChannelConfig c = new PushChannelConfig();
                    c.ReceiverEntityID   = Program.ConfigMgt.Config.EntityAssembly.EntityInfo.EntityID;
                    c.ReceiverEntityName = Program.ConfigMgt.Config.EntityAssembly.EntityInfo.Name;
                    c.ProtocolType       = (ProtocolType)Enum.Parse(typeof(ProtocolType), protocolType);
                    c.Subscription.Type  = RoutingRuleType.MessageType;
                    c.Subscription.MessageTypeList.Add(mt);
                    c.SenderEntityID   = new Guid(entityID);
                    c.SenderEntityName = entityName;

                    switch (c.ProtocolType)
                    {
                    case ProtocolType.LPC: ChannelHelper.GenerateLPCChannel(c); break;

                    case ProtocolType.MSMQ: ChannelHelper.GenerateMSMQChannel(c); break;

                    default: Program.Log.Write("Following protocol type is not supported by now: " + c.ProtocolType.ToString()); return;
                    }

                    EntityConfigAgent agent = new EntityConfigAgent(Program.ConfigMgt.Config.EntityAssembly, Program.Log);
                    if (agent.Initialize(Program.ConfigMgt.Config.EntityAssembly.InitializeArgument))
                    {
                        EntityConfigBase cfg = agent.EntityConfig;
                        if (cfg == null)
                        {
                            Program.Log.Write("Cannot read configuration file.");
                        }
                        else
                        {
                            if (cfg.SubscribeConfig == null)
                            {
                                cfg.SubscribeConfig = new SubscribeConfig();
                            }
                            cfg.SubscribeConfig.Channels.Add(c);

                            if (agent.EntityConfigInstance.SaveConfiguration())
                            {
                                Program.Log.Write("Write configuration file successfully.");
                            }
                            else
                            {
                                Program.Log.Write("Cannot write configuration file.");
                            }
                        }
                        agent.Uninitialize();
                    }
                    break;
                }

                case "responser":
                {
                    PullChannelConfig c = new PullChannelConfig();
                    c.ReceiverEntityID   = Program.ConfigMgt.Config.EntityAssembly.EntityInfo.EntityID;
                    c.ReceiverEntityName = Program.ConfigMgt.Config.EntityAssembly.EntityInfo.Name;
                    c.ProtocolType       = (ProtocolType)Enum.Parse(typeof(ProtocolType), protocolType);
                    c.SenderEntityID     = new Guid(entityID);
                    c.SenderEntityName   = entityName;

                    switch (c.ProtocolType)
                    {
                    case ProtocolType.LPC: ChannelHelper.GenerateLPCChannel(c); break;

                    default: Program.Log.Write("Following protocol type is not supported by now: " + c.ProtocolType.ToString()); return;
                    }

                    EntityConfigAgent agent = new EntityConfigAgent(Program.ConfigMgt.Config.EntityAssembly, Program.Log);
                    if (agent.Initialize(Program.ConfigMgt.Config.EntityAssembly.InitializeArgument))
                    {
                        EntityConfigBase cfg = agent.EntityConfig;
                        if (cfg == null)
                        {
                            Program.Log.Write("Cannot read configuration file.");
                        }
                        else
                        {
                            if (cfg.RequestConfig == null)
                            {
                                cfg.RequestConfig = new RequestConfig();
                            }
                            cfg.RequestConfig.Channels.Add(c);

                            if (agent.EntityConfigInstance.SaveConfiguration())
                            {
                                Program.Log.Write("Write configuration file successfully.");
                            }
                            else
                            {
                                Program.Log.Write("Cannot write configuration file.");
                            }
                        }
                        agent.Uninitialize();
                    }
                    break;
                }
                }
            }
            catch (Exception err)
            {
                Program.Log.Write(err);
            }

            ApplyChannelConfigurations(false);
        }
示例#7
0
        static void RegisterEntityIntoSolution()
        {
            try
            {
                EntityAssemblyConfig entity = Program.ConfigMgt.Config.EntityAssembly;
                foreach (EntityContractBase e in SolutionMgt.Config.Entities)
                {
                    if (e.EntityID == entity.EntityInfo.EntityID)
                    {
                        MessageBox.Show("Following message entity has already existed in the integration solution.\r\n\r\n"
                                        + entity.EntityInfo.Name + " (" + entity.EntityInfo.EntityID + ")",
                                        "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                }

                EntityConfigAgent agent = new EntityConfigAgent(Program.ConfigMgt.Config.EntityAssembly, Program.Log);
                if (agent.Initialize(Program.ConfigMgt.Config.EntityAssembly.InitializeArgument))
                {
                    EntityConfigBase   cfg = agent.EntityConfig;
                    EntityContractBase c   = new EntityContractBase();

                    c.Name        = cfg.Name;
                    c.DeviceName  = cfg.DeviceName;
                    c.Direction   = cfg.Direction;
                    c.Interaction = cfg.Interaction;
                    c.Description = cfg.Description;
                    c.EntityID    = cfg.EntityID;
                    if (cfg.PublishConfig != null)
                    {
                        c.Publication = cfg.PublishConfig.Publication;
                    }
                    if (cfg.ResponseConfig != null)
                    {
                        c.ResponseDescription = cfg.ResponseConfig.ResponseContract;
                    }
                    c.AssemblyConfig = GetEntityAssemblyConfigForSolution(entity);

                    //string webConfigFilePath = Path.Combine(Application.StartupPath, EntityWebConfig.EntityWebConfigFileName);
                    //ConfigManager<EntityWebConfig> webmgt = new ConfigManager<EntityWebConfig>(webConfigFilePath);
                    //if (webmgt.Load())
                    //{
                    //    Log.Write("Register entity with default web config at: " + webConfigFilePath);
                    //    SolutionMgt.Config.RegisterEntity(c, webmgt.Config);
                    //}
                    //else
                    //{
                    //    Log.Write("Register entity without default web config.");
                    //    SolutionMgt.Config.RegisterEntity(c);
                    //}

                    Log.Write("Registering entity.");
                    SolutionMgt.Config.RegisterEntity(c);

                    if (SolutionMgt.Save())
                    {
                        Log.Write("Save solution dir file succeeded. " + SolutionMgt.FileName);

                        MessageBox.Show("Register following message entity into the integration solution succeeded.\r\n\r\n"
                                        + entity.EntityInfo.Name + " (" + entity.EntityInfo.EntityID + ")",
                                        "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        Log.Write(LogType.Error, "Save solution dir file failed.");
                        Log.Write(SolutionMgt.LastError);

                        MessageBox.Show("Register following message entity into the integration solution failed.\r\n\r\n"
                                        + entity.EntityInfo.Name + " (" + entity.EntityInfo.EntityID + ")",
                                        "Error", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }

                    agent.Uninitialize();
                }
            }
            catch (Exception err)
            {
                Log.Write(err);
            }
        }