Skip to content

Commit

Permalink
[sociald] Use libsocialcache for caching operations
Browse files Browse the repository at this point in the history
This commit starts the migration work to libsocialcache
for interaction with the social cache databases.
  • Loading branch information
SfietKonstantin committed Sep 26, 2013
1 parent efb32c0 commit 9cee456
Show file tree
Hide file tree
Showing 9 changed files with 152 additions and 877 deletions.
1 change: 1 addition & 0 deletions rpm/sociald.spec
Expand Up @@ -22,6 +22,7 @@ BuildRequires: pkgconfig(libkcalcoren-qt5)
BuildRequires: nemo-qml-plugin-notifications-qt5-devel
BuildRequires: libmeegotouchevents-qt5-devel
BuildRequires: buteo-syncfw-qt5-devel
BuildRequires: pkgconfig(socialcache)
# for lupdate
BuildRequires: qt5-qttools-linguist
Requires: sailfish-components-accounts-qt5 >= 0.0.43
Expand Down
4 changes: 2 additions & 2 deletions src/facebook/facebookcalendartypesyncadaptor.h
Expand Up @@ -9,11 +9,11 @@
#define FACEBOOKCALENDARTYPESYNCADAPTOR_H

#include "facebookdatatypesyncadaptor.h"
#include "databasemanipulationinterface.h"
#include "internaldatabasemanipulationinterface.h"

