From 4e7a8f2af91d8bdbd69f2253fbee160ecc781db0 2017-12-20 13:18:18 From: mperrinel Date: 2017-12-20 13:18:18 Subject: [PATCH] Addd save methods. Fix bug with work repository suffix handling --- diff --git a/core/src/Catalogue/CatalogueController.cpp b/core/src/Catalogue/CatalogueController.cpp index c7c4bdc..c4526fb 100644 --- a/core/src/Catalogue/CatalogueController.cpp +++ b/core/src/Catalogue/CatalogueController.cpp @@ -22,8 +22,8 @@ Q_LOGGING_CATEGORY(LOG_CatalogueController, "CatalogueController") namespace { -static QString REPOSITORY_WORK_SUFFIX = QString{"work"}; -static QString REPOSITORY_TRASH_SUFFIX = QString{"trash"}; +static QString REPOSITORY_WORK_SUFFIX = QString{"_work"}; +static QString REPOSITORY_TRASH_SUFFIX = QString{"_trash"}; } class CatalogueController::CatalogueControllerPrivate { @@ -40,6 +40,10 @@ public: void copyDBtoDB(const QString &dbFrom, const QString &dbTo); QString toWorkRepository(QString repository); QString toSyncRepository(QString repository); + void savAllDB(); + + void saveEvent(std::shared_ptr event, bool persist = true); + void saveCatalogue(std::shared_ptr catalogue, bool persist = true); }; CatalogueController::CatalogueController(QObject *parent) @@ -132,7 +136,7 @@ CatalogueController::retrieveEventsFromCatalogue(std::shared_ptr ca void CatalogueController::updateEvent(std::shared_ptr event) { - event->setRepository(impl->toSyncRepository(event->getRepository())); + event->setRepository(impl->toWorkRepository(event->getRepository())); impl->m_CatalogueDao.updateEvent(*event); } @@ -171,7 +175,7 @@ void CatalogueController::addEvent(std::shared_ptr event) void CatalogueController::saveEvent(std::shared_ptr event) { - impl->m_CatalogueDao.moveEvent(*event, impl->toSyncRepository(event->getRepository()), true); + impl->saveEvent(event, true); } std::list > @@ -189,7 +193,7 @@ CatalogueController::retrieveCatalogues(const QString &repository) const void CatalogueController::updateCatalogue(std::shared_ptr catalogue) { - catalogue->setRepository(impl->toSyncRepository(catalogue->getRepository())); + catalogue->setRepository(impl->toWorkRepository(catalogue->getRepository())); impl->m_CatalogueDao.updateCatalogue(*catalogue); } @@ -205,8 +209,7 @@ void CatalogueController::removeCatalogue(std::shared_ptr catalogue void CatalogueController::saveCatalogue(std::shared_ptr catalogue) { - impl->m_CatalogueDao.moveCatalogue(*catalogue, - impl->toSyncRepository(catalogue->getRepository()), true); + impl->saveCatalogue(catalogue, true); } void CatalogueController::saveAll() @@ -215,15 +218,17 @@ void CatalogueController::saveAll() // Save Event auto events = this->retrieveEvents(repository); for (auto event : events) { - this->saveEvent(event); + impl->saveEvent(event, false); } // Save Catalogue auto catalogues = this->retrieveCatalogues(repository); for (auto catalogue : catalogues) { - this->saveCatalogue(catalogue); + impl->saveCatalogue(catalogue, false); } } + + impl->savAllDB(); } void CatalogueController::initialize() @@ -290,7 +295,7 @@ QString CatalogueController::CatalogueControllerPrivate::toWorkRepository(QStrin { auto syncRepository = toSyncRepository(repository); - return QString("%1_%2").arg(syncRepository, REPOSITORY_WORK_SUFFIX); + return QString("%1%2").arg(syncRepository, REPOSITORY_WORK_SUFFIX); } QString CatalogueController::CatalogueControllerPrivate::toSyncRepository(QString repository) @@ -304,3 +309,30 @@ QString CatalogueController::CatalogueControllerPrivate::toSyncRepository(QStrin } return syncRepository; } + +void CatalogueController::CatalogueControllerPrivate::savAllDB() +{ + for (auto repository : m_RepositoryList) { + auto defaultRepositoryLocation + = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); + m_CatalogueDao.saveDB(defaultRepositoryLocation, repository); + } +} + +void CatalogueController::CatalogueControllerPrivate::saveEvent(std::shared_ptr event, + bool persist) +{ + m_CatalogueDao.moveEvent(*event, toSyncRepository(event->getRepository()), true); + if (persist) { + savAllDB(); + } +} + +void CatalogueController::CatalogueControllerPrivate::saveCatalogue( + std::shared_ptr catalogue, bool persist) +{ + m_CatalogueDao.moveCatalogue(*catalogue, toSyncRepository(catalogue->getRepository()), true); + if (persist) { + savAllDB(); + } +}