コード例 #1
0
        public TimeSeriesDatabaseSettings(BasicDBServer db)
        {
            m_server = db;

            piscesInfo = db.Table("piscesinfo");
            piscesInfo.PrimaryKey = new DataColumn[] { piscesInfo.Columns[0] };
        }
コード例 #2
0
        public AlarmManagerControl(TimeSeriesDatabase db)
        {
            InitializeComponent();
            m_svr = db.Server;

            SoundFiles s = new SoundFiles(m_svr);

            this.tabPageSounds.Controls.Add(s);
            s.Dock = DockStyle.Fill;

            AlarmDataSet ds = AlarmDataSet.CreateInstance(db);
            AlarmSetup   s1 = new AlarmSetup(ds);

            this.tabPageSetup.Controls.Add(s1);
            s1.Dock = DockStyle.Fill;


            AlarmQueue q = new AlarmQueue(ds);

            this.tabPageAlarms.Controls.Add(q);
            q.Dock = DockStyle.Fill;

            AlarmDefinitionUI def = new AlarmDefinitionUI(ds);

            this.tabPageAlarmDef.Controls.Add(def);
            def.Dock = DockStyle.Fill;

            AlarmLog log = new AlarmLog(ds);

            this.tabPageLog.Controls.Add(log);
            log.Dock = DockStyle.Fill;
        }
コード例 #3
0
ファイル: AlarmManagerMain.cs プロジェクト: ruo2012/Pisces
        public AlarmManagerMain(BasicDBServer svr)
        {
            m_svr = svr;
            InitializeComponent();
            SoundFiles s = new SoundFiles(svr);

            this.tabPageSounds.Controls.Add(s);
            s.Dock = DockStyle.Fill;

            AlarmDataSet ds = AlarmDataSet.CreateInstance(svr);
            AlarmSetup   s1 = new AlarmSetup(ds);

            this.tabPageSetup.Controls.Add(s1);
            s1.Dock = DockStyle.Fill;


            AlarmQueue q = new AlarmQueue(ds);

            this.tabPageAlarms.Controls.Add(q);
            q.Dock = DockStyle.Fill;

            AlarmDefinition def = new AlarmDefinition(ds);

            this.tabPageAlarmDef.Controls.Add(def);
            def.Dock = DockStyle.Fill;
        }
コード例 #4
0
        /// <summary>
        /// Returns a list of IDWR series that have  set
        /// in the seriesproperties.
        /// </summary>
        /// <param name="svr"></param>
        /// <returns></returns>
        internal static List <TimeSeriesName> GetIDWRDailyList(BasicDBServer svr, string customList)
        {
            string[] allowed = { "wd01", "wd63", "wd65" };
            customList = customList.ToLower();
            if (Array.IndexOf(allowed, customList) < 0)
            {
                Logger.WriteLine("invalid water district:" + customList);
                return(new List <TimeSeriesName>());
            }


            List <TimeSeriesName> rval = new List <TimeSeriesName>();
            var sql = @"
            select s.tablename, p.value siteid ,s.parameter
            from seriescatalog s
                join seriesproperties p on s.id = p.seriesid
                join sitecatalog c on c.siteid = s.siteid
            where timeinterval = 'Daily' ";

            sql += " and p.name ='" + customList + "' order by tablename";


            var tbl = svr.Table("idwr", sql);

            IdwrAccountingFormatter.CustomNames = tbl;

            for (int i = 0; i < tbl.Rows.Count; i++)
            {
                var tn = new TimeSeriesName(tbl.Rows[i]["tablename"].ToString());
                rval.Add(tn);
            }
            return(rval);
        }
