예제 #1
0
        static void Main(string[] args)
        {
            var svr = PostgreSQL.GetPostgresServer("timeseries", "lrgs1");
            var db  = new TimeSeriesDatabase(svr, Reclamation.TimeSeries.Parser.LookupOption.TableName);

            TimeSeriesCalculator c = new TimeSeriesCalculator(db, TimeInterval.Daily, "", "");

            CsvFile csv = new CsvFile(@"T:\PN6200\Hydromet\Data\rivers_canals_old.csv", CsvFile.FieldTypes.AllText);

            for (int i = 0; i < csv.Rows.Count; i++)
            {
                string siteID = csv.Rows[i]["cbtt"].ToString();
                string pcode  = csv.Rows[i]["pcode"].ToString();
                var    dep    = c.GetDependentCalculations(siteID, pcode);

                string msg = "";
                foreach (var item in dep)
                {
                    msg += " " + item.Name;
                }
                if (msg != "")
                {
                    Console.WriteLine(siteID + "_" + pcode + ": " + msg);
                }
            }
        }
예제 #2
0
        static void Main(string[] argList)
        {
            Console.Write("HydrometServer " + Application.ProductVersion + " " + AssemblyUtility.CreationDate() + "\n");

            Arguments args = new Arguments(argList);
            var       p    = new OptionSet();

            var cli = "";

            p.Add("cli=", "interface --cli=instant|daily|monthly", x => cli = x);

            try
            {
                p.Parse(argList);
            }
            catch (OptionException e)
            {
                Console.WriteLine(e.Message);
            }
            if (argList.Length == 0)
            {
                ShowHelp(p);
                return;
            }



            string      errorFileName  = "errors.txt";
            string      detailFileName = "detail.txt";
            Performance perf           = new Performance();
            //   try
            {
                if (args.Contains("debug"))
                {
                    Logger.EnableLogger();
                    Reclamation.TimeSeries.Parser.SeriesExpressionParser.Debug = true;
                }

                if (args.Contains("import-rating-tables"))
                {// --import-rating-tables=site_list.csv  [--generateNewTables]     : updates usgs,idahopower, and owrd rating tables
                    ApplicationTrustPolicy.TrustAll();
                    var cfg = args["import-rating-tables"];
                    if (File.Exists(cfg))
                    {
                        RatingTableDownload.UpdateRatingTables(cfg, args.Contains("generateNewTables"));
                    }
                    else
                    {
                        Console.WriteLine("Error: File not found: " + cfg);
                    }
                    return;
                }


                // setup connection to Database
                if (args.Contains("create-database"))
                {
                    if (CreatePostgresDatabase(args))
                    {
                        return;
                    }
                }
                var db = TimeSeriesDatabase.InitDatabase(args);

                if (cli != "")
                {
                    TimeInterval interval = TimeInterval.Irregular;
                    if (cli == "daily")
                    {
                        interval = TimeInterval.Daily;
                    }

                    Console.WriteLine();
                    HydrometServer.CommandLine.PiscesCommandLine cmd = new CommandLine.PiscesCommandLine(db, interval);
                    cmd.PiscesPrompt();

                    return;
                }

                bool simulate        = args.Contains("simulate");
                bool hydrometCompare = args.Contains("hydromet-compare");


                if (args.Contains("error-log"))
                {
                    errorFileName = args["error-log"];
                    File.AppendAllText(errorFileName, "HydrometServer.exe:  Started " + DateTime.Now.ToString() + "\n");
                }

                if (args.Contains("detail-log"))
                {
                    detailFileName = args["detail-log"];
                    File.AppendAllText(detailFileName, "HydrometServer.exe:  Started " + DateTime.Now.ToString() + "\n");
                }

                string propertyFilter = "";
                if (args.Contains("property-filter"))
                {
                    propertyFilter = args["property-filter"];
                }

                string filter = "";
                if (args.Contains("filter"))
                {
                    filter = args["filter"];
                }

                if (args.Contains("inventory"))
                {
                    db.Inventory();
                }



                if (args.Contains("import")) // import and process data from files
                {
                    bool computeDependencies    = args.Contains("computeDependencies");
                    bool computeDailyOnMidnight = args.Contains("computeDailyOnMidnight");


                    string searchPattern = args["import"];

                    if (searchPattern == "")
                    {
                        searchPattern = "*";
                    }

                    string       incomingPath = ConfigurationManager.AppSettings["incoming"];
                    FileImporter importer     = new FileImporter(db);
                    importer.Import(incomingPath, RouteOptions.Outgoing, computeDependencies, computeDailyOnMidnight, searchPattern);
                }



                DateTime t1;
                DateTime t2;

                SetupDates(args, out t1, out t2);

                if (args.Contains("import-hydromet-instant"))
                {
                    File.AppendAllText(errorFileName, "begin: import-hydromet-instant " + DateTime.Now.ToString() + "\n");
                    ImportHydrometInstant(db, t1.AddDays(-2), t2.AddDays(1), filter, propertyFilter);
                }

                if (args.Contains("import-hydromet-daily"))
                {
                    File.AppendAllText(errorFileName, "begin: import-hydromet-daily " + DateTime.Now.ToString() + "\n");
                    ImportHydrometDaily(db, t1.AddDays(-500), t2, filter, propertyFilter);
                }

                if (args.Contains("import-hydromet-monthly"))
                {
                    File.AppendAllText(errorFileName, "begin: import-hydromet-monthly " + DateTime.Now.ToString() + "\n");
                    ImportHydrometMonthly(db, t1.AddYears(-5), t2.AddDays(1), filter, propertyFilter);
                }


                if (args.Contains("calculate-daily"))
                {
                    TimeSeriesCalculator calc = new TimeSeriesCalculator(db, TimeInterval.Daily,
                                                                         filter, propertyFilter);
                    File.AppendAllText(errorFileName, "begin: calculate-daily " + DateTime.Now.ToString() + "\n");
                    calc.ComputeDailyValues(t1, t2, hydrometCompare, errorFileName, detailFileName, simulate);
                }


                if (args.Contains("import-dayfile"))
                {
                    var fn = args["import-dayfile"];

                    ImportVaxFile(db, fn);
                }
                if (args.Contains("import-archive"))
                {
                    var fn = args["import-archive"];

                    ImportVaxFile(db, fn);
                }
                if (args.Contains("import-mpoll"))
                {
                    var fn = args["import-mpoll"];

                    ImportVaxFile(db, fn);
                }


                if (args.Contains("update-daily"))
                {
                    string sql        = "provider = '" + db.Server.SafeSqlLiteral(args["update-daily"]) + "'";
                    var    updateList = db.GetSeriesCatalog(sql);
                    Console.WriteLine("Updating  " + updateList.Count + " Series ");

                    foreach (var item in updateList)
                    {
                        try
                        {
                            Console.Write(item.Name + " ");
                            var s = db.GetSeries(item.id);
                            s.Update(t1, t2);
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e.Message);
                        }
                    }
                }

                if (args.Contains("update-period-of-record"))
                {
                    var sc = db.GetSeriesCatalog("isfolder=0");

                    var prop = db.GetSeriesProperties(true);
                    for (int i = 0; i < sc.Count; i++)
                    {
                        var s   = db.GetSeries(sc[i].id);
                        var por = s.GetPeriodOfRecord();

                        s.Properties.Set("count", por.Count.ToString());

                        if (por.Count == 0)
                        {
                            s.Properties.Set("t1", "");
                            s.Properties.Set("t2", "");
                        }
                        else
                        {
                            s.Properties.Set("t1", por.T1.ToString("yyyy-MM-dd"));
                            s.Properties.Set("t2", por.T2.ToString("yyyy-MM-dd"));
                        }
                        Console.WriteLine(s.Name);
                    }
                    db.Server.SaveTable(prop);
                }

                db.Server.Cleanup();


                File.AppendAllText(errorFileName, "HydrometServer.exe:  Completed " + DateTime.Now.ToString() + "\n");
            }
            //catch (Exception e )
            //{
            //    Logger.WriteLine(e.Message);
            //    File.AppendAllText(errorFileName, "Error: HydrometServer.exe: \n"+e.Message);
            //    // Console.ReadLine();
            //    throw e;
            //}

            var    mem = GC.GetTotalMemory(true);
            double mb  = mem / 1024.0 / 1024.0;

            Console.WriteLine("Mem Usage: " + mb.ToString("F3") + " Mb");
            perf.Report("HydrometServer: finished ");
        }