]> pilppa.org Git - lib1wire.git/blobdiff - src/DataReader.cc
Moved files that were not w1 specific to libplp.
[lib1wire.git] / src / DataReader.cc
diff --git a/src/DataReader.cc b/src/DataReader.cc
deleted file mode 100644 (file)
index 799ead1..0000000
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
- * DataReader.cc
- *
- *  Created on: Nov 7, 2010
- *      Author: lamikr
- */
-#include <sstream>
-
-#include <dirent.h>
-#include <malloc.h>
-#include <errno.h>
-#include <string.h>
-
-#include "W1Util.hh"
-#include "DataReader.hh"
-#include "StoreDay.hh"
-#include "StoreCache.hh"
-#include "DeviceConfig.hh"
-#include "Factory.hh"
-
-#include "plp/log.h"
-
-using namespace w1;
-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();
-}
-
-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      = 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);
-}
-
-DataReader::~DataReader() {
-       if (device_config != NULL) {
-               delete(device_config);
-               device_config   = NULL;
-       }
-}
-
-Data *DataReader::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);
-               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;
-}
-
-Data *DataReader::find_oldest_data(vector<string> year_name_vector_param) {
-       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);
-               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;
-}
-
-DataRange *DataReader::get_data_range() {
-       DataRange       *ret_val;
-       vector<string>  y_list;
-       Data            *o_data;
-       Data            *n_data;
-
-       ret_val = NULL;
-       y_list  = W1Util::get_subdirectories(device_dir);
-       o_data  = find_oldest_data(y_list);
-       if (o_data != NULL) {
-               n_data  = find_newest_data(y_list);
-               if (n_data != NULL) {
-                       ret_val = new DataRange(o_data);
-                       ret_val->add(n_data);
-                       delete(n_data);
-               }
-               delete(o_data);
-       }
-       return ret_val;
-}
-
-EnumSummaryPeriod get_period_type(Date *start_date,
-                       Date *end_date) {
-       int                     diff;
-       EnumSummaryPeriod       ret_val;
-
-       ret_val = PERIOD_YEARLY;
-       diff    = end_date->year - start_date->year;
-       if (diff != 0) {
-               ret_val = PERIOD_YEARLY;
-       }
-       else {
-               diff    = end_date->month - start_date->month;
-               if (diff != 0) {
-                       ret_val = PERIOD_MONTHLY;
-               }
-               else {
-                       diff    = end_date->day - start_date->day;
-                       if (diff != 0) {
-                               ret_val = PERIOD_DAILY;
-                       }
-                       else {
-                               diff    = end_date->hour - start_date->hour;
-                               if (diff != 0) {
-                                       ret_val = PERIOD_HOURLY;
-                               }
-                               else {
-                                       diff    = end_date->min - start_date->min;
-                                       if (diff != 0) {
-                                               ret_val = PERIOD_MINUTELY;
-                                       }
-                                       else {
-                                               ret_val = PERIOD_SECONDLY;
-                                       }
-                               }
-                       }
-               }
-       }
-       return ret_val;
-}
-
-DataRange *DataReader::get_summary(Date *date_param,
-                               EnumSummaryCalculationType calc_type_param,
-                               EnumSummaryPeriod period_type_param) {
-       DataRange       *ret_val;
-       StoreCache      *store;
-
-       ret_val = NULL;
-       //store = new StoreDay(device_id, date_param);
-       store   = new StoreCache(device_id, date_param);
-       if (store != NULL) {
-               switch(calc_type_param) {
-                       case SUM:
-                               ret_val = store->get_sum(period_type_param);
-                               break;
-                       case DELTA:
-                               ret_val = store->get_delta(period_type_param);
-                               break;
-                       case MAX:
-                               ret_val = store->get_max(period_type_param);
-                               break;
-                       case MIN:
-                               ret_val = store->get_min(period_type_param);
-                               break;
-                       case MEAN:
-                       default:
-                               ret_val = store->get_mean(period_type_param);
-                               break;
-               }
-               if (ret_val != NULL) {
-                       ret_val->printout();
-               }
-               else {
-                       log_error("Could not read data log for device: %s\n", device_id.c_str());
-               }
-       }
-       else {
-               log_error("Could not read data log for device: %s\n", device_id.c_str());
-       }
-       delete(store);
-       return ret_val;
-}
-
-DataRange *DataReader::get_yearly_summary(Date *date,
-                               EnumSummaryCalculationType calc_type_param) {
-       return get_summary(date, calc_type_param, PERIOD_YEARLY);
-}
-
-DataRange *DataReader::get_yearly_summary(Date *date) {
-       DataRange       *ret_val;
-
-       if (device_config == NULL) {
-               device_config           = Factory::get_device_config(device_id);
-               summary_calc_type       = device_config->get_summary_calculation_type();
-       }
-       ret_val = get_yearly_summary(date, summary_calc_type);
-       return ret_val;
-}
-
-DataRange *DataReader::get_yearly_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_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);
-                       }
-                       delete(data);
-               }
-               date->next_year();
-       }
-       delete(date);
-       return ret_val;
-}
-
-DataRange *DataReader::get_monthly_summary(Date *date,
-                               EnumSummaryCalculationType calc_type_param) {
-       return get_summary(date, calc_type_param, PERIOD_MONTHLY);
-}
-
-DataRange *DataReader::get_monthly_summary(Date *date) {
-       DataRange       *ret_val;
-
-       if (device_config == NULL) {
-               device_config           = Factory::get_device_config(device_id);
-               summary_calc_type       = device_config->get_summary_calculation_type();
-       }
-       ret_val = get_monthly_summary(date, summary_calc_type);
-       return ret_val;
-}
-
-DataRange *DataReader::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 *DataReader::get_daily_summary(Date *date,
-                               EnumSummaryCalculationType calc_type_param) {
-       return get_summary(date, calc_type_param, PERIOD_DAILY);
-}
-
-DataRange *DataReader::get_daily_summary(Date *date) {
-       DataRange       *ret_val;
-
-       if (device_config == NULL) {
-               device_config           = Factory::get_device_config(device_id);
-               summary_calc_type       = device_config->get_summary_calculation_type();
-       }
-       ret_val = get_daily_summary(date, summary_calc_type);
-       return ret_val;
-}
-
-DataRange *DataReader::get_daily_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_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);
-                       }
-                       delete(data);
-               }
-               date->next_day();
-       }
-       delete(date);
-       return ret_val;
-}
-
-DataRange *DataReader::get_hourly_summary(Date *date,
-               EnumSummaryCalculationType calc_type_param) {
-       return get_summary(date, calc_type_param, PERIOD_HOURLY);
-}
-
-DataRange *DataReader::get_hourly_summary(Date *date) {
-       DataRange       *ret_val;
-
-       if (device_config == NULL) {
-               device_config           = Factory::get_device_config(device_id);
-               summary_calc_type       = device_config->get_summary_calculation_type();
-       }
-       ret_val = get_hourly_summary(date, summary_calc_type);
-       return ret_val;
-}
-
-DataRange *DataReader::get_hourly_summary(Date *start_date,
-                                       Date *end_date) {
-       DataRange       *ret_val;
-       DataRange       *dta_lst;
-       Data            *data;
-       Date            *date;
-       int             cnt;
-       int             ii;
-
-       ret_val = NULL;
-       date    = start_date->clone();
-       while(date->before_or_equal_hour(end_date)) {
-               dta_lst = get_hourly_summary(date);
-               cnt     = dta_lst->get_count();
-               for(ii = 0; ii < cnt; ii++) {
-                       data    = dta_lst->get(ii);
-                       if (data != NULL) {
-                               if (ret_val == NULL) {
-                                       ret_val = new DataRange(data);
-                               }
-                               else {
-                                       ret_val->add(data);
-                               }
-                               delete(data);
-                       }
-               }
-               date->next_day();
-       }
-       delete(date);
-       return ret_val;
-}
-
-DataRange *DataReader::get_data(Date *start_date,
-                               Date *end_date) {
-       DataRange               *ret_val;
-       EnumSummaryPeriod       period;
-
-       ret_val = NULL;
-       start_date->printout();
-       end_date->printout();
-       period  = get_period_type(start_date, end_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_yearly_summary(start_date, end_date);
-                       break;
-               case PERIOD_MONTHLY:
-                       log_debug("get monthly summary\n");
-                       ret_val = get_monthly_summary(start_date, end_date);
-                       break;
-               case PERIOD_DAILY:
-                       log_debug("get daily summary\n");
-                       ret_val = get_daily_summary(start_date, end_date);
-                       break;
-               case PERIOD_HOURLY:
-                       log_debug("get hourly summary\n");
-                       ret_val = get_hourly_summary(start_date, end_date);
-                       break;
-               case PERIOD_MINUTELY:
-                       log_debug("get minute summary data\n");
-                       break;
-               case PERIOD_SECONDLY:
-               default:
-                       log_debug("get second summary data\n");
-                       break;
-       }
-       return ret_val;
-}
-
-string DataReader::get_device_id() {
-       return device_id;
-}
-
-/**
- * Read device type from the device specific config file
- */
-string DataReader::get_device_type() {
-       string  ret_val;
-
-       if (device_config == NULL) {
-               device_config   = Factory::get_device_config(device_id);
-               ret_val         = device_config->get_cfg_value(DEVICE_CONFIG_VALUE_KEY__TYPE);
-       }
-       return ret_val;
-}