Commit cade6379 authored by Don Gagne's avatar Don Gagne

Reset meta data if dup is found

parent f46ff35e
...@@ -119,6 +119,7 @@ void PX4ParameterLoader::loadParameterFactMetaData(void) ...@@ -119,6 +119,7 @@ void PX4ParameterLoader::loadParameterFactMetaData(void)
QString factGroup; QString factGroup;
FactMetaData* metaData = NULL; FactMetaData* metaData = NULL;
int xmlState = XmlStateNone; int xmlState = XmlStateNone;
bool badMetaData = true;
while (!xml.atEnd()) { while (!xml.atEnd()) {
if (xml.isStartElement()) { if (xml.isStartElement()) {
...@@ -215,15 +216,18 @@ void PX4ParameterLoader::loadParameterFactMetaData(void) ...@@ -215,15 +216,18 @@ void PX4ParameterLoader::loadParameterFactMetaData(void)
} }
// Now that we know type we can create meta data object and add it to the system // Now that we know type we can create meta data object and add it to the system
metaData = new FactMetaData(foundType); metaData = new FactMetaData(foundType);
Q_CHECK_PTR(metaData); Q_CHECK_PTR(metaData);
metaData->setGroup(factGroup);
if (_mapParameterName2FactMetaData.contains(name)) { if (_mapParameterName2FactMetaData.contains(name)) {
// We can't trust the default value since we have dups // We can't trust the meta dafa since we have dups
qDebug() << "Duplicate parameter found:" << name; qDebug() << "Duplicate parameter found:" << name;
_mapParameterName2FactMetaData[name]->clearDefaultValue(); badMetaData = true;
// Reset to default meta data
_mapParameterName2FactMetaData[name] = metaData;
} else { } else {
_mapParameterName2FactMetaData[name] = metaData; _mapParameterName2FactMetaData[name] = metaData;
metaData->setGroup(factGroup);
if (xml.attributes().hasAttribute("default")) { if (xml.attributes().hasAttribute("default")) {
bool convertOk; bool convertOk;
...@@ -244,6 +248,7 @@ void PX4ParameterLoader::loadParameterFactMetaData(void) ...@@ -244,6 +248,7 @@ void PX4ParameterLoader::loadParameterFactMetaData(void)
return; return;
} }
if (!badMetaData) {
if (elementName == "short_desc") { if (elementName == "short_desc") {
Q_ASSERT(metaData); Q_ASSERT(metaData);
QString text = xml.readElementText(); QString text = xml.readElementText();
...@@ -292,12 +297,14 @@ void PX4ParameterLoader::loadParameterFactMetaData(void) ...@@ -292,12 +297,14 @@ void PX4ParameterLoader::loadParameterFactMetaData(void)
qDebug() << "Unknown element in XML: " << elementName; qDebug() << "Unknown element in XML: " << elementName;
} }
} }
}
} else if (xml.isEndElement()) { } else if (xml.isEndElement()) {
QString elementName = xml.name().toString(); QString elementName = xml.name().toString();
if (elementName == "parameter") { if (elementName == "parameter") {
// Done loading this one parameter // Done loading this one parameter
metaData = NULL; metaData = NULL;
badMetaData = false;
xmlState = XmlStateFoundGroup; xmlState = XmlStateFoundGroup;
} else if (elementName == "group") { } else if (elementName == "group") {
xmlState = XmlStateFoundVersion; xmlState = XmlStateFoundVersion;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment