From c593e3570d95407cefd949a551e570fe9a3762d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Sat, 28 Apr 2018 10:24:10 +0200 Subject: [PATCH] Add the ability to update libraries to new versions in the headless server It checks the libraries on the start up. It will block the app until everyting it is ready. C --- YACReaderLibraryServer/libraries_updater.cpp | 39 ++++++++++++++++++++ YACReaderLibraryServer/libraries_updater.h | 13 +++++++ YACReaderLibraryServer/main.cpp | 6 +++ 3 files changed, 58 insertions(+) create mode 100644 YACReaderLibraryServer/libraries_updater.cpp create mode 100644 YACReaderLibraryServer/libraries_updater.h diff --git a/YACReaderLibraryServer/libraries_updater.cpp b/YACReaderLibraryServer/libraries_updater.cpp new file mode 100644 index 00000000..8e2ac597 --- /dev/null +++ b/YACReaderLibraryServer/libraries_updater.cpp @@ -0,0 +1,39 @@ +#include "libraries_updater.h" + +#include "yacreader_libraries.h" +#include "data_base_management.h" + + + +LibrariesUpdater::LibrariesUpdater() +{ + +} + +void LibrariesUpdater::updateIfNeeded() +{ + YACReaderLibraries libraries; + + libraries.load(); + + foreach(QString name, libraries.getNames()) { + QString path = libraries.getPath(name) + "/.yacreaderlibrary"; + + QDir d; + + QString dbVersion; + if(d.exists(path) && d.exists(path+"/library.ydb") && (dbVersion = DataBaseManagement::checkValidDB(path+"/library.ydb")) != "") + { + int comparation = DataBaseManagement::compareVersions(dbVersion,VERSION); + + if(comparation < 0) + { + bool updated = DataBaseManagement::updateToCurrentVersion(path); + if(!updated) { + //TODO log error + } + + } + } + } +} diff --git a/YACReaderLibraryServer/libraries_updater.h b/YACReaderLibraryServer/libraries_updater.h new file mode 100644 index 00000000..63e11393 --- /dev/null +++ b/YACReaderLibraryServer/libraries_updater.h @@ -0,0 +1,13 @@ +#ifndef LIBRARIES_UPDATER_H +#define LIBRARIES_UPDATER_H + + +class LibrariesUpdater +{ +public: + LibrariesUpdater(); + + void updateIfNeeded(); +}; + +#endif // LIBRARIES_UPDATER_H diff --git a/YACReaderLibraryServer/main.cpp b/YACReaderLibraryServer/main.cpp index 81e9cd80..48cc07ae 100644 --- a/YACReaderLibraryServer/main.cpp +++ b/YACReaderLibraryServer/main.cpp @@ -11,6 +11,8 @@ #include "yacreader_libraries.h" #include "yacreader_local_server.h" +#include "libraries_updater.h" + #include "console_ui_library_creator.h" #include @@ -136,6 +138,10 @@ int main( int argc, char ** argv ) } QLOG_INFO() << "YACReaderLibrary starting"; + //Update libraries to now versions + LibrariesUpdater updater; + updater.updateIfNeeded(); + YACReaderLocalServer * localServer = new YACReaderLocalServer(); int ret = app.exec();