--- /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));
+ }