* Created on: Nov 7, 2010
* Author: lamikr
*/
+#include <sstream>
+
#include <dirent.h>
#include <malloc.h>
#include <errno.h>
using namespace std;
using namespace plp;
+template <class NumberDataType>
+bool string_to_number(NumberDataType& result,
+ const std::string& string_param,
+ std::ios_base& (*format)(std::ios_base&))
+{
+ istringstream iss(string_param);
+ return !(iss >> format >> result).fail();
+}
+
DeviceData::DeviceData(string device_id_param) {
string base_dir;
}
}
-Data *DeviceData::find_newest_data(string year_name_param) {
- int ii;
- string mon_dr;
- vector<string> mon_vcr;
- vector<string> d_vcr;
- string f_name;
- StoreDay *store;
- Data *ret_val;
- string year_dr;
- int size;
-
- ret_val = NULL;
- year_dr = W1Util::concat_paths(device_dir, year_name_param);
- mon_vcr = W1Util::get_subdirectories(year_dr);
- for (ii = mon_vcr.size() - 1; ii >= 0; ii--) {
- mon_dr = mon_vcr.at(ii);
- mon_dr = W1Util::concat_paths(year_dr, mon_dr);
- // scan data files from month dir
- d_vcr = W1Util::get_data_files(mon_dr);
- size = d_vcr.size();
- if (size > 0) {
- f_name = d_vcr.at(size - 1);
- f_name = W1Util::concat_paths(mon_dr, f_name);
- store = new StoreDay(f_name);
- ret_val = store->get_newest_data();
- delete(store);
- break;
- }
- }
- return ret_val;
-}
-
Data *DeviceData::find_newest_data(vector<string> year_name_vector_param) {
string year_name;
int size;
Data *ret_val;
+ Date date;
+ int val_int;
ret_val = NULL;
size = year_name_vector_param.size();
if (size > 0) {
// dirs are alphabetically sorted
year_name = year_name_vector_param.at(size - 1);
- ret_val = find_newest_data(year_name);
- }
- return ret_val;
-}
-
-Data *DeviceData::find_oldest_data(string year_name_param) {
- int size;
- unsigned int ii;
- string year_dr;
- string mon_dr;
- vector<string> mon_vcr;
- vector<string> dta_vcr;
- string f_name;
- StoreDay *store;
- Data *ret_val;
-
- ret_val = NULL;
- year_dr = W1Util::concat_paths(device_dir, year_name_param);
- mon_vcr = W1Util::get_subdirectories(year_dr);
- for (ii = 0; ii < mon_vcr.size(); ii++) {
- mon_dr = mon_vcr.at(ii);
- mon_dr = W1Util::concat_paths(year_dr, mon_dr);
- // scan data files from month dir
- dta_vcr = W1Util::get_data_files(mon_dr);
- size = dta_vcr.size();
- if (size > 0) {
- f_name = dta_vcr.at(0);
- f_name = W1Util::concat_paths(mon_dr, f_name);
- store = new StoreDay(f_name);
- ret_val = store->get_oldest_data();
- delete(store);
- break;
- }
+ string_to_number<int>(val_int, year_name, dec);
+ date.year = val_int;
+ ret_val = StoreCache::get_newest_data(&date, device_id, PERIOD_YEARLY);
}
return ret_val;
}
int size;
string year_name;
Data *ret_val;
+ Date date;
+ int val_int;
ret_val = NULL;
size = year_name_vector_param.size();
if (size > 0) {
// dirs are alphabetically sorted
year_name = year_name_vector_param.at(0);
- ret_val = find_oldest_data(year_name);
+ string_to_number<int>(val_int, year_name, dec);
+ date.year = val_int;
+ ret_val = StoreCache::get_oldest_data(&date, device_id, PERIOD_YEARLY);
}
return ret_val;
}