1 #ifndef _ots_TableView_h_
2 #define _ots_TableView_h_
4 #include "otsdaq-core/Macros/CoutMacros.h"
5 #include "otsdaq-core/Macros/StringMacros.h"
6 #include "otsdaq-core/MessageFacility/MessageFacility.h"
14 #include "otsdaq-core/TableCore/TableVersion.h"
15 #include "otsdaq-core/TableCore/TableViewColumnInfo.h"
22 static const unsigned int INVALID;
23 typedef std::vector<std::vector<std::string> > DataView;
24 typedef DataView::iterator iterator;
25 typedef DataView::const_iterator const_iterator;
33 const std::string& author);
34 unsigned int copyRows(
const std::string& author,
36 unsigned int srcOffsetRow = 0,
37 unsigned int srcRowsToCopy = (
unsigned int)-1,
38 unsigned int destOffsetRow = (
unsigned int)-1,
39 bool generateUniqueDataColumns =
false);
42 unsigned int findRow(
unsigned int col,
44 unsigned int offsetRow = 0)
const;
45 unsigned int findRow(
unsigned int col,
46 const std::string& value,
47 unsigned int offsetRow = 0)
const;
50 unsigned int findRowInGroup(
unsigned int col,
52 const std::string& groupId,
53 const std::string& childLinkIndex,
54 unsigned int offsetRow = 0)
const;
55 unsigned int findRowInGroup(
unsigned int col,
56 const std::string& value,
57 const std::string& groupId,
58 const std::string& childLinkIndex,
59 unsigned int offsetRow = 0)
const;
60 unsigned int findCol(
const std::string& name)
const;
61 unsigned int findColByType(
const std::string& type,
int startingCol = 0)
const;
64 const std::string& getUniqueStorageIdentifier(
void)
const;
65 const std::string& getTableName(
void)
const;
67 const std::string& getComment(
void)
const;
68 const std::string& getAuthor(
void)
const;
69 const time_t& getCreationTime(
void)
const;
70 const time_t& getLastAccessTime(
void)
const;
71 const bool& getLooseColumnMatching(
void)
const;
72 const unsigned int getDataColumnSize(
void)
const;
73 const unsigned int& getSourceColumnMismatch(
void)
const;
74 const unsigned int& getSourceColumnMissing(
void)
const;
75 const std::set<std::string>& getSourceColumnNames(
void)
const;
76 std::set<std::string> getColumnNames(
void)
const;
77 std::set<std::string> getColumnStorageNames(
void)
const;
78 std::vector<std::string> getDefaultRowValues(
void)
const;
80 unsigned int getNumberOfRows(
void)
const;
81 unsigned int getNumberOfColumns(
void)
const;
82 const unsigned int getColUID(
void)
const;
83 const unsigned int getColStatus(
void)
const;
84 const unsigned int getColPriority(
void)
const;
90 bool isEntryInGroupCol(
const unsigned int& row,
91 const unsigned int& groupCol,
92 const std::string& groupNeedle,
93 std::set<std::string>* groupIDList = 0)
const;
97 std::set<std::string> getSetOfGroupIDs(
const std::string& childLinkIndex,
98 unsigned int row = -1)
const;
99 std::set<std::string> getSetOfGroupIDs(
const unsigned int& col,
100 unsigned int row = -1)
const;
101 bool isEntryInGroup(
const unsigned int& row,
102 const std::string& childLinkIndex,
103 const std::string& groupNeedle)
const;
104 const bool getChildLink(
const unsigned int& col,
106 std::pair<
unsigned int ,
107 unsigned int >& linkPair)
const;
108 const unsigned int getColLinkGroupID(
const std::string& childLinkIndex)
const;
109 void addRowToGroup(
const unsigned int& row,
110 const unsigned int& col,
111 const std::string& groupID);
112 bool removeRowFromGroup(
const unsigned int& row,
113 const unsigned int& col,
114 const std::string& groupID,
115 bool deleteRowIfNoGroupLeft =
false);
118 void getValue(T& value,
121 bool doConvertEnvironmentVariables =
true)
const;
125 void getValue(std::string& value,
128 bool doConvertEnvironmentVariables =
true)
const;
131 T validateValueForColumn(
const std::string& value,
133 bool doConvertEnvironmentVariables =
true)
const;
137 std::string validateValueForColumn(
const std::string& value,
139 bool convertEnvironmentVariables =
true)
const;
140 std::string getValueAsString(
unsigned int row,
142 bool convertEnvironmentVariables =
true)
const;
143 std::string getEscapedValueAsString(
unsigned int row,
145 bool convertEnvironmentVariables =
true)
const;
146 bool isURIEncodedCommentTheSame(
const std::string& comment)
const;
148 const DataView& getDataView(
void)
const;
149 const std::vector<TableViewColumnInfo>& getColumnsInfo(
void)
const;
150 std::vector<TableViewColumnInfo>* getColumnsInfoP(
void);
155 void setUniqueStorageIdentifier(
const std::string& storageUID);
156 void setTableName(
const std::string& name);
157 void setComment(
const std::string& comment);
158 void setURIEncodedComment(
const std::string& uriComment);
159 void setAuthor(
const std::string& author);
160 void setCreationTime(time_t t);
161 void setLastAccessTime(time_t t = time(0));
162 void setLooseColumnMatching(
bool setValue);
165 void setVersion(
const T& version);
167 void setValue(
const T& value,
unsigned int row,
unsigned int col);
168 void setValue(
const std::string& value,
unsigned int row,
unsigned int col);
169 void setValue(
const char* value,
unsigned int row,
unsigned int col);
173 void setValueAsString(
const std::string& value,
unsigned int row,
unsigned int col);
175 void resizeDataView(
unsigned int nRows,
unsigned int nCols);
177 const std::string& author =
"",
178 bool incrementUniqueData =
false,
179 std::string baseNameAutoUID =
"",
180 unsigned int rowToAdd =
182 void deleteRow(
int r);
189 iterator begin(
void) {
return theDataView_.begin(); }
190 iterator end(
void) {
return theDataView_.end(); }
191 const_iterator begin(
void)
const {
return theDataView_.begin(); }
192 const_iterator end(
void)
const {
return theDataView_.end(); }
194 void print(std::ostream& out = std::cout)
const;
195 void printJSON(std::ostream& out = std::cout)
const;
196 int fillFromJSON(
const std::string& json);
197 int fillFromCSV(
const std::string& data,
198 const int& dataOffset = 0,
199 const std::string& author =
"");
200 bool setURIEncodedValue(
const std::string& value,
201 const unsigned int& row,
202 const unsigned int& col,
203 const std::string& author =
"");
206 const unsigned int getOrInitColUID(
void);
207 const unsigned int getOrInitColStatus(
void);
208 const unsigned int getOrInitColPriority(
void);
214 std::string uniqueStorageIdentifier_;
217 std::string tableName_;
219 std::string comment_;
221 time_t creationTime_;
222 time_t lastAccessTime_;
224 unsigned int colUID_, colStatus_, colPriority_;
225 std::map<std::string, unsigned int>
228 bool fillWithLooseColumnMatching_;
229 unsigned int sourceColumnMismatchCount_, sourceColumnMissingCount_;
230 std::set<std::string> sourceColumnNames_;
232 std::vector<TableViewColumnInfo> columnsInfo_;
233 DataView theDataView_;
236 #include "otsdaq-core/TableCore/TableView.icc"