+
+bool StoreDay::data_day_scan_days_in_month(string dev_id_param,
+ Date *new_date,
+ Date *max_date) {
+ bool ret_val;
+ string fname;
+
+ ret_val = false;
+ while((ret_val == false) &&
+ (new_date->before(max_date))) {
+ new_date->next_day();
+ fname = get_file_name(dev_id_param, new_date);
+ if (exist(fname, false) == true) {
+ ret_val = true;
+ break;
+ }
+ if (new_date->is_last_day_of_month() == true) {
+ break;
+ }
+ }
+ return ret_val;
+}
+
+bool StoreDay::data_day_scan_month_in_year(string dev_id_param,
+ Date *new_date,
+ Date *max_date) {
+ bool ret_val;
+
+ ret_val = false;
+ // next scan months dir existence under the first year
+ while((ret_val == false) &&
+ (new_date->before(max_date))) {
+ new_date->next_month();
+ if (exist_in_month(dev_id_param,
+ new_date,
+ false)) {
+ ret_val = data_day_scan_days_in_month(dev_id_param,
+ new_date,
+ max_date);
+ if (ret_val == true)
+ break;
+ }
+ if (new_date->month == 12)
+ break;
+ }
+ return ret_val;
+}
+
+bool StoreDay::data_day_scan_years(string dev_id_param,
+ Date *new_date,
+ Date *max_date) {
+ bool ret_val;
+
+ ret_val = false;
+ while((ret_val == false) &&
+ (new_date->before(max_date))) {
+ new_date->next_year();
+ if (exist_in_year(dev_id_param,
+ new_date,
+ false)) {
+ ret_val = data_day_scan_month_in_year(dev_id_param,
+ new_date,
+ max_date);
+ if (ret_val == true)
+ break;
+ }
+ }
+ return ret_val;
+}
+
+bool StoreDay::get_next_date_with_data(std::string dev_id_param,
+ plp::Date *next_date,
+ plp::Date *max_date) {
+ bool ret_val;
+ Date *new_date;
+ string fname;
+ string dirname;
+
+ new_date = next_date->clone();
+ // scan first dates in current month
+ ret_val = data_day_scan_days_in_month(dev_id_param,
+ new_date,
+ max_date);
+ if (ret_val == false) {
+ ret_val = data_day_scan_month_in_year(dev_id_param,
+ new_date,
+ max_date);
+ if (ret_val == false) {
+ ret_val = data_day_scan_years(dev_id_param,
+ new_date,
+ max_date);
+ }
+ }
+ if (ret_val == true)
+ new_date->copy(next_date);
+ else
+ max_date->copy(next_date);
+ delete(new_date);
+ return ret_val;
+}