#include "W1Util.hh"
#include "W1DataList.hh"
#include "W1Store.hh"
+#include "DeviceConfig.hh"
#include "plp/log.h"
W1DataList::W1DataList(string device_id_param) {
string base_dir;
- device_id = device_id_param;
- base_dir = W1Store::get_base_dir_name();
- device_dir = W1Util::concat_paths(base_dir, device_id);
- device_ch_dir = W1Util::concat_paths(base_dir, "cache");
- device_ch_dir = W1Util::concat_paths(device_ch_dir, device_id);
+ device_config = new DeviceConfig(device_id_param);
+ summary_calc_type = device_config->get_summary_calculation_type();
+ device_id = device_id_param;
+ base_dir = DeviceConfig::get_base_dir_name();
+ device_dir = W1Util::concat_paths(base_dir, device_id);
+ device_ch_dir = W1Util::concat_paths(base_dir, "cache");
+ device_ch_dir = W1Util::concat_paths(device_ch_dir, device_id);
}
W1DataList::~W1DataList() {
- //delete(device_dir);
+ delete(device_config);
}
Data *W1DataList::find_oldest_data(vector<string> year_vector) {
- int ii;
+ unsigned int ii;
string year_dir;
string month_dir;
vector<string> month_vector;
DataRange *W1DataList::get_data_range() {
DataRange *ret_val;
- DIR *data_dir;
- struct dirent *year_dirent;
vector<string> year_list;
Data *first_data;
Data *newest_data;
return ret_val;
}
-string W1DataList::get_day_data(Date *date) {
- string ret_val;
-
- ret_val = W1Store::get_file_name(device_id, date);
- return ret_val;
-}
-
-Data *W1DataList::get_avg_day_data(Date *date) {
- Data *data;
+Data *W1DataList::get_daily_summary(Date *date) {
+ Data *ret_val;
W1Store *store;
store = new W1Store(device_id, date);
store->load();
- data = store->get_mean();
- data->printout();
+ switch(summary_calc_type) {
+ case SUM:
+ ret_val = store->get_sum();
+ break;
+ case DELTA:
+ ret_val = store->get_delta();
+ break;
+ case MEAN:
+ default:
+ ret_val = store->get_mean();
+ break;
+ case MAX:
+ ret_val = store->get_max();
+ break;
+ case MIN:
+ ret_val = store->get_min();
+ break;
+ }
+ ret_val->printout();
delete(store);
- return data;
+ return ret_val;
}
-DataRange *W1DataList::get_avg_day_data(Date *start_date,
+DataRange *W1DataList::get_daily_summary(Date *start_date,
Date *end_date) {
DataRange *ret_val;
Data *data;
ret_val = NULL;
date = start_date->clone();
while(date->before(*end_date)) {
- data = get_avg_day_data(date);
+ data = get_daily_summary(date);
if (ret_val == NULL) {
ret_val = new DataRange(*data);
}
int_type = get_interval_type(start_date, end_date);
switch(int_type) {
case 0:
- log_debug("get avg year data\n");
+ log_debug("get yearly summary\n");
break;
case 1:
- log_debug("get avg month data\n");
+ log_debug("get monthly summary\n");
break;
case 2:
- log_debug("get avg day data\n");
- ret_val = get_avg_day_data(start_date, end_date);
+ log_debug("get daily summary\n");
+ ret_val = get_daily_summary(start_date, end_date);
break;
case 3:
- log_debug("get avg hour data\n");
+ log_debug("get hourly summary\n");
break;
case 4:
- log_debug("get avg min data\n");
+ log_debug("get minute summary data\n");
break;
case 5:
- log_debug("get avg sec data\n");
+ log_debug("get second summary data\n");
break;
}
return ret_val;