/// <summary> /// Find all CalculationSeries (Equations) that reference this Series. Use the tablename /// of this series as the variable to look for in each equation. /// </summary> /// <param name="cs"></param> /// <returns></returns> private List <CalculationSeries> BuildDependencies(CalculationSeries cs) { var rval = new List <CalculationSeries>(); var vars = cs.GetDependentVariables(); string msg = cs.Table.TableName + " depends on :"; TimeSeriesName cName = new TimeSeriesName(cs.Table.TableName); foreach (var vn in vars) { TimeSeriesName tn = new TimeSeriesName(vn, cName.interval); if (tn.GetTableName() == cs.Table.TableName) { Logger.WriteLine(cs.Expression); Logger.WriteLine("Warning: prevented recursive dependency " + tn.GetTableName()); continue; } var dependents = list.FindAll(x => x.Table.TableName == tn.GetTableName()); foreach (var d in dependents) { msg += d.Table.TableName + ","; } rval.AddRange(dependents); } Logger.WriteLine(msg); return(rval); }
public int AddRow(string siteID, int parentid, string units, string pcode, string expression = "", TimeInterval interval = TimeInterval.Irregular) { var provider = "Series"; string iconName = ""; if (expression != "") { provider = "CalculationSeries"; iconName = "sum"; } var tn = new TimeSeriesName(siteID + "_" + pcode, interval); string tableName = tn.GetTableName(); var rows = Select("tablename = '" + tableName + "'"); if (rows.Length > 0) { Console.WriteLine("Warning table:'" + tableName + "' allready exists"); } int rval = NextID(); AddSeriesCatalogRow(rval, parentid, 0, 1, iconName, siteID + "_" + pcode, siteID, units, interval.ToString(), pcode, tableName, provider, "", expression, "", 1); return(rval); }
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 CalculationSeries[] GetDependentCalculations(string siteID, string pcode) { TimeSeriesDependency td = new TimeSeriesDependency(m_dependencyList); TimeSeriesName tn = new TimeSeriesName(siteID + "_" + pcode, m_interval); var list = td.LookupCalculations(tn.GetTableName(), m_interval).ToArray(); var cList = new List <CalculationSeries>(); foreach (var item in list) { if (item is CalculationSeries) { cList.Add(item as CalculationSeries); } } return(cList.ToArray()); }
/// <summary> /// Return list of all calculations that may need to be performed /// based on this inputSeries /// </summary> /// <param name="inputSeries"></param> /// <returns></returns> public SeriesList LookupCalculations(string tableName, TimeInterval interval) { var rval = new SeriesList(); if (inputDictionary == null) { inputDictionary = new Dictionary <string, List <CalculationSeries> >(); foreach (CalculationSeries cs in list) { var vars = cs.GetDependentVariables(); foreach (var varName in vars) { TimeSeriesName tn = new TimeSeriesName(varName, interval); if (!tn.Valid) { Console.WriteLine("Error: Skipped Invalid equation .... " + cs.Expression); } else { AddToDictionary(tn.GetTableName(), cs); } } } } Logger.WriteLine("LookupCalculations(" + tableName + ")"); Logger.WriteLine("inputDictionary.Count = " + inputDictionary.Count); TimeSeriesName n = new TimeSeriesName(tableName, interval); var key = n.GetTableName(); if (this.inputDictionary.ContainsKey(key)) { rval.AddRange(inputDictionary[key].ToArray()); } return(rval); }
private void InitInputDictionary(TimeInterval interval) { if (inputDictionary == null) { inputDictionary = new Dictionary <string, List <CalculationSeries> >(); foreach (CalculationSeries cs in list) { var vars = cs.GetDependentVariables(); foreach (var varName in vars) { TimeSeriesName tn = new TimeSeriesName(varName, interval); if (!tn.Valid) { Console.WriteLine("Warning: Skipped non-series parameter/variable .... " + varName); } else { AddToDictionary(tn.GetTableName(), cs); } } } } }
/// <summary> /// Return list of all calculations that may need to be performed /// based on this inputSeries /// </summary> /// <param name="inputSeries"></param> /// <returns></returns> public List <CalculationSeries> LookupCalculations(string tableName, TimeInterval interval) { var rval = new List <CalculationSeries>(); InitInputDictionary(interval); TimeSeriesName n = new TimeSeriesName(tableName, interval); var key = n.GetTableName(); if (this.inputDictionary.ContainsKey(key)) { //Logger.WriteLine("inputDictionary.Count = " + inputDictionary.Count); //Logger.WriteLine("LookupCalculations(" + tableName + ")"); var x = inputDictionary[key]; rval.AddRange(x.ToArray()); } return(rval); }