protected override string queryString(StaticFuture sf_)
    {
      var startDateInGMT = TimeZoneHelper.ConvertToGmtTime(m_timezone, m_startDate);
      var endDateInGMT = TimeZoneHelper.ConvertToGmtTime(m_timezone, m_endDate);

      return string.Format("select * from {0} where metaID={1} and gmtDate>='{2}' and gmtDate <='{3}' order by gmtDate",
        ViewTableName,
        sf_.MetaId,
        startDateInGMT.ToString("dd-MMM-yyyy HH:mm"),
        endDateInGMT.ToString("dd-MMM-yyyy HH:mm"));
    }
    public ConstructGen<double> GetData(DBHelper db_, StaticFuture sf_)
    {
      var sql = queryString(sf_);

      if (Singleton<Cache>.Instance.Contains(sql))
      {
        Symmetry.Core.SLog.log.Debug("Getting item from cache");
        return Singleton<Cache>.Instance.Get(sql) as ConstructGen<double>;
      }

      var ds = db_.Execute(queryString(sf_));

      var con =  DBHelper.HasData(ds)==false ? null : extractDataFromDataset(ds);

      if (con != null)
      {
        Singleton<Cache>.Instance.Set(sql, con, DateTimeOffset.Now.AddHours(6d));
      }

      return con;
    }
 abstract protected string queryString(StaticFuture sf_);