Mercurial > hg > orthanc-databases
diff MySQL/Plugins/StoragePlugin.cpp @ 17:54ea251aed70
unit test
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 10 Jul 2018 10:33:02 +0200 |
parents | 9e419261f1c9 |
children | 17f849b2af34 |
line wrap: on
line diff
--- a/MySQL/Plugins/StoragePlugin.cpp Tue Jul 10 10:10:35 2018 +0200 +++ b/MySQL/Plugins/StoragePlugin.cpp Tue Jul 10 10:33:02 2018 +0200 @@ -19,114 +19,12 @@ **/ -#include "../../Framework/Plugins/StorageBackend.h" +#include "MySQLStorageArea.h" +#include "../../Framework/MySQL/MySQLDatabase.h" #include <Core/Logging.h> -#include "../../Framework/Common/Integer64Value.h" -#include "../../Framework/MySQL/MySQLDatabase.h" -#include "../../Framework/MySQL/MySQLResult.h" -#include "../../Framework/MySQL/MySQLStatement.h" -#include "../../Framework/MySQL/MySQLTransaction.h" - -#include <boost/math/special_functions/round.hpp> - -namespace OrthancDatabases -{ - class MySQLStorageArea : public StorageBackend - { - private: - class Factory : public IDatabaseFactory - { - private: - MySQLStorageArea& that_; - - public: - Factory(MySQLStorageArea& that) : - that_(that) - { - } - - virtual Dialect GetDialect() const - { - return Dialect_MySQL; - } - - virtual IDatabase* Open() - { - return that_.OpenInternal(); - } - }; - - OrthancPluginContext* context_; - MySQLParameters parameters_; - bool clearAll_; - - IDatabase* OpenInternal() - { - std::auto_ptr<MySQLDatabase> db(new MySQLDatabase(parameters_)); - - db->Open(); - - if (parameters_.HasLock()) - { - db->AdvisoryLock(43 /* some arbitrary constant */); - } - - { - MySQLTransaction t(*db); - - int64_t size; - if (db->LookupGlobalIntegerVariable(size, "max_allowed_packet")) - { - int mb = boost::math::iround(static_cast<double>(size) / - static_cast<double>(1024 * 1024)); - LOG(WARNING) << "Your MySQL server cannot " - << "store DICOM files larger than " << mb << "MB"; - LOG(WARNING) << " => Consider increasing \"max_allowed_packet\" " - << "in \"my.cnf\" if this limit is insufficient for your use"; - } - else - { - LOG(WARNING) << "Unable to auto-detect the maximum size of DICOM " - << "files that can be stored in this MySQL server"; - } - - if (clearAll_) - { - db->Execute("DROP TABLE IF EXISTS StorageArea", false); - } - - db->Execute("CREATE TABLE IF NOT EXISTS StorageArea(" - "uuid VARCHAR(64) NOT NULL PRIMARY KEY," - "content LONGBLOB NOT NULL," - "type INTEGER NOT NULL)", false); - - t.Commit(); - } - - return db.release(); - } - - public: - MySQLStorageArea(const MySQLParameters& parameters) : - StorageBackend(new Factory(*this)), - parameters_(parameters), - clearAll_(false) - { - } - - void SetClearAll(bool clear) - { - clearAll_ = clear; - } - }; -} - - - - static bool DisplayPerformanceWarning() { (void) DisplayPerformanceWarning; // Disable warning about unused function