public SimpleMathSeries(TimeSeriesDatabase db, Reclamation.TimeSeries.TimeSeriesDatabaseDataSet.SeriesCatalogRow sr) : base(db, sr) { string[] idList = ConnectionStringUtility.GetToken(ConnectionString, "SeriesList", "").Split(','); string[] opList = ConnectionStringUtility.GetToken(ConnectionString, "OperatorList", "").Split(','); m_operation = new MathOperation[opList.Length]; m_items = new SeriesList(); for (int i = 0; i < idList.Length; i++) { int id = -1; if (!Int32.TryParse(idList[i], out id) || !db.SeriesExists(id)) { Logger.WriteLine("Cannot calculate series. Has the data this calculation needs been deleted?"); Name = "Error: source data missing " + Name; m_sourceDeleted = true; break; } else { Series s = db.GetSeries(id); m_items.Add(s); } } ScenarioName = m_items[0].ScenarioName; // TO DO assuming all scenarioNames are the same. for (int i = 0; i < opList.Length; i++) { m_operation[i] = MathOperationFromString(opList[i]); } }
public static IEnumerable<String> GetBlockOfQueries(TimeSeriesDatabase db, TimeInterval interval, string filter,string propertyFilter="", int blockSize=75, bool ignoreQuality=true) { var rval = new List<string>(); foreach (Series s in db.GetSeries(interval, filter,propertyFilter).ToArray()) { TimeSeriesName tn = new TimeSeriesName(s.Table.TableName); //rval.Add(s.SiteID + " " + s.Parameter); if (Array.IndexOf(s_quality_parameters, tn.pcode.ToLower() ) >=0 ) continue; // skip quality parameters rval.Add(tn.siteid + " " + tn.pcode); if (rval.Count >= blockSize) { yield return String.Join(",",rval.ToArray()); rval.Clear(); } } yield return String.Join(",", rval.ToArray()); }
public static void BasicDatabaseTest(TimeSeriesDatabase db) { Assert.IsTrue(db.GetSeriesCatalog().Rows.Count ==1 , " initial catalog should have root"); Reclamation.TimeSeries.Hydromet.HydrometInfoUtility.AutoUpdate = true; DateTime t2 = DateTime.Now.Date.AddDays(-10); DateTime t1 = DateTime.Now.Date.AddDays(-30); Series s = new HydrometDailySeries("jck", "af"); int id = db.AddSeries(s); s = db.GetSeries(id); s.Read(t1, t2); s.WriteToConsole(); Assert.AreEqual(21, s.Count); s.Read(t1, DateTime.Now.Date.AddDays(-9)); //force auto update.(HydrometDaily supports this) // check if auto update worked. Assert.AreEqual(22, s.Count); Assert.AreEqual(2, db.GetSeriesCatalog().Rows.Count, "Catalog row count"); var por = s.GetPeriodOfRecord(); Assert.AreEqual(22, por.Count,"period of record"); }