diff -r 1fc85118c3ae -r 870918037e16 locationdataharvester/locationdatalookupdb/locationdatalookupdb.cpp --- a/locationdataharvester/locationdatalookupdb/locationdatalookupdb.cpp Tue Aug 31 15:09:25 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,695 +0,0 @@ -/* -* Copyright (c) 2010 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: Location data lookup db implementation -* -*/ - -// INCLUDE FILES -#include "locationdatalookupdb.h" -#include -#include -#include -#include -#include -#include - -// database name -#ifdef LOCPICKER_UNIT_TEST -const QString KLocationDataLookupDbName = "c:\\locationdatalookuptestdb.db"; -#else -const QString KLocationDataLookupDbName = "c:\\locationdatalookupdb.db"; -#endif - - -// ================= MEMBER FUNCTIONS ======================= -// -// --------------------------------------------------------- -// LocationDataLookupDb::LocationDataLookupDb() -// Constructor -// --------------------------------------------------------- -// -LocationDataLookupDb::LocationDataLookupDb( QObject *parent) : - QObject( parent ), - mDb( NULL ), - mDbOpen( false ) -{ - mDb = new QSqlDatabase(); - *mDb = QSqlDatabase::addDatabase( "QSQLITE" ); - mDb->setDatabaseName( KLocationDataLookupDbName ); - if (!mDb->open()) - { - delete mDb; - mDb = NULL; - return; - } - - // create lookup table if doesnot exist - QSqlQuery query(*mDb); - query.exec("create table if not exists lplookup (id INTEGER PRIMARY KEY AUTOINCREMENT," - "duplicate int," - "sourceid int," - "sourcetype int," - "destid int," - "name varchar(255)," - "street varchar(255)," - "postal varchar(50)," - "city varchar(50)," - "state varchar(50)," - "country varchar(50)," - "latitude double," - "longitude double," - "icontype int," - "iconpath varchar(255)," - "maptile varchar(255))"); - - - query.exec("create table if not exists lplookupaddress (" - "sourceid int," - "address varchar(255))"); - mDb->close(); -} - -// --------------------------------------------------------- -// LocationDataLookupDb::~LocationDataLookupDb() -// destructor -// --------------------------------------------------------- -LocationDataLookupDb::~LocationDataLookupDb() -{ - if( mDb ) - delete mDb; -} - -// --------------------------------------------------------- -// LocationDataLookupDb::open() -// --------------------------------------------------------- -bool LocationDataLookupDb::open() -{ - if( !mDbOpen ) - { - mDbOpen = mDb->open(); - } - return mDbOpen; -} - -// --------------------------------------------------------- -// LocationDataLookupDb::close() -// --------------------------------------------------------- -void LocationDataLookupDb::close() -{ - if( mDbOpen ) - mDb->close(); - mDbOpen = false; -} - -// --------------------------------------------------------- -// LocationDataLookupDb::createEntry() -// --------------------------------------------------------- -void LocationDataLookupDb::createEntry( QLookupItem& aLookupItem ) -{ - if( mDbOpen ) - { - QSqlQuery query(*mDb); - query.prepare("INSERT INTO lplookup (" - "id, " - "duplicate, " - "sourceid, " - "sourcetype, " - "destid, " - "name, " - "street, " - "postal, " - "city, " - "state, " - "country, " - "latitude, " - "longitude, " - "icontype, " - "iconpath, " - "maptile) " - "VALUES (" - "NULL, " - ":duplicate, " - ":sourceid, " - ":sourcetype, " - ":destid, " - ":name, " - ":street, " - ":postal, " - ":city, " - ":state, " - ":country, " - ":latitude, " - ":longitude, " - ":icontype, " - ":iconpath, " - ":maptile)" ); - query.bindValue(":duplicate", aLookupItem.mIsDuplicate); - query.bindValue(":sourceid", aLookupItem.mSourceUid); - query.bindValue(":sourcetype", aLookupItem.mSourceType); - query.bindValue(":destid", aLookupItem.mDestId); - query.bindValue(":name", aLookupItem.mName); - query.bindValue(":street", aLookupItem.mStreet); - query.bindValue(":postal", aLookupItem.mPostalCode); - query.bindValue(":city", aLookupItem.mCity); - query.bindValue(":state", aLookupItem.mState); - query.bindValue(":country", aLookupItem.mCountry); - query.bindValue(":latitude", aLookupItem.mLatitude); - query.bindValue(":longitude", aLookupItem.mLongitude); - query.bindValue(":icontype", aLookupItem.mIconType); - query.bindValue(":iconpath", aLookupItem.mIconPath); - query.bindValue(":maptile", aLookupItem.mMapTilePath); - query.exec(); - - QVariant var = query.lastInsertId(); - aLookupItem.mId = var.toInt(); - - if(aLookupItem.mSourceType==ESourceCalendar) - { - query.prepare("INSERT INTO lplookupaddress (" - "sourceid ," - "address )" - "VALUES (" - ":sourceid, " - ":address) " ); - - query.bindValue(":sourceid", aLookupItem.mSourceUid); - query.bindValue(":address", aLookupItem.mSingleLineAddress); - query.exec(); - - } - - } -} - -// --------------------------------------------------------- -// LocationDataLookupDb::updateEntryBySourceIdAndType() -// --------------------------------------------------------- -void LocationDataLookupDb::updateEntryBySourceIdAndType( const QLookupItem& aLookupItem ) -{ - if( mDbOpen ) - { - QSqlQuery query(*mDb); - query.prepare("UPDATE lplookup SET " - "id = ?, " - "duplicate = ?, " - "sourceid = ?, " - "sourcetype = ?, " - "destid = ?, " - "name = ?, " - "street = ?, " - "postal = ?, " - "city = ?, " - "state = ?, " - "country = ?, " - "latitude = ?, " - "longitude = ?, " - "icontype = ?, " - "iconpath = ?, " - "maptile = ? " - "WHERE sourceid = ? AND sourcetype = ?"); - - query.addBindValue( aLookupItem.mId ); - query.addBindValue( aLookupItem.mIsDuplicate ); - query.addBindValue( aLookupItem.mSourceUid ); - query.addBindValue( aLookupItem.mSourceType ); - query.addBindValue( aLookupItem.mDestId ); - query.addBindValue( aLookupItem.mName ); - query.addBindValue( aLookupItem.mStreet ); - query.addBindValue( aLookupItem.mPostalCode ); - query.addBindValue( aLookupItem.mCity ); - query.addBindValue( aLookupItem.mState ); - query.addBindValue( aLookupItem.mCountry ); - query.addBindValue( aLookupItem.mLatitude ); - query.addBindValue( aLookupItem.mLongitude ); - query.addBindValue( aLookupItem.mIconType ); - query.addBindValue( aLookupItem.mIconPath ); - query.addBindValue( aLookupItem.mMapTilePath ); - - query.addBindValue( aLookupItem.mSourceUid ); - query.addBindValue( aLookupItem.mSourceType ); - - query.exec(); - - if(aLookupItem.mSourceType==ESourceCalendar) - { - query.prepare("UPDATE lplookupaddress SET " - "address = ? " - "WHERE sourceid = ? "); - - - query.addBindValue( aLookupItem.mSingleLineAddress); - query.addBindValue( aLookupItem.mSourceUid); - query.exec(); - - } - } - -} - -// --------------------------------------------------------- -// LocationDataLookupDb::updateMaptileBySourceIdAndType() -// --------------------------------------------------------- -void LocationDataLookupDb::updateMaptileBySourceIdAndType( quint32 aSourceId, - quint32 aSourceType, QString aImagePath ) -{ - if( mDbOpen ) - { - QSqlQuery query(*mDb); - query.prepare("UPDATE lplookup SET " - "maptile = ? " - "WHERE sourceid = ? AND sourcetype = ?"); - - query.addBindValue( aImagePath ); - query.addBindValue( aSourceId ); - query.addBindValue( aSourceType ); - - query.exec(); - } -} - -// --------------------------------------------------------- -// LocationDataLookupDb::updateEntryById() -// --------------------------------------------------------- -void LocationDataLookupDb::updateEntryById( const QLookupItem& aLookupItem ) -{ - if( mDbOpen ) - { - QSqlQuery query(*mDb); - query.prepare("UPDATE lplookup SET " - "id = ?, " - "duplicate = ?, " - "sourceid = ?, " - "sourcetype = ?, " - "destid = ?, " - "name = ?, " - "street = ?, " - "postal = ?, " - "city = ?, " - "state = ?, " - "country = ?, " - "latitude = ?, " - "longitude = ?, " - "icontype = ?, " - "iconpath = ?, " - "maptile = ? " - "WHERE id = ?"); - - query.addBindValue( aLookupItem.mId ); - query.addBindValue( aLookupItem.mIsDuplicate ); - query.addBindValue( aLookupItem.mSourceUid ); - query.addBindValue( aLookupItem.mSourceType ); - query.addBindValue( aLookupItem.mDestId ); - query.addBindValue( aLookupItem.mName ); - query.addBindValue( aLookupItem.mStreet ); - query.addBindValue( aLookupItem.mPostalCode ); - query.addBindValue( aLookupItem.mCity ); - query.addBindValue( aLookupItem.mState ); - query.addBindValue( aLookupItem.mCountry ); - query.addBindValue( aLookupItem.mLatitude ); - query.addBindValue( aLookupItem.mLongitude ); - query.addBindValue( aLookupItem.mIconType ); - query.addBindValue( aLookupItem.mIconPath ); - query.addBindValue( aLookupItem.mMapTilePath ); - - query.addBindValue( aLookupItem.mId ); - - query.exec(); - - if(aLookupItem.mSourceType==ESourceCalendar) - { - query.prepare("UPDATE lplookupaddress SET " - "address = ? " - "WHERE sourceid = ?"); - - query.addBindValue( aLookupItem.mSingleLineAddress); - query.addBindValue( aLookupItem.mSourceUid ); - query.exec(); - } - } -} - - -// --------------------------------------------------------- -// LocationDataLookupDb::updateEntryNameById() -// --------------------------------------------------------- -void LocationDataLookupDb::updateEntryNameByIdAndType(quint32 aSourceId, quint32 aSourceType , QString aName) -{ - if( mDbOpen ) - { - QSqlQuery query(*mDb); - query.prepare("UPDATE lplookup SET " - "name = ? " - "WHERE sourceid = ? AND sourcetype = ?"); - - query.addBindValue( aName ); - - query.addBindValue( aSourceId ); - query.addBindValue( aSourceType ); - - query.exec(); - } -} - -// --------------------------------------------------------- -// LocationDataLookupDb::deleteEntryBySourceIdAndType() -// --------------------------------------------------------- -void LocationDataLookupDb::deleteEntryBySourceIdAndType( const QLookupItem& aLookupItem ) -{ - if( mDbOpen ) - { - QSqlQuery query(*mDb); - query.prepare( "DELETE FROM lplookup " - "WHERE sourceid = ? AND sourcetype = ?" ); - - query.addBindValue( aLookupItem.mSourceUid ); - query.addBindValue( aLookupItem.mSourceType ); - - query.exec(); - - if(aLookupItem.mSourceType==ESourceCalendar) - { - query.prepare( "DELETE FROM lplookupaddress " - "WHERE sourceid = ? " ); - query.addBindValue( aLookupItem.mSourceUid ); - query.exec(); - } - - } -} - -// --------------------------------------------------------- -// LocationDataLookupDb::findEntryBySourceIdAndType() -// --------------------------------------------------------- -bool LocationDataLookupDb::findEntryBySourceIdAndType( QLookupItem& aLookupItem ) -{ - if( mDbOpen ) - { - QSqlQuery query(*mDb); - query.prepare( "SELECT * FROM lplookup " - "WHERE sourceid = ? AND sourcetype = ?" ); - query.addBindValue( aLookupItem.mSourceUid ); - query.addBindValue( aLookupItem.mSourceType ); - - query.exec(); - - if( !query.first() ) - { - return false; - } - - fillLookupEntry( query, aLookupItem ); - return true; - } - return false; -} - -// --------------------------------------------------------- -// LocationDataLookupDb::findEntryById() -// --------------------------------------------------------- -bool LocationDataLookupDb::findEntryById( QLookupItem& aLookupItem ) -{ - if( mDbOpen ) - { - QSqlQuery query(*mDb); - query.prepare( "SELECT * FROM lplookup " - "WHERE id = ?" ); - query.addBindValue( aLookupItem.mId ); - - query.exec(); - - if( !query.first() ) - { - return false; - } - - fillLookupEntry( query, aLookupItem ); - return true; - } - - return false; -} - - -// --------------------------------------------------------- -// LocationDataLookupDb::findEntriesByLandmarkId() -// --------------------------------------------------------- -void LocationDataLookupDb::findEntriesByLandmarkId( const quint32 aLandmarkId, - QList& aLookupItemArray ) -{ - if( mDbOpen ) - { - - QSqlQuery query(*mDb); - query.prepare( "SELECT * FROM lplookup " - "WHERE destid = ?" ); - - query.addBindValue( aLandmarkId ); - query.exec(); - - while( query.next() ) - { - QLookupItem lookupItem; - fillLookupEntry( query, lookupItem ); - aLookupItemArray.append( lookupItem ); - } - } -} -// --------------------------------------------------------- -// LocationDataLookupDb::getEntries() -// --------------------------------------------------------- -void LocationDataLookupDb::getEntries( QList& aLookupItemArray, const quint32 aCollectionId ) -{ - if( mDbOpen ) - { - QSqlQuery query(*mDb); - if( aCollectionId == ESourceLandmarksContactsCat ) - { - query.prepare( "SELECT * FROM lplookup " - "WHERE sourcetype = ? OR sourcetype = ? OR sourcetype = ?" ); - query.addBindValue( ESourceContactsPref ); - query.addBindValue( ESourceContactsWork ); - query.addBindValue( ESourceContactsHome ); - query.exec(); - } - else if( aCollectionId == ESourceLandmarksCalendarCat ) - { - query.prepare( "SELECT * FROM lplookup " - "WHERE sourcetype = ?" ); - query.addBindValue( ESourceCalendar ); - query.exec(); - - } - else if( aCollectionId == ESourceLandmarks ) - { - query.prepare( "SELECT * FROM lplookup " - "WHERE sourcetype = ?" ); - query.addBindValue( ESourceLandmarks ); - query.exec(); - - } - else // all contents - { - query.prepare( "SELECT * FROM lplookup" ); - query.exec(); - } - while( query.next() ) - { - QLookupItem lookupItem; - fillLookupEntry( query, lookupItem ); - aLookupItemArray.append( lookupItem ); - } - } -} - -// --------------------------------------------------------- -// LocationDataLookupDb::getEntfillLookupEntryries() -// --------------------------------------------------------- -void LocationDataLookupDb::fillLookupEntry( QSqlQuery &aQuery, QLookupItem &aLookupItem ) -{ - QSqlRecord rec = aQuery.record(); - aLookupItem.mId = aQuery.value( rec.indexOf("id") ).toUInt(); - aLookupItem.mIsDuplicate = aQuery.value( rec.indexOf("duplicate") ).toUInt(); - aLookupItem.mSourceUid = aQuery.value( rec.indexOf("sourceid") ).toUInt(); - aLookupItem.mSourceType = aQuery.value( rec.indexOf("sourcetype") ).toUInt(); - aLookupItem.mDestId = aQuery.value( rec.indexOf("destid") ).toUInt(); - aLookupItem.mName = aQuery.value( rec.indexOf("name") ).toString(); - aLookupItem.mStreet = aQuery.value( rec.indexOf("street") ).toString(); - aLookupItem.mPostalCode = aQuery.value( rec.indexOf("postal") ).toString(); - aLookupItem.mCity = aQuery.value( rec.indexOf("city") ).toString(); - aLookupItem.mState = aQuery.value( rec.indexOf("state") ).toString(); - aLookupItem.mCountry = aQuery.value( rec.indexOf("country") ).toString(); - aLookupItem.mLatitude = aQuery.value( rec.indexOf("latitude") ).toDouble(); - aLookupItem.mLongitude = aQuery.value( rec.indexOf("longitude") ).toDouble(); - aLookupItem.mIconType = aQuery.value( rec.indexOf("icontype") ).toUInt(); - aLookupItem.mIconPath = aQuery.value( rec.indexOf("iconpath") ).toString(); - aLookupItem.mMapTilePath = aQuery.value( rec.indexOf("maptile") ).toString(); - -} - -// --------------------------------------------------------- -// LocationDataLookupDb::getAddressDetails() -// --------------------------------------------------------- -QString LocationDataLookupDb::getAddressDetails( quint32 aId , quint32 aSourceType ) -{ - QString addressDetails; - if (mDbOpen) - { - QSqlQuery query(*mDb); - if ( aSourceType == ESourceContactsPref || aSourceType - == ESourceContactsWork || aSourceType == ESourceContactsHome) - { - query.prepare("SELECT * FROM lplookup " - "WHERE sourceid = ? AND sourcetype = ?"); - query.addBindValue( aId ); - query.addBindValue( aSourceType ); - query.exec(); - if (query.first()) { - QSqlRecord rec = query.record(); - QString temp; - temp.clear(); - temp = query.value(rec.indexOf("street")).toString(); - if (!temp.isEmpty()) - { - addressDetails.append(temp); - } - temp.clear(); - - temp = query.value(rec.indexOf("city")).toString(); - if (!temp.isEmpty()) { - if (!addressDetails.isEmpty()) - { - addressDetails.append(QChar(',')); - addressDetails.append(QChar(' ')); - } - addressDetails.append(temp); - - } - temp.clear(); - temp = query.value(rec.indexOf("state")).toString(); - if (!temp.isEmpty()) { - if (!addressDetails.isEmpty()) - { - addressDetails.append(QChar(',')); - addressDetails.append(QChar(' ')); - } - addressDetails.append(temp); - - } - temp.clear(); - temp = query.value(rec.indexOf("country")).toString(); - if (!temp.isEmpty()) { - if (!addressDetails.isEmpty()) - { - addressDetails.append(QChar(',')); - addressDetails.append(QChar(' ')); - } - addressDetails.append(temp); - - } - - } - - } - else if (aSourceType == ESourceCalendar) - { - query.prepare("SELECT * FROM lplookupaddress " - "WHERE sourceid = ? "); - query.addBindValue( aId ); - query.exec(); - if ( query.first() ) - { - QSqlRecord rec = query.record(); - addressDetails.append( - query.value(rec.indexOf("address")).toString()); - } - } - } - return addressDetails; -} - -// --------------------------------------------------------- -// LocationDataLookupDb::getCount() -// --------------------------------------------------------- -void LocationDataLookupDb::getCount( QList& aCount, const quint32 /*aCollectionId*/ ) -{ - if( mDb ) - { - // ESourceLandmarksContactsCat - { - QSqlQuery query(*mDb); - query.prepare( "SELECT * FROM lplookup " - "WHERE sourcetype = ? OR sourcetype = ? OR sourcetype = ?" ); - query.addBindValue( ESourceContactsPref ); - query.addBindValue( ESourceContactsWork ); - query.addBindValue( ESourceContactsHome ); - query.exec(); - - - qDebug("size %d",query.size()); - int count=0; - while( query.next() ) count++; - aCount.append(count); - } - - - - // ESourceLandmarksCalendarCat - { - QSqlQuery query(*mDb); - query.prepare( "SELECT * FROM lplookup " - "WHERE sourcetype = ? AND duplicate = ?" ); - query.addBindValue( ESourceCalendar ); - query.addBindValue( 0 ); - query.exec(); - - qDebug("size %d",query.size()); - int count=0; - while( query.next() ) count++; - aCount.append(count); - } - - - - // ESourceLandmarks - { - QSqlQuery query(*mDb); - query.prepare( "SELECT * FROM lplookup " - "WHERE sourcetype = ?" ); - query.addBindValue( ESourceLandmarks ); - query.exec(); - - qDebug("size %d",query.size()); - int count=0; - while( query.next() ) count++; - aCount.append(count); - } - - - // else // all contents - { - QSqlQuery query(*mDb); - query.prepare( "SELECT * FROM lplookup" - "WHERE duplicate = ?" ); - query.addBindValue( 0 ); - query.exec(); - int count=0; - while( query.next() ) count++; - aCount.append(count); - } - - - } -} - -// End of file