コード例 #1
0
ファイル: DecodesUtility.cs プロジェクト: usbr/HydrometTools
        /// <summary>
        /// Runs a DECODES routing spec, for a specific site
        /// </summary>
        /// <returns></returns>
        public static void RunDecodesRoutingSpec(PostgreSQL svr, string routingSpecName,
                                                 DateTime t1, DateTime t2,
                                                 string siteid, string outputFileName, string logFileName)
        {
            if (!UpdateNessidInRoutingProperties(svr, siteid))
            {
                return;
            }

            // update the output filename
            var sql = "select * from routingspec where name = 'hydromet-tools'";
            var tbl = svr.Table("routingspec", sql);

            if (tbl.Rows.Count != 1)
            {
                Logger.WriteLine("Error: routing spec named 'hydromet-tools' was not found");
                return;
            }
            tbl.Rows[0]["consumerarg"] = outputFileName;
            tbl.Rows[0]["sincetime"]   = t1.Year.ToString() + "/" + t1.DayOfYear.ToString("000") + t1.ToString(" HH:mm:ss");
            tbl.Rows[0]["untiltime"]   = t2.Year.ToString() + "/" + t2.DayOfYear.ToString("000") + t2.ToString(" HH:mm:ss");
            svr.SaveTable(tbl);

            // run the routing spec.
            //C:\Hydromet\OPENDCS\bin>rs  hydromet-tools
            string dir = ConfigurationManager.AppSettings["DECODES_INSTALL_DIR"];

            if (string.IsNullOrEmpty(dir) || !Directory.Exists(dir))
            {
                Logger.WriteLine("Error: DECODES_INSTALL_DIR is not define in app.config or path not found ");
            }

            var exe = Path.Combine(dir, "bin", "rs.bat");

            var args = "-d 3 -l " + logFileName + " hydromet-tools";
            var rval = ProgramRunner.RunExecutable(exe, args);

            foreach (var item in rval)
            {
                Logger.WriteLine(item);
            }
        }