コード例 #5
0
        /// <summary>
        /// returns series that have idwr_cbtt set in the siteproperites
        /// and have a idwr_shef set in the seriesproperties.
        /// Also sets the CustomNames property in the ShefFormatter
        /// example url : instant?custom_list=idwr&format=shefa
        /// </summary>
        /// <param name="svr"></param>
        /// <returns></returns>
        internal static List <TimeSeriesName> GetIDWRInstantList(BasicDBServer svr)
        {
            List <TimeSeriesName> rval = new List <TimeSeriesName>();
            var sql = @"
select s.tablename,p.value parameter,sitep.value siteid ,

case(c.timezone)
  when 'US/Mountain' then 'M'
  when 'US/Pacific' then 'P'
  end as timezone
from seriescatalog s 
    join seriesproperties p on s.id = p.seriesid 
    join siteproperties sitep on sitep.siteid =s.siteid
    join sitecatalog c on c.siteid = s.siteid 
where p.name ='idwr_shef' and sitep.name='idwr_cbtt'
and timeinterval = 'Irregular'
";
            var tbl = svr.Table("idwr", sql);

            ShefAFormatter.CustomNames = tbl;

            for (int i = 0; i < tbl.Rows.Count; i++)
            {
                var tn = new TimeSeriesName(tbl.Rows[i]["tablename"].ToString());
                rval.Add(tn);
            }
            return(rval);
        }
コード例 #6
0
        public PiscesSettings(BasicDBServer db)
        {
            m_server = db;


            piscesInfo            = db.Table("piscesinfo");
            piscesInfo.PrimaryKey = new DataColumn[] { piscesInfo.Columns[0] };
        }
コード例 #7
0
        public SoundFiles(BasicDBServer svr)
        {
            m_svr = svr;
            InitializeComponent();
            Init();
#if !PISCES_OPEN
            buttonGenerate.Enabled = false;
#endif
        }
コード例 #8
0
        public SoundFiles(BasicDBServer svr)
        {
            m_svr = svr;
            InitializeComponent();
            Init();
#if __MonoCS__
            buttonGenerate.Enabled = false;
#endif
        }
コード例 #9
0
        /// <summary>
        /// Get a filtered view of the SeriesCatalog.
        /// Include all parent folders with children that match the filter.
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        private TimeSeriesDatabaseDataSet.SeriesCatalogDataTable GetFilteredCatalog( )
        {
            if (m_prevFilter == Filter && m_SeriesCatalog != null)
            {
                return(m_SeriesCatalog);
            }

            m_SeriesCatalog = new TimeSeriesDatabaseDataSet.SeriesCatalogDataTable();
            m_server.FillTable(m_SeriesCatalog); // get all rows.

            var newColumn = new DataColumn("keep", typeof(System.Boolean));

            newColumn.DefaultValue = false;
            m_SeriesCatalog.Columns.Add(newColumn);

            List <int> parentsIncluded = new List <int>();

            var filters = Filter.Split(',');
            var sql     = "";

            for (int i = 0; i < filters.Length; i++)
            {
                if (i > 0)
                {
                    sql += " or ";
                }

                sql += "name like '%" + BasicDBServer.SafeSqlLikeClauseLiteral(filters[i].Trim()) + "%'";
            }

            var rows = m_SeriesCatalog.Select(sql);

            foreach (var item in rows)
            {
                item["keep"] = true;
                int parentID = Convert.ToInt32(item["parentid"]);
                if (!parentsIncluded.Contains(parentID))
                {
                    MarkParentsAsPartOfFilter(parentID, m_SeriesCatalog);
                    parentsIncluded.Add(parentID);
                }
            }

            var rowsToDelete = m_SeriesCatalog.Select("keep = false");

            for (int i = 0; i < rowsToDelete.Length; i++)
            {
                m_SeriesCatalog.Rows.Remove(rowsToDelete[i]);
            }
            m_SeriesCatalog.Columns.Remove("keep");

            m_SeriesCatalog.AcceptChanges();

            m_prevFilter = Filter;
            return(m_SeriesCatalog);
        }
コード例 #10
0
        public static PostgreSQL GetServer(string dbname)
        {
            var pw = GetPassword();

            if (pw == "")
            {
                throw new Exception("Error: the password is blank. Please set this in the settings tab");
            }

            BasicDBServer svr = PostgreSQL.GetPostgresServer(dbname, password: pw);

            return(svr as PostgreSQL);
        }
