harvester/contentinfodb/src/contentinfodbupdate.cpp
changeset 23 d4d56f5e7c55
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/harvester/contentinfodb/src/contentinfodbupdate.cpp	Tue Oct 05 13:15:12 2010 +0530
@@ -0,0 +1,338 @@
+/*
+ * 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:  update api for contentinfodb 
+ *
+ */
+#include "contentinfodbupdate.h"
+#include "contentinfodbparser.h"
+#include "contentinfodb.h"
+#include "cpixcontentinfodbdef.h"
+
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::ContentInfoDbUpdate()
+// ---------------------------------------------------------------------------
+//
+ContentInfoDbUpdate::ContentInfoDbUpdate() :
+    iParser(NULL),mdb(NULL)
+    {
+    mdb = ContentInfoDb::instance();
+    iParser = new ContentInfoDbParser();
+    if (iParser)
+        {
+        connect(iParser, SIGNAL(categoryDetails(QMap<QString,QString>)),
+                this, SLOT(slotupdateCategoryInfo(QMap<QString,QString>)));
+        connect(iParser, SIGNAL(actionUri(QMap<QString,QString>)), this,
+                SLOT(slotupdateUri(QMap<QString,QString>)));
+        connect(iParser, SIGNAL(filedMapping(QString,QStringList)), this,
+                SLOT(slotupdateFieldmapping(QString,QStringList)));
+        connect(iParser, SIGNAL(firstLineMapping(QStringList)), this,
+                SLOT(slotfirstLineMapping(QStringList)));
+        connect(iParser, SIGNAL(relevancyMapping(QString,QString)), this,
+                SLOT(slotrelevancyMapping(QString,QString)));
+        }
+    counter = 0;
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::~ContentInfoDbUpdate()
+// ---------------------------------------------------------------------------
+//
+ContentInfoDbUpdate::~ContentInfoDbUpdate()
+    {
+    ContentInfoDb::deleteinstance();
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::UpdateDb()
+// ---------------------------------------------------------------------------
+//
+bool ContentInfoDbUpdate::UpdateDb(QString xmlpath)
+    {
+    if (mdb)
+       (void)mdb->Open();
+    if (iParser)
+        {
+        primarykey = QString();
+        return iParser->parse(xmlpath);
+        }
+    return false;
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::UpdateBlacklisted()
+// ---------------------------------------------------------------------------
+//
+bool ContentInfoDbUpdate::UpdateBlacklisted(QString primarykey, int value)
+    {
+    if (mdb)
+        (void)mdb->Open();
+    QString query = QString(QUERYUPDATEDATA).arg(MAINTABLENAME).arg(
+            BLACKLISTSTATUS).arg(value).arg(TAGPRIMARYKEY).arg(primarykey);
+    if (!mdb->writeData(query))
+        return false;
+    return true;
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::UpdateIndexStatus()
+// ---------------------------------------------------------------------------
+//
+bool ContentInfoDbUpdate::UpdateIndexStatus(QString primarykey, int value)
+    {
+    if (mdb)
+        (void)mdb->Open();
+    QString query = QString(QUERYUPDATEDATA).arg(MAINTABLENAME).arg(
+            INDEXINGSTATUS).arg(value).arg(TAGPRIMARYKEY).arg(primarykey);
+    if (!mdb->writeData(query))
+        return false;
+    return true;
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::InsertPrimaryKey()
+// ---------------------------------------------------------------------------
+//
+QString ContentInfoDbUpdate::InsertPrimaryKey(QString tableName,
+        QString tagName, QMap<QString, QString> data)
+    {
+    QMapIterator<QString, QString> i(data);
+    QString query;
+    QString p_key;
+    while (i.hasNext())
+        {
+        i.next();
+        if (i.key() == tagName)
+            {
+            p_key = i.value();
+            break;
+            }
+        }
+    query = QString(QUERYINSERTROW).arg(tableName).arg(tagName).arg(p_key);
+    mdb->writeData(query);
+    return p_key;
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::slotupdateCategoryInfo()
+// ---------------------------------------------------------------------------
+//
+void ContentInfoDbUpdate::slotupdateCategoryInfo(QMap<QString, QString> map)
+    {
+    QString query;
+    QString p_key = InsertPrimaryKey(MAINTABLENAME, TAGPRIMARYKEY, map);
+    primarykey = p_key;
+    if (p_key.length())
+        {
+        QMapIterator<QString, QString> i(map);
+        while (i.hasNext())
+            {
+            i.next();
+            if (i.key() != TAGPRIMARYKEY)
+                {
+                query = QString();
+                if ((i.key() == TAGACTIONURI) || (i.key() == TAGFIELDMAP)
+                        || (i.key() == TAGRELEVANCY) || (i.key()
+                        == TAGRESULTFIRSTLINE))
+                    {
+                    counter++;
+                    QString tablename = QString(DYNAMICTABLE).arg(counter);
+                    query = QString(QUERYUPDATEDATA).arg(MAINTABLENAME).arg(
+                            i.key()).arg(tablename).arg(TAGPRIMARYKEY).arg(
+                            p_key);
+                    }
+                else
+                    {
+                    query = QString(QUERYUPDATEDATA).arg(MAINTABLENAME).arg(
+                            i.key()).arg(i.value()).arg(TAGPRIMARYKEY).arg(
+                            p_key);
+                    }
+                if (!mdb->writeData(query))
+                    {
+                    
+                    }                
+                }
+            }
+        }
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::slotupdateUri()
+// ---------------------------------------------------------------------------
+//
+void ContentInfoDbUpdate::slotupdateUri(QMap<QString, QString> map)
+    {
+    //get actionuri table name
+    QString query = QString(QUERYDATARETRIVAL).arg(TAGACTIONURI).arg(
+            MAINTABLENAME).arg(TAGPRIMARYKEY).arg(primarykey);
+    QString actionuritablename = mdb->readStringData(query);
+
+    if (actionuritablename.length())
+        {
+        query = QString();
+        query = QString(QUERYCREATEACTIONURITABLE).arg(actionuritablename);
+        mdb->createTable(actionuritablename, query);
+        QString p_key = InsertPrimaryKey(actionuritablename,
+                TAGACTIONURISTRING, map);
+        if (p_key.length())
+            {
+            QMapIterator<QString, QString> i(map);
+            while (i.hasNext())
+                {
+                i.next();
+                if (i.key() != TAGACTIONURISTRING)
+                    {
+                    query = QString();
+                    query
+                            = QString(QUERYUPDATEDATA).arg(actionuritablename).arg(
+                                    i.key()).arg(i.value()).arg(
+                                    TAGACTIONURISTRING).arg(p_key);
+                    if (!mdb->writeData(query))
+                        {
+                        
+                        }   
+                    }
+                }
+            }
+        }
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::slotupdateFieldmapping()
+// ---------------------------------------------------------------------------
+//
+void ContentInfoDbUpdate::slotupdateFieldmapping(QString key,
+        QStringList value)
+    {
+    //get fieldmap table name from maintable
+    QString query = QString(QUERYDATARETRIVAL).arg(TAGFIELDMAP).arg(
+            MAINTABLENAME).arg(TAGPRIMARYKEY).arg(primarykey);
+    QString fieldtablename = mdb->readStringData(query);
+
+    if (fieldtablename.length())
+        {
+        // create a table for fieldmap 
+        query = QString();
+        query = QString(QUERYCREATEFIELDMAPTABLE).arg(fieldtablename);
+        mdb->createTable(fieldtablename, query);
+
+        // insert the field in filedmap table
+        query = QString();
+        query
+                = QString(QUERYINSERTROW).arg(fieldtablename).arg(TAGFIELD).arg(
+                        key);
+        mdb->writeData(query);
+            {
+            
+            }
+
+        counter++;
+        query = QString();
+
+        QString tablename = QString(DYNAMICTABLE).arg(counter);
+
+        // enter the value as table name second column in field map will refer to another table
+        query
+                = QString(QUERYUPDATEDATA).arg(fieldtablename).arg(TAGURILIST).arg(
+                        tablename).arg(TAGFIELD).arg(key);
+        if (!mdb->writeData(query))
+            {
+            
+            }
+
+        query = QString();
+        // creating a table for the field map values 
+        query = QString(QUERYCREATEFIELDMAPSUBTABLE).arg(tablename);
+        mdb->createTable(tablename, query);
+
+        for (int i = 0; i < value.count(); i++)
+            {
+            query = QString();
+            // inserting the uri list mapped for a particular field
+            query = QString(QUERYINSERTROW).arg(tablename).arg(TAGAURI).arg(
+                    value[i]);
+            if (!mdb->writeData(query))
+                {
+            
+                }
+            }
+        }
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::slotfirstLineMapping()
+// ---------------------------------------------------------------------------
+//
+void ContentInfoDbUpdate::slotfirstLineMapping(QStringList list)
+    {
+    //get actionuri table name
+    QString query = QString(QUERYDATARETRIVAL).arg(TAGRESULTFIRSTLINE).arg(
+            MAINTABLENAME).arg(TAGPRIMARYKEY).arg(primarykey);
+    QString firstlinetablename = mdb->readStringData(query);
+
+    if (firstlinetablename.length())
+        {
+        query = QString();
+        query = QString(QUERYCREATEFIRSTLINETABLE).arg(firstlinetablename);
+        mdb->createTable(firstlinetablename, query);
+
+        for (int i = 0; i < list.count(); i++)
+            {
+            query = QString();
+            // inserting the uri list mapped for a particular field
+            query = QString(QUERYINSERTROW).arg(firstlinetablename).arg(
+                    TAGFIELD).arg(list[i]);
+            if (!mdb->writeData(query))
+                {
+                
+                }
+            }
+        }
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::slotrelevancyMapping()
+// ---------------------------------------------------------------------------
+//
+void ContentInfoDbUpdate::slotrelevancyMapping(QString field,
+        QString boostvalue)
+    {
+    QString query = QString(QUERYDATARETRIVAL).arg(TAGRELEVANCY).arg(
+            MAINTABLENAME).arg(TAGPRIMARYKEY).arg(primarykey);
+    QString relevancytablename = mdb->readStringData(query);
+    if (relevancytablename.length())
+        {
+        query = QString();
+        query = QString(QUERYCREATERELEVANCYTABLE).arg(relevancytablename);
+        mdb->createTable(relevancytablename, query);
+
+        query = QString();
+        // inserting field name as a primary key
+        query
+                = QString(QUERYINSERTROW).arg(relevancytablename).arg(
+                        TAGFIELD).arg(field);
+
+        if (!mdb->writeData(query))
+            {
+
+            }
+        query = QString();
+        // updating the row with boostvalue
+        query = QString(QUERYUPDATEDATA).arg(relevancytablename).arg(
+                TAGBOOSTVALUE).arg(boostvalue).arg(TAGFIELD).arg(field);
+        if (!mdb->writeData(query))
+            {
+
+            }
+        }
+    }
+// ---------------------------------------------------------------------------
+// ContentInfoDbUpdate::slotrelevancyMapping()
+// ---------------------------------------------------------------------------
+//
+void ContentInfoDbUpdate::deleteCategory(QString Key)
+    {
+    if (mdb)
+        (void)mdb->Open();
+    mdb->writeData(QString(QUERYDELETE).arg(Key));
+    }