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::map<std::string,
unsigned int > getColumnNamesMap(
void)
const;
78 std::set<std::string> getColumnStorageNames(
void)
const;
79 std::vector<std::string> getDefaultRowValues(
void)
const;
81 unsigned int getNumberOfRows(
void)
const;
82 unsigned int getNumberOfColumns(
void)
const;
83 const unsigned int getColUID(
void)
const;
84 const unsigned int getColStatus(
void)
const;
85 const unsigned int getColPriority(
void)
const;
91 bool isEntryInGroupCol(
const unsigned int& row,
92 const unsigned int& groupCol,
93 const std::string& groupNeedle,
94 std::set<std::string>* groupIDList = 0)
const;
98 std::set<std::string> getSetOfGroupIDs(
const std::string& childLinkIndex,
99 unsigned int row = -1)
const;
100 std::set<std::string> getSetOfGroupIDs(
const unsigned int& col,
101 unsigned int row = -1)
const;
102 bool isEntryInGroup(
const unsigned int& row,
103 const std::string& childLinkIndex,
104 const std::string& groupNeedle)
const;
105 const bool getChildLink(
const unsigned int& col,
107 std::pair<
unsigned int ,
108 unsigned int >& linkPair)
const;
109 const unsigned int getColLinkGroupID(
const std::string& childLinkIndex)
const;
110 void addRowToGroup(
const unsigned int& row,
111 const unsigned int& col,
112 const std::string& groupID);
113 bool removeRowFromGroup(
const unsigned int& row,
114 const unsigned int& col,
115 const std::string& groupID,
116 bool deleteRowIfNoGroupLeft =
false);
119 void getValue(T& value,
122 bool doConvertEnvironmentVariables =
true)
const;
126 void getValue(std::string& value,
129 bool doConvertEnvironmentVariables =
true)
const;
132 T validateValueForColumn(
const std::string& value,
134 bool doConvertEnvironmentVariables =
true)
const;
138 std::string validateValueForColumn(
const std::string& value,
140 bool convertEnvironmentVariables =
true)
const;
141 std::string getValueAsString(
unsigned int row,
143 bool convertEnvironmentVariables =
true)
const;
144 std::string getEscapedValueAsString(
unsigned int row,
146 bool convertEnvironmentVariables =
true)
const;
147 bool isURIEncodedCommentTheSame(
const std::string& comment)
const;
149 const DataView& getDataView(
void)
const;
150 const std::vector<TableViewColumnInfo>& getColumnsInfo(
void)
const;
151 std::vector<TableViewColumnInfo>* getColumnsInfoP(
void);
156 void setUniqueStorageIdentifier(
const std::string& storageUID);
157 void setTableName(
const std::string& name);
158 void setComment(
const std::string& comment);
159 void setURIEncodedComment(
const std::string& uriComment);
160 void setAuthor(
const std::string& author);
161 void setCreationTime(time_t t);
162 void setLastAccessTime(time_t t = time(0));
163 void setLooseColumnMatching(
bool setValue);
166 void setVersion(
const T& version);
168 void setValue(
const T& value,
unsigned int row,
unsigned int col);
169 void setValue(
const std::string& value,
unsigned int row,
unsigned int col);
170 void setValue(
const char* value,
unsigned int row,
unsigned int col);
174 void setValueAsString(
const std::string& value,
unsigned int row,
unsigned int col);
176 void resizeDataView(
unsigned int nRows,
unsigned int nCols);
178 const std::string& author =
"",
179 bool incrementUniqueData =
false,
180 std::string baseNameAutoUID =
"",
181 unsigned int rowToAdd =
183 void deleteRow(
int r);
190 iterator begin(
void) {
return theDataView_.begin(); }
191 iterator end(
void) {
return theDataView_.end(); }
192 const_iterator begin(
void)
const {
return theDataView_.begin(); }
193 const_iterator end(
void)
const {
return theDataView_.end(); }
195 void print(std::ostream& out = std::cout)
const;
196 void printJSON(std::ostream& out = std::cout)
const;
197 int fillFromJSON(
const std::string& json);
198 int fillFromCSV(
const std::string& data,
199 const int& dataOffset = 0,
200 const std::string& author =
"");
201 bool setURIEncodedValue(
const std::string& value,
202 const unsigned int& row,
203 const unsigned int& col,
204 const std::string& author =
"");
207 const unsigned int getOrInitColUID(
void);
208 const unsigned int getOrInitColStatus(
void);
209 const unsigned int getOrInitColPriority(
void);
215 std::string uniqueStorageIdentifier_;
218 std::string tableName_;
220 std::string comment_;
222 time_t creationTime_;
223 time_t lastAccessTime_;
225 unsigned int colUID_, colStatus_, colPriority_;
226 std::map<std::string, unsigned int>
229 bool fillWithLooseColumnMatching_;
230 unsigned int sourceColumnMismatchCount_, sourceColumnMissingCount_;
231 std::set<std::string> sourceColumnNames_;
233 std::vector<TableViewColumnInfo> columnsInfo_;
234 DataView theDataView_;
237 #include "otsdaq-core/TableCore/TableView.icc"