activityfw/activityserviceplugin/win/activitydatabase_p.cpp
changeset 94 dbb8300717f7
parent 93 82b66994846c
child 95 c739008478cc
--- a/activityfw/activityserviceplugin/win/activitydatabase_p.cpp	Fri Apr 30 15:22:08 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,249 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-#include "activitydatabase_p.h"
-
-#include <QSqlDatabase>
-#include <QSqlQuery>
-#include <QSqlError>
-#include <QStringList>
-#include <QSettings>
-
-#include <hsactivitydbclient.h>
-
-const char KConnectionName[] = "ActivityDatabase";
-
-ActivityDatabasePrivate::ActivityDatabasePrivate()
-{
-    // determine database localization
-    QSettings settings("nokia", "activities");
-    if (!settings.contains("activitydatabase")) {
-        settings.setValue("activitydatabase", "C:\\activitydatabase.db");
-    }
-    QString databaseFile = settings.value("activitydatabase").toString();
-
-    QSqlDatabase database;
-    if (QSqlDatabase::contains(KConnectionName)) {
-        database = QSqlDatabase::database(KConnectionName);
-    } else {
-        database = QSqlDatabase::addDatabase("QSQLITE", KConnectionName);
-        database.setDatabaseName(databaseFile);
-        if (!database.open()) {
-            qFatal(qPrintable(database.lastError().text()));
-        }
-    }
-
-    if (!checkTables()) {
-        recreateTables();
-    }
-}
-
-ActivityDatabasePrivate::~ActivityDatabasePrivate()
-{
-    QSqlDatabase::database(KConnectionName).close();
-}
-
-void ActivityDatabasePrivate::saveActivity(const QString &applicationName, const QString &activityName, const QVariantHash &activityMetadata)
-{
-    if (applicationName.isEmpty() || activityName.isEmpty() || activityMetadata.value("screenshot").isNull()) {
-        qWarning("Activity entry is invalid, aborting save");
-        return;
-    }
-
-    QVariantHash activityData(activityMetadata);
-    activityData.insert(ActivityApplicationKeyword, applicationName);
-    activityData.insert(ActivityActivityKeyword, activityName);
-
-    // stream whole entry to bytearray
-    QByteArray streamedData;
-    {
-        QDataStream stream(&streamedData, QIODevice::WriteOnly);
-        stream << activityData;
-    }
-
-    QSqlDatabase database = QSqlDatabase::database(KConnectionName);
-
-    if (!database.transaction()) {
-        qFatal(qPrintable(database.lastError().text()));
-    }
-
-    // update or insert data
-    {
-        QSqlQuery query(database);
-        if (!query.exec(QString("SELECT ApplicationName FROM Activities WHERE ApplicationName = '%1' AND ActivityName = '%2'").arg(applicationName).arg(activityName))) {
-            qFatal(qPrintable(query.lastError().text()));
-        }
-
-        if (query.next()) {
-            if (!query.prepare("UPDATE Activities SET Data = :Data WHERE ApplicationName = :ApplicationName AND ActivityName = :ActivityName")) {
-                qFatal(qPrintable(query.lastError().text()));
-            }
-            query.bindValue(":Data", streamedData);
-            query.bindValue(":ApplicationName", applicationName);
-            query.bindValue(":ActivityName", activityName);
-            if (!query.exec()) {
-                qFatal(qPrintable(query.lastError().text()));
-            }
-        } else {
-            if (!query.prepare("INSERT INTO Activities(ApplicationName, ActivityName, Data) VALUES(:ApplicationName, :ActivityName, :Data)")) {
-                qFatal(qPrintable(query.lastError().text()));
-            }
-            query.bindValue(":ApplicationName", applicationName);
-            query.bindValue(":ActivityName", activityName);
-            query.bindValue(":Data", streamedData);
-            if (!query.exec()) {
-                qFatal(qPrintable(query.lastError().text()));
-            }
-        }
-    }
-
-    if (!database.commit()) {
-        qFatal(qPrintable(database.lastError().text()));
-    }
-}
-
-void ActivityDatabasePrivate::deleteActivity(const QString &applicationName, const QString &activityName)
-{
-    QString sqlCommand = QString("DELETE FROM Activities WHERE ApplicationName = '%1' AND ActivityName = '%2'").arg(applicationName).arg(activityName);
-    QSqlQuery query(QSqlDatabase::database(KConnectionName));
-    if (!query.exec(sqlCommand)) {
-        qFatal(qPrintable(query.lastError().text()));
-    }
-}
-
-void ActivityDatabasePrivate::deleteApplicationActivities(const QString &applicationName)
-{
-    QString sqlCommand = QString("DELETE FROM Activities WHERE ApplicationName = '%1'").arg(applicationName);
-    QSqlQuery query(QSqlDatabase::database(KConnectionName));
-    if (!query.exec(sqlCommand)) {
-        qFatal(qPrintable(query.lastError().text()));
-    }
-}
-
-QList<QVariantHash> ActivityDatabasePrivate::allActivitiesList()
-{
-    return activitiesList("SELECT Data FROM Activities");
-}
-
-QList<QVariantHash> ActivityDatabasePrivate::applicationActivitiesList(const QString &applicationName)
-{
-    return activitiesList(QString("SELECT Data FROM Activities WHERE ApplicationName = '%1'").arg(applicationName));
-}
-
-QList<QVariantHash> ActivityDatabasePrivate::activitiesList(const QString &sqlCommand)
-{
-    QSqlQuery query(QSqlDatabase::database(KConnectionName));
-    if (!query.exec(sqlCommand)) {
-        qFatal(qPrintable(query.lastError().text()));
-    }
-
-    QList<QVariantHash> result;
-    while (query.next()) {
-        QVariantHash activityEntry;
-        {
-            QByteArray data(query.value(0).toByteArray());
-            QDataStream stream(&data, QIODevice::ReadOnly);
-            stream >> activityEntry;
-        }
-        result.append(activityEntry);
-    }
-    return result;
-}
-
-QString ActivityDatabasePrivate::requestedActivityName(const QString &applicationName)
-{
-    QSqlQuery query(QSqlDatabase::database(KConnectionName));
-    if (!query.exec(QString("SELECT ActivityName FROM Activities WHERE ApplicationName = '%1' AND RequestFlag").arg(applicationName))) {
-        qFatal(qPrintable(query.lastError().text()));
-    }
-
-    QString result;
-    if (query.next()) {
-        result = query.value(0).toString();
-    }
-    return result;
-}
-
-void ActivityDatabasePrivate::setActivityRequestFlag(const QString &applicationName, const QString &activityName)
-{
-    QSqlQuery query(QSqlDatabase::database(KConnectionName));
-
-    // clear old requests for given application
-    if (!query.exec(QString("UPDATE Activities SET RequestFlag=0 WHERE ApplicationName = '%1'").arg(applicationName))) {
-        qFatal(qPrintable(query.lastError().text()));
-    }
-
-    // set new request
-    if (!query.exec(QString("UPDATE Activities SET RequestFlag=1 WHERE ApplicationName = '%1' AND ActivityName = '%2'").arg(applicationName).arg(activityName))) {
-        qFatal(qPrintable(query.lastError().text()));
-    }
-}
-
-void ActivityDatabasePrivate::clearActivityRequestFlag(const QString &applicationName, const QString &activityName)
-{
-    QSqlQuery query(QSqlDatabase::database(KConnectionName));
-
-    // just clear the given request
-    if (!query.exec(QString("UPDATE Activities SET RequestFlag=0 WHERE ApplicationName = '%1' AND ActivityName = '%2'").arg(applicationName).arg(activityName))) {
-        qFatal(qPrintable(query.lastError().text()));
-    }
-}
-
-bool ActivityDatabasePrivate::checkTables()
-{
-    QStringList expectedTables("Activities");
-    QStringList actualTables = QSqlDatabase::database(KConnectionName).tables();
-    return (expectedTables == actualTables);
-}
-
-void ActivityDatabasePrivate::recreateTables()
-{
-    QSqlDatabase database = QSqlDatabase::database(KConnectionName);
-
-    if (!database.transaction()) {
-        qFatal(qPrintable(database.lastError().text()));
-    }
-
-    // drop any existing tables
-    {
-        QSqlQuery dropQuery(database);
-        foreach(const QString &tableName, database.tables()) {
-            if (!dropQuery.exec(QString("DROP TABLE %1").arg(tableName))) {
-                qFatal(qPrintable(dropQuery.lastError().text()));
-            }
-        }
-    }
-
-    // create new table
-    {
-        QSqlQuery createQuery(database);
-        QString statement(
-            "CREATE TABLE Activities("
-            "ApplicationName TEXT NOT NULL,"
-            "ActivityName TEXT NOT NULL,"
-            "RequestFlag BOOL NOT NULL DEFAULT FALSE,"
-            "Data BLOB NOT NULL,"
-            "PRIMARY KEY(ActivityName, ApplicationName))");
-
-        if (!createQuery.exec(statement)) {
-            qFatal(qPrintable(createQuery.lastError().text()));
-        }
-    }
-
-    if (!database.commit()) {
-        qFatal(qPrintable(database.lastError().text()));
-    }
-}