From: Jamie Thompson Date: Thu, 25 Aug 2011 00:40:17 +0000 (+0100) Subject: Added pre and post procesing "event handlers" to the DB backends. Initially u X-Git-Url: https://vcs.maemo.org/git/?p=qwerkisync;a=commitdiff_plain;h=4a42d572d56c1f913fe1a98f79ecd4853b53622d Added pre and post procesing "event handlers" to the DB backends. Initially u Used for reindexing the RtcomEventLogger after a sync operation. --- diff --git a/DBBackends/AllBackends.cpp b/DBBackends/AllBackends.cpp index 7daee74..1adc783 100644 --- a/DBBackends/AllBackends.cpp +++ b/DBBackends/AllBackends.cpp @@ -40,6 +40,12 @@ void AllBackends::Process(EventProcessors::iEventProcessor &eventProcessor) backend->Process(eventProcessor); } +void AllBackends::PreInsert() +{ + foreach(QSharedPointer backend, Backends()) + backend->PreInsert(); +} + void AllBackends::Insert(EventTypes::iEvent &event, const NumberToNameLookup &numberToNameLookup) { foreach(QSharedPointer backend, Backends()) diff --git a/DBBackends/AllBackends.h b/DBBackends/AllBackends.h index a83a8a0..c455c38 100644 --- a/DBBackends/AllBackends.h +++ b/DBBackends/AllBackends.h @@ -27,16 +27,17 @@ class Settings; #include template class QSharedPointer; +#include "iDBBackend.h" + namespace DBBackends { - class iDBBackend; - class AllBackends { public: AllBackends(const Settings &settings); void Process(EventProcessors::iEventProcessor &eventProcessor); + void PreInsert(); void Insert(EventTypes::iEvent &event, const NumberToNameLookup &numberToNameLookup); void PostInsert(); diff --git a/DBBackends/Fmms.cpp b/DBBackends/Fmms.cpp index 3483c35..e2817fa 100644 --- a/DBBackends/Fmms.cpp +++ b/DBBackends/Fmms.cpp @@ -40,6 +40,10 @@ EventTypes::iEvent *const Fmms::CreateEvent(int &fevent, QList &fattachm return 0; } +void Fmms::PreInsert() +{ +} + void Fmms::Insert(EventTypes::iEvent &event, const NumberToNameLookup &numberToNameLookup) { return; diff --git a/DBBackends/Fmms.h b/DBBackends/Fmms.h index 1fec3e2..f92161b 100644 --- a/DBBackends/Fmms.h +++ b/DBBackends/Fmms.h @@ -34,6 +34,7 @@ namespace DBBackends Fmms(const Settings &settings); Fmms(const Settings &settings, const EventTypes::FmmsEvent &event); + virtual void PreInsert(); virtual void Insert(EventTypes::iEvent &event, const NumberToNameLookup &numberToNameLookup); virtual void PostInsert(); virtual void Process(EventProcessors::iEventProcessor &eventProcessor); diff --git a/DBBackends/RtcomEventLogger.cpp b/DBBackends/RtcomEventLogger.cpp index 077bdfe..aac4790 100644 --- a/DBBackends/RtcomEventLogger.cpp +++ b/DBBackends/RtcomEventLogger.cpp @@ -23,6 +23,7 @@ #include "EventTypes/iEvent.h" #include "EventTypes/PhoneCall.h" #include "EventTypes/SMS.h" +#include "RtcomEventLoggerComponents/TriggerDisabler.h" #include "Settings.h" #include @@ -239,6 +240,11 @@ EventTypes::iEvent *const RtcomEventLogger::CreateEvent(RTComElEvent &revent, QL return NULL; } +void RtcomEventLogger::PreInsert() +{ + m_TriggerDisabler = new RtcomEventLoggerComponents::TriggerDisabler(CurrentSettings()); +} + void RtcomEventLogger::Insert(EventTypes::iEvent &event, const NumberToNameLookup &numberToNameLookup) { if(EventTypes::RtcomEvent *rtcomEvent = dynamic_cast(&event)) @@ -320,6 +326,8 @@ void RtcomEventLogger::PostInsert() // Reorder the DB IDs as Nokia are guilty of both premature // optimisation as well as closed source UIs... Reindex(); + + delete m_TriggerDisabler; } void RtcomEventLogger::ClearInsertedIDs() diff --git a/DBBackends/RtcomEventLogger.h b/DBBackends/RtcomEventLogger.h index e00f205..a2a5053 100644 --- a/DBBackends/RtcomEventLogger.h +++ b/DBBackends/RtcomEventLogger.h @@ -36,12 +36,15 @@ class QString; namespace DBBackends { + namespace RtcomEventLoggerComponents { class TriggerDisabler; } + class RtcomEventLogger : public iDBBackend { public: RtcomEventLogger(const Settings &settings); RtcomEventLogger(const Settings &settings, const EventTypes::RtcomEvent &event); + virtual void PreInsert(); virtual void Insert(EventTypes::iEvent &event, const NumberToNameLookup &numberToNameLookup); virtual void PostInsert(); virtual void Process(EventProcessors::iEventProcessor &eventProcessor); @@ -60,14 +63,16 @@ namespace DBBackends private: void Reindex(); - QList &InsertedIDs() { return m_InsertedIDs; } - private: const Settings &m_Settings; const QString mk_DBPath; - QList m_InsertedIDs; QHash m_ServiceIDs; + + QList m_InsertedIDs; + QList &InsertedIDs() { return m_InsertedIDs; } + + RtcomEventLoggerComponents::TriggerDisabler *m_TriggerDisabler; }; } diff --git a/DBBackends/iDBBackend.h b/DBBackends/iDBBackend.h index 5acafde..88c1cc2 100644 --- a/DBBackends/iDBBackend.h +++ b/DBBackends/iDBBackend.h @@ -31,8 +31,11 @@ namespace DBBackends { public: virtual ~iDBBackend() {} + + virtual void PreInsert() =0; virtual void Insert(EventTypes::iEvent &event, const NumberToNameLookup &numberToNameLookup) =0; virtual void PostInsert() =0; + virtual void ClearInsertedIDs() =0; //virtual uint Remove(); diff --git a/SyncerThread.cpp b/SyncerThread.cpp index da36473..2a5e3b1 100644 --- a/SyncerThread.cpp +++ b/SyncerThread.cpp @@ -187,7 +187,8 @@ void SyncerThread::run() qDebug() << "Importing new events"; - // Re-parse the new events + // Re-parse the new events and insert them + allBackends.PreInsert(); { int idx = 0; foreach(QString filename, newHashesByPath.keys()) @@ -225,9 +226,7 @@ void SyncerThread::run() emit EventProcessed(idx, newHashes.count()); } } - - // Perform any post-insert cleanup (i.e. reindexing) - allBackends.PostInsert(); + allBackends.PostInsert(); // Perform any post-insert cleanup (i.e. reindexing) // Need to find a better way of refreshing the conversations view... QProcess::execute("pkill rtcom"); diff --git a/qwerkisync.pro b/qwerkisync.pro index 76872d4..f834b8f 100644 --- a/qwerkisync.pro +++ b/qwerkisync.pro @@ -59,7 +59,8 @@ SOURCES += main.cpp\ EventProcessors/Hasher.cpp \ EventProcessors/Writer.cpp \ EventTypes/PhoneCall.cpp \ - DBBackends/AllBackends.cpp + DBBackends/AllBackends.cpp \ + DBBackends/RtcomEventLoggerComponents/TriggerDisabler.cpp HEADERS += \ Windows/ModeWindow.h \ @@ -106,7 +107,8 @@ HEADERS += \ DBBackends/AllBackends.h \ EventTypes/PhoneCall.h \ EventTypes/RtcomEvent.h \ - EventTypes/eEventTypes.h + EventTypes/eEventTypes.h \ + DBBackends/RtcomEventLoggerComponents/TriggerDisabler.h FORMS += \ dialog.ui