diff --git a/src/libs/ifc/xml/vabstractconverter.cpp b/src/libs/ifc/xml/vabstractconverter.cpp index 0b9d2c220..27aab8c92 100644 --- a/src/libs/ifc/xml/vabstractconverter.cpp +++ b/src/libs/ifc/xml/vabstractconverter.cpp @@ -29,12 +29,16 @@ #include "vabstractconverter.h" #include "exception/vexception.h" +#include + //--------------------------------------------------------------------------------------------------------------------- VAbstractConverter::VAbstractConverter(const QString &fileName) :VDomDocument(), fileName(fileName) { this->setXMLContent(fileName); QString version = GetVersionStr(); + ValidateVersion(version); + } //--------------------------------------------------------------------------------------------------------------------- @@ -64,3 +68,23 @@ QString VAbstractConverter::GetVersionStr() const } return QString(QStringLiteral("0.0.0")); } + +//--------------------------------------------------------------------------------------------------------------------- +void VAbstractConverter::ValidateVersion(QString &versionStr) const +{ + int pos = 0; + QRegExp rx(QStringLiteral("^(0|([1-9][0-9]*)).(0|([1-9][0-9]*)).(0|([1-9][0-9]*))$")); + QRegExpValidator v(rx, 0); + + if (v.validate(versionStr, pos) != QValidator::Acceptable) + { + const QString errorMsg(tr("Version \"%1\" invalid.").arg(versionStr)); + throw VException(errorMsg); + } + + if (versionStr == QLatin1String("0.0.0")) + { + const QString errorMsg(tr("Version \"0.0.0\" invalid.")); + throw VException(errorMsg); + } +} diff --git a/src/libs/ifc/xml/vabstractconverter.h b/src/libs/ifc/xml/vabstractconverter.h index 3886b042e..ffd921451 100644 --- a/src/libs/ifc/xml/vabstractconverter.h +++ b/src/libs/ifc/xml/vabstractconverter.h @@ -43,6 +43,7 @@ private: QString fileName; QString GetVersionStr() const; + void ValidateVersion(QString &versionStr) const; }; #endif // VABSTRACTCONVERTER_H