class FacebookCalendarTypeSyncAdaptor
: public FacebookDataTypeSyncAdaptor
, private DatabaseManipulationInterface
, private InternalDatabaseManipulationInterface
{
Q_OBJECT

Expand Down
936 changes: 111 additions & 825 deletions src/facebook/facebookimagesyncadaptor.cpp

Large diffs are not rendered by default.

49 changes: 12 additions & 37 deletions src/facebook/facebookimagesyncadaptor.h
Expand Up @@ -20,15 +20,12 @@
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QSslError>

#include <QtContacts/QContactManager>
#include <QtContacts/QContactAbstractRequest>
#include <QtContacts/QContactFetchRequest>
#include <QtContacts/QContactFetchHint>
#include <QtContacts/QContact>
#include <socialcache/facebookimagesdatabase.h>

class SyncService;

class FacebookImageSyncAdaptor : public FacebookDataTypeSyncAdaptor
class FacebookImageSyncAdaptor
: public FacebookDataTypeSyncAdaptor
{
Q_OBJECT

Expand All @@ -41,53 +38,31 @@ class FacebookImageSyncAdaptor : public FacebookDataTypeSyncAdaptor
protected: // implementing FacebookDataTypeSyncAdaptor interface
void purgeDataForOldAccounts(const QList<int> &oldIds);
void beginSync(int accountId, const QString &accessToken);
void finalize();

private:
void requestData(int accountId, const QString &accessToken, const QString &continuationUrl,
const QString &fbUserId, const QString &fbAlbumId);
bool haveAlreadyCachedAlbum(const QString &fbAlbumId, const QDateTime &updatedTime);
bool haveAlreadyCachedImage(const QString &fbPhotoId, const QString &imageUrl, int accountId);
void cacheImage(const QString &fbPhotoId, const QString &fbAlbumId,
const QString &fbUserId, const QString &createdTime,
const QString &updatedTime, const QString &thumbnailUrl,
const QString &imageUrl, const QString &photoName,
int width, int height);
void possiblyAddNewUser(const QString &fbUserId, const QString &fbUserName,
int accountId, const QString &accessToken);
void possiblyAddNewAlbum(const QString &fbAlbumId, const QString &fbUserId,
const QString &fbUserName, const QString &createdTime,
const QString &updatedTime, const QString &albumName,
int photoCount, const QString &coverPhotoId,
int accountId, const QString &accessToken);

QStringList queryDatabaseRow(const QString &fbPhotoId);
void updateAccountsTable(int accountId, const QString &fbUserId);
void purgeAccount(int accountId);

int dbUserVersion();
bool dbCreateTables();
bool dbDropTables();
bool haveAlreadyCachedImage(const QString &fbImageId, const QString &imageUrl, int accountId);
void possiblyAddNewUser(const QString &fbUserId, int accountId, const QString &accessToken);


private Q_SLOTS:
void albumsFinishedHandler();
void photosFinishedHandler();
void imagesFinishedHandler();
void userFinishedHandler();

private:
QSqlDatabase m_imgdb;

// for server-side removal detection.
void initRemovalDetectionLists();
void clearRemovalDetectionLists();
QStringList photosInAlbum(const QString &fbAlbumId);
bool purgeAlbum(const QString &fbAlbumId);
bool purgePhoto(const QString &fbPhotoId);
void purgeDetectedRemovals();
// void purgeDetectedRemovals();
QStringList m_cachedAlbumIds;
QStringList m_cachedPhotoIds;
QStringList m_cachedImageIds;
QStringList m_serverAlbumIds;
QStringList m_serverPhotoIds;
QStringList m_serverImageIds;

FacebookImagesDatabase m_db;
};

#endif // FACEBOOKIMAGESYNCADAPTOR_H
Expand Up @@ -5,7 +5,7 @@
**
****************************************************************************/

#include "databasemanipulationinterface.h"
#include "internaldatabasemanipulationinterface.h"
#include <QtCore/QDir>
#include <QtCore/QFile>
#include <QtSql/QSqlQuery>
Expand All @@ -14,11 +14,11 @@
#include "trace.h"
#include "syncservice.h"

DatabaseManipulationInterface::~DatabaseManipulationInterface()
InternalDatabaseManipulationInterface::~InternalDatabaseManipulationInterface()
{
}

bool DatabaseManipulationInterface::initDatabase(const QString &serviceName,
bool InternalDatabaseManipulationInterface::initDatabase(const QString &serviceName,
const QString &dataType, const QString &baseDir,
const QString &dbFile, int userVersion)
{
Expand Down Expand Up @@ -75,7 +75,7 @@ bool DatabaseManipulationInterface::initDatabase(const QString &serviceName,
return true;
}

bool DatabaseManipulationInterface::createPragmaVersion(const QString &serviceName,
bool InternalDatabaseManipulationInterface::createPragmaVersion(const QString &serviceName,
const QString &dataType, int version)
{
QSqlQuery query (db);
Expand All @@ -90,7 +90,7 @@ bool DatabaseManipulationInterface::createPragmaVersion(const QString &serviceNa
return true;
}

int DatabaseManipulationInterface::dbUserVersion(const QString &serviceName,
int InternalDatabaseManipulationInterface::dbUserVersion(const QString &serviceName,
const QString &dataType) const
{
const QString queryStr = QString("PRAGMA user_version");
Expand Down
Expand Up @@ -5,15 +5,15 @@
**
****************************************************************************/

#ifndef DATABASEMANIPULATIONINTERFACE_H
#define DATABASEMANIPULATIONINTERFACE_H
#ifndef INTERNALDATABASEMANIPULATIONINTERFACE_H
#define INTERNALDATABASEMANIPULATIONINTERFACE_H

#include <QtSql/QSqlDatabase>

class DatabaseManipulationInterface
class InternalDatabaseManipulationInterface
{
public:
virtual ~DatabaseManipulationInterface();
virtual ~InternalDatabaseManipulationInterface();
protected:
bool initDatabase(const QString &serviceName, const QString &dataType, const QString &baseDir,
const QString &dbFile, int userVersion);
Expand All @@ -25,4 +25,4 @@ class DatabaseManipulationInterface
int dbUserVersion(const QString &serviceName, const QString &dataType) const;
};

#endif // DATABASEMANIPULATIONINTERFACE_H
#endif // INTERNALDATABASEMANIPULATIONINTERFACE_H
11 changes: 11 additions & 0 deletions src/socialnetworksyncadaptor.cpp
Expand Up @@ -126,6 +126,15 @@ void SocialNetworkSyncAdaptor::checkAccounts(SyncService::DataType dataType, QLi
}
}

/*!
\internal
Called when the semaphores decreased to 0, this method is used
to finalize something, like saving all data to a database.
*/
void SocialNetworkSyncAdaptor::finalize()
{
}

/*!
\internal
Returns the last sync timestamp for the given service, account and data type.
Expand Down Expand Up @@ -570,6 +579,8 @@ void SocialNetworkSyncAdaptor::decrementSemaphore(int accountId)
m_accountSyncSemaphores.insert(accountId, semaphoreValue);

if (semaphoreValue == 0) {
finalize();

// finished all outstanding sync requests for this account.
// update the sync time in the global sociald database.
updateLastSyncTimestamp(m_serviceName,
Expand Down
1 change: 1 addition & 0 deletions src/socialnetworksyncadaptor.h
Expand Up @@ -63,6 +63,7 @@ class SocialNetworkSyncAdaptor : public QObject
void enabledChanged();

protected:
virtual void finalize();
QDateTime lastSyncTimestamp(const QString &serviceName, const QString &dataType, const QString &accountId) const;
bool updateLastSyncTimestamp(const QString &serviceName, const QString &dataType, const QString &accountId, const QDateTime &timestamp);
QDateTime whenSyncedDatum(const QString &serviceName, const QString &datumIdentifier) const;
Expand Down
7 changes: 4 additions & 3 deletions src/src.pro
Expand Up @@ -12,7 +12,8 @@ PKGCONFIG += Qt5Contacts \
nemonotifications-qt5 \
buteosyncfw5 \
libmkcal-qt5 \
libkcalcoren-qt5
libkcalcoren-qt5 \
socialcache

DEFINES *= USING_QTPIM
DEFINES *= BEGIN_CONTACTS_NAMESPACE=QT_BEGIN_NAMESPACE_CONTACTS
Expand Down Expand Up @@ -49,13 +50,13 @@ HEADERS += \
$$PWD/syncservice.h \
$$PWD/syncservice_p.h \
$$PWD/trace.h \
$$PWD/databasemanipulationinterface.h
$$PWD/internaldatabasemanipulationinterface.h

SOURCES += \
$$PWD/buteosocialsync.cpp \
$$PWD/socialnetworksyncadaptor.cpp \
$$PWD/syncservice.cpp \
$$PWD/databasemanipulationinterface.cpp
$$PWD/internaldatabasemanipulationinterface.cpp

MOC_DIR = $$PWD/../.moc
OBJECTS_DIR = $$PWD/../.obj
Expand Down

0 comments on commit 9cee456

Please sign in to comment.