activityfw/activitydatabase/hsactivitydbserver/src/hsactivitystorage_p.cpp
changeset 93 82b66994846c
parent 92 782e3408c2ab
child 94 dbb8300717f7
--- a/activityfw/activitydatabase/hsactivitydbserver/src/hsactivitystorage_p.cpp	Fri Apr 16 14:45:49 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,345 +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 <QSqlQuery>
-#include <QSqlError>
-#include <QStringList>
-#include <QSettings>
-#include <QSqlDriver>
-#include <QDebug>
-#include "hsactivitystorage_p.h"
-#include "hsactivity.h"
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-HsActivityStoragePrivate::HsActivityStoragePrivate()
-{
-    // determine database localization
-    QSettings settings(ActivityOrganization, ActivityApplication);
-    settings.setValue(ActivityStorageProperty, ActivityDefaultStorage);
-    if (!settings.contains(ActivityStorageProperty)) {
-        settings.setValue(ActivityStorageProperty, ActivityDefaultStorage);
-    }
-    QString databaseFile = settings.value(ActivityStorageProperty).toString();
-
-    if (QSqlDatabase::contains(ActivityStorageName)) {
-        mConn = QSqlDatabase::database(ActivityStorageName);
-    } else {
-        mConn = QSqlDatabase::addDatabase(ActivityStorageDriver, ActivityStorageName);
-        mConn.setDatabaseName(databaseFile);
-        if (!mConn.open()) {
-            qWarning(qPrintable(mConn.lastError().text()));
-            return;
-        }
-    }
-    if (!checkTables()) {
-        recreateTables();
-    }
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-HsActivityStoragePrivate::~HsActivityStoragePrivate()
-{
-    mConn.close();
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::addActivity(const QVariantHash &activity)
-{
-    // stream whole entry to bytearray
-    QByteArray streamedData;
-    QDataStream stream(&streamedData, QIODevice::WriteOnly);
-    stream << activity;
-
-    //insert data
-    QSqlQuery query(mConn);
-    query.prepare(ActivitySelectActivityQuery);
-    bind(query, activity);
-    exec(query);
-    if (query.next()) {
-        return KErrGeneral;
-    }
-    query.prepare(ActivityInsertActivityQuery);
-    QVariantHash additionalData;
-    additionalData.insert(ActivityDataKeyword, streamedData);
-    bind(query, activity, additionalData);
-    exec(query);
-    return 0>=query.numRowsAffected() ? KErrGeneral : getSqlErrorCode(query);
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::updateActivity(const QVariantHash &activity)
-{
-    // stream whole entry to bytearray
-    QByteArray streamedData;
-    QDataStream stream(&streamedData, QIODevice::WriteOnly);
-    stream << activity;
-
-    // update
-    QSqlQuery query(mConn);
-    query.prepare(ActivityUpdateActivityQuery);
-    QVariantHash additionalData;
-    additionalData.insert(ActivityDataKeyword, streamedData);
-    bind(query, activity, additionalData);
-    exec(query);
-    return 0>=query.numRowsAffected() ? KErrGeneral : getSqlErrorCode(query);
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::removeActivity(const QVariantHash &activity)
-{
-    return exec(ActivityDeleteActivityQuery, activity);
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::removeApplicationActivities(const QVariantHash &activity)
-{
-    return exec(ActivityDeleteApplicationActivitiesQuery, activity);
-}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::requestedActivityName(QString &result,
-        const QVariantHash &activity)
-{
-    QSqlQuery query(mConn);
-    query.prepare(ActivitySelectActiveQuery);
-    bind(query, activity);
-    int retVal(KErrNone);
-    if (exec(query) && query.next()) {
-        result = query.value(0).toString();
-    } else {
-        retVal = KErrNotFound;
-    }
-    return retVal;
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::activities(QList<QVariantHash>& result)
-{
-    return activities(result, ActivityActivitiesQuery, QVariantHash());
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::applicationActivities(QList<QVariantHash> & result,
-        const QVariantHash &condition)
-{
-    return activities(result, ActivityApplicationActivitiesQuery, condition);
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::waitActivity(const QVariantHash &)
-{
-    return KErrNotSupported;
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::launchActivity(const QVariantHash &)
-{
-    return KErrNotSupported;
-}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-bool HsActivityStoragePrivate::checkTables()
-{
-    return (QStringList("Activities") == mConn.tables());
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void HsActivityStoragePrivate::recreateTables()
-{
-    //start sql transaction
-    if (!mConn.transaction()) {
-        qErrnoWarning(qPrintable(mConn.lastError().text()));
-        return;
-    }
-
-    // drop any existing tables
-    QSqlQuery query(mConn);
-    foreach(const QString &tableName, mConn.tables()) {
-        query.prepare(ActivityDropQuery);
-        query.bindValue(ActivityTableKeyword, tableName);
-        exec(query);
-    }
-
-    // create new table
-    query.prepare(ActivityCreateQuery);
-    exec(query);
-
-    //finish sql transaction
-    if (!mConn.commit()) {
-        qErrnoWarning(qPrintable(mConn.lastError().text()));
-    }
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::getSqlErrorCode(const QSqlQuery &query)
-{
-    const QSqlError err(query.lastError());
-    const QString errStr(err.text());
-
-    if (QSqlError ::NoError == err.type()) {
-        return 0;
-    } else {
-        qErrnoWarning(qPrintable(errStr));
-        return err.number();
-    }
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-bool HsActivityStoragePrivate::exec(QSqlQuery &query)
-{
-    const bool retVal = query.exec();
-    qErrnoWarning(qPrintable(query.lastQuery()));
-    if (!retVal) {
-        getSqlErrorCode(query);
-    }
-    return retVal;
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-bool HsActivityStoragePrivate::exec(const QString &queryStr, const QVariantHash &params)
-{
-    QSqlQuery query(mConn);
-    query.prepare(queryStr);
-    bind(query, params);
-    query.exec();
-    return getSqlErrorCode(query);
-
-}
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void HsActivityStoragePrivate::bind(QSqlQuery &query,
-                                    const QVariantHash &activity,
-                                    const QVariantHash &additionalData)
-{
-    const QChar tag(' ');
-    QString queryString(query.lastQuery());
-    QVariantHash::const_iterator iter;
-    int offset(0);
-    QStringList tokens;
-
-    //explode SQL query to tokens
-    do {
-        offset = queryString.indexOf(tag, 0);
-        if (0 < offset) {
-            tokens << queryString.left(offset++);
-            queryString = queryString.right(queryString.length() - offset);
-        } else {
-            if (0 < queryString.length()) {
-                tokens << queryString;
-            }
-            break;
-        }
-    } while (true);
-
-    //current Sql driver doesnt support proper query formating.
-    //reuest filtering data has to be binded in right order.
-    QStringList::iterator token = tokens.begin();
-    //iterate all tokens
-    for (; token != tokens.end(); token = tokens.erase(token)) {
-        //iterate all provided data and chcek if it match pattern
-        for (iter = activity.constBegin();
-                iter != activity.constEnd();
-                ++iter) {
-            if ((*token).contains(iter.key())) {
-                query.bindValue(iter.key(), iter.value());
-                break;
-            }
-        }
-        for (iter = additionalData.constBegin();
-                iter != additionalData.constEnd();
-                ++iter) {
-            if ((*token).contains(iter.key())) {
-                query.bindValue(iter.key(), iter.value());
-                break;
-            }
-        }
-    }
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-int HsActivityStoragePrivate::activities(QList<QVariantHash> &results,
-        const QString &queryStr,
-        const QVariantHash &conditions)
-{
-    results.clear();
-
-    QSqlQuery query(mConn);
-    query.prepare(queryStr);
-    bind(query, conditions);
-    if (exec(query)) {
-        QVariantHash activityEntry;
-        while (query.next()) {
-            activityEntry.clear();
-            QByteArray data(query.value(0).toByteArray());
-            QDataStream stream(&data, QIODevice::ReadOnly);
-            stream >> activityEntry;
-            results.append(activityEntry);
-        }
-    }
-    return getSqlErrorCode(query);
-}