/* * DataReader.hh * * Created on: Nov 7, 2010 * Author: lamikr */ #ifndef W1DATALIST_H_ #define W1DATALIST_H_ #include #include #include "Data.hh" #include "Date.hh" #include "DeviceConfig.hh" #include namespace plp { class DataReader { public: DataReader(std::string device_id); virtual ~DataReader(); plp::DataRange *get_data_range(); /** * Get monthly summary data. * Depending from the device type, it may be daily mean value, daily delta, highest value, etc... */ plp::DataRange *get_yearly_summary(plp::Date *date, EnumSummaryCalculationType calc_type); plp::DataRange *get_yearly_summary(plp::Date *date); plp::DataRange *get_yearly_summary(plp::Date *start_date, plp::Date *end_date); /** * Get monthly summary data. * Depending from the device type, it may be daily mean value, daily delta, highest value, etc... */ plp::DataRange *get_monthly_summary(plp::Date *date, EnumSummaryCalculationType calc_type); plp::DataRange *get_monthly_summary(plp::Date *date); plp::DataRange *get_monthly_summary(plp::Date *start_date, plp::Date *end_date); /** * Get daily summary data calculated from the daily data items. * Depending from the device type, it may be daily mean value, daily delta, highest value, etc... */ plp::DataRange *get_daily_summary(plp::Date *date, EnumSummaryCalculationType calc_type); plp::DataRange *get_daily_summary(plp::Date *date); plp::DataRange *get_daily_summary(plp::Date *start_date, plp::Date *end_date); plp::DataRange *get_hourly_summary(plp::Date *date, EnumSummaryCalculationType calc_type); plp::DataRange *get_hourly_summary(plp::Date *date); plp::DataRange *get_hourly_summary(plp::Date *start_date, plp::Date *end_date); plp::DataRange *get_data(plp::Date *start_date, plp::Date *end_date); std::string get_device_id(); std::string get_device_type(); protected: std::string device_id; std::string device_dir; std::string device_ch_dir; w1::DeviceConfig *device_config; EnumSummaryCalculationType summary_calc_type; plp::Data *find_oldest_data(std::vector year_vector); plp::Data *find_newest_data(std::vector year_vector); plp::DataRange *get_summary(plp::Date *date_param, EnumSummaryCalculationType calc_type_param, EnumSummaryPeriod period_type_param); }; } #endif /* W1DATALIST_H_ */