diff --git a/src/app/mainwindow.cpp b/src/app/mainwindow.cpp index 63219db05..5f88d877c 100644 --- a/src/app/mainwindow.cpp +++ b/src/app/mainwindow.cpp @@ -2351,7 +2351,7 @@ void MainWindow::LoadPattern(const QString &fileName) qApp->setOpeningPattern();//Begin opening file try { - VDomDocument::ValidateXML(VPatternConverter::CurrentSchema(), fileName); + VDomDocument::ValidateXML(VPatternConverter::CurrentSchema, fileName); doc->setXMLContent(fileName); qApp->setPatternUnit(doc->MUnit()); diff --git a/src/libs/ifc/xml/vabstractconverter.cpp b/src/libs/ifc/xml/vabstractconverter.cpp index 66b964aa2..b9980e384 100644 --- a/src/libs/ifc/xml/vabstractconverter.cpp +++ b/src/libs/ifc/xml/vabstractconverter.cpp @@ -31,12 +31,11 @@ //--------------------------------------------------------------------------------------------------------------------- VAbstractConverter::VAbstractConverter(const QString &fileName) - :VDomDocument(), fileName(fileName) + :VDomDocument(), ver(0x0), fileName(fileName) { this->setXMLContent(fileName); const QString version = GetVersionStr(); - int ver = GetVersion(version); - CheckVersion(ver); + ver = GetVersion(version); } //--------------------------------------------------------------------------------------------------------------------- diff --git a/src/libs/ifc/xml/vabstractconverter.h b/src/libs/ifc/xml/vabstractconverter.h index 70cfd9879..56e41143d 100644 --- a/src/libs/ifc/xml/vabstractconverter.h +++ b/src/libs/ifc/xml/vabstractconverter.h @@ -39,7 +39,10 @@ public: virtual ~VAbstractConverter(); protected: - int GetVersion(const QString &version) const; + int ver; + + int GetVersion(const QString &version) const; + void CheckVersion(int ver) const; virtual int MinVer() const =0; virtual int MaxVer() const =0; @@ -47,6 +50,8 @@ protected: virtual QString MinVerStr() const =0; virtual QString MaxVerStr() const =0; + virtual QString XSDSchema(int ver) const =0; + private: Q_DISABLE_COPY(VAbstractConverter) QString fileName; @@ -54,7 +59,6 @@ private: QString GetVersionStr() const; void ValidateVersion(const QString &version) const; - void CheckVersion(int ver) const; }; #endif // VABSTRACTCONVERTER_H diff --git a/src/libs/ifc/xml/vpatternconverter.cpp b/src/libs/ifc/xml/vpatternconverter.cpp index 76bc6d9d6..aef1a7d49 100644 --- a/src/libs/ifc/xml/vpatternconverter.cpp +++ b/src/libs/ifc/xml/vpatternconverter.cpp @@ -27,26 +27,23 @@ *************************************************************************/ #include "vpatternconverter.h" +#include "exception/vexception.h" const QString VPatternConverter::PatternMinVerStr = QStringLiteral("0.1.1"); const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.1.1"); +const QString VPatternConverter::CurrentSchema = QStringLiteral("://schema/pattern/v0.1.1.xsd"); //--------------------------------------------------------------------------------------------------------------------- VPatternConverter::VPatternConverter(const QString &fileName) :VAbstractConverter(fileName) { + QString schema = XSDSchema(ver); } //--------------------------------------------------------------------------------------------------------------------- VPatternConverter::~VPatternConverter() {} -//--------------------------------------------------------------------------------------------------------------------- -QString VPatternConverter::CurrentSchema() -{ - return QStringLiteral("://schema/pattern/v0.1.1.xsd"); -} - //--------------------------------------------------------------------------------------------------------------------- int VPatternConverter::MinVer() const { @@ -70,3 +67,21 @@ QString VPatternConverter::MaxVerStr() const { return PatternMaxVerStr; } + +//--------------------------------------------------------------------------------------------------------------------- +QString VPatternConverter::XSDSchema(int ver) const +{ + CheckVersion(ver); + + switch(ver) + { + case (0x000101): + return CurrentSchema; + default: + { + const QString errorMsg(tr("Unexpected version \"%1\".").arg(ver, 0, 16)); + throw VException(errorMsg); + break; + } + } +} diff --git a/src/libs/ifc/xml/vpatternconverter.h b/src/libs/ifc/xml/vpatternconverter.h index abd7bb203..d9ae74e7b 100644 --- a/src/libs/ifc/xml/vpatternconverter.h +++ b/src/libs/ifc/xml/vpatternconverter.h @@ -37,8 +37,8 @@ public: VPatternConverter(const QString &fileName); virtual ~VPatternConverter(); - static QString CurrentSchema(); static const QString PatternMaxVerStr; + static const QString CurrentSchema; protected: virtual int MinVer() const; @@ -46,6 +46,9 @@ protected: virtual QString MinVerStr() const; virtual QString MaxVerStr() const; + + QString XSDSchema(int ver) const; + private: Q_DISABLE_COPY(VPatternConverter) static const QString PatternMinVerStr;