コード例 #11
0
ファイル: AlarmDataSet.cs プロジェクト: woohn/Pisces
        /// <summary>
        /// Returns a Table of enabled alarm definitions
        /// </summary>
        /// <returns></returns>
        private AlarmDataSet.alarm_definitionDataTable GetActiveAlarmDefinition(string siteid, string parameter)
        {
            var alarm_definition = new AlarmDataSet.alarm_definitionDataTable();

            siteid    = BasicDBServer.SafeSqlLikeClauseLiteral(siteid);
            parameter = BasicDBServer.SafeSqlLikeClauseLiteral(parameter);
            var sql = "select * from alarm_definition where siteid='" + siteid + "' and parameter ='" + parameter + "'"
                      + " and  enabled = " + m_server.PortableWhereBool(true);

            Logger.WriteLine(sql);
            m_server.FillTable(alarm_definition, sql);

            return(alarm_definition);
        }
コード例 #12
0
ファイル: TestPostgreSQL.cs プロジェクト: woohn/Pisces
        private static void CreateEmptyTimeSeriesTable(BasicDBServer svr, string tableName)
        {
            if (!svr.TableExists(tableName))
            {
                string sql = " CREATE TABLE " + tableName + " ("
                             + " datetime timestamp without time zone NOT NULL, "
                             + "  value double precision,"
                             + "  flag character varying(50), "
                             + "  CONSTRAINT " + tableName + "_pkey PRIMARY KEY (datetime))";
                svr.CreateTable(sql);
            }

            svr.RunSqlCommand("truncate table " + tableName);
        }
コード例 #13
0
ファイル: PiscesSettings.cs プロジェクト: Melissa255/Pisces
        public void Open(string path, bool create = false)
        {
            // PostgreSQL, s
            // SQLiteServer
            BasicDBServer svr = null;

            if (create)
            {
                SQLiteServer.CreateNewDatabase(path);
            }

            svr = new SQLiteServer(path);

            Connect(svr);
        }
コード例 #14
0
ファイル: rwisForm.cs プロジェクト: govtmirror/Pisces
 /// <summary>
 /// Main entry form
 /// </summary>
 /// <param name="args"></param>
 public static void startRwisUiMain(string[] args)
 {
     if (jrDebug)
     {
         // Connect to DB Server
         string        dbname = ConfigurationManager.AppSettings["MySqlDatabase"];
         string        server = ConfigurationManager.AppSettings["MySqlServer"];
         string        user   = ConfigurationManager.AppSettings["MySqlUser"];
         BasicDBServer svr    = MySqlServer.GetMySqlServer(server, dbname, user);
         db      = new TimeSeriesDatabase(svr);
         siteCat = db.GetSiteCatalog();
         parCat  = db.GetParameterCatalog();
     }
     // Starts the application.
     Application.Run(new rwisForm());
 }
コード例 #15
0
ファイル: AlarmDataSet.cs プロジェクト: usbr/Pisces
 public static AlarmDataSet CreateInstance(BasicDBServer server = null)
 {
     AlarmDataSet rval;
     if (server == null)
     { // create from config files.
         var db = TimeSeriesDatabase.InitDatabase(new Arguments(new string[] { }));
         rval = new AlarmDataSet();
         rval.m_server = db.Server;
     }
     else
     {// create using server
         rval = new AlarmDataSet();
         rval.m_server = server;
     }
     return rval;
 }
コード例 #16
0
ファイル: CleanupSeriesCatalog.cs プロジェクト: ktarbet/shop
        private static void RenameUntitled(BasicDBServer svr, TimeSeriesDatabase db)
        {
            var untitled = db.GetSeriesCatalog("name = 'untitled'");

            for (int i = 0; i < untitled.Count; i++)
            {
                var item = untitled[i];

                TimeSeriesName tn = new TimeSeriesName(item.TableName);
                Console.WriteLine("Renaming '" + item.Name + "'  to " + tn.siteid + "_" + tn.pcode);

                item.Name = tn.siteid + "_" + tn.pcode;
                Console.WriteLine(item.Name + " " + item.TableName + " " + item.TimeInterval);
            }

            svr.SaveTable(untitled);
        }
