commit
2d4d6bbc85
@ -0,0 +1,66 @@ |
||||
#include "UniboardSankoreTransition.h" |
||||
#include "core/UBSettings.h" |
||||
#include "frameworks/UBDesktopServices.h" |
||||
#include "frameworks/UBFileSystemUtils.h" |
||||
|
||||
UniboardSankoreTransition::UniboardSankoreTransition(QObject *parent) : |
||||
QObject(parent) |
||||
{ |
||||
mUniboardSourceDirectory = UBDesktopServices::storageLocation(QDesktopServices::DataLocation); |
||||
mUniboardSourceDirectory.replace("Sankore", "Mnemis/Uniboard"); |
||||
} |
||||
|
||||
bool UniboardSankoreTransition::backupUniboardDirectory() |
||||
{ |
||||
bool result = false; |
||||
QString destinationDirectory = UBDesktopServices::storageLocation(QDesktopServices::DesktopLocation); |
||||
if(QFileInfo(destinationDirectory).exists() && QFileInfo(mUniboardSourceDirectory).exists()){ |
||||
if(!destinationDirectory.endsWith("/")) destinationDirectory += "/"; |
||||
result = UBFileSystemUtils::copyDir(mUniboardSourceDirectory, destinationDirectory + QFileInfo(mUniboardSourceDirectory).fileName() + "BackupData/"); |
||||
if(result) documentTransition(); |
||||
} |
||||
|
||||
return result; |
||||
} |
||||
|
||||
|
||||
void UniboardSankoreTransition::rollbackDocumentsTransition(QFileInfoList& fileInfoList) |
||||
{ |
||||
QFileInfoList::iterator fileInfo; |
||||
for (fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end(); fileInfo += 1) { |
||||
if (fileInfo->isDir() && fileInfo->fileName().startsWith("Uniboard Document ")){ |
||||
QString sankoreDocumentName = fileInfo->fileName(); |
||||
sankoreDocumentName.replace("Uniboard","Sankore"); |
||||
QString sankoreDocumentDirectoryPath = UBSettings::uniboardDocumentDirectory() + "/" + sankoreDocumentName; |
||||
if (QFileInfo(sankoreDocumentDirectoryPath).exists()){ |
||||
UBFileSystemUtils::deleteDir(sankoreDocumentDirectoryPath); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
void UniboardSankoreTransition::documentTransition() |
||||
{ |
||||
QString uniboardDocumentDirectory = mUniboardSourceDirectory + "/document"; |
||||
QString sankoreDocumentDirectory = UBSettings::uniboardDocumentDirectory(); |
||||
|
||||
QFileInfoList fileInfoList = UBFileSystemUtils::allElementsInDirectory(uniboardDocumentDirectory); |
||||
|
||||
QFileInfoList::iterator fileInfo; |
||||
bool result = true; |
||||
for (fileInfo = fileInfoList.begin(); fileInfo != fileInfoList.end() && result; fileInfo += 1) { |
||||
if (fileInfo->isDir() && fileInfo->fileName().startsWith("Uniboard Document ")){ |
||||
QString sankoreDocumentName = fileInfo->fileName(); |
||||
sankoreDocumentName.replace("Uniboard","Sankore"); |
||||
result = UBFileSystemUtils::copyDir(fileInfo->filePath(),sankoreDocumentDirectory + "/" + sankoreDocumentName); |
||||
} |
||||
} |
||||
|
||||
if (!result){ |
||||
qWarning() << "The transaction has failed during the copy of the " + fileInfo->filePath() + " document."; |
||||
rollbackDocumentsTransition(fileInfoList); |
||||
} |
||||
else { |
||||
UBFileSystemUtils::deleteDir(mUniboardSourceDirectory); |
||||
} |
||||
} |
@ -0,0 +1,27 @@ |
||||
#ifndef UNIBOARDSANKORETRANSITION_H |
||||
#define UNIBOARDSANKORETRANSITION_H |
||||
|
||||
#include <QObject> |
||||
#include <QFileInfo> |
||||
|
||||
class UniboardSankoreTransition : public QObject |
||||
{ |
||||
Q_OBJECT |
||||
public: |
||||
explicit UniboardSankoreTransition(QObject *parent = 0); |
||||
bool backupUniboardDirectory(); |
||||
void documentTransition(); |
||||
|
||||
private: |
||||
void rollbackDocumentsTransition(QFileInfoList& fileInfoList); |
||||
|
||||
protected: |
||||
QString mUniboardSourceDirectory; |
||||
|
||||
signals: |
||||
|
||||
public slots: |
||||
|
||||
}; |
||||
|
||||
#endif // UNIBOARDSANKORETRANSITION_H
|
Loading…
Reference in new issue