X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src%2FDeviceData.cc;h=d13287c3c087796da6a654b7e14090a4071f1211;hb=af26b84b20b6d9d0e0ce690e8011a037e87dc5c8;hp=d47eb005692ef6498ee0159a572bbc4976a00532;hpb=af341b7dfafac0912f513879565ebd856aa77915;p=lib1wire.git diff --git a/src/DeviceData.cc b/src/DeviceData.cc index d47eb00..d13287c 100644 --- a/src/DeviceData.cc +++ b/src/DeviceData.cc @@ -212,6 +212,43 @@ DataRange *DeviceData::get_summary(Date *date_param, return ret_val; } +DataRange *DeviceData::get_monthly_summary(Date *date, + EnumSummaryCalculationType calc_type_param) { + return get_summary(date, calc_type_param, PERIOD_MONTHLY); +} + +DataRange *DeviceData::get_monthly_summary(Date *date) { + DataRange *ret_val; + + ret_val = get_monthly_summary(date, summary_calc_type); + return ret_val; +} + +DataRange *DeviceData::get_monthly_summary(Date *start_date, + Date *end_date) { + DataRange *ret_val; + DataRange *data; + Date *date; + + ret_val = NULL; + date = start_date->clone(); + while(date->before_or_equal_month(end_date)) { + data = get_monthly_summary(date); + if (data != NULL) { + if (ret_val == NULL) { + ret_val = new DataRange(data); + } + else { + ret_val->add(data); + } + delete(data); + } + date->next_month(); + } + delete(date); + return ret_val; +} + DataRange *DeviceData::get_daily_summary(Date *date, EnumSummaryCalculationType calc_type_param) { return get_summary(date, calc_type_param, PERIOD_DAILY); @@ -243,7 +280,7 @@ DataRange *DeviceData::get_daily_summary(Date *start_date, } delete(data); } - date->tomorrow(); + date->next_day(); } delete(date); return ret_val; @@ -287,7 +324,7 @@ DataRange *DeviceData::get_hourly_summary(Date *start_date, delete(data); } } - date->tomorrow(); + date->next_day(); } delete(date); return ret_val; @@ -305,11 +342,11 @@ DataRange *DeviceData::get_data(Date *start_date, switch(period) { case PERIOD_YEARLY: log_debug("get yearly summary: %s - %s\n", start_date->to_string().c_str(), end_date->to_string().c_str()); - ret_val = get_daily_summary(start_date, end_date); + ret_val = get_monthly_summary(start_date, end_date); break; case PERIOD_MONTHLY: log_debug("get monthly summary\n"); - ret_val = get_daily_summary(start_date, end_date); + ret_val = get_monthly_summary(start_date, end_date); break; case PERIOD_DAILY: log_debug("get daily summary\n");