|
|
|
#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);
|
|
|
|
}
|
|
|
|
}
|