locationdataharvester/mylocationsengine/src/lookupmaptiledb.cpp
branchRCL_3
changeset 18 870918037e16
parent 17 1fc85118c3ae
--- a/locationdataharvester/mylocationsengine/src/lookupmaptiledb.cpp	Tue Aug 31 15:09:25 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,607 +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: Maptile database lookup table source implementation.
-*
-*/
-#include <QString>
-#include <QFile>
-
-#include <bautils.h>
-#include <locationservicedefines.h>
-#include "mylocationlogger.h"
-#include "lookupmaptiledb.h"
-
-_LIT( KSelectAllFrom, "SELECT * FROM " );
-_LIT(KQueryToDB,"SELECT * FROM cntmaptilelookuptable WHERE cntuid = %d AND source = %d");
-_LIT(KQueryGetCalendaIds,"SELECT cntuid FROM cntmaptilelookuptable WHERE source = %d");
-_LIT( KSelectfilepathFrom, "SELECT filepath FROM " );
-_LIT(KQueryMaptile, "SELECT filepath FROM cntmaptilelookuptable WHERE filepath = '%S'");
-// string 'where'
-_LIT( KStringWhere, " WHERE " );
-// string ' = '
-_LIT( KStringEqual, " = " );
-
-_LIT(KQueryByMaptileFetchingState,"SELECT * FROM cntmaptilelookuptable WHERE fetchingstatus = %d");
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::CLookupMapTileDatabase()
-// Default constructor.
-// -----------------------------------------------------------------------------
-//
-CLookupMapTileDatabase::CLookupMapTileDatabase()
-{
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::~CLookupMapTileDatabase()
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CLookupMapTileDatabase::~CLookupMapTileDatabase()
-{
-    __TRACE_CALLSTACK;// close the database
-    iItemsDatabase.Close();
-    // close the file session
-    iFsSession.Close();
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::~CLookupMapTileDatabase()
-// Creates an object of this class and pushes to cleanup stack.
-// -----------------------------------------------------------------------------
-//
-CLookupMapTileDatabase* CLookupMapTileDatabase::NewLC(
-        const TDesC& aLookupTableName)
-{
-    CLookupMapTileDatabase* self = new (ELeave) CLookupMapTileDatabase;
-    CleanupStack::PushL(self);
-    self->ConstructL(aLookupTableName);
-    return self;
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::NewL()
-// Creates an object of this class.
-// -----------------------------------------------------------------------------
-//
-CLookupMapTileDatabase* CLookupMapTileDatabase::NewL(
-        const TDesC& aLookupTableName)
-{
-    CLookupMapTileDatabase* self = CLookupMapTileDatabase::NewLC(
-            aLookupTableName);
-    CleanupStack::Pop(self);
-    return self;
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::ConstructL()
-// 2nd phase contructor.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::ConstructL(const TDesC& aLookupTableName)
-{
-    __TRACE_CALLSTACK;
-    User::LeaveIfError(iFsSession.Connect());
-
-    //create private path
-    User::LeaveIfError(iFsSession.CreatePrivatePath(RFs::GetSystemDrive()));
-    // private path with no drive on it
-    iFsSession.PrivatePath(iDbFileName);
-
-    TFindFile PrivFolder(iFsSession);
-    // find out the drive
-    if (KErrNone == PrivFolder.FindByDir(iDbFileName, KNullDesC))
-    {
-        iFsSession.MkDir(KLookupDbPath);
-        iDbFileName.Copy(KLookupDbPath);
-        iDbFileName.Append(aLookupTableName);
-
-        if (!BaflUtils::FileExists(iFsSession, iDbFileName))
-        { // no database exists so we make one
-            User::LeaveIfError(iItemsDatabase.Create(iFsSession, iDbFileName));
-            // and will create the only table needed for it
-            CreateTableL(iItemsDatabase);
-
-            //close the database
-            iItemsDatabase.Close();
-        }        
-    }
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::Open()
-// Opens the lookup database.
-// -----------------------------------------------------------------------------
-//
-TInt CLookupMapTileDatabase::Open()
-{
-    __TRACE_CALLSTACK;
-    return iItemsDatabase.Open(iFsSession, iDbFileName);
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::Close()
-// Closes the lookup database.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::Close()
-{
-    __TRACE_CALLSTACK;
-    iItemsDatabase.Close();
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::CreateTableL()
-// Creates a lookup table.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::CreateTableL(RDbDatabase& aDatabase)
-{
-    __TRACE_CALLSTACK;// Create a table definition
-    CDbColSet* columns = CDbColSet::NewLC();
-
-    // Add Columns
-
-    // Add uid column
-    columns->AddL(TDbCol(NCntColUid, EDbColUint32));
-
-    columns->AddL(TDbCol(NColSource, EDbColUint32));
-
-    // add file path type column
-    columns->AddL(TDbCol(NCntColFilePath, EDbColText16));
-    
-    //MK 
-    // add map tile fetching status to the db
-    columns->AddL(TDbCol(MapTileFetchingStatus, EDbColUint32));
-    
-
-    // Create a table
-    User::LeaveIfError(aDatabase.CreateTable(KMapTileLookupTable, *columns));
-
-    // cleanup the column set
-    CleanupStack::PopAndDestroy(columns);
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::CreateEntryL()
-// Creates an entry in the lookup table.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::CreateEntryL(const TLookupItem& aLookupItem)
-{
-    __TRACE_CALLSTACK;// create a query for the view
-    TFileName queryBuffer;
-    queryBuffer.Copy(KSelectAllFrom);
-    queryBuffer.Append(KMapTileLookupTable);
-
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-		Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return;
-       
-    }
-	 iItemsDatabase.Begin();
-    
-    RDbView myView;
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-
-    // Inert the item
-    myView.InsertL();
-    // set the fields
-    myView.SetColL(KColumncntUid, aLookupItem.iUid);
-    myView.SetColL(KColumnSource, aLookupItem.iSource);
-    myView.SetColL(KColumnFilePath, aLookupItem.iFilePath);
-    myView.SetColL(KColumnMapTileFetchingStatus, aLookupItem.iFetchingStatus); //MK
-
-    myView.PutL();
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    iItemsDatabase.Commit();
-    Close();
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::ReSetEntryL()
-// Reset the entry with null value and get the used maptile path as part of aLookupItem.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::ReSetEntryL(TLookupItem &aLookupItem)
-{
-    TFileName queryBuffer;
-    queryBuffer.Format(KQueryToDB, aLookupItem.iUid, aLookupItem.iSource);
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-        Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return;
-    }
-    iItemsDatabase.Begin();
-
-    // Create a view of the table based on the query created.
-    RDbView myView;
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-
-    myView.EvaluateAll();
-    myView.FirstL();
-
-    if (myView.AtRow())
-    {
-        myView.GetL();
-        aLookupItem.iFilePath.Copy(myView.ColDes16(KColumnFilePath));
-        // found the entry. update it.
-        myView.UpdateL();
-        myView.SetColL(KColumnFilePath, KNullDesC);
-        myView.SetColL(KColumnMapTileFetchingStatus,
-                aLookupItem.iFetchingStatus); //MK
-        myView.PutL();
-    }
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    iItemsDatabase.Commit();
-
-    Close();
-}
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::UpdateEntryL()
-// Updates an entry in the lookup table.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::UpdateEntryL(const TLookupItem& aLookupItem)
-{
-    __TRACE_CALLSTACK;// Create the query to find the row to be updated.
-    TFileName queryBuffer;
-    queryBuffer.Format(KQueryToDB, aLookupItem.iUid, aLookupItem.iSource);
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-		Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return;       
-    }
-	 iItemsDatabase.Begin();
-
-    // Create a view of the table based on the query created.
-    RDbView myView;
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-
-    myView.EvaluateAll();
-    myView.FirstL();
-    
-    if (myView.AtRow())
-    {
-        // found the entry. update it.
-        myView.UpdateL();
-        myView.SetColL(KColumnFilePath, aLookupItem.iFilePath);
-        myView.SetColL(KColumnMapTileFetchingStatus, aLookupItem.iFetchingStatus); //MK
-        myView.PutL();
-    } 
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    iItemsDatabase.Commit();
-
-    Close();  
-
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::DeleteEntryL()
-// Deletes an entry from the lookup table.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::DeleteEntryL(TLookupItem& aLookupItem)
-{
-    __TRACE_CALLSTACK;// Create the query to find the row to be deleted.
-
-    TFileName queryBuffer;
-    queryBuffer.Format(KQueryToDB, aLookupItem.iUid, aLookupItem.iSource);
-
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-		Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return;
-    }
-	 iItemsDatabase.Begin();
-
-    RDbView myView;
-    // query buffer finds only the selected item row.
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-
-    myView.EvaluateAll();
-
-    // positions the cursor on the first row of the rowset
-    myView.FirstL();
-
-    // Delete the entry found.
-    if (myView.AtRow())
-    {
-        myView.GetL();
-        if (aLookupItem.iUid == myView.ColUint(KColumncntUid))
-        {
-            aLookupItem.iFilePath.Copy(myView.ColDes16(KColumnFilePath));
-            
-        }
-        myView.DeleteL();
-    }
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    iItemsDatabase.Commit();
-    // compacts the databse, by physicaly removing deleted data.
-    iItemsDatabase.Compact();
-
-    Close();
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::DeleteMapTileL()
-// Deletes an maptile if there's no reference to maptile in lookupdb
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::DeleteMapTileL( const TLookupItem& aLookupItem)
-{
-    __TRACE_CALLSTACK;// Create the query to find the row to be deleted.
-
-    TFileName queryBuffer;    
-    queryBuffer.Format(KQueryMaptile, &aLookupItem.iFilePath);
-    
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-       Close();
-       ret = Open();
-       if( ret != KErrNone )
-           return;
-    }
-    
-    iItemsDatabase.Begin();
-
-    RDbView myView;
-    // query buffer finds only the selected item row.
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-
-    myView.EvaluateAll();
-
-    // positions the cursor on the first row of the rowset
-    myView.FirstL();
-
-    // Delete if no reference to maptile
-    if (!myView.AtRow())
-    {
-        QString filePath =  QString::fromUtf16( aLookupItem.iFilePath.Ptr(), aLookupItem.iFilePath.Length() );
-        //delete all releted  maptile 
-        QString temp=filePath;
-        temp.append(MAPTILE_IMAGE_PORTRAIT);       
-        QFile file;
-        file.remove(temp);
-        
-        temp=filePath;
-        temp.append(MAPTILE_IMAGE_CONTACT);
-        temp.append(MAPTILE_IMAGE_LANDSCAPE);
-        file.remove(temp);
-        
-        temp=filePath;
-        temp.append(MAPTILE_IMAGE_CALENDAR);
-        temp.append(MAPTILE_IMAGE_LANDSCAPE);
-        file.remove(temp);
-        
-        temp=filePath;
-        temp.append(MAPTILE_IMAGE_HURRIGANES);         
-        file.remove(temp);
-         
-       // ret = iFsSession.Delete(aLookupItem.iFilePath);     
-    }
-        
-    CleanupStack::PopAndDestroy(&myView); // myView
-
-    Close();
-}
-
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::FindEntriesByMapTileFetchingStatusL()
-// Finds a list of lookup items given a landmark uid.
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::FindEntriesByMapTileFetchingStateL(const TUint32 aFetchingState,
-        RArray<TLookupItem>& aLookupItemArray)
-{
-    __TRACE_CALLSTACK;// Create a query to find the item.
-    TFileName queryBuffer;
-    queryBuffer.Format(KQueryByMaptileFetchingState,aFetchingState);
-    
-    TInt ret = Open();
-        if (ret != KErrNone)
-        {
-           Close();
-           ret = Open();
-           if( ret != KErrNone )
-               return;
-        }
-      iItemsDatabase.Begin();
-
-    
-    // Create a view of the table with the above query.
-    RDbView myView;
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-    myView.EvaluateAll();
-    myView.FirstL();
-
-    while (myView.AtRow())
-    {
-        // Item found. get the details.
-        myView.GetL();
-        TLookupItem newItem;
-        newItem.iUid = myView.ColUint(KColumnUid);
-        newItem.iSource = myView.ColUint(KColumnSource);
-        aLookupItemArray.Append(newItem);
-        myView.NextL();
-    }
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::GetAllCalendarIdsL()
-// Gets the list of calendar ids .
-// -----------------------------------------------------------------------------
-//
-void CLookupMapTileDatabase::GetAllCalendarIdsL( RArray<TUint32>& aIdArray )
-{
-    __TRACE_CALLSTACK;// Create a query to find the item.
-    TFileName queryBuffer;
-    queryBuffer.Format( KQueryGetCalendaIds, ESourceCalendar );
-    
-    TInt ret = Open();
-        if (ret != KErrNone)
-        {
-           Close();
-           ret = Open();
-           if( ret != KErrNone )
-               return;
-        }
-    iItemsDatabase.Begin();
-
-    
-    // Create a view of the table with the above query.
-    RDbView myView;
-    myView.Prepare( iItemsDatabase, TDbQuery( queryBuffer ) );
-    CleanupClosePushL( myView );
-    myView.EvaluateAll();
-    myView.FirstL();
-
-    while( myView.AtRow() )
-    {
-        // Item found. get the details.
-        myView.GetL();
-        TUint32 id;
-        id = myView.ColUint( KColumnUid );
-        aIdArray.Append( id );
-        myView.NextL();
-    }
-
-    CleanupStack::PopAndDestroy( &myView ); // myView
-    Close();
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::FindEntryL()
-// Finds an entry in the lookup table.
-// -----------------------------------------------------------------------------
-//
-TBool CLookupMapTileDatabase::FindEntryL(TLookupItem& aLookupItem)
-{
-    __TRACE_CALLSTACK;// used to store return value
-    TBool retVal = EFalse;
-    // Create a query to find the item.
-    TFileName queryBuffer;
-    queryBuffer.Format(KQueryToDB, aLookupItem.iUid, aLookupItem.iSource);
-
-   TInt ret = Open();
-    if (ret != KErrNone)
-    {
-		Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return EFalse;
-       
-    }
-	 iItemsDatabase.Begin();
-
-    // Create a view of the table with the above query.
-    RDbView myView;
-    myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-    myView.EvaluateAll();
-    myView.FirstL();
-
-    if (myView.AtRow())
-    {
-        // Item found. get the details.
-        myView.GetL();
-        retVal = ETrue;
-    }
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    Close();
-    return retVal;
-}
-
-// -----------------------------------------------------------------------------
-// CLookupMapTileDatabase::FindEntryByFIlePathLL()
-// Finds an entry in the lookup table for maptile image file
-// -----------------------------------------------------------------------------
-//
-TBool CLookupMapTileDatabase::FindEntryByFilePathL(const TDesC& aFilePath)
-{
-    __TRACE_CALLSTACK;// used to store return value
-    TBool retVal = EFalse;
-   
-    TInt ret = Open();
-    if (ret != KErrNone)
-    {
-        Close();
-        ret = Open();
-        if( ret != KErrNone )
-            return EFalse;       
-    }
-    
-    iItemsDatabase.Begin();
-    
-    // Create a query to find the item.
-    TFileName queryBuffer;
-    _LIT(KFormatSpec, "%S%S%S%S%S'%S'");
-    
-    queryBuffer.Format(KFormatSpec, 
-        &KSelectfilepathFrom(), 
-        &KMapTileLookupTable(),
-        &KStringWhere(),
-        &NCntColFilePath(),
-        &KStringEqual(),
-        &aFilePath);
-    
-    // Create a view of the table with the above query.
-    RDbView myView;
-    TInt retPrep = myView.Prepare(iItemsDatabase, TDbQuery(queryBuffer));
-    CleanupClosePushL(myView);
-    myView.EvaluateAll();
-    myView.FirstL();
-
-    if (myView.AtRow())
-    {
-        // Item found, return true
-        retVal = ETrue;
-    }
-
-    CleanupStack::PopAndDestroy(&myView); // myView
-    Close();
-
-    return retVal;
-}
-
-// End of file
-