コード例 #17
0
            public static void Set(string name, string value, TimeSeriesName tn, BasicDBServer svr)
            {
                var tableName = tn.GetTableName();
                var sc        = svr.Table("seriescatalog", "select * from seriescatalog where tablename = '" + tableName + "'");

                if (sc.Rows.Count == 1)
                {
                    int id = Convert.ToInt32(sc.Rows[0]["id"]);
                    Set(name, value, id, svr);
                }
                else
                {
                    var msg = "Error: tablename:" + tableName + "not found (or duplicated) in the seriescatalog";
                    Logger.WriteLine(msg);
                    throw new KeyNotFoundException(msg);
                }
            }
コード例 #18
0
ファイル: AlarmDataSet.cs プロジェクト: ruo2012/Pisces
        public static AlarmDataSet CreateInstance(BasicDBServer server = null)
        {
            AlarmDataSet rval;

            if (server == null)
            { // create from config files.
                var db = TimeSeriesDatabase.InitDatabase(new Arguments(new string[] { }));
                rval          = new AlarmDataSet();
                rval.m_server = db.Server;
            }
            else
            {// create using server
                rval          = new AlarmDataSet();
                rval.m_server = server;
            }
            return(rval);
        }
コード例 #19
0
            /// <summary>
            /// Set property directly to database
            /// </summary>
            public static void Set(string name, string value, int seriesID, BasicDBServer svr)
            {
                var tbl = new TimeSeriesDatabaseDataSet.seriespropertiesDataTable();
                var sql = "Select * from seriesproperties where name='" + name + "' and seriesid = " + seriesID;

                svr.FillTable(tbl, sql);

                if (tbl.Rows.Count == 0)
                {
                    tbl.AddseriespropertiesRow(svr.NextID("seriesproperties", "id"), seriesID, name, value);
                }
                else
                {
                    tbl.Rows[0]["value"] = value;
                }

                svr.SaveTable(tbl);
            }
コード例 #20
0
ファイル: Database.cs プロジェクト: usbr/HydrometTools
        public static PostgreSQL GetServer(string dbname)
        {
            var pw = GetPassword();

            if (pw == "")
            {
                throw new Exception("Error: the password is blank. Please set this in the settings tab");
            }
            HydrometHost h      = HydrometInfoUtility.HydrometServerFromPreferences();
            var          server = ConfigurationManager.AppSettings["PostgresServer"];

            if (h == HydrometHost.YakimaLinux)
            {
                server = ConfigurationManager.AppSettings["YakimaPostgresServer"];
            }

            BasicDBServer svr = PostgreSQL.GetPostgresServer(dbname, server, password: pw);

            return(svr as PostgreSQL);
        }
コード例 #21
0
ファイル: CleanupSeriesCatalog.cs プロジェクト: ktarbet/shop
        private static void FixSiteID(BasicDBServer svr, TimeSeriesDatabaseDataSet.SeriesCatalogDataTable sc)
        {
            for (int i = 0; i < sc.Count; i++)
            {
                var row = sc[i];
                if (row.IsFolder || row.TimeInterval != TimeInterval.Irregular.ToString() ||
                    row.Provider != "Series")
                {
                    continue;
                }

                TimeSeriesName tn = new TimeSeriesName(row.TableName);
                if (row.siteid == "" && tn.siteid != "")
                {
                    Console.WriteLine("Site ID is blank. chaning to " + "  " + tn.siteid);
                    row.siteid = tn.siteid;
                }
            }

            svr.SaveTable(sc);
        }
コード例 #22
0
ファイル: PiscesSettings.cs プロジェクト: Melissa255/Pisces
        public void ConnectToServer(string server, string database, DatabaseType t)
        {
            string        cs  = ""; // connection string
            BasicDBServer svr = null;

            if (t == DatabaseType.PostgreSql)
            {
                cs  = PostgreSQL.CreateADConnectionString(server, database);
                svr = new PostgreSQL(cs);
            }
            if (t == DatabaseType.SqlServer)
            {
                svr = new SqlServer(server, database);
            }
            if (t == DatabaseType.MySQL)
            {
                svr = MySqlServer.GetMySqlServer(server, database);
            }

            Connect(svr);
        }
