Check version number.
--HG-- branch : feature
This commit is contained in:
parent
fb8849f798
commit
1c4af06343
|
@ -37,6 +37,7 @@
|
||||||
#include "../libs/ifc/exception/vexceptionconversionerror.h"
|
#include "../libs/ifc/exception/vexceptionconversionerror.h"
|
||||||
#include "../libs/ifc/exception/vexceptionemptyparameter.h"
|
#include "../libs/ifc/exception/vexceptionemptyparameter.h"
|
||||||
#include "../libs/ifc/exception/vexceptionundo.h"
|
#include "../libs/ifc/exception/vexceptionundo.h"
|
||||||
|
#include "../libs/ifc/xml/vpatternconverter.h"
|
||||||
#include "../core/undoevent.h"
|
#include "../core/undoevent.h"
|
||||||
#include "../core/vsettings.h"
|
#include "../core/vsettings.h"
|
||||||
#include "vstandardmeasurements.h"
|
#include "vstandardmeasurements.h"
|
||||||
|
@ -146,7 +147,7 @@ void VPattern::CreateEmptyFile(const QString &tablePath)
|
||||||
patternElement.appendChild(createComment("Valentina pattern format."));
|
patternElement.appendChild(createComment("Valentina pattern format."));
|
||||||
|
|
||||||
QDomElement version = createElement(TagVersion);
|
QDomElement version = createElement(TagVersion);
|
||||||
QDomText newNodeText = createTextNode(VAL_STR_VERSION);
|
QDomText newNodeText = createTextNode(VPatternConverter::PatternMaxVerStr);
|
||||||
version.appendChild(newNodeText);
|
version.appendChild(newNodeText);
|
||||||
patternElement.appendChild(version);
|
patternElement.appendChild(version);
|
||||||
|
|
||||||
|
@ -2431,13 +2432,13 @@ void VPattern::SetNotes(const QString &text)
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QString VPattern::GetVersion() const
|
QString VPattern::GetVersion() const
|
||||||
{
|
{
|
||||||
return UniqueTagText(TagVersion, VAL_STR_VERSION);
|
return UniqueTagText(TagVersion, VPatternConverter::PatternMaxVerStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VPattern::SetVersion()
|
void VPattern::SetVersion()
|
||||||
{
|
{
|
||||||
setTagText(TagVersion, VAL_STR_VERSION);
|
setTagText(TagVersion, VPatternConverter::PatternMaxVerStr);
|
||||||
emit patternChanged(false);
|
emit patternChanged(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,16 +39,6 @@ class VMainGraphicsScene;
|
||||||
enum class Document : char { LiteParse, LitePPParse, FullParse };
|
enum class Document : char { LiteParse, LitePPParse, FullParse };
|
||||||
enum class LabelType : char {NewPatternPiece, NewLabel};
|
enum class LabelType : char {NewPatternPiece, NewLabel};
|
||||||
|
|
||||||
/*
|
|
||||||
VAL_VERSION is (major << 16) + (minor << 8) + patch.
|
|
||||||
*/
|
|
||||||
// version without patch part
|
|
||||||
#define VAL_MIN_VERSION 0x000100
|
|
||||||
// max support version of format
|
|
||||||
#define VAL_VERSION 0x000101
|
|
||||||
|
|
||||||
#define VAL_STR_VERSION "0.1.1"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief The VPattern class working with pattern file.
|
* @brief The VPattern class working with pattern file.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -29,17 +29,20 @@
|
||||||
#include "vabstractconverter.h"
|
#include "vabstractconverter.h"
|
||||||
#include "exception/vexception.h"
|
#include "exception/vexception.h"
|
||||||
|
|
||||||
#include <QRegExpValidator>
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VAbstractConverter::VAbstractConverter(const QString &fileName)
|
VAbstractConverter::VAbstractConverter(const QString &fileName)
|
||||||
:VDomDocument(), fileName(fileName)
|
:VDomDocument(), fileName(fileName)
|
||||||
{
|
{
|
||||||
this->setXMLContent(fileName);
|
this->setXMLContent(fileName);
|
||||||
QString version = GetVersionStr();
|
const QString version = GetVersionStr();
|
||||||
int ver = GetVersion(version);
|
int ver = GetVersion(version);
|
||||||
|
CheckVersion(ver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
VAbstractConverter::~VAbstractConverter()
|
||||||
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QString VAbstractConverter::GetVersionStr() const
|
QString VAbstractConverter::GetVersionStr() const
|
||||||
{
|
{
|
||||||
|
@ -69,7 +72,7 @@ QString VAbstractConverter::GetVersionStr() const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
int VAbstractConverter::GetVersion(QString &version) const
|
int VAbstractConverter::GetVersion(const QString &version) const
|
||||||
{
|
{
|
||||||
ValidateVersion(version);
|
ValidateVersion(version);
|
||||||
|
|
||||||
|
@ -100,13 +103,11 @@ int VAbstractConverter::GetVersion(QString &version) const
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
void VAbstractConverter::ValidateVersion(QString &version) const
|
void VAbstractConverter::ValidateVersion(const QString &version) const
|
||||||
{
|
{
|
||||||
int pos = 0;
|
|
||||||
QRegExp rx(QStringLiteral("^(0|([1-9][0-9]*)).(0|([1-9][0-9]*)).(0|([1-9][0-9]*))$"));
|
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(version, pos) != QValidator::Acceptable)
|
if (rx.exactMatch(version) == false)
|
||||||
{
|
{
|
||||||
const QString errorMsg(tr("Version \"%1\" invalid.").arg(version));
|
const QString errorMsg(tr("Version \"%1\" invalid.").arg(version));
|
||||||
throw VException(errorMsg);
|
throw VException(errorMsg);
|
||||||
|
@ -118,3 +119,19 @@ void VAbstractConverter::ValidateVersion(QString &version) const
|
||||||
throw VException(errorMsg);
|
throw VException(errorMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
void VAbstractConverter::CheckVersion(int ver) const
|
||||||
|
{
|
||||||
|
if (ver < MinVer())
|
||||||
|
{
|
||||||
|
const QString errorMsg(tr("Invalid version. Minimum supported version is %1").arg(MinVerStr()));
|
||||||
|
throw VException(errorMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ver > MaxVer())
|
||||||
|
{
|
||||||
|
const QString errorMsg(tr("Invalid version. Maximum supported version is %1").arg(MaxVerStr()));
|
||||||
|
throw VException(errorMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -36,16 +36,25 @@ class VAbstractConverter :public VDomDocument
|
||||||
|
|
||||||
public:
|
public:
|
||||||
VAbstractConverter(const QString &fileName);
|
VAbstractConverter(const QString &fileName);
|
||||||
virtual ~VAbstractConverter(){}
|
virtual ~VAbstractConverter();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
int GetVersion(const QString &version) const;
|
||||||
|
|
||||||
|
virtual int MinVer() const =0;
|
||||||
|
virtual int MaxVer() const =0;
|
||||||
|
|
||||||
|
virtual QString MinVerStr() const =0;
|
||||||
|
virtual QString MaxVerStr() const =0;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(VAbstractConverter)
|
Q_DISABLE_COPY(VAbstractConverter)
|
||||||
QString fileName;
|
QString fileName;
|
||||||
|
|
||||||
QString GetVersionStr() const;
|
QString GetVersionStr() const;
|
||||||
int GetVersion(QString &version) const;
|
|
||||||
|
|
||||||
void ValidateVersion(QString &version) const;
|
void ValidateVersion(const QString &version) const;
|
||||||
|
void CheckVersion(int ver) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VABSTRACTCONVERTER_H
|
#endif // VABSTRACTCONVERTER_H
|
||||||
|
|
|
@ -28,14 +28,45 @@
|
||||||
|
|
||||||
#include "vpatternconverter.h"
|
#include "vpatternconverter.h"
|
||||||
|
|
||||||
|
const QString VPatternConverter::PatternMinVerStr = QStringLiteral("0.1.1");
|
||||||
|
const QString VPatternConverter::PatternMaxVerStr = QStringLiteral("0.1.1");
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
VPatternConverter::VPatternConverter(const QString &fileName)
|
VPatternConverter::VPatternConverter(const QString &fileName)
|
||||||
:VAbstractConverter(fileName)
|
:VAbstractConverter(fileName)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
VPatternConverter::~VPatternConverter()
|
||||||
|
{}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
QString VPatternConverter::CurrentSchema()
|
QString VPatternConverter::CurrentSchema()
|
||||||
{
|
{
|
||||||
return QStringLiteral("://schema/pattern/v0.1.1.xsd");
|
return QStringLiteral("://schema/pattern/v0.1.1.xsd");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
int VPatternConverter::MinVer() const
|
||||||
|
{
|
||||||
|
return GetVersion(PatternMinVerStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
int VPatternConverter::MaxVer() const
|
||||||
|
{
|
||||||
|
return GetVersion(PatternMaxVerStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString VPatternConverter::MinVerStr() const
|
||||||
|
{
|
||||||
|
return PatternMinVerStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------------------------------------------
|
||||||
|
QString VPatternConverter::MaxVerStr() const
|
||||||
|
{
|
||||||
|
return PatternMaxVerStr;
|
||||||
|
}
|
||||||
|
|
|
@ -35,8 +35,20 @@ class VPatternConverter : public VAbstractConverter
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
VPatternConverter(const QString &fileName);
|
VPatternConverter(const QString &fileName);
|
||||||
|
virtual ~VPatternConverter();
|
||||||
|
|
||||||
static QString CurrentSchema();
|
static QString CurrentSchema();
|
||||||
|
static const QString PatternMaxVerStr;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual int MinVer() const;
|
||||||
|
virtual int MaxVer() const;
|
||||||
|
|
||||||
|
virtual QString MinVerStr() const;
|
||||||
|
virtual QString MaxVerStr() const;
|
||||||
|
private:
|
||||||
|
Q_DISABLE_COPY(VPatternConverter)
|
||||||
|
static const QString PatternMinVerStr;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VPATTERNCONVERTER_H
|
#endif // VPATTERNCONVERTER_H
|
||||||
|
|
Loading…
Reference in New Issue
Block a user