// Copyrigth Xtooltech @ 2023- All rights reserved.(LXH)

#ifndef __STATIONDATAREPORTRECORD_HPP__
#define __STATIONDATAREPORTRECORD_HPP__

#include "ReportRecord.hpp"
#include "StationDataCategory.hpp"

namespace otx {
namespace jidu {

class StationDataReportRecord:virtual public ReportRecord {

public:
  StationDataReportRecord();
  StationDataReportRecord(const StationDataReportRecord &) = default;
  StationDataReportRecord &operator=(const StationDataReportRecord &) = default;
  virtual ~StationDataReportRecord();

private:
  std::string mOverallResult;
  std::vector<StationDataCategory *> mTestCategories;
  // 用户生成单个block的上报记录，这个集合中的元素存在于某个category中。
  // 用于检索，不用于管理对象，每个block都由category对象管理。
  std::vector<StationDataBlock *> mTestData;

public:
  virtual std::string getOverallResult();
  virtual void setOverallResult(const std::string &v);

  virtual std::vector<StationDataBlock *> *getTestData();
  virtual void addStationDataBlock(StationDataBlock *block);

  virtual std::vector<StationDataCategory *> *getTestCategories();
  virtual StationDataCategory *getTestCategoryById(const std::string &v);
  virtual StationDataCategory *newCategory();

  virtual std::string toJsonString() override;
};

} // namespace jidu
} // namespace otx

#endif /* __STATIONDATAREPORTRECORD_HPP__ */