コード例 #23
0
ファイル: AlarmManagerMain.cs プロジェクト: usbr/Pisces
        public AlarmManagerMain(BasicDBServer svr)
        {
            m_svr = svr;
            InitializeComponent();
            SoundFiles s = new SoundFiles(svr);
            this.tabPageSounds.Controls.Add(s);
            s.Dock = DockStyle.Fill;

            AlarmDataSet ds = AlarmDataSet.CreateInstance(svr);
            AlarmSetup s1 = new AlarmSetup(ds);
            this.tabPageSetup.Controls.Add(s1);
            s1.Dock = DockStyle.Fill;

            AlarmQueue q = new AlarmQueue(ds);
            this.tabPageAlarms.Controls.Add(q);
            q.Dock = DockStyle.Fill;

            AlarmDefinition def = new AlarmDefinition(ds);
            this.tabPageAlarmDef.Controls.Add(def);
            def.Dock = DockStyle.Fill;
        }
コード例 #24
0
ファイル: PiscesForm.cs プロジェクト: woohn/Pisces
        private BasicDBServer GetServer(string server, string database, DatabaseType t, string password = "", string user = "")
        {
            BasicDBServer svr = null;

            if (user == "")
            {
                user = Environment.UserName.ToLower();
            }
            if (t == DatabaseType.PostgreSql)
            {
                svr = PostgreSQL.GetPostgresServer(database, server, user, password);
            }
            if (t == DatabaseType.SqlServer)
            {
                svr = new SqlServer(server, database);
            }
            if (t == DatabaseType.MySQL)
            {
                svr = MySqlServer.GetMySqlServer(server, database, "", password);
            }

            return(svr);
        }
コード例 #25
0
        private static void UpdateVMS_daily_por(BasicDBServer svr)
        {
            var tbl = HydrometInfoUtility.DailyInventory;

            svr.RunSqlCommand("truncate table vms_daily_por");
            DataTable vms_daily_por = svr.Table("vms_daily_por");


            for (int i = 0; i < tbl.Rows.Count; i++)
            {
                var cbtt = tbl.Rows[i]["cbtt"].ToString().ToLower();
                if (cbtt.Trim() == "")
                {
                    continue;
                }
                var pcode = tbl.Rows[i]["pcode"].ToString().ToLower();
                var por   = HydrometInfoUtility.ArchivePeriodOfRecord(cbtt, pcode);

                vms_daily_por.Rows.Add(cbtt, pcode, por.T1, por.T2);
                Console.WriteLine(cbtt + " " + pcode);
            }

            svr.SaveTable(vms_daily_por);
        }
コード例 #26
0
ファイル: Database.cs プロジェクト: usbr/HydrometTools
        internal static TimeSeriesDatabase DB()
        {
            HydrometHost h = HydrometInfoUtility.HydrometServerFromPreferences();

            var dbname = UserPreference.Lookup("TimeSeriesDatabaseName");

            if (File.Exists(dbname))
            { // local sqlite
                Logger.WriteLine("reading: " + dbname);
                var x = TryLocalDatabase(dbname, h);
                if (x != null)
                {
                    return(x);
                }
            }

            if (s_db == null || s_db.Server.Name != dbname ||
                HydrometHostDiffers(h))
            {
                if (IsPasswordBlank())
                {
                    return(null);
                }

                BasicDBServer svr = GetServer(dbname);
                if (svr == null)
                {
                    return(null);
                }
                s_db = new TimeSeriesDatabase(svr, LookupOption.TableName, false);
                s_db.Parser.VariableResolver = new HydrometVariableResolver(h);
                s_db.Parser.VariableResolver.LookupOption = LookupOption.TableName;
            }

            return(s_db);
        }
