public TimeSeriesDatabaseSettings(BasicDBServer db) { m_server = db; piscesInfo = db.Table("piscesinfo"); piscesInfo.PrimaryKey = new DataColumn[] { piscesInfo.Columns[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; }
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; }
/// <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); }
/// <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); }
public PiscesSettings(BasicDBServer db) { m_server = db; piscesInfo = db.Table("piscesinfo"); piscesInfo.PrimaryKey = new DataColumn[] { piscesInfo.Columns[0] }; }
public SoundFiles(BasicDBServer svr) { m_svr = svr; InitializeComponent(); Init(); #if !PISCES_OPEN buttonGenerate.Enabled = false; #endif }
public SoundFiles(BasicDBServer svr) { m_svr = svr; InitializeComponent(); Init(); #if __MonoCS__ buttonGenerate.Enabled = false; #endif }
/// <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); }
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); }
/// <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); }
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); }
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); }
/// <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()); }
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; }
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); }
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); } }
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); }
/// <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); }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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); } }
private void ExecuteCreateTable(BasicDBServer svr, string sql) { svr.CreateTable(sql); }
private void Connect(BasicDBServer svr) { m_db = new TimeSeriesDatabase(svr, false); Defaults(m_db); }
public void Connect(BasicDBServer svr) { m_db = new TimeSeriesDatabase(svr); Defaults(m_db); m_db.ReadSettingsFromDatabase(TimeWindow); }
public AlarmManager(TimeSeriesDatabase db) { m_server = db.Server;; alarmDS = AlarmDataSet.CreateInstance(db); }
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); }
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(); }
/// <summary> /// Constructor of TimeSeriesDatabase /// </summary> /// <param name="server"></param> public TimeSeriesDatabase(BasicDBServer server, LookupOption lookup , bool readOnly) { ReadOnly = readOnly; InitDatabaseSettings(server); InitWithLookup(server, lookup); }
/// <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); }
/// <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); } }