diff options
author | Cătălin Badea <catalin.badea392@gmail.com> | 2012-08-19 18:34:48 (GMT) |
---|---|---|
committer | Cătălin Badea <catalin.badea392@gmail.com> | 2012-08-19 18:34:48 (GMT) |
commit | 7a46b1ddf4193c2f4ca789ef86b099f9d70842f9 (patch) | |
tree | bc8d7992bd6deb3967a0c868717308067174a9fa | |
parent | 5aadc44a6f11c277a26865c7c908e3f356158fa0 (diff) | |
download | swift-contrib-7a46b1ddf4193c2f4ca789ef86b099f9d70842f9.zip swift-contrib-7a46b1ddf4193c2f4ca789ef86b099f9d70842f9.tar.bz2 |
Use appropriate folder for storing the history file.
-rw-r--r-- | Swift/Controllers/HistoryController.cpp | 7 | ||||
-rw-r--r-- | Swift/Controllers/HistoryController.h | 6 | ||||
-rw-r--r-- | Swift/Controllers/HistoryViewController.h | 3 | ||||
-rw-r--r-- | Swift/Controllers/MainController.cpp | 6 | ||||
-rw-r--r-- | Swift/Controllers/Storages/FileStorages.cpp | 7 | ||||
-rw-r--r-- | Swift/Controllers/Storages/FileStorages.h | 3 | ||||
-rw-r--r-- | Swiften/Client/MemoryStorages.cpp | 7 | ||||
-rw-r--r-- | Swiften/Client/MemoryStorages.h | 2 | ||||
-rw-r--r-- | Swiften/Client/Storages.h | 2 | ||||
-rw-r--r-- | Swiften/History/HistoryManager.cpp | 14 | ||||
-rw-r--r-- | Swiften/History/HistoryStorage.h (renamed from Swiften/History/HistoryManager.h) | 5 | ||||
-rw-r--r-- | Swiften/History/SConscript | 3 | ||||
-rw-r--r-- | Swiften/History/SQLiteHistoryStorage.cpp (renamed from Swiften/History/SQLiteHistoryManager.cpp) | 30 | ||||
-rw-r--r-- | Swiften/History/SQLiteHistoryStorage.h (renamed from Swiften/History/SQLiteHistoryManager.h) | 8 |
14 files changed, 52 insertions, 51 deletions
diff --git a/Swift/Controllers/HistoryController.cpp b/Swift/Controllers/HistoryController.cpp index 6ab1235..d730236 100644 --- a/Swift/Controllers/HistoryController.cpp +++ b/Swift/Controllers/HistoryController.cpp @@ -5,19 +5,16 @@ */ #include <Swift/Controllers/HistoryController.h> -#include <Swiften/History/SQLiteHistoryManager.h> +#include <Swiften/History/HistoryStorage.h> #include <Swiften/History/HistoryMessage.h> #include <boost/date_time/c_local_time_adjustor.hpp> namespace Swift { -HistoryController::HistoryController() : remoteArchiveSupported_(false) { - std::string file("testDB.db"); - localHistory_ = new SQLiteHistoryManager(file); +HistoryController::HistoryController(HistoryStorage* localHistoryStorage) : localHistory_(localHistoryStorage) { } HistoryController::~HistoryController() { - delete localHistory_; } void HistoryController::addMessage(const std::string& message, const JID& fromJID, const JID& toJID, HistoryMessage::Type type, const boost::posix_time::ptime& timeStamp) { diff --git a/Swift/Controllers/HistoryController.h b/Swift/Controllers/HistoryController.h index f231724..8c86409 100644 --- a/Swift/Controllers/HistoryController.h +++ b/Swift/Controllers/HistoryController.h @@ -12,14 +12,14 @@ #include <set> #include <Swiften/Base/boost_bsignals.h> #include <Swiften/History/HistoryMessage.h> -#include <Swiften/History/HistoryManager.h> +#include <Swiften/History/HistoryStorage.h> namespace Swift { class JID; class HistoryController { public: - HistoryController(); + HistoryController(HistoryStorage* localHistoryStorage); ~HistoryController(); void addMessage(const std::string& message, const JID& fromJID, const JID& toJID, HistoryMessage::Type type, const boost::posix_time::ptime& timeStamp); @@ -34,7 +34,7 @@ namespace Swift { boost::signal<void (const HistoryMessage&)> onNewMessage; private: - HistoryManager* localHistory_; + HistoryStorage* localHistory_; bool remoteArchiveSupported_; }; } diff --git a/Swift/Controllers/HistoryViewController.h b/Swift/Controllers/HistoryViewController.h index 283254d..f44c968 100644 --- a/Swift/Controllers/HistoryViewController.h +++ b/Swift/Controllers/HistoryViewController.h @@ -11,9 +11,9 @@ #include <boost/shared_ptr.hpp> #include <Swift/Controllers/UIEvents/UIEventStream.h> -#include <Swiften/History/HistoryManager.h> #include <Swiften/JID/JID.h> #include <Swiften/Presence/PresenceOracle.h> +#include <Swiften/History/HistoryStorage.h> #include <set> namespace Swift { @@ -25,7 +25,6 @@ namespace Swift { class HistoryController; class NickResolver; class AvatarManager; - class HistoryMessage; class HistoryViewController { public: diff --git a/Swift/Controllers/MainController.cpp b/Swift/Controllers/MainController.cpp index 9ac97f4..2955cee 100644 --- a/Swift/Controllers/MainController.cpp +++ b/Swift/Controllers/MainController.cpp @@ -172,7 +172,6 @@ MainController::MainController( idleDetector_->onIdleChanged.connect(boost::bind(&MainController::handleInputIdleChanged, this, _1)); xmlConsoleController_ = new XMLConsoleController(uiEventStream_, uiFactory_); - historyController_ = new HistoryController(); fileTransferListController_ = new FileTransferListController(uiEventStream_, uiFactory_); @@ -197,7 +196,6 @@ MainController::~MainController() { resetClient(); delete fileTransferListController_; delete xmlConsoleController_; - delete historyController_; delete xmppURIController_; delete soundEventController_; delete systemTrayController_; @@ -223,6 +221,8 @@ void MainController::resetClient() { eventWindowController_ = NULL; delete chatsManager_; chatsManager_ = NULL; + delete historyController_; + historyController_ = NULL; delete historyViewController_; historyViewController_ = NULL; delete ftOverview_; @@ -301,9 +301,9 @@ void MainController::handleConnected() { * want to have the user's nick available and this means it will * be before they receive stanzas that need it (e.g. bookmarks).*/ client_->getVCardManager()->requestOwnVCard(); + historyController_ = new HistoryController(storages_->getHistoryStorage()); chatsManager_ = new ChatsManager(jid_, client_->getStanzaChannel(), client_->getIQRouter(), eventController_, uiFactory_, uiFactory_, client_->getNickResolver(), client_->getPresenceOracle(), client_->getPresenceSender(), uiEventStream_, uiFactory_, useDelayForLatency_, networkFactories_->getTimerFactory(), client_->getMUCRegistry(), client_->getEntityCapsProvider(), client_->getMUCManager(), uiFactory_, profileSettings_, ftOverview_, client_->getRoster(), !settings_->getSetting(SettingConstants::REMEMBER_RECENT_CHATS), settings_, historyController_); - historyViewController_ = new HistoryViewController(jid_, uiEventStream_, historyController_, client_->getNickResolver(), client_->getAvatarManager(), client_->getPresenceOracle(), uiFactory_); client_->onMessageReceived.connect(boost::bind(&ChatsManager::handleIncomingMessage, chatsManager_, _1)); diff --git a/Swift/Controllers/Storages/FileStorages.cpp b/Swift/Controllers/Storages/FileStorages.cpp index 6447099..27c245d 100644 --- a/Swift/Controllers/Storages/FileStorages.cpp +++ b/Swift/Controllers/Storages/FileStorages.cpp @@ -9,6 +9,7 @@ #include "Swift/Controllers/Storages/AvatarFileStorage.h" #include "Swift/Controllers/Storages/CapsFileStorage.h" #include "Swift/Controllers/Storages/RosterFileStorage.h" +#include <Swiften/History/SQLiteHistoryStorage.h> namespace Swift { @@ -18,6 +19,7 @@ FileStorages::FileStorages(const boost::filesystem::path& baseDir, const JID& ji capsStorage = new CapsFileStorage(baseDir / "caps"); avatarStorage = new AvatarFileStorage(baseDir / "avatars", baseDir / profile / "avatars"); rosterStorage = new RosterFileStorage(baseDir / profile / "roster.xml"); + historyStorage = new SQLiteHistoryStorage((baseDir / "history.db").string()); } FileStorages::~FileStorages() { @@ -25,6 +27,7 @@ FileStorages::~FileStorages() { delete avatarStorage; delete capsStorage; delete vcardStorage; + delete historyStorage; } VCardStorage* FileStorages::getVCardStorage() const { @@ -43,4 +46,8 @@ RosterStorage* FileStorages::getRosterStorage() const { return rosterStorage; } +HistoryStorage* FileStorages::getHistoryStorage() const { + return historyStorage; +} + } diff --git a/Swift/Controllers/Storages/FileStorages.h b/Swift/Controllers/Storages/FileStorages.h index 28df314..5e89db8 100644 --- a/Swift/Controllers/Storages/FileStorages.h +++ b/Swift/Controllers/Storages/FileStorages.h @@ -15,6 +15,7 @@ namespace Swift { class AvatarFileStorage; class CapsFileStorage; class RosterFileStorage; + class HistoryStorage; class JID; /** @@ -43,11 +44,13 @@ namespace Swift { virtual AvatarStorage* getAvatarStorage() const; virtual CapsStorage* getCapsStorage() const; virtual RosterStorage* getRosterStorage() const; + virtual HistoryStorage* getHistoryStorage() const; private: VCardFileStorage* vcardStorage; AvatarFileStorage* avatarStorage; CapsFileStorage* capsStorage; RosterFileStorage* rosterStorage; + HistoryStorage* historyStorage; }; } diff --git a/Swiften/Client/MemoryStorages.cpp b/Swiften/Client/MemoryStorages.cpp index fe171f7..9bae4e3 100644 --- a/Swiften/Client/MemoryStorages.cpp +++ b/Swiften/Client/MemoryStorages.cpp @@ -9,6 +9,7 @@ #include <Swiften/Avatars/AvatarMemoryStorage.h> #include <Swiften/Disco/CapsMemoryStorage.h> #include <Swiften/Roster/RosterMemoryStorage.h> +#include <Swiften/History/SQLiteHistoryStorage.h> namespace Swift { @@ -17,6 +18,7 @@ MemoryStorages::MemoryStorages() { capsStorage = new CapsMemoryStorage(); avatarStorage = new AvatarMemoryStorage(); rosterStorage = new RosterMemoryStorage(); + historyStorage = new SQLiteHistoryStorage(":memory:"); } MemoryStorages::~MemoryStorages() { @@ -24,6 +26,7 @@ MemoryStorages::~MemoryStorages() { delete avatarStorage; delete capsStorage; delete vcardStorage; + delete historyStorage; } VCardStorage* MemoryStorages::getVCardStorage() const { @@ -42,5 +45,9 @@ RosterStorage* MemoryStorages::getRosterStorage() const { return rosterStorage; } +HistoryStorage* MemoryStorages::getHistoryStorage() const { + return historyStorage; +} + } diff --git a/Swiften/Client/MemoryStorages.h b/Swiften/Client/MemoryStorages.h index ca01a7a..403a89a 100644 --- a/Swiften/Client/MemoryStorages.h +++ b/Swiften/Client/MemoryStorages.h @@ -24,11 +24,13 @@ namespace Swift { virtual AvatarStorage* getAvatarStorage() const; virtual CapsStorage* getCapsStorage() const; virtual RosterStorage* getRosterStorage() const; + virtual HistoryStorage* getHistoryStorage() const; private: VCardMemoryStorage* vcardStorage; AvatarStorage* avatarStorage; CapsStorage* capsStorage; RosterStorage* rosterStorage; + HistoryStorage* historyStorage; }; } diff --git a/Swiften/Client/Storages.h b/Swiften/Client/Storages.h index 89b770c..76650a6 100644 --- a/Swiften/Client/Storages.h +++ b/Swiften/Client/Storages.h @@ -13,6 +13,7 @@ namespace Swift { class AvatarStorage; class CapsStorage; class RosterStorage; + class HistoryStorage; /** * An interface to hold storage classes for different @@ -26,5 +27,6 @@ namespace Swift { virtual AvatarStorage* getAvatarStorage() const = 0; virtual CapsStorage* getCapsStorage() const = 0; virtual RosterStorage* getRosterStorage() const = 0; + virtual HistoryStorage* getHistoryStorage() const = 0; }; } diff --git a/Swiften/History/HistoryManager.cpp b/Swiften/History/HistoryManager.cpp deleted file mode 100644 index 7eb66ab..0000000 --- a/Swiften/History/HistoryManager.cpp +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#include <Swiften/History/HistoryManager.h> - -namespace Swift { - -HistoryManager::~HistoryManager() { -} - -} diff --git a/Swiften/History/HistoryManager.h b/Swiften/History/HistoryStorage.h index 33e9143..fcf28b5 100644 --- a/Swiften/History/HistoryManager.h +++ b/Swiften/History/HistoryStorage.h @@ -16,15 +16,14 @@ namespace Swift { typedef std::map<JID, std::set<boost::gregorian::date> > ContactsMap; - class HistoryManager { + class HistoryStorage { /** * Messages are stored using localtime timestamps. */ public: - virtual ~HistoryManager(); + virtual ~HistoryStorage() {}; virtual void addMessage(const HistoryMessage& message) = 0; - virtual std::vector<HistoryMessage> getMessagesFromDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const = 0; virtual std::vector<HistoryMessage> getMessagesFromNextDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const = 0; virtual std::vector<HistoryMessage> getMessagesFromPreviousDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const = 0; diff --git a/Swiften/History/SConscript b/Swiften/History/SConscript index 975f839..bc0d64c 100644 --- a/Swiften/History/SConscript +++ b/Swiften/History/SConscript @@ -5,7 +5,6 @@ if myenv["target"] == "native": myenv.MergeFlags(swiften_env.get("SQLITE_FLAGS", {})) objects = myenv.SwiftenObject([ - "HistoryManager.cpp", - "SQLiteHistoryManager.cpp", + "SQLiteHistoryStorage.cpp", ]) swiften_env.Append(SWIFTEN_OBJECTS = [objects]) diff --git a/Swiften/History/SQLiteHistoryManager.cpp b/Swiften/History/SQLiteHistoryStorage.cpp index e385b1e..5e3148b 100644 --- a/Swiften/History/SQLiteHistoryManager.cpp +++ b/Swiften/History/SQLiteHistoryStorage.cpp @@ -8,7 +8,7 @@ #include <boost/lexical_cast.hpp> #include <sqlite3.h> -#include <Swiften/History/SQLiteHistoryManager.h> +#include <Swiften/History/SQLiteHistoryStorage.h> #include <boost/date_time/gregorian/gregorian.hpp> inline std::string getEscapedString(const std::string& s) { @@ -24,10 +24,10 @@ inline std::string getEscapedString(const std::string& s) { namespace Swift { -SQLiteHistoryManager::SQLiteHistoryManager(const std::string& file) : db_(0) { +SQLiteHistoryStorage::SQLiteHistoryStorage(const std::string& file) : db_(0) { sqlite3_open(file.c_str(), &db_); if (!db_) { - std::cerr << "Error opening database " << file << std::endl; // FIXME + std::cerr << "Error opening database " << file << std::endl; } char* errorMessage; @@ -44,11 +44,11 @@ SQLiteHistoryManager::SQLiteHistoryManager(const std::string& file) : db_(0) { } } -SQLiteHistoryManager::~SQLiteHistoryManager() { +SQLiteHistoryStorage::~SQLiteHistoryStorage() { sqlite3_close(db_); } -void SQLiteHistoryManager::addMessage(const HistoryMessage& message) { +void SQLiteHistoryStorage::addMessage(const HistoryMessage& message) { int secondsSinceEpoch = (message.getTime() - boost::posix_time::ptime(boost::gregorian::date(1970, 1, 1))).total_seconds(); std::string statement = std::string("INSERT INTO messages('message', 'fromBare', 'fromResource', 'toBare', 'toResource', 'type', 'time', 'offset') VALUES(") + @@ -68,7 +68,7 @@ void SQLiteHistoryManager::addMessage(const HistoryMessage& message) { } } -std::vector<HistoryMessage> SQLiteHistoryManager::getMessagesFromDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const { +std::vector<HistoryMessage> SQLiteHistoryStorage::getMessagesFromDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const { sqlite3_stmt* selectStatement; boost::optional<int> selfID = getIDFromJID(selfJID.toBare()); @@ -150,7 +150,7 @@ std::vector<HistoryMessage> SQLiteHistoryManager::getMessagesFromDate(const JID& return result; } -int SQLiteHistoryManager::getIDForJID(const JID& jid) { +int SQLiteHistoryStorage::getIDForJID(const JID& jid) { boost::optional<int> id = getIDFromJID(jid); if (id) { return *id; @@ -160,7 +160,7 @@ int SQLiteHistoryManager::getIDForJID(const JID& jid) { } } -int SQLiteHistoryManager::addJID(const JID& jid) { +int SQLiteHistoryStorage::addJID(const JID& jid) { std::string statement = std::string("INSERT INTO jids('jid') VALUES('") + getEscapedString(jid.toString()) + "')"; char* errorMessage; int result = sqlite3_exec(db_, statement.c_str(), 0, 0, &errorMessage); @@ -171,7 +171,7 @@ int SQLiteHistoryManager::addJID(const JID& jid) { return sqlite3_last_insert_rowid(db_); } -boost::optional<JID> SQLiteHistoryManager::getJIDFromID(int id) const { +boost::optional<JID> SQLiteHistoryStorage::getJIDFromID(int id) const { boost::optional<JID> result; sqlite3_stmt* selectStatement; std::string selectQuery("SELECT jid FROM jids WHERE id=" + boost::lexical_cast<std::string>(id)); @@ -187,7 +187,7 @@ boost::optional<JID> SQLiteHistoryManager::getJIDFromID(int id) const { return result; } -boost::optional<int> SQLiteHistoryManager::getIDFromJID(const JID& jid) const { +boost::optional<int> SQLiteHistoryStorage::getIDFromJID(const JID& jid) const { boost::optional<int> result; sqlite3_stmt* selectStatement; std::string selectQuery("SELECT id FROM jids WHERE jid='" + jid.toString() + "'"); @@ -203,7 +203,7 @@ boost::optional<int> SQLiteHistoryManager::getIDFromJID(const JID& jid) const { return result; } -ContactsMap SQLiteHistoryManager::getContacts(const JID& selfJID, HistoryMessage::Type type, const std::string& keyword) const { +ContactsMap SQLiteHistoryStorage::getContacts(const JID& selfJID, HistoryMessage::Type type, const std::string& keyword) const { ContactsMap result; sqlite3_stmt* selectStatement; @@ -271,7 +271,7 @@ ContactsMap SQLiteHistoryManager::getContacts(const JID& selfJID, HistoryMessage return result; } -boost::gregorian::date SQLiteHistoryManager::getNextDateWithLogs(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date, bool reverseOrder) const { +boost::gregorian::date SQLiteHistoryStorage::getNextDateWithLogs(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date, bool reverseOrder) const { sqlite3_stmt* selectStatement; boost::optional<int> selfID = getIDFromJID(selfJID.toBare()); boost::optional<int> contactID = getIDFromJID(contactJID.toBare()); @@ -319,7 +319,7 @@ boost::gregorian::date SQLiteHistoryManager::getNextDateWithLogs(const JID& self return boost::gregorian::date(boost::gregorian::not_a_date_time); } -std::vector<HistoryMessage> SQLiteHistoryManager::getMessagesFromNextDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const { +std::vector<HistoryMessage> SQLiteHistoryStorage::getMessagesFromNextDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const { boost::gregorian::date nextDate = getNextDateWithLogs(selfJID, contactJID, type, date, false); if (nextDate.is_not_a_date()) { @@ -329,7 +329,7 @@ std::vector<HistoryMessage> SQLiteHistoryManager::getMessagesFromNextDate(const return getMessagesFromDate(selfJID, contactJID, type, nextDate); } -std::vector<HistoryMessage> SQLiteHistoryManager::getMessagesFromPreviousDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const { +std::vector<HistoryMessage> SQLiteHistoryStorage::getMessagesFromPreviousDate(const JID& selfJID, const JID& contactJID, HistoryMessage::Type type, const boost::gregorian::date& date) const { boost::gregorian::date previousDate = getNextDateWithLogs(selfJID, contactJID, type, date, true); if (previousDate.is_not_a_date()) { @@ -339,7 +339,7 @@ std::vector<HistoryMessage> SQLiteHistoryManager::getMessagesFromPreviousDate(co return getMessagesFromDate(selfJID, contactJID, type, previousDate); } -boost::posix_time::ptime SQLiteHistoryManager::getLastTimeStampFromMUC(const JID& selfJID, const JID& mucJID) const { +boost::posix_time::ptime SQLiteHistoryStorage::getLastTimeStampFromMUC(const JID& selfJID, const JID& mucJID) const { boost::optional<int> selfID = getIDFromJID(selfJID.toBare()); boost::optional<int> mucID = getIDFromJID(mucJID.toBare()); diff --git a/Swiften/History/SQLiteHistoryManager.h b/Swiften/History/SQLiteHistoryStorage.h index b74fbde..aae6db8 100644 --- a/Swiften/History/SQLiteHistoryManager.h +++ b/Swiften/History/SQLiteHistoryStorage.h @@ -8,15 +8,15 @@ #include <boost/optional.hpp> -#include <Swiften/History/HistoryManager.h> +#include <Swiften/History/HistoryStorage.h> struct sqlite3; namespace Swift { - class SQLiteHistoryManager : public HistoryManager { + class SQLiteHistoryStorage : public HistoryStorage { public: - SQLiteHistoryManager(const std::string& file); - ~SQLiteHistoryManager(); + SQLiteHistoryStorage(const std::string& file); + ~SQLiteHistoryStorage(); void addMessage(const HistoryMessage& message); ContactsMap getContacts(const JID& selfJID, HistoryMessage::Type type, const std::string& keyword) const; |