コード例 #27
0
        /// <summary>
        /// PiscesWebServices contains several CGI programs in support
        /// of migrating from the Legacy Hydromet System.
        /// Longer term the PiscesAPI (.net core) project can replace this program
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            var siteType            = ""; // agrimet, hydromet (blank means all)
            var cgi                 = "";
            var json_property_stubs = "";
            var payload             = "";
            var p       = new OptionSet();
            var format  = "json";
            var verbose = false;

            p.Add("cgi=", "required cgi to execute cgi=help|sites|series|instant|daily|monthly|wyreport|inventory", x => cgi = x);
            p.Add("json_property_stubs=", "comma separated list of properties (i.e. 'region,url,') to created empty stubs if neeed ",
                  x => json_property_stubs = x);
            p.Add("site-type=", "filter agrimet sites", x => siteType   = BasicDBServer.SafeSqlLikeClauseLiteral(x));
            p.Add("payload=", "test query data for a CGI", x => payload = System.Uri.EscapeDataString(x));
            p.Add("format=", "format json(default) | csv ", x => format = x);
            p.Add("verbose", " get more details", x => verbose          = true);
            p.Add("debug", " get more details", x => verbose            = true);

            try
            {
                p.Parse(args);
            }
            catch (OptionException e)
            {
                Console.WriteLine(e.Message);
                return;
            }
            Database.InitDB(args);
            var db = Database.DB();


            if (cgi == "")
            {
                ShowHelp(p);
                return;
            }


            if (verbose)
            {
                Console.Write("Content-type: text/html\n\n");
                Logger.EnableLogger();
                var ev = Environment.GetEnvironmentVariables();

                foreach (DictionaryEntry item in ev)
                {
                    Console.WriteLine(item.Key + ": " + item.Value + "<br/>");
                }
                Logger.WriteLine("verbose=true");
                Logger.WriteLine("payload = " + payload);
            }

            if (cgi == "help")
            {
                if (!verbose)
                {
                    Console.Write("Content-type: text/html\n\n");
                }
                Help.Print();
                return;
            }

            if (cgi == "inventory")
            {
                try
                {
                    InventoryReport r = new InventoryReport(db, payload);
                    r.Run();
                }
                catch (Exception e)
                {
                    Logger.WriteLine(e.Message);
                }
            }
            else if (cgi == "sites")
            {
                if (format == "json")
                {
                    JSONSites d = new JSONSites(db);
                    d.Execute(json_property_stubs.Split(','), siteType);
                }
                else if (format == "csv")
                {
                    SiteCsvTable c = new SiteCsvTable(db);
                    c.Execute(siteType);
                }
                else if (format == "test")
                {
                    SiteCsvTable c = new SiteCsvTable(db);
                    c.Execute(siteType, "jck");
                }
            }
            else if (cgi == "instant" || cgi == "daily" || cgi == "monthly")
            {
                try
                {
                    WebTimeSeriesWriter c = null;
                    if (cgi == "instant")
                    {
                        c = new WebTimeSeriesWriter(db, TimeInterval.Irregular, payload);
                    }

                    else
                    if (cgi == "daily")
                    {
                        c = new WebTimeSeriesWriter(db, TimeInterval.Daily, payload);
                    }

                    if (cgi == "monthly")
                    {
                        c = new WebTimeSeriesWriter(db, TimeInterval.Monthly, payload);
                    }


                    c.Run();
                }
                catch (Exception e)
                {
                    Logger.WriteLine("Error: " + e.Message);
                }
            }
            else if (cgi == "wyreport")
            {
                try
                {
                    WaterYearReport wy = new WaterYearReport(db, payload);
                    wy.Run();
                }
                catch (Exception e)
                {
                    Logger.WriteLine("Error: " + e.Message);
                }
            }
            else if (cgi == "site")
            {
                SiteInfoCGI si = new SiteInfoCGI(db);
                si.Run(payload);
            }
            else
            {
                Console.WriteLine("invalid cgi: " + cgi);
            }
        }
コード例 #28
0
 private void ExecuteCreateTable(BasicDBServer svr, string sql)
 {
     svr.CreateTable(sql);
 }
コード例 #29
0
            /// <summary>
            /// Set property directly to database
            /// </summary>
            public static void Set(string name, string value, int seriesID, BasicDBServer svr)
            {
                var tbl = new TimeSeriesDatabaseDataSet.seriespropertiesDataTable();
                var sql = "Select * from seriesproperties where name='" + name + "' and seriesid = " + seriesID;
                svr.FillTable(tbl, sql);

                if (tbl.Rows.Count == 0)
                {
                    tbl.AddseriespropertiesRow(svr.NextID("seriesproperties", "id"), seriesID, name, value);
                }
                else
                {
                    tbl.Rows[0]["value"] = value;
                }

                svr.SaveTable(tbl);
            }
