Added pre and post procesing "event handlers" to the DB backends. Initially u
authorJamie Thompson <jamie@.(none)>
Thu, 25 Aug 2011 00:40:17 +0000 (01:40 +0100)
committerJamie Thompson <jamie@.(none)>
Thu, 25 Aug 2011 00:40:17 +0000 (01:40 +0100)
Used for reindexing the RtcomEventLogger after a sync operation.

DBBackends/AllBackends.cpp
DBBackends/AllBackends.h
DBBackends/Fmms.cpp
DBBackends/Fmms.h
DBBackends/RtcomEventLogger.cpp
DBBackends/RtcomEventLogger.h
DBBackends/iDBBackend.h
SyncerThread.cpp
qwerkisync.pro

index 7daee74..1adc783 100644 (file)
@@ -40,6 +40,12 @@ void AllBackends::Process(EventProcessors::iEventProcessor &eventProcessor)
                backend->Process(eventProcessor);
 }
 
+void AllBackends::PreInsert()
+{
+       foreach(QSharedPointer<iDBBackend> backend, Backends())
+               backend->PreInsert();
+}
+
 void AllBackends::Insert(EventTypes::iEvent &event, const NumberToNameLookup &numberToNameLookup)
 {
        foreach(QSharedPointer<iDBBackend> backend, Backends())
index a83a8a0..c455c38 100644 (file)
@@ -27,16 +27,17 @@ class Settings;
 #include <QList>
 template <typename T1> 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();
 
index 3483c35..e2817fa 100644 (file)
@@ -40,6 +40,10 @@ EventTypes::iEvent *const Fmms::CreateEvent(int &fevent, QList<void *> &fattachm
        return 0;
 }
 
+void Fmms::PreInsert()
+{
+}
+
 void Fmms::Insert(EventTypes::iEvent &event, const NumberToNameLookup &numberToNameLookup)
 {
        return;
index 1fec3e2..f92161b 100644 (file)
@@ -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);
index 077bdfe..aac4790 100644 (file)
@@ -23,6 +23,7 @@
 #include "EventTypes/iEvent.h"
 #include "EventTypes/PhoneCall.h"
 #include "EventTypes/SMS.h"
+#include "RtcomEventLoggerComponents/TriggerDisabler.h"
 #include "Settings.h"
 
 #include <QDebug>
@@ -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<EventTypes::RtcomEvent *>(&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()
index e00f205..a2a5053 100644 (file)
@@ -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<int> &InsertedIDs() { return m_InsertedIDs; }
 
-       private:
                const Settings &m_Settings;
                const QString mk_DBPath;
-               QList<int> m_InsertedIDs;
 
                QHash<EventTypes::eEventTypes, int> m_ServiceIDs;
+
+               QList<int> m_InsertedIDs;
+               QList<int> &InsertedIDs() { return m_InsertedIDs; }
+
+               RtcomEventLoggerComponents::TriggerDisabler *m_TriggerDisabler;
        };
 }
 
index 5acafde..88c1cc2 100644 (file)
@@ -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();
 
index da36473..2a5e3b1 100644 (file)
@@ -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");
index 76872d4..f834b8f 100644 (file)
@@ -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