X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src%2FDataReader.cc;h=c1dfb489c65ecd51b9388e616916f437e71f64e0;hb=fb1be129d4304d68e42f3e30710968a0899e5482;hp=72a44bd65a20ce6cbc0bbfd2592689e288ef2388;hpb=db9ced4236847cfca52b232935838ee80dcfd047;p=libplp.git diff --git a/src/DataReader.cc b/src/DataReader.cc index 72a44bd..c1dfb48 100644 --- a/src/DataReader.cc +++ b/src/DataReader.cc @@ -34,12 +34,14 @@ bool string_to_number(NumberDataType& result, DataReader::DataReader(string device_id_param) { string base_dir; - device_config = NULL; - device_id = device_id_param; - base_dir = DeviceConfig::get_base_dir_name(); - device_dir = FileUtil::concat_paths(base_dir, device_id); - device_ch_dir = FileUtil::concat_paths(base_dir, "cache"); - device_ch_dir = FileUtil::concat_paths(device_ch_dir, device_id); + log_debug("device_id: %s\n", device_id_param.c_str()); + summary_calc_type = MEAN; + device_config = NULL; + device_id = device_id_param; + base_dir = DeviceConfig::get_base_dir_name(); + device_dir = FileUtil::concat_paths(base_dir, device_id); + device_ch_dir = FileUtil::concat_paths(base_dir, "cache"); + device_ch_dir = FileUtil::concat_paths(device_ch_dir, device_id); } DataReader::~DataReader() { @@ -192,11 +194,15 @@ DataRange *DataReader::get_summary(Date *date_param, ret_val->printout(); } else { - log_error("Could not read data log for device: %s\n", device_id.c_str()); + log_error("%s: Could not read data log for device %s. Data not found.\n", + date_param->to_string().c_str(), + device_id.c_str()); } } else { - log_error("Could not read data log for device: %s\n", device_id.c_str()); + log_error("%s: Could not read data log for device: %s. Memory allocation error..\n", + date_param->to_string().c_str(), + device_id.c_str()); } delete(store); return ret_val; @@ -227,15 +233,17 @@ DataRange *DataReader::get_yearly_summary(Date *start_date, ret_val = NULL; date = start_date->clone(); while(date->before_or_equal_year(end_date)) { - data = get_yearly_summary(date); - if (data != NULL) { - if (ret_val == NULL) { - ret_val = new DataRange(data); - } - else { - ret_val->add(data); + if (StoreDay::exist_in_year(device_id, date, false)) { + data = get_yearly_summary(date); + if (data != NULL) { + if (ret_val == NULL) { + ret_val = new DataRange(data); + } + else { + ret_val->add(data); + } + delete(data); } - delete(data); } date->next_year(); } @@ -268,17 +276,19 @@ DataRange *DataReader::get_monthly_summary(Date *start_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); + if (StoreDay::exist_in_month(device_id, date, false)) { + data = get_monthly_summary(date); + if (data != NULL) { + if (ret_val == NULL) { + ret_val = new DataRange(data); + } + else { + ret_val->add(data); + } + delete(data); } - delete(data); + date->next_month(); } - date->next_month(); } delete(date); return ret_val; @@ -308,6 +318,7 @@ DataRange *DataReader::get_daily_summary(EnumSummaryCalculationType calc_type_pa if (data != NULL) { date = data->get_date(); ret_val = get_daily_summary(&date, calc_type_param); + delete(data); } return ret_val; } @@ -337,15 +348,17 @@ DataRange *DataReader::get_daily_summary(Date *start_date, ret_val = NULL; date = start_date->clone(); while(date->before_or_equal_day(end_date)) { - data = get_daily_summary(date); - if (data != NULL) { - if (ret_val == NULL) { - ret_val = new DataRange(data); - } - else { - ret_val->add(data); + if (StoreDay::exist(device_id, date, false)) { + data = get_daily_summary(date); + if (data != NULL) { + if (ret_val == NULL) { + ret_val = new DataRange(data); + } + else { + ret_val->add(data); + } + delete(data); } - delete(data); } date->next_day(); } @@ -441,14 +454,20 @@ string DataReader::get_device_id() { } /** - * Read device type from the device specific config file + * Read device type from the device specific config file. + * + * @rerurn string representing device type. + * In the case of error, an empty string is returned. */ -string DataReader::get_device_type() { - string ret_val; +bool DataReader::get_device_type(string& type_param) { + bool ret_val; + ret_val = false; if (device_config == NULL) { device_config = DeviceConfig::get_device_config(device_id); - ret_val = device_config->get_cfg_value(DEVICE_CONFIG_VALUE_KEY__TYPE); + } + if (device_config != NULL) { + ret_val = device_config->get_config_value(DEVICE_CONFIG_VALUE_KEY__TYPE, type_param); } return ret_val; }