Ejemplo n.º 1
0
        private string RunDb2Look(string database, string user, string password, string arguments)
        {
            // Get DB2Look path
            var db2Home = ConfigurationManager.AppSettings["DB2Home"];

            if (string.IsNullOrEmpty(db2Home))
            {
                throw new Exception("DB2Home setting not set in the configuration. Please set the value for it in " + Application.ProductName + ".exe.config file");
            }
            else if (!Directory.Exists(db2Home))
            {
                throw new Exception("DB2Home directory '" + db2Home + "' does not exist. Please set the value for it in " + Application.ProductName + ".exe.config file");
            }
            var db2Look = Path.Combine(db2Home, "db2look.exe");

            if (!File.Exists(db2Look))
            {
                throw new Exception("db2look executable '" + db2Look + "' does not exist. Please make sure you have a DB2 client properly installed");
            }

            var db2LookArguments =
                string.Format(
                    "-d {0} -i {1} -w {2} -a -e -x ", database, user, password) + arguments;

            // Build script
            var scriptFile = Path.GetTempFileName();

            try
            {
                scriptFile = Path.Combine(Path.GetDirectoryName(scriptFile) ?? string.Empty,
                                          Path.GetFileNameWithoutExtension(scriptFile) + ".bat");
                var scriptContents = "@echo off" + Environment.NewLine;
                scriptContents += @"@set PATH=%~d0%~p0..\db2tss\bin;%PATH%" + Environment.NewLine;
                scriptContents += @"@cd " + db2Home + @"\..\bnd" + Environment.NewLine;
                scriptContents += @"@db2clpsetcp" + Environment.NewLine;
                scriptContents += "\"" + db2Look + "\" " + db2LookArguments;
                File.WriteAllText(scriptFile, scriptContents);
                var executor      = new BackgroundProcessExecutor();
                var commandOutput = executor.RunBackgroundProcess(scriptFile, null);
                if (commandOutput.ExitCode != 0)
                {
                    throw new Exception("db2look.exe returned unsuccessful return code of " + commandOutput.ExitCode + ". " + commandOutput.StandardError + Environment.NewLine + commandOutput.StandardError);
                }

                // Clean up standard output
                var output = commandOutput.StandardOutput;
                output = CleanText(output, _trailingSpaceRegex);
                return(output);
            }
            finally
            {
                try
                {
                    File.Delete(scriptFile);
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Error deleting file {0}. {1}", scriptFile, ex.Message);
                    _log.Error(ex.Message, ex);
                }
            }
        }
Ejemplo n.º 2
0
        public void UpdateProjectList(Server server)
        {
            this.server = server;
#if SYNCRHONOUS
            List <Project> dataSource = new List <Project>();

            if (server != null)
            {
                IList <Project> projects = jenkinsService.LoadProjects(server);
                foreach (Project project in projects)
                {
                    dataSource.Add(project);
                }
            }

            SetProjectsDataSource(dataSource);
#else
            // clear the view
            projectsGridControl.DataSource = null;

            if (server == null)
            {
                return;
            }

            // disable the window, change the cursor, update the status
            Cursor.Current = Cursors.WaitCursor;
            Enabled        = false;
            string status = string.Format(JenkinsTrayResources.LoadingProjects_FormatString, server.Url);
            Controller.SetStatus(status, true);

            // run the process in background
            Process         process  = new Process("Loading project " + server.Url);
            IList <Project> projects = null;
            process.DoWork += delegate
            {
                projects = JenkinsService.LoadProjects(server);
            };
            process.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e)
            {
                string endStatus = "";

                if (e.Error == null)
                {
                    var dataSource = new List <Project>();
                    foreach (Project project in projects)
                    {
                        dataSource.Add(project);
                    }
                    SetProjectsDataSource(dataSource);
                }
                else
                {
                    endStatus = string.Format(JenkinsTrayResources.FailedLoadingProjects_FormatString, server.Url);
                }

                // enable the window, change the cursor, update the status
                Enabled        = true;
                Cursor.Current = Cursors.Default;
                Controller.SetStatus(endStatus, false);
            };
            BackgroundProcessExecutor.Execute(process);
#endif
        }
        private string RunPgDump([NotNull] string host, [NotNull] string database, [NotNull] string user,
                                 [NotNull] string password, int port)
        {
            if (host.IsNullEmptyOrWhitespace())
            {
                throw new ArgumentNullException("host");
            }
            if (database.IsNullEmptyOrWhitespace())
            {
                throw new ArgumentNullException("database");
            }
            if (user.IsNullEmptyOrWhitespace())
            {
                throw new ArgumentNullException("user");
            }
            if (password.IsNullEmptyOrWhitespace())
            {
                throw new ArgumentNullException("password");
            }
            // Get pg_dump path
            var postgreSqlHome = ConfigurationManager.AppSettings["PostgreSQLHome"];

            if (string.IsNullOrEmpty(postgreSqlHome))
            {
                throw new Exception("PostgreSQLHome setting not set in the configuration. Please set the value for it in " + Application.ProductName + ".exe.config file");
            }
            else if (!Directory.Exists(postgreSqlHome))
            {
                throw new Exception("PostgreSQLHome directory '" + postgreSqlHome + "' does not exist. Please set the value for it in " + Application.ProductName + ".exe.config file");
            }
            var pgDump = Path.Combine(postgreSqlHome, "pg_dump.exe");

            if (!File.Exists(pgDump))
            {
                throw new Exception("pg_dump.exe executable '" + pgDump + "' does not exist. Please make sure you have it properly installed");
            }

            // pg_dump.exe --username=mmedic --schema-only --host=localhost Test
            var pgDumpArguments =
                string.Format(
                    "--host={0} --port={1} --username={2} --schema-only --no-password {3} ", host, port, user, database);

            // Build script
            var tempFile   = Path.GetTempFileName();
            var scriptFile = Path.Combine(Path.GetDirectoryName(tempFile) ?? string.Empty,
                                          Path.GetFileNameWithoutExtension(tempFile) + ".bat");

            try
            {
                File.Move(tempFile, scriptFile);
                var scriptContents = "@echo off" + Environment.NewLine;
                scriptContents += @"@set PGPASSWORD="******"\"" + pgDump + "\" " + pgDumpArguments;
                File.WriteAllText(scriptFile, scriptContents);
                var executor      = new BackgroundProcessExecutor();
                var commandOutput = executor.RunBackgroundProcess(scriptFile, null);
                if (commandOutput.ExitCode != 0)
                {
                    throw new Exception("pg_dump.exe returned unsuccessful return code of " + commandOutput.ExitCode + ". " + commandOutput.StandardError + Environment.NewLine + commandOutput.StandardError);
                }

                // Clean up standard output
                var output = commandOutput.StandardOutput;
                output = CleanText(output, _trailingSpaceRegex);
                return(output);
            }
            finally
            {
                try
                {
                    File.Delete(scriptFile);
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Error deleting file {0}. {1}", scriptFile, ex.Message);
                    _log.Error(ex.Message, ex);
                }
            }
        }