Method Convert.

--HG--
branch : feature
This commit is contained in:
dismine 2014-12-11 22:54:33 +02:00
parent 1d9fd7109d
commit 1d1b3e3670
4 changed files with 64 additions and 2 deletions

View File

@ -29,6 +29,8 @@
#include "vabstractconverter.h"
#include "exception/vexception.h"
#include <QFile>
//---------------------------------------------------------------------------------------------------------------------
VAbstractConverter::VAbstractConverter(const QString &fileName)
:VDomDocument(), ver(0x0), fileName(fileName)
@ -42,6 +44,28 @@ VAbstractConverter::VAbstractConverter(const QString &fileName)
VAbstractConverter::~VAbstractConverter()
{}
//---------------------------------------------------------------------------------------------------------------------
void VAbstractConverter::Convert() const
{
if (ver == MaxVer())
{
return;
}
QString error;
const QString backupFileName = fileName +".backup";
if (SafeCopy(fileName, backupFileName, error) == false)
{
const QString errorMsg(tr("Error creation backup file: %1.").arg(error));
throw VException(errorMsg);
}
ApplyPatches();
QFile file(backupFileName);
file.remove();
}
//---------------------------------------------------------------------------------------------------------------------
QString VAbstractConverter::GetVersionStr() const
{

View File

@ -38,8 +38,11 @@ public:
VAbstractConverter(const QString &fileName);
virtual ~VAbstractConverter();
void Convert() const;
protected:
int ver;
QString fileName;
int GetVersion(const QString &version) const;
void CheckVersion(int ver) const;
@ -51,10 +54,10 @@ protected:
virtual QString MaxVerStr() const =0;
virtual QString XSDSchema(int ver) const =0;
virtual void ApplyPatches() const =0;
private:
Q_DISABLE_COPY(VAbstractConverter)
QString fileName;
QString GetVersionStr() const;

View File

@ -29,6 +29,8 @@
#include "vpatternconverter.h"
#include "exception/vexception.h"
#include <QFile>
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");
@ -86,3 +88,35 @@ QString VPatternConverter::XSDSchema(int ver) const
}
}
}
//---------------------------------------------------------------------------------------------------------------------
void VPatternConverter::ApplyPatches() const
{
try
{
switch(ver)
{
case (0x000101):
break;
default:
break;
}
}
catch (VException &e)
{
QString error;
const QString backupFileName = fileName +".backup";
if (SafeCopy(backupFileName, fileName, error) == false)
{
const QString errorMsg(tr("Error restoring backup file: %1.").arg(error));
VException excep(errorMsg);
excep.AddMoreInformation(e.ErrorMessage());
throw excep;
}
QFile file(backupFileName);
file.remove();
throw e;
}
}

View File

@ -48,6 +48,7 @@ protected:
virtual QString MaxVerStr() const;
QString XSDSchema(int ver) const;
virtual void ApplyPatches() const;
private:
Q_DISABLE_COPY(VPatternConverter)