32namespace XMLConfigurationFiles
39typedef std::map< std::string, std::string >
MSS;
42typedef std::map< std::string, std::deque<std::string > >
MSDS;
45typedef std::map< std::string, std::map<std::string,std::string > >
MSMSS;
51 friend std::ostream&
operator<<(std::ostream& os,
67 std::string m_groupName;
79GroupConfigurationStructurePrivate::GroupConfigurationStructurePrivate(
80 const QJsonObject& group) :
87 m_groupName = group[
"name"].toString().toStdString();
89 for(
const QString& key: group.keys())
94 auto val = group[key];
98 m_params[key.toStdString()] = val.toString().toStdString();
101 else if (val.isArray())
103 m_lists[key.toStdString()] = {};
104 auto list = val.toArray();
105 for (
const auto& item: list)
107 m_lists[key.toStdString()].push_back(item.toString().toStdString());
111 else if (val.isObject())
113 m_maps[key.toStdString()] = {};
114 auto map = val.toObject();
115 for(
const QString& mapKey: map.keys())
117 m_maps[key.toStdString()][mapKey.toStdString()] =
118 map[mapKey].toString().toStdString();
124GroupConfigurationStructurePrivate::GroupConfigurationStructurePrivate(
125 const std::string& name) :
133GroupConfigurationStructurePrivate::GroupConfigurationStructurePrivate(
134 const GroupConfigurationStructurePrivate& group) :
135 m_params(group.m_params),
136 m_lists(group.m_lists),
137 m_attributes(group.m_attributes),
138 m_maps(group.m_maps),
139 m_groupName(group.m_groupName)
142GroupConfigurationStructurePrivate& GroupConfigurationStructurePrivate::operator=(
143 const GroupConfigurationStructurePrivate& group)
145 m_params=group.m_params;
146 m_lists=group.m_lists;
147 m_attributes=group.m_attributes;
149 m_groupName=group.m_groupName;
153GroupConfigurationStructurePrivate::~GroupConfigurationStructurePrivate()
194 return m_d->m_groupName;
199 const std::string& key)
201 MSS::iterator it=m_d->m_attributes.find(key);
202 if (it == m_d->m_attributes.end())
209 MSS::iterator it = m_d->m_params.find(key);
210 if (it == m_d->m_params.end())
213 return ((*it).second);
219 MSS::iterator it = m_d->m_params.find(key);
220 if (it == m_d->m_params.end())
258 if (str==
"yes" || str==
"true" || str==
"1") {
275 const std::string& key)
306 const std::string& key)
308 auto it = m_d->m_lists.find(key);
309 if (it == m_d->m_lists.end())
310 throw NoSuchList(m_d->m_groupName+
"["+key+
"]");
315 const std::string& key)
317 MSMSS::iterator it = m_d->m_maps.find(key);
318 if (it == m_d->m_maps.end())
321 LWARN <<
"GroupConfigurationStructure::getMapAtKey No such map"
322 << m_d->m_groupName+
"["+key+
"]";
323 throw NoSuchMap(m_d->m_groupName+
"["+key+
"]");
339{
return m_d->m_params;}
341const std::map<std::string,std::map<std::string,std::string> >&
343{
return m_d->m_maps; }
345const std::map<std::string,std::deque<std::string> >&
347{
return m_d->m_lists; }
350 const std::string& value)
352 m_d->m_attributes[key]=value;
358 m_d->m_params.insert(make_pair(key,value));
363 m_d->m_lists.insert(make_pair(listName,deque<string>()));
367 const string& listName)
369 MSDS::iterator it = m_d->m_lists.find(listName);
370 if (it == m_d->m_lists.end())
371 throw NoSuchList(m_d->m_groupName+
"["+listName+
"]");
378 (*it).second.push_back(item);
383 m_d->m_maps.insert(make_pair(mapName,
MSS()));
387 const std::string& mapName,
const std::string& key,
const std::string& value)
389 MSMSS::iterator it=m_d->m_maps.find(mapName);
390 if (it == m_d->m_maps.end())
391 throw NoSuchMap(m_d->m_groupName+
"["+mapName+
"]");
392 (it->second)[key]=value;
428 return os <<
"Group : " << dgcs.m_d->m_groupName << endl
429 <<
"Attributes : " << dgcs.m_d->m_attributes << endl
430 <<
"Params : " << dgcs.m_d->m_params << endl
431 <<
"Lists : " << dgcs.m_d->m_lists << endl
432 <<
"Maps : " << dgcs.m_d->m_maps << endl;
437 for (
auto it = mss.begin(); it != mss.end(); it++)
439 os << (*it).first <<
" : " << (*it).second << endl;
446 for (MSDS::const_iterator it = msds.begin(); it != msds.end(); it++)
448 os << (*it).first <<
" : [" ;
449 const deque<string>& ds = (*it).second;
450 for (
auto dit = ds.begin(); dit != ds.end(); dit++)
452 os << (*dit) <<
", ";
461 for (MSMSS::const_iterator it=msmss.begin();it!=msmss.end();it++)
463 os << it->first <<
" { ";
464 const MSS& mss=it->second;
465 for (
auto it2=mss.begin();it2!=mss.end();it2++)
467 os <<
"[" << it2->first <<
"->" << it2->second <<
"]";
friend std::ostream & operator<<(std::ostream &os, const GroupConfigurationStructure &dgcs)
std::string & getParamsValueAtKey(const std::string &key)
std::string & getAttribute(const std::string &key)
const std::map< std::string, std::deque< std::string > > & getLists()
void addListNamed(const std::string &listName)
const std::map< std::string, std::string > & getParams()
std::deque< std::string > & getListsValueAtKey(const std::string &key)
double getDoubleParameter(const std::string &key)
std::string getStringParameter(const std::string &key)
std::map< std::string, std::string > & getMapAtKey(const std::string &key)
void addMap(const std::string &mapName)
virtual ~GroupConfigurationStructure()
const std::map< std::string, std::map< std::string, std::string > > & getMaps()
GroupConfigurationStructure()
void addEntryInMap(const std::string &mapName, const std::string &key, const std::string &value)
void addAttribute(const std::string &key, const std::string &value)
bool getBooleanParameter(const std::string &key)
void addParamValuePair(const std::string &key, const std::string &value)
void addItemInListNamed(const std::string &item, const std::string &listName)
GroupConfigurationStructure & operator=(const GroupConfigurationStructure &group)
uint32_t getIntParameter(const std::string &key)
return a message when an 'attribute' was not found
return a message when a 'list' was not found
return a message when a 'map' was not found
return a message when a 'param' was not found
This is a SAX document handler the configuration files.
originally detectGroupConfigurationStructure.h in detectlibraries
std::map< std::string, std::string > MSS
The objects of this class hold the configuration of one module in the form of a list of group names a...
std::ostream & operator<<(std::ostream &os, const ConfigurationStructure &conf)
std::map< std::string, std::deque< std::string > > MSDS
std::map< std::string, std::map< std::string, std::string > > MSMSS
launch exception related to the configuration file parsing