1 #include "otsdaq/TableCore/TableViewColumnInfo.h"
3 #include "otsdaq/Macros/CoutMacros.h"
4 #include "otsdaq/Macros/StringMacros.h"
10 #include "otsdaq/TableCore/TableView.h"
19 const std::string TableViewColumnInfo::TYPE_DATA =
"Data";
20 const std::string TableViewColumnInfo::TYPE_UNIQUE_DATA =
"UniqueData";
21 const std::string TableViewColumnInfo::TYPE_UNIQUE_GROUP_DATA =
"UniqueGroupData";
22 const std::string TableViewColumnInfo::TYPE_MULTILINE_DATA =
"MultilineData";
23 const std::string TableViewColumnInfo::TYPE_FIXED_CHOICE_DATA =
"FixedChoiceData";
24 const std::string TableViewColumnInfo::TYPE_BITMAP_DATA =
"BitMap";
26 const std::string TableViewColumnInfo::TYPE_ON_OFF =
"OnOff";
27 const std::string TableViewColumnInfo::TYPE_TRUE_FALSE =
"TrueFalse";
28 const std::string TableViewColumnInfo::TYPE_YES_NO =
"YesNo";
30 const std::string TableViewColumnInfo::TYPE_START_CHILD_LINK =
"ChildLink";
31 const std::string TableViewColumnInfo::TYPE_START_CHILD_LINK_UID =
"ChildLinkUID";
32 const std::string TableViewColumnInfo::TYPE_START_CHILD_LINK_GROUP_ID =
"ChildLinkGroupID";
33 const std::string TableViewColumnInfo::TYPE_START_GROUP_ID =
"GroupID";
34 const std::string TableViewColumnInfo::TYPE_COMMENT =
"Comment";
35 const std::string TableViewColumnInfo::TYPE_AUTHOR =
"Author";
36 const std::string TableViewColumnInfo::TYPE_TIMESTAMP =
"Timestamp";
40 const std::string TableViewColumnInfo::DATATYPE_STRING =
"STRING";
41 const std::string TableViewColumnInfo::DATATYPE_TIME =
"TIMESTAMP WITH TIMEZONE";
43 const std::string TableViewColumnInfo::TYPE_VALUE_YES =
"Yes";
44 const std::string TableViewColumnInfo::TYPE_VALUE_NO =
"No";
45 const std::string TableViewColumnInfo::TYPE_VALUE_TRUE =
"True";
46 const std::string TableViewColumnInfo::TYPE_VALUE_FALSE =
"False";
47 const std::string TableViewColumnInfo::TYPE_VALUE_ON =
"On";
48 const std::string TableViewColumnInfo::TYPE_VALUE_OFF =
"Off";
50 const std::string TableViewColumnInfo::DATATYPE_STRING_DEFAULT =
"DEFAULT";
51 const std::string TableViewColumnInfo::DATATYPE_COMMENT_DEFAULT =
"No comment.";
52 const std::string TableViewColumnInfo::DATATYPE_COMMENT_OLD_DEFAULT =
"No Comment";
53 const std::string TableViewColumnInfo::DATATYPE_BOOL_DEFAULT =
"0";
54 const std::string TableViewColumnInfo::DATATYPE_NUMBER_DEFAULT =
"0";
56 const std::string TableViewColumnInfo::DATATYPE_NUMBER_MIN_DEFAULT =
"";
57 const std::string TableViewColumnInfo::DATATYPE_NUMBER_MAX_DEFAULT =
"";
59 const std::string TableViewColumnInfo::DATATYPE_TIME_DEFAULT =
"0";
60 const std::string TableViewColumnInfo::DATATYPE_LINK_DEFAULT =
"NO_LINK";
62 const std::string TableViewColumnInfo::COL_NAME_STATUS =
"Status";
63 const std::string TableViewColumnInfo::COL_NAME_ENABLED =
"Enabled";
64 const std::string TableViewColumnInfo::COL_NAME_PRIORITY =
"Priority";
65 const std::string TableViewColumnInfo::COL_NAME_COMMENT =
"CommentDescription";
66 const std::string TableViewColumnInfo::COL_NAME_AUTHOR =
"Author";
67 const std::string TableViewColumnInfo::COL_NAME_CREATION =
"RecordInsertionTime";
75 TableViewColumnInfo::TableViewColumnInfo(
const std::string& type,
76 const std::string& name,
77 const std::string& storageName,
78 const std::string& dataType,
79 const std::string* defaultValue,
80 const std::string& dataChoicesCSV,
81 const std::string* minValue,
82 const std::string* maxValue,
83 std::string* capturedExceptionString)
86 , storageName_(storageName)
87 , dataType_( dataType ==
"VARCHAR2" ? DATATYPE_STRING
89 , defaultValue_(defaultValue ? *defaultValue
90 : getDefaultDefaultValue(type_, dataType_))
92 dataChoices_(getDataChoicesFromString(dataChoicesCSV))
93 , minValue_(minValue ? ((*minValue) ==
"null" ?
"" : (*minValue))
94 : getMinDefaultValue(dataType_))
97 maxValue_(maxValue ? ((*maxValue) ==
"null" ?
"" : (*maxValue))
98 : getMaxDefaultValue(dataType_))
101 bitMapInfoP_(nullptr)
106 if((type_ !=
TYPE_UID) && (type_ != TYPE_DATA) && (type_ != TYPE_UNIQUE_DATA) &&
107 (type_ != TYPE_UNIQUE_GROUP_DATA) && (type_ != TYPE_MULTILINE_DATA) &&
108 (type_ != TYPE_FIXED_CHOICE_DATA) && (type_ != TYPE_BITMAP_DATA) &&
109 (type_ != TYPE_ON_OFF) && (type_ != TYPE_TRUE_FALSE) && (type_ != TYPE_YES_NO) &&
110 (type_ != TYPE_COMMENT) && (type_ != TYPE_AUTHOR) && (type_ != TYPE_TIMESTAMP) &&
113 __SS__ <<
"The type for column " << name_ <<
" is " << type_
114 <<
", while the only accepted types are: " << TYPE_DATA <<
" "
115 << TYPE_UNIQUE_DATA <<
" " << TYPE_UNIQUE_GROUP_DATA <<
" "
116 << TYPE_MULTILINE_DATA <<
" " << TYPE_FIXED_CHOICE_DATA <<
" " <<
TYPE_UID
117 <<
" " << TYPE_ON_OFF <<
" " << TYPE_TRUE_FALSE <<
" " << TYPE_YES_NO
118 <<
" " << TYPE_START_CHILD_LINK <<
"-* " << TYPE_START_CHILD_LINK_UID
119 <<
"-* " << TYPE_START_CHILD_LINK_GROUP_ID <<
"-* " << TYPE_START_GROUP_ID
120 <<
"-* " << std::endl;
121 if(capturedExceptionString)
122 *capturedExceptionString = ss.str();
126 else if(capturedExceptionString)
127 *capturedExceptionString =
"";
131 for(
unsigned int i = 0; i < type_.size(); ++i)
132 if(!((type_[i] >=
'A' && type_[i] <=
'Z') ||
133 (type_[i] >=
'a' && type_[i] <=
'z') ||
134 (type_[i] >=
'0' && type_[i] <=
'9') ||
135 (type_[i] ==
'-' || type_[i] ==
'_' || type_[i] ==
'.' || type_[i] ==
' ')))
137 __SS__ <<
"The column type for column " << name_ <<
" is '" << type_
138 <<
"'. Column types must contain only letters, numbers, "
139 <<
"dashes, underscores, periods, and spaces." << std::endl;
140 if(capturedExceptionString)
141 *capturedExceptionString += ss.str();
148 (dataType_ != DATATYPE_TIME))
150 __SS__ <<
"The data type for column " << name_ <<
" is " << dataType_
152 << DATATYPE_STRING <<
" " << DATATYPE_TIME << std::endl;
153 if(capturedExceptionString)
154 *capturedExceptionString += ss.str();
159 if(type_ == TYPE_BITMAP_DATA && dataType_ != DATATYPE_STRING)
161 __SS__ <<
"The data type for column " << name_ <<
" is '" << dataType_
162 <<
"'. Bitmap columns must have a data type of '" << DATATYPE_STRING
163 <<
"'." << std::endl;
164 if(capturedExceptionString)
165 *capturedExceptionString += ss.str();
170 if(dataType_.size() == 0)
172 __SS__ <<
"The data type for column " << name_ <<
" is '" << dataType_
173 <<
"'. Data types must contain at least 1 character." << std::endl;
174 if(capturedExceptionString)
175 *capturedExceptionString += ss.str();
182 for(
unsigned int i = 0; i < dataType_.size(); ++i)
183 if(!((dataType_[i] >=
'A' && dataType_[i] <=
'Z') ||
184 (dataType_[i] >=
'a' && dataType_[i] <=
'z') ||
185 (dataType_[i] >=
'0' && dataType_[i] <=
'9') ||
186 (dataType_[i] ==
'-' || dataType_[i] ==
'_' || dataType_[i] ==
' ')))
188 __SS__ <<
"The data type for column " << name_ <<
" is '" << dataType_
189 <<
"'. Data types must contain only letters, numbers, "
190 <<
"dashes, underscores, and spaces." << std::endl;
191 if(capturedExceptionString)
192 *capturedExceptionString += ss.str();
197 if(name_.size() == 0)
199 __SS__ <<
"There is a column named " << name_
200 <<
"'. Column names must contain at least 1 character." << std::endl;
201 if(capturedExceptionString)
202 *capturedExceptionString += ss.str();
209 for(
unsigned int i = 0; i < name_.size(); ++i)
210 if(!((name_[i] >=
'A' && name_[i] <=
'Z') ||
211 (name_[i] >=
'a' && name_[i] <=
'z') ||
212 (name_[i] >=
'0' && name_[i] <=
'9') ||
213 (name_[i] ==
'-' || name_[i] ==
'_')))
215 __SS__ <<
"There is a column named " << name_
216 <<
"'. Column names must contain only letters, numbers, "
217 <<
"dashes, and underscores." << std::endl;
218 if(capturedExceptionString)
219 *capturedExceptionString += ss.str();
224 if(storageName_.size() == 0)
226 __SS__ <<
"The storage name for column " << name_ <<
" is '" << storageName_
227 <<
"'. Storage names must contain at least 1 character." << std::endl;
228 if(capturedExceptionString)
229 *capturedExceptionString += ss.str();
236 for(
unsigned int i = 0; i < storageName_.size(); ++i)
237 if(!((storageName_[i] >=
'A' && storageName_[i] <=
'Z') ||
238 (storageName_[i] >=
'0' && storageName_[i] <=
'9') ||
239 (storageName_[i] ==
'-' || storageName_[i] ==
'_')))
241 __SS__ <<
"The storage name for column " << name_ <<
" is '" << storageName_
242 <<
"'. Storage names must contain only capital letters, numbers,"
243 <<
"dashes, and underscores." << std::endl;
244 if(capturedExceptionString)
245 *capturedExceptionString += ss.str();
254 catch(std::runtime_error& e)
256 if(capturedExceptionString)
257 *capturedExceptionString += e.what();
264 std::vector<std::string> TableViewColumnInfo::getDataChoicesFromString(
265 const std::string& dataChoicesCSV)
const
267 std::vector<std::string> dataChoices;
271 std::istringstream f(dataChoicesCSV);
273 while(getline(f, s,
','))
282 void TableViewColumnInfo::extractBitMapInfo()
285 if(type_ == TYPE_BITMAP_DATA)
289 bitMapInfoP_ =
new BitMapInfo();
317 if(dataChoices_.size() < 16)
319 __SS__ <<
"The Bit-Map data parameters for column " << name_
320 <<
" should be size 16, but is size " << dataChoices_.size()
321 <<
". Bit-Map parameters should be e.g. rows, cols, cellBitSize, and "
323 "mid, max color, etc."
327 if(dataChoices_.size() > 18)
329 __SS__ <<
"The Bit-Map data parameters for column " << name_
330 <<
" should be size 18, but is size " << dataChoices_.size()
331 <<
". Bit-Map parameters should be e.g. rows, cols, cellBitSize, and "
333 "mid, max color, etc."
338 sscanf(dataChoices_[0].c_str(),
"%u", &(bitMapInfoP_->numOfRows_));
339 sscanf(dataChoices_[1].c_str(),
"%u", &(bitMapInfoP_->numOfColumns_));
340 sscanf(dataChoices_[2].c_str(),
"%u", &(bitMapInfoP_->cellBitSize_));
342 sscanf(dataChoices_[3].c_str(),
"%lu", &(bitMapInfoP_->minValue_));
343 sscanf(dataChoices_[4].c_str(),
"%lu", &(bitMapInfoP_->maxValue_));
344 sscanf(dataChoices_[5].c_str(),
"%lu", &(bitMapInfoP_->stepValue_));
346 bitMapInfoP_->aspectRatio_ = dataChoices_[6];
347 bitMapInfoP_->minColor_ = dataChoices_[7];
348 bitMapInfoP_->midColor_ = dataChoices_[8];
349 bitMapInfoP_->maxColor_ = dataChoices_[9];
350 bitMapInfoP_->absMinColor_ = dataChoices_[10];
351 bitMapInfoP_->absMaxColor_ = dataChoices_[11];
353 bitMapInfoP_->rowsAscending_ = dataChoices_[12] ==
"Yes" ? 1 : 0;
354 bitMapInfoP_->colsAscending_ = dataChoices_[13] ==
"Yes" ? 1 : 0;
355 bitMapInfoP_->snakeRows_ = dataChoices_[14] ==
"Yes" ? 1 : 0;
356 bitMapInfoP_->snakeCols_ = dataChoices_[15] ==
"Yes" ? 1 : 0;
358 bitMapInfoP_->snakeCols_ = dataChoices_[15] ==
"Yes" ? 1 : 0;
359 if(dataChoices_.size() > 16)
360 bitMapInfoP_->floatingPoint_ = dataChoices_[16] ==
"Yes" ? 1 : 0;
361 if(dataChoices_.size() > 17)
362 bitMapInfoP_->mapToStrings_ = dataChoices_[17];
364 if(bitMapInfoP_->floatingPoint_ &&
365 bitMapInfoP_->cellBitSize_ != 32)
367 __SS__ <<
"Illegal Bit-Map data parameters for column " << name_
368 <<
" - if floating point is allowed, the Bit-field size must be 32."
373 if(bitMapInfoP_->mapToStrings_ !=
"" &&
374 bitMapInfoP_->mapToStrings_ != TableViewColumnInfo::DATATYPE_STRING_DEFAULT)
376 if(bitMapInfoP_->floatingPoint_)
378 __SS__ <<
"Illegal Bit-Map data parameters for column " << name_
379 <<
" - if floating point is allowed, then Value Map to Strings "
380 "must be empty or set to 'DEFAULT.' "
381 <<
"Please disable floating point or clear the Value Map to "
386 bitMapInfoP_->mapsToStrings_ =
true;
389 bitMapInfoP_->mapsToStrings_ =
false;
395 TableViewColumnInfo::TableViewColumnInfo(
void) {}
398 TableViewColumnInfo::TableViewColumnInfo(
402 , storageName_(c.storageName_)
403 , dataType_(c.dataType_)
404 , defaultValue_(c.defaultValue_)
405 , dataChoices_(c.dataChoices_)
406 , minValue_(c.minValue_)
407 , maxValue_(c.maxValue_)
408 , bitMapInfoP_(nullptr)
418 __COUT__ <<
"OPERATOR= COPY CONSTRUCTOR " << std::endl;
423 __COUT__ <<
"OPERATOR= COPY CONSTRUCTOR CANNOT BE USED - TableViewColumnInfo is a "
424 "const class. SO YOUR CODE IS WRONG! You should probably instantiate "
425 "and initialize another TableViewColumnInfo, rather than assigning to "
426 "an existing TableViewColumnInfo. Crashing now."
428 __COUT__ <<
"OPERATOR= COPY CONSTRUCTOR CANNOT BE USED - TableViewColumnInfo is a "
429 "const class. SO YOUR CODE IS WRONG! You should probably instantiate "
430 "and initialize another TableViewColumnInfo, rather than assigning to "
431 "an existing TableViewColumnInfo. Crashing now."
433 __COUT__ <<
"OPERATOR= COPY CONSTRUCTOR CANNOT BE USED - TableViewColumnInfo is a "
434 "const class. SO YOUR CODE IS WRONG! You should probably instantiate "
435 "and initialize another TableViewColumnInfo, rather than assigning to "
436 "an existing TableViewColumnInfo. Crashing now."
438 __COUT__ <<
"OPERATOR= COPY CONSTRUCTOR CANNOT BE USED - TableViewColumnInfo is a "
439 "const class. SO YOUR CODE IS WRONG! You should probably instantiate "
440 "and initialize another TableViewColumnInfo, rather than assigning to "
441 "an existing TableViewColumnInfo. Crashing now."
443 __COUT__ <<
"OPERATOR= COPY CONSTRUCTOR CANNOT BE USED - TableViewColumnInfo is a "
444 "const class. SO YOUR CODE IS WRONG! You should probably instantiate "
445 "and initialize another TableViewColumnInfo, rather than assigning to "
446 "an existing TableViewColumnInfo. Crashing now."
467 TableViewColumnInfo::~TableViewColumnInfo(
void)
474 const std::string& TableViewColumnInfo::getType(
void)
const {
return type_; }
480 return defaultValue_;
482 const std::string& TableViewColumnInfo::getMinValue(
void)
const {
return minValue_; }
483 const std::string& TableViewColumnInfo::getMaxValue(
void)
const {
return maxValue_; }
489 const std::string& type,
const std::string& dataType)
491 if(dataType == TableViewColumnInfo::DATATYPE_STRING)
493 if(type == TableViewColumnInfo::TYPE_ON_OFF ||
494 type == TableViewColumnInfo::TYPE_TRUE_FALSE ||
495 type == TableViewColumnInfo::TYPE_YES_NO)
497 TableViewColumnInfo::DATATYPE_BOOL_DEFAULT);
499 return (TableViewColumnInfo::DATATYPE_LINK_DEFAULT);
500 else if(type == TableViewColumnInfo::TYPE_COMMENT)
501 return (TableViewColumnInfo::DATATYPE_COMMENT_DEFAULT);
503 return (TableViewColumnInfo::DATATYPE_STRING_DEFAULT);
506 return (TableViewColumnInfo::DATATYPE_NUMBER_DEFAULT);
507 else if(dataType == TableViewColumnInfo::DATATYPE_TIME)
508 return (TableViewColumnInfo::DATATYPE_TIME_DEFAULT);
511 __SS__ <<
"\tUnrecognized View data type: " << dataType << std::endl;
512 __COUT_ERR__ <<
"\n" << ss.str();
521 if(dataType == TableViewColumnInfo::DATATYPE_STRING)
523 DATATYPE_NUMBER_MIN_DEFAULT);
527 return (TableViewColumnInfo::DATATYPE_NUMBER_MIN_DEFAULT);
530 else if(dataType == TableViewColumnInfo::DATATYPE_TIME)
531 return (TableViewColumnInfo::DATATYPE_NUMBER_MIN_DEFAULT);
534 __SS__ <<
"\tUnrecognized View data type: " << dataType << std::endl;
535 __COUT_ERR__ <<
"\n" << ss.str();
544 if(dataType == TableViewColumnInfo::DATATYPE_STRING)
545 return (TableViewColumnInfo::DATATYPE_NUMBER_MAX_DEFAULT);
549 return (TableViewColumnInfo::DATATYPE_NUMBER_MAX_DEFAULT);
551 else if(dataType == TableViewColumnInfo::DATATYPE_TIME)
552 return (TableViewColumnInfo::DATATYPE_NUMBER_MAX_DEFAULT);
555 __SS__ <<
"\tUnrecognized View data type: " << dataType << std::endl;
556 __COUT_ERR__ <<
"\n" << ss.str();
562 std::vector<std::string> TableViewColumnInfo::getAllTypesForGUI(
void)
564 std::vector<std::string> all;
565 all.push_back(TYPE_DATA);
566 all.push_back(TYPE_UNIQUE_DATA);
567 all.push_back(TYPE_UNIQUE_GROUP_DATA);
568 all.push_back(TYPE_FIXED_CHOICE_DATA);
569 all.push_back(TYPE_MULTILINE_DATA);
570 all.push_back(TYPE_BITMAP_DATA);
571 all.push_back(TYPE_ON_OFF);
572 all.push_back(TYPE_TRUE_FALSE);
573 all.push_back(TYPE_YES_NO);
574 all.push_back(TYPE_START_CHILD_LINK_UID);
575 all.push_back(TYPE_START_CHILD_LINK_GROUP_ID);
576 all.push_back(TYPE_START_CHILD_LINK);
577 all.push_back(TYPE_START_GROUP_ID);
582 std::vector<std::string> TableViewColumnInfo::getAllDataTypesForGUI(
void)
584 std::vector<std::string> all;
585 all.push_back(DATATYPE_STRING);
587 all.push_back(DATATYPE_TIME);
593 std::map<std::pair<std::string, std::string>, std::string>
596 std::map<std::pair<std::string, std::string>, std::string> all;
598 DATATYPE_NUMBER_DEFAULT;
599 all[std::pair<std::string, std::string>(DATATYPE_TIME,
"*")] = DATATYPE_TIME_DEFAULT;
601 all[std::pair<std::string, std::string>(DATATYPE_STRING, TYPE_ON_OFF)] =
602 DATATYPE_BOOL_DEFAULT;
603 all[std::pair<std::string, std::string>(DATATYPE_STRING, TYPE_TRUE_FALSE)] =
604 DATATYPE_BOOL_DEFAULT;
605 all[std::pair<std::string, std::string>(DATATYPE_STRING, TYPE_YES_NO)] =
606 DATATYPE_BOOL_DEFAULT;
608 all[std::pair<std::string, std::string>(DATATYPE_STRING, TYPE_START_CHILD_LINK)] =
609 DATATYPE_LINK_DEFAULT;
610 all[std::pair<std::string, std::string>(DATATYPE_STRING,
"*")] =
611 DATATYPE_STRING_DEFAULT;
619 return (type_ == TYPE_ON_OFF || type_ == TYPE_TRUE_FALSE || type_ == TYPE_YES_NO);
630 const std::string& TableViewColumnInfo::getName(
void)
const {
return name_; }
633 const std::string& TableViewColumnInfo::getStorageName(
void)
const
639 const std::string& TableViewColumnInfo::getDataType(
void)
const {
return dataType_; }
642 const std::vector<std::string>& TableViewColumnInfo::getDataChoices(
void)
const
653 return *bitMapInfoP_;
657 __SS__ <<
"getBitMapInfo request for non-BitMap column of type: " << getType()
659 __COUT_ERR__ <<
"\n" << ss.str();
670 return (type.find(TYPE_START_CHILD_LINK) == 0 &&
671 type.length() > TYPE_START_CHILD_LINK.length() &&
672 type[TYPE_START_CHILD_LINK.length()] ==
'-');
681 return (type_.find(TYPE_START_CHILD_LINK) == 0 &&
682 type_.length() > TYPE_START_CHILD_LINK.length() &&
683 type_[TYPE_START_CHILD_LINK.length()] ==
'-');
692 return (type_.find(TYPE_START_CHILD_LINK_UID) == 0 &&
693 type_.length() > TYPE_START_CHILD_LINK_UID.length() &&
694 type_[TYPE_START_CHILD_LINK_UID.length()] ==
'-');
703 return (type_.find(TYPE_START_CHILD_LINK_GROUP_ID) == 0 &&
704 type_.length() > TYPE_START_CHILD_LINK_GROUP_ID.length() &&
705 type_[TYPE_START_CHILD_LINK_GROUP_ID.length()] ==
'-');
714 return (type_.find(TYPE_START_GROUP_ID) == 0 &&
715 type_.length() > TYPE_START_GROUP_ID.length() &&
716 type_[TYPE_START_GROUP_ID.length()] ==
'-');
729 return type_.substr(TYPE_START_CHILD_LINK.length() + 1);
731 return type_.substr(TYPE_START_CHILD_LINK_UID.length() + 1);
733 return type_.substr(TYPE_START_CHILD_LINK_GROUP_ID.length() + 1);
735 return type_.substr(TYPE_START_GROUP_ID.length() + 1);
739 << (
"Requesting a Link Index from a column that is not a child link member!")
741 __COUT_ERR__ << ss.str();
bool isChildLinkUID(void) const
static const std::string DATATYPE_NUMBER
static std::map< std::pair< std::string, std::string >, std::string > getAllDefaultsForGUI(void)
map of datatype,type to default value
std::string getChildLinkIndex(void) const
getChildLinkIndex
bool isChildLink(void) const
TableViewColumnInfo & operator=(const TableViewColumnInfo &c)
assignment operator because of bitmap pointer
bool isUID(void) const
isUID
bool isGroupID(void) const
static const std::string & getDefaultDefaultValue(const std::string &type, const std::string &dataType)
static const std::string TYPE_UID
NOTE: Do NOT put '-' in static const TYPEs because it will mess up javascript handling in the web gui...
static const std::string & getMaxDefaultValue(const std::string &dataType)
function to get max default value
const BitMapInfo & getBitMapInfo(void) const
uses dataChoices CSV fields if type is TYPE_BITMAP_DATA
static const std::string & getMinDefaultValue(const std::string &dataType)
function to get min default value
bool isBoolType(void) const
TODO check if min and max values need a function called getallminmaxforgui or something like that for...
bool isNumberDataType(void) const
isNumberDataType
bool isChildLinkGroupID(void) const
const std::string & getDefaultValue(void) const
returns the configued default value value for this particular column
defines used also by OtsConfigurationWizardSupervisor
static std::string decodeURIComponent(const std::string &data)
static std::string stackTrace(void)
< uses dataChoices CSV fields if type is TYPE_BITMAP_DATA