コード例 #30
0
 public static void Set(string name, string value, TimeSeriesName tn, BasicDBServer svr)
 {
     var tableName = tn.GetTableName();
     var sc = svr.Table("seriescatalog", "select * from seriescatalog where tablename = '" + tableName + "'");
     if (sc.Rows.Count == 1)
     {
         int id = Convert.ToInt32(sc.Rows[0]["id"]);
         Set(name, value, id, svr);
     }
     else
     {
         var msg = "Error: tablename:" + tableName + "not found (or duplicated) in the seriescatalog";
         Logger.WriteLine(msg);
         throw new KeyNotFoundException(msg);
     }
 }
コード例 #31
0
ファイル: PiscesEngine.cs プロジェクト: ruo2012/Pisces
 private void Connect(BasicDBServer svr)
 {
     m_db = new TimeSeriesDatabase(svr, false);
     Defaults(m_db);
 }
コード例 #32
0
ファイル: PiscesSettings.cs プロジェクト: Melissa255/Pisces
 public void Connect(BasicDBServer svr)
 {
     m_db = new TimeSeriesDatabase(svr);
     Defaults(m_db);
     m_db.ReadSettingsFromDatabase(TimeWindow);
 }
コード例 #33
0
ファイル: AlarmManager.cs プロジェクト: woohn/Pisces
 public AlarmManager(TimeSeriesDatabase db)
 {
     m_server = db.Server;;
     alarmDS  = AlarmDataSet.CreateInstance(db);
 }
コード例 #34
0
ファイル: TimeSeriesDatabase.cs プロジェクト: usbr/Pisces
        private void InitWithLookup(BasicDBServer server, LookupOption lookup)
        {
            InitDatabaseSettings(server);

            var look = m_settings.Get("LookupOption", LookupOption.SeriesName.ToString());

            if (look != lookup.ToString())
             {
                m_settings.Set("LookupOption", lookup.ToString());
                m_settings.Save();
             }

            m_parser = new SeriesExpressionParser(this, lookup);
            if (m_settings.ReadBoolean("HydrometVariableResolver", false))
            {
                var svr = Hydromet.HydrometInfoUtility.HydrometServerFromPreferences();
                m_parser.VariableResolver = new HydrometVariableResolver(svr);
            }

            factory = new PiscesFactory(this);

            SetUnixDateTime(UnixDateTime);
        }
コード例 #35
0
ファイル: TimeSeriesDatabase.cs プロジェクト: usbr/Pisces
        private void InitDatabaseSettings(BasicDBServer server)
        {
            Filter = "";
            m_server = server;

            if (m_server.TableExists("piscesinfo"))
            {
                InitSettings();
                UpgradeV1ToV2();
            }

            if (m_server.TableExists("sitecatalog"))
            {
                InitSettings();
               // UpgradeToV4();
            }

            if (!ReadOnly)
            {
                CreateTablesWithSQL();
            }
            InitSettings();

            CreateRootFolder();
        }
コード例 #36
0
ファイル: TimeSeriesDatabase.cs プロジェクト: usbr/Pisces
 /// <summary>
 /// Constructor of TimeSeriesDatabase
 /// </summary>
 /// <param name="server"></param>
 public TimeSeriesDatabase(BasicDBServer server, LookupOption lookup , bool readOnly)
 {
     ReadOnly = readOnly;
     InitDatabaseSettings(server);
     InitWithLookup(server, lookup);
 }
コード例 #37
0
ファイル: TimeSeriesDatabase.cs プロジェクト: usbr/Pisces
        /// <summary>
        /// Constructor of TimeSeriesDatabase
        /// </summary>
        /// <param name="server"></param>
        public TimeSeriesDatabase(BasicDBServer server, bool readOnly=false)
        {
            ReadOnly = readOnly;
            InitDatabaseSettings(server);

            LookupOption lookup = LookupOption.SeriesName;

            var opt = m_settings.Get("LookupOption", "");

            if (opt == "TableName")
            {
                lookup = LookupOption.TableName;
            }

            InitWithLookup(server, lookup);
        }
