data: saving and loading Storage with sqlite file next to project file
This commit is contained in:
+18
-10
@@ -14,7 +14,6 @@
|
||||
std::shared_ptr<Project> Project::create(StorageAccessProxy* storageAccessProxy)
|
||||
{
|
||||
std::shared_ptr<Project> ptr(new Project(storageAccessProxy));
|
||||
ptr->clearStorage();
|
||||
return ptr;
|
||||
}
|
||||
|
||||
@@ -27,7 +26,7 @@ bool Project::loadProjectSettings(const FilePath& projectSettingsFile)
|
||||
bool success = ProjectSettings::getInstance()->load(projectSettingsFile);
|
||||
if (success)
|
||||
{
|
||||
m_projectSettingsFilepath = projectSettingsFile;
|
||||
setProjectSettingsFilePath(projectSettingsFile);
|
||||
|
||||
//m_fileManager.reset();
|
||||
updateFileManager();
|
||||
@@ -39,7 +38,7 @@ bool Project::saveProjectSettings(const FilePath& projectSettingsFile)
|
||||
{
|
||||
if (!projectSettingsFile.empty())
|
||||
{
|
||||
m_projectSettingsFilepath = projectSettingsFile;
|
||||
setProjectSettingsFilePath(projectSettingsFile);
|
||||
}
|
||||
|
||||
if (m_projectSettingsFilepath.empty())
|
||||
@@ -56,7 +55,7 @@ bool Project::saveProjectSettings(const FilePath& projectSettingsFile)
|
||||
|
||||
void Project::clearProjectSettings()
|
||||
{
|
||||
m_projectSettingsFilepath = FilePath();
|
||||
setProjectSettingsFilePath(FilePath());
|
||||
ProjectSettings::getInstance()->clear();
|
||||
|
||||
//m_fileManager.reset();
|
||||
@@ -71,12 +70,6 @@ void Project::reloadProjectSettings()
|
||||
}
|
||||
}
|
||||
|
||||
void Project::clearStorage()
|
||||
{
|
||||
m_storage = std::make_shared<Storage>();
|
||||
m_storageAccessProxy->setSubject(m_storage.get());
|
||||
}
|
||||
|
||||
void Project::parseCode()
|
||||
{
|
||||
if (m_projectSettingsFilepath.empty())
|
||||
@@ -124,6 +117,21 @@ void Project::logStats() const
|
||||
m_storage->logStats();
|
||||
}
|
||||
|
||||
void Project::setProjectSettingsFilePath(const FilePath& path)
|
||||
{
|
||||
if (path.empty())
|
||||
{
|
||||
m_storage.reset();
|
||||
}
|
||||
else if (m_projectSettingsFilepath != path)
|
||||
{
|
||||
m_storage = std::make_shared<Storage>(FilePath(path).replaceExtension("sqlite"));
|
||||
}
|
||||
|
||||
m_storageAccessProxy->setSubject(m_storage.get());
|
||||
m_projectSettingsFilepath = path;
|
||||
}
|
||||
|
||||
void Project::updateFileManager()
|
||||
{
|
||||
std::shared_ptr<ProjectSettings> projSettings = ProjectSettings::getInstance();
|
||||
|
||||
+2
-1
@@ -19,10 +19,10 @@ public:
|
||||
|
||||
bool loadProjectSettings(const FilePath& projectSettingsFile);
|
||||
bool saveProjectSettings(const FilePath& projectSettingsFile);
|
||||
|
||||
void clearProjectSettings();
|
||||
void reloadProjectSettings();
|
||||
|
||||
void clearStorage();
|
||||
void parseCode();
|
||||
|
||||
void logStats() const;
|
||||
@@ -32,6 +32,7 @@ private:
|
||||
Project(const Project&);
|
||||
Project operator=(const Project&);
|
||||
|
||||
void setProjectSettingsFilePath(const FilePath& path);
|
||||
void updateFileManager();
|
||||
|
||||
Parser::Arguments getParserArguments() const;
|
||||
|
||||
@@ -47,11 +47,6 @@ void GraphController::handleMessage(MessageActivateTokens* message)
|
||||
buildGraph(message);
|
||||
}
|
||||
|
||||
void GraphController::handleMessage(MessageFinishedParsing* message)
|
||||
{
|
||||
getView()->clear();
|
||||
}
|
||||
|
||||
void GraphController::handleMessage(MessageFlushUpdates* message)
|
||||
{
|
||||
buildGraph(message);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
#include "utility/messaging/MessageListener.h"
|
||||
#include "utility/messaging/type/MessageActivateTokens.h"
|
||||
#include "utility/messaging/type/MessageFinishedParsing.h"
|
||||
#include "utility/messaging/type/MessageFlushUpdates.h"
|
||||
#include "utility/messaging/type/MessageFocusIn.h"
|
||||
#include "utility/messaging/type/MessageFocusOut.h"
|
||||
@@ -28,7 +27,6 @@ class StorageAccess;
|
||||
class GraphController
|
||||
: public Controller
|
||||
, public MessageListener<MessageActivateTokens>
|
||||
, public MessageListener<MessageFinishedParsing>
|
||||
, public MessageListener<MessageFlushUpdates>
|
||||
, public MessageListener<MessageFocusIn>
|
||||
, public MessageListener<MessageFocusOut>
|
||||
@@ -42,7 +40,6 @@ public:
|
||||
|
||||
private:
|
||||
virtual void handleMessage(MessageActivateTokens* message);
|
||||
virtual void handleMessage(MessageFinishedParsing* message);
|
||||
virtual void handleMessage(MessageFlushUpdates* message);
|
||||
virtual void handleMessage(MessageFocusIn* message);
|
||||
virtual void handleMessage(MessageFocusOut* message);
|
||||
|
||||
@@ -55,11 +55,6 @@ void SearchController::handleMessage(MessageFind* message)
|
||||
getView()->setFocus();
|
||||
}
|
||||
|
||||
void SearchController::handleMessage(MessageFinishedParsing* message)
|
||||
{
|
||||
getView()->setMatches(std::vector<SearchMatch>());
|
||||
}
|
||||
|
||||
void SearchController::handleMessage(MessageSearch* message)
|
||||
{
|
||||
getView()->setMatches(message->getMatches());
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "utility/messaging/type/MessageActivateFile.h"
|
||||
#include "utility/messaging/type/MessageActivateNodes.h"
|
||||
#include "utility/messaging/type/MessageFind.h"
|
||||
#include "utility/messaging/type/MessageFinishedParsing.h"
|
||||
#include "utility/messaging/type/MessageSearch.h"
|
||||
#include "utility/messaging/type/MessageSearchAutocomplete.h"
|
||||
|
||||
@@ -22,7 +21,6 @@ class SearchController
|
||||
, public MessageListener<MessageActivateFile>
|
||||
, public MessageListener<MessageActivateNodes>
|
||||
, public MessageListener<MessageFind>
|
||||
, public MessageListener<MessageFinishedParsing>
|
||||
, public MessageListener<MessageSearch>
|
||||
, public MessageListener<MessageSearchAutocomplete>
|
||||
{
|
||||
@@ -35,7 +33,6 @@ private:
|
||||
virtual void handleMessage(MessageActivateFile* message);
|
||||
virtual void handleMessage(MessageActivateNodes* message);
|
||||
virtual void handleMessage(MessageFind* message);
|
||||
virtual void handleMessage(MessageFinishedParsing* message);
|
||||
virtual void handleMessage(MessageSearch* message);
|
||||
virtual void handleMessage(MessageSearchAutocomplete* message);
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
SqliteStorage::SqliteStorage(const std::string& dbFilePath)
|
||||
{
|
||||
m_database.open(dbFilePath.c_str());
|
||||
clear();
|
||||
setup();
|
||||
}
|
||||
|
||||
SqliteStorage::~SqliteStorage()
|
||||
@@ -15,12 +15,16 @@ SqliteStorage::~SqliteStorage()
|
||||
m_database.close();
|
||||
}
|
||||
|
||||
void SqliteStorage::setup()
|
||||
{
|
||||
m_database.execDML("PRAGMA foreign_keys=ON;");
|
||||
setupTables();
|
||||
}
|
||||
|
||||
void SqliteStorage::clear()
|
||||
{
|
||||
m_database.execDML("PRAGMA foreign_keys=OFF;");
|
||||
clearTables();
|
||||
m_database.execDML("PRAGMA foreign_keys=ON;");
|
||||
setupTables();
|
||||
}
|
||||
|
||||
void SqliteStorage::beginTransaction()
|
||||
|
||||
@@ -20,6 +20,7 @@ public:
|
||||
SqliteStorage(const std::string& dbFilePath);
|
||||
~SqliteStorage();
|
||||
|
||||
void setup();
|
||||
void clear();
|
||||
|
||||
void beginTransaction();
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
#include "data/type/DataType.h"
|
||||
#include "settings/ApplicationSettings.h"
|
||||
|
||||
Storage::Storage()
|
||||
: m_sqliteStorage("data/test.sqlite")
|
||||
Storage::Storage(const FilePath& dbPath)
|
||||
: m_sqliteStorage(dbPath.str())
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class Storage
|
||||
, public StorageAccess
|
||||
{
|
||||
public:
|
||||
Storage();
|
||||
Storage(const FilePath& dbPath);
|
||||
virtual ~Storage();
|
||||
|
||||
void clear();
|
||||
|
||||
@@ -135,6 +135,11 @@ FilePath FilePath::withoutExtension() const
|
||||
return FilePath(boost::filesystem::path(m_path).replace_extension());
|
||||
}
|
||||
|
||||
FilePath FilePath::replaceExtension(const std::string& extension)
|
||||
{
|
||||
return FilePath(boost::filesystem::path(m_path).replace_extension(extension));
|
||||
}
|
||||
|
||||
bool FilePath::hasExtension(const std::vector<std::string>& extensions) const
|
||||
{
|
||||
std::string e = extension();
|
||||
|
||||
@@ -32,6 +32,7 @@ public:
|
||||
|
||||
std::string extension() const;
|
||||
FilePath withoutExtension() const;
|
||||
FilePath replaceExtension(const std::string& extension);
|
||||
bool hasExtension(const std::vector<std::string>& extensions) const;
|
||||
|
||||
bool operator==(const FilePath& other) const;
|
||||
|
||||
Reference in New Issue
Block a user