public TimeSeriesImporter(TimeSeriesDatabase db, DatabaseSaveOptions saveOption = DatabaseSaveOptions.UpdateExisting) { m_db = db; //m_routing = routing; m_saveOption = saveOption; }
public FileImporter(Reclamation.TimeSeries.TimeSeriesDatabase db, DatabaseSaveOptions saveOption= DatabaseSaveOptions.UpdateExisting) { m_saveOption = saveOption; m_db = db; if( ConfigurationManager.AppSettings["ValidLoggerNetPcodes"] != null) validPcodes = ConfigurationManager.AppSettings["ValidLoggerNetPcodes"].Split(','); if (ConfigurationManager.AppSettings["ValidLoggerNetSites"] != null) validSites = ConfigurationManager.AppSettings["ValidLoggerNetSites"].Replace(" ", "").Replace("\r\n", "").Split(','); }
public FileImporter(Reclamation.TimeSeries.TimeSeriesDatabase db, DatabaseSaveOptions saveOption = DatabaseSaveOptions.UpdateExisting) { m_saveOption = saveOption; m_db = db; if (ConfigurationManager.AppSettings["ValidLoggerNetPcodes"] != null) { validPcodes = ConfigurationManager.AppSettings["ValidLoggerNetPcodes"].Split(','); } if (ConfigurationManager.AppSettings["ValidLoggerNetSites"] != null) { validSites = ConfigurationManager.AppSettings["ValidLoggerNetSites"].Replace(" ", "").Replace("\r\n", "").Split(','); } }
public JsonDatabase(string filePath, DatabaseSaveOptions options) { _options = options; _filePath = filePath; if (File.Exists(_filePath)) { string json = File.ReadAllText(_filePath); _data = JsonConvert.DeserializeObject <Dictionary <string, JToken> >(json); } else { _data = new Dictionary <string, JToken>(); if (_options == DatabaseSaveOptions.Automatic) { Save(); } } }
/// <summary> /// Imports DataTable to the Database /// </summary> private int ImportTimeSeriesTable(DataTable table, SeriesCatalogRow sr, DatabaseSaveOptions option) { // Performance perf = new Performance(); table.Columns[0].ColumnName = "datetime"; table.Columns[1].ColumnName = "value"; // table.Columns[2].ColumnName = "flag"; table.TableName = sr.TableName; if (table.Columns.Count == 2) { table.Columns.Add("flag"); table.Columns["flag"].DefaultValue = ""; } if (m_tableNames.Count == 0) // table name cache speed up of 17% { m_tableNames.AddRange(m_server.TableNames()); } if( m_tableNames.IndexOf(table.TableName) <0 ) { CreateSeriesTable(sr.TableName, true); m_tableNames.Add(sr.TableName); } int count = 0; if( option == DatabaseSaveOptions.Upsert) { try { count = m_server.InsertTable(table); }catch (Exception eprimary) { Logger.WriteLine("Error: insert did not work.. deleting existing data first "+eprimary.Message); DeleteExistingData(table); count = m_server.InsertTable(table); } } else if (option == DatabaseSaveOptions.UpdateExisting) { //count = InsertOrUpdate(table, si.FileIndex); DeleteExistingData(table); count = m_server.InsertTable(table); } else if (option == DatabaseSaveOptions.DeleteAllExisting) { Truncate(sr.id); count = m_server.InsertTable(table); } else if (option == DatabaseSaveOptions.Insert) { count = m_server.InsertTable(table); } else if (option == DatabaseSaveOptions.Save) { count = m_server.SaveTable(table); } string por = ""; if( table.Rows.Count > 0) { por = "("+table.Rows[0][0].ToString()+", "+table.Rows[table.Rows.Count-1][0].ToString()+")"; } Logger.WriteLine("TimeSeriesDatabase: Saved " + count + " records "+ table.TableName+" "+por); return count; }
/// <summary> /// Updates any changes in this Series to the database /// </summary> /// <param name="sdi">database id for this series</param> /// <param name="s">series to be saved to database</param> /// <param name="overwrite">delete overlaping-existing data before saving</param> /// <returns>nubmer of series points updated</returns> public int SaveTimeSeriesTable(int sdi, Series s, DatabaseSaveOptions option) { if(ReadOnly ) { Logger.WriteLine("Error: SaveTimeSeriesTable ignored because of ReadOnly setting"); return 0; } SeriesCatalogRow si = GetSeriesRow(sdi); // I think we should set overwrite to true for all cases? // However, there would be performance penalty in cases // this is not necessary int rval = ImportTimeSeriesTable(s.Table, si, option); return rval; }
//public event EventHandler<SeriesEventArgs> AfterSave; //private void OnAfterSave(SeriesEventArgs e) //{ // EventHandler<SeriesEventArgs> handler = AfterSave; // if (handler != null) // handler(this, e); //} /// <summary> /// Import Series s into the database. /// Series s is saved to the tablename defined in the Series s.DataTable.TableName /// the table will be created if necessary. /// </summary> public void ImportSeriesUsingTableName(Series s, string[] folderNames ,DatabaseSaveOptions saveOption = DatabaseSaveOptions.UpdateExisting) { Logger.WriteLine("ImportSeriesUsingTableName: '" + s.Table.TableName+"'"); FixInvalidTableName(s); var sr = GetSeriesRow("tablename ='" + s.Table.TableName.ToLower() +"'"); if (sr == null) {// create new series. //sr = GetNewSeriesRow(); Logger.WriteLine("table: " + s.Table.TableName + " does not exist in the catalog"); TimeSeriesName tn = new TimeSeriesName(s.Table.TableName); PiscesFolder folder = RootFolder; if (folderNames.Length == 0 && tn.interval != "") { folder = GetOrCreateFolder(new string[] { tn.interval }); } else { folder = GetOrCreateFolder(RootFolder,folderNames); } sr = GetNewSeriesRow(); sr.TimeInterval = tn.GetTimeInterval().ToString(); sr.siteid = tn.siteid; sr.Name = s.Name; sr.Parameter = s.Parameter; sr.ParentID = folder.ID; Logger.WriteLine("Info: ImportSeriesUsingTableName() series: " + s.Name + " tablename=" + s.Table.TableName); sr.TableName = s.Table.TableName; m_server.SaveTable(sr.Table); } ImportTimeSeriesTable(s.Table, sr, saveOption); // OnAfterSave(new SeriesEventArgs(s)); }