コード例 #38
0
ファイル: Program.cs プロジェクト: govtmirror/Pisces
        /// <summary>
        /// Examples:
        ///
        /// --cgi=sites --propertyFilter=program:agrimet --json_required_properties=json_extra
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            var  siteType            = ""; // agrimet, hydromet (blank means all)
            var  cgi                 = "";
            var  json_property_stubs = "";
            var  payload             = "";
            var  p        = new OptionSet();
            var  format   = "json";
            var  verbose  = false;
            bool selfHost = false;
            var  sqLiteDatabaseFileName = "";

            p.Add("server", x => selfHost = true);
            p.Add("cgi=", "required cgi to execute cgi=sites or cgi=series", x => cgi = x);
            p.Add("json_property_stubs=", "comma separated list of properties (i.e. 'region,url,') to created empty stubs if neeed ",
                  x => json_property_stubs = x);
            p.Add("site-type=", "filter agrimet sites", x => siteType   = BasicDBServer.SafeSqlLikeClauseLiteral(x));
            p.Add("payload=", "test query data for a CGI", x => payload = x);
            p.Add("format=", "format json(default) | csv ", x => format = x);
            p.Add("verbose", " get more details", x => verbose          = true);
            p.Add("database", "filename for SQLite database", x => sqLiteDatabaseFileName = x);

            try
            {
                p.Parse(args);
            }
            catch (OptionException e)
            {
                Console.WriteLine(e.Message);
                return;
            }
            Database.InitDB(args);
            var db = Database.DB();

            if (selfHost)
            {
                try
                {
                    var serverUri = "http://localhost:8080";
                    var cfg       = new HostConfiguration();
                    //cfg.RewriteLocalhost = false;
                    //c..fg.UrlReservations.CreateAutomatically=true;
                    var host = new Nancy.Hosting.Self.NancyHost(cfg, new Uri(serverUri));
                    //var host = new Nancy.Hosting.Self.NancyHost();
                    using (host)
                    {
                        host.Start();
                        Console.WriteLine("Running on " + serverUri);
                        Console.ReadLine();
                    }
                }
                catch (Exception nancyEx)
                {
                    Console.WriteLine(nancyEx.Message);
                }
                return;
            }

            if (cgi == "")
            {
                ShowHelp(p);
                return;
            }

            if (verbose)
            {
                Console.Write("Content-type: text/html\n\n");
                Logger.EnableLogger();
                Logger.WriteLine("verbose=true");
                Logger.WriteLine("payload = " + payload);
            }

            if (cgi == "inventory")
            {
                Console.Write("Content-Type: text/html\n\n");
                db.Inventory();
            }
            else if (cgi == "sites")
            {
                if (format == "json")
                {
                    JSONSites d = new JSONSites(db);
                    d.Execute(json_property_stubs.Split(','), siteType);
                }
                else if (format == "csv")
                {
                    SiteCsvTable c = new SiteCsvTable(db);
                    c.Execute(siteType);
                }
            }
            else if (cgi == "instant" || cgi == "daily")
            {
                try
                {
                    WebTimeSeriesWriter c = null;
                    if (cgi == "instant")
                    {
                        c = new WebTimeSeriesWriter(db, TimeInterval.Irregular, payload);
                    }

                    else
                    if (cgi == "daily")
                    {
                        c = new WebTimeSeriesWriter(db, TimeInterval.Daily, payload);
                    }

                    c.Run();
                }
                catch (Exception e)
                {
                    Logger.WriteLine("Error: " + e.Message);
                }
            }
            else if (cgi == "wyreport")
            {
                try
                {
                    WaterYearReport wy = new WaterYearReport(db, payload);
                    wy.Run();
                }
                catch (Exception e)
                {
                    Logger.WriteLine("Error: " + e.Message);
                }
            }
            else if (cgi == "site")
            {
                SiteInfoCGI si = new SiteInfoCGI(db);
                si.Run(payload);
            }
            else if (cgi == "test-perf-large")
            {
                var c = new HydrometGCITests();
                c.CGI_PerfTestLarge();
            }
            else if (cgi == "test-perf-small")
            {
                var c = new HydrometGCITests();
                c.CGI_PerfTestSmall();
            }
            else if (cgi == "dump")
            {
                var c = new HydrometGCITests();
                c.DumpTest();
            }
            else
            {
                Console.WriteLine("invalid cgi: " + cgi);
            }
        }