Exemple #1
0
        private void cmClone_Click(object sender, EventArgs e)
        {
            string newPath = "";

            if (!tvClients.SelectedNode.FullPath.Contains('\\'))
            {
                //This is a client
                EasyETLClient client = configXmlDocument.GetClientConfiguration(tvClients.SelectedNode.Text);
                if (client != null)
                {
                    newPath = "Copy Of " + client.ClientName;
                    EasyETLClient newClient     = new EasyETLClient();
                    XmlElement    clientElement = configXmlDocument.CreateElement("client");
                    client.WriteSettings(clientElement);
                    newClient.ReadSettings(clientElement);
                    newClient.AttributesDictionary = new Dictionary <string, string>(client.AttributesDictionary);
                    newClient.ClientID             = newPath;
                    newClient.ClientName           = newPath;
                    configXmlDocument.Clients.Add(newClient);
                }
            }
            else
            {
                if (tvClients.SelectedNode.FullPath.Split('\\').Length == 3)
                {
                    //This is leaf node...
                    string clientName   = tvClients.SelectedNode.FullPath.Split('\\')[0];
                    string nodeCategory = tvClients.SelectedNode.FullPath.Split('\\')[1];
                    string nodeName     = tvClients.SelectedNode.FullPath.Split('\\')[2];
                    string newNodeName  = "Copy Of " + nodeName;
                    newPath = clientName + '\\' + nodeCategory + '\\' + newNodeName;
                    EasyETLClient selectedClientConfiguration = configXmlDocument.GetClientConfiguration(clientName);
                    if (selectedClientConfiguration != null)
                    {
                        XmlElement element = null;
                        switch (nodeCategory.ToLower())
                        {
                        case "actions":
                            EasyETLAction action    = selectedClientConfiguration.Actions.Find(a => a.ActionName == nodeName);
                            EasyETLAction newAction = new EasyETLAction();
                            element = configXmlDocument.CreateElement("action");
                            action.WriteSettings(element);
                            newAction.ReadSettings(element);
                            newAction.ActionName = newNodeName;
                            newAction.ActionID   = newNodeName;
                            selectedClientConfiguration.Actions.Add(newAction);
                            break;

                        case "datasources":
                            EasyETLDatasource datasource    = selectedClientConfiguration.Datasources.Find(d => d.ActionName == nodeName);
                            EasyETLDatasource newdatasource = new EasyETLDatasource();
                            element = configXmlDocument.CreateElement("datasource");
                            datasource.WriteSettings(element);
                            newdatasource.ReadSettings(element);
                            newdatasource.ActionName = newNodeName;
                            newdatasource.ActionID   = newNodeName;
                            selectedClientConfiguration.Datasources.Add(newdatasource);
                            break;

                        case "exports":
                            EasyETLWriter writer    = selectedClientConfiguration.Writers.Find(w => w.ActionName == nodeName);
                            EasyETLWriter newwriter = new EasyETLWriter();
                            element = configXmlDocument.CreateElement("export");
                            writer.WriteSettings(element);
                            newwriter.ReadSettings(element);
                            newwriter.ActionName = newNodeName;
                            newwriter.ActionID   = newNodeName;
                            selectedClientConfiguration.Writers.Add(newwriter);
                            break;

                        case "endpoints":
                            EasyETLEndpoint endpoint    = selectedClientConfiguration.Endpoints.Find(ep => ep.ActionName == nodeName);
                            EasyETLEndpoint newendpoint = new EasyETLEndpoint();
                            element = configXmlDocument.CreateElement("endpoint");
                            endpoint.WriteSettings(element);
                            newendpoint.ReadSettings(element);
                            newendpoint.ActionName = newNodeName;
                            newendpoint.ActionID   = newNodeName;
                            selectedClientConfiguration.Endpoints.Add(newendpoint);
                            break;

                        case "parsers":
                            EasyETLParser parser    = selectedClientConfiguration.Parsers.Find(p => p.ActionName == nodeName);
                            EasyETLParser newparser = new EasyETLParser();
                            element = configXmlDocument.CreateElement("parser");
                            parser.WriteSettings(element);
                            newparser.ReadSettings(element);
                            newparser.ActionName = newNodeName;
                            newparser.ActionID   = newNodeName;
                            selectedClientConfiguration.Parsers.Add(newparser);
                            break;

                        case "transfers":
                            EasyETLTransfer transfer    = selectedClientConfiguration.Transfers.Find(t => t.TransferName == nodeName);
                            EasyETLTransfer newtransfer = new EasyETLTransfer();
                            element = configXmlDocument.CreateElement("transfer");
                            transfer.WriteSettings(element);
                            newtransfer.ReadSettings(element);
                            newtransfer.TransferName = newNodeName;
                            selectedClientConfiguration.Transfers.Add(newtransfer);
                            break;

                        case "etls":
                            EasyETLJobConfiguration etl    = selectedClientConfiguration.ETLs.Find(et => et.ETLName == nodeName);
                            EasyETLJobConfiguration newetl = new EasyETLJobConfiguration();
                            element = configXmlDocument.CreateElement("etl");
                            etl.WriteSettings(element);
                            newetl.ReadSettings(element);
                            newetl.ETLID   = newNodeName;
                            newetl.ETLName = newNodeName;
                            selectedClientConfiguration.ETLs.Add(newetl);
                            break;
                        }
                    }
                }
            }
            configXmlDocument.Save();
            LoadConfiguration(newPath);
        }