7#include <bsoncxx/builder/basic/array.hpp>
14EntityResultTableData<T>::EntityResultTableData(
ot::UID ID, EntityBase *parent, EntityObserver *obs, ModelState *ms, ClassFactoryHandler* factory,
const std::string &owner) :
15 EntityBase(
ID, parent, obs, ms, factory, owner)
21EntityResultTableData<T>::~EntityResultTableData()
26bool EntityResultTableData<T>::getEntityBox(
double &xmin,
double &xmax,
double &ymin,
double &ymax,
double &zmin,
double &zmax)
32void EntityResultTableData<T>::StoreToDataBase(
void)
34 EntityBase::StoreToDataBase();
38void EntityResultTableData<T>::AddStorageData(bsoncxx::builder::basic::document &storage)
41 EntityBase::AddStorageData(storage);
43 auto headerArray = bsoncxx::builder::basic::array();
45 for (
auto &text : header)
47 headerArray.append(text);
50 auto dataArray = bsoncxx::builder::basic::array();
52 for (
unsigned int iRow = 0; iRow < getNumberOfRows(); iRow++)
54 for (
unsigned int iCol = 0; iCol < getNumberOfColumns(); iCol++)
56 dataArray.append(getValue(iRow, iCol));
63 bsoncxx::builder::basic::kvp(
"NumberColums", (
int) getNumberOfColumns()),
64 bsoncxx::builder::basic::kvp(
"NumberRows", (
int) getNumberOfRows()),
65 bsoncxx::builder::basic::kvp(
"Header", headerArray),
66 bsoncxx::builder::basic::kvp(
"Data", dataArray)
71void EntityResultTableData<T>::readSpecificDataFromDataBase(bsoncxx::document::view &doc_view, std::map<ot::UID, EntityBase *> &entityMap)
74 EntityBase::readSpecificDataFromDataBase(doc_view, entityMap);
81 unsigned int numberCols = doc_view[
"NumberColums"].get_int32();
82 unsigned int numberRows = doc_view[
"NumberRows"].get_int32();
84 setNumberOfColumns(numberCols);
85 setNumberOfRows(numberRows);
87 auto headerArray = doc_view[
"Header"].get_array().value;
88 auto dataArray = doc_view[
"Data"].get_array().value;
90 unsigned int iCol = 0;
91 for (
const auto& text : headerArray)
93 setHeaderText(iCol,
text.get_utf8().value.data());
97 unsigned int iRow = 0;
100 for (
const auto& data : dataArray)
106 if (iCol == numberCols)
117void EntityResultTableData<T>::removeChild(EntityBase *child)
119 EntityBase::removeChild(child);
123void EntityResultTableData<T>::setNumberOfColumns(uint64_t cols)
125 header.resize(cols,
"");
127 for (
unsigned int iRow = 0; iRow < getNumberOfRows(); iRow++)
129 data[iRow].resize(cols);
134void EntityResultTableData<T>::setNumberOfRows(uint64_t rows)
136 uint64_t oldRows = getNumberOfRows();
142 for (uint64_t iRow = oldRows; iRow < rows; iRow++)
144 data[iRow].resize(getNumberOfColumns());
150void EntityResultTableData<T>::setHeaderText(
unsigned int col,
const std::string &text)
152 assert(col < getNumberOfColumns());
157void EntityResultTableData<T>::setValue(
unsigned int row,
unsigned int col, T
value)
159 assert(row < getNumberOfRows());
160 assert(col < getNumberOfColumns());
162 data[row][col] =
value;
165void EntityResultTableData<T>::setRow(
unsigned int row, std::vector<T>&
value)
167 if (row >= getNumberOfRows())
169 throw std::runtime_error(
"Row index out of range.");
171 if (
value.size() > getNumberOfColumns())
173 throw std::runtime_error(
"Vector has too many entries for the set number of columns.");
177 for (i; i <
value.size(); i++)
179 data[row][i] =
value[i];
181 while (i < getNumberOfColumns())
189void EntityResultTableData<T>::setColumn(
unsigned int column, std::vector<T>&
value)
191 if (column >= getNumberOfColumns())
193 throw std::runtime_error(
"Column index out of range.");
195 if (
value.size() >= getNumberOfRows())
197 throw std::runtime_error(
"Vector has too many entries for the set number of rows.");
200 for (
int i = 0; i <
value.size(); i++)
202 data[i][column] =
value[i];
208uint64_t EntityResultTableData<T>::getNumberOfRows(
void)
210 return (data.size());
214uint64_t EntityResultTableData<T>::getNumberOfColumns(
void)
216 return (header.size());
220std::string EntityResultTableData<T>::getHeaderText(
unsigned int col)
222 assert(col < getNumberOfColumns());
227T EntityResultTableData<T>::getValue(
unsigned int row,
unsigned int col)
229 assert(row < getNumberOfRows());
230 assert(col < getNumberOfColumns());
232 return data[row][col];
bsoncxx::types::value value
Definition DocumentManager.h:16
Template for getting a type name. Some type names are not system independent, hence the need to creat...
Definition BsonArrayTypeGetterWrapper.h:9
static std::string getTypeName()
Definition TemplateTypeName.hpp:9
UICORE_API_EXPORT QString text(UID _checkBoxUID)
Definition uiAPI.cpp:387
int ID
The ID datatype used for items.
Definition globalDataTypes.h:68
unsigned long UID
Unique identifier (32 bit unsigned integer)
Definition CoreTypes.h:27