diff -r 3a25f69541ff -r 4721bd00d3da locationcentre/lcserver/src/lcregappstore.cpp --- a/locationcentre/lcserver/src/lcregappstore.cpp Wed Apr 14 15:50:30 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,287 +0,0 @@ -/* -* Copyright (c) 2007 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 Centre Server object. -* -*/ - - -// SYSTEM INCLUDES -#include // CDesCArrayFlat -#include // CFileStore & CPermanentFileStore -#include // file helpers - -// USER INCLUDES -#include "lcregappstore.h" - -// CONSTANT DEFINTION -_LIT(KLcPrivateDbName,"lcregappinfo.db"); // Name of the Database file for storing registered app info. -_LIT(KAppInfoTable, "AppInfo"); // Name of the one table -_LIT(KAppUUIdCol, "UUID"); // First column - -const TInt KMaxColumnLength = 32*1024; - -// ----- Member funtions for CLcRegAppStore --------------------------------- - -// --------------------------------------------------------------------------- -// CLcRegAppStore::CLcRegAppStore -// --------------------------------------------------------------------------- -// -CLcRegAppStore::CLcRegAppStore( RFs& aFs ) - :iFsSession( aFs ) - { - // C++ Default constructor. No allocations or functions which can Leave - // should be called from here.Initiallize all the variable here - } - -// --------------------------------------------------------------------------- -// CLcRegAppStore::~CLcRegAppStore -// --------------------------------------------------------------------------- -// -CLcRegAppStore::~CLcRegAppStore() - { - // C++ Destructor. Free all resources associated with this class. - Close(); - } - -// --------------------------------------------------------------------------- -// CLcRegAppStore* CLcRegAppStore::NewL -// --------------------------------------------------------------------------- -// -CLcRegAppStore* CLcRegAppStore::NewL( RFs& aFs ) - { - CLcRegAppStore* self = NewLC( aFs ); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// CLcRegAppStore* CLcRegAppStore::NewLC -// --------------------------------------------------------------------------- -// -CLcRegAppStore* CLcRegAppStore::NewLC( RFs& aFs ) - { - // Symbian Two phased constructor. Leaves the object on the Clean-up - // stack. - CLcRegAppStore* self = new ( ELeave )CLcRegAppStore( aFs ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - -// --------------------------------------------------------------------------- -// void CLcRegAppStore::ConstructL -// --------------------------------------------------------------------------- -// -void CLcRegAppStore::ConstructL() - { - // Obtain the Db file path - User::LeaveIfError( iFsSession.SessionPath( iLcRegdbFile ) ); - - // Create the Database Directory ie the private directory of the process - if( !BaflUtils::PathExists( iFsSession, iLcRegdbFile ) ) - { - User::LeaveIfError( iFsSession.MkDirAll( iLcRegdbFile ) ); - } - - // Generate the Db file - iLcRegdbFile.Append( KLcPrivateDbName ); - - // Check if the db file is exists or not. - if( BaflUtils::FileExists( iFsSession, iLcRegdbFile ) ) - { - OpenDbL( iLcRegdbFile ); - } - else - { - CreateDbL( iLcRegdbFile ); - } - } - -// --------------------------------------------------------------------------- -// void CLcRegAppStore::OpenDbL -// --------------------------------------------------------------------------- -// -void CLcRegAppStore::OpenDbL( const TFileName& aRegAppInfoFile ) - { - // if it is already open then close it. - Close(); - // Check if the db file is exists or not. - if( BaflUtils::FileExists( iFsSession, aRegAppInfoFile ) ) - { - TRAPD(error, - iFileStore = CPermanentFileStore::OpenL( iFsSession, aRegAppInfoFile, - EFileRead|EFileWrite ); - //Set file store type - iFileStore->SetTypeL( iFileStore->Layout() ); - iRegAppInfoDb.OpenL( iFileStore,iFileStore->Root() ) - ); - - if( !error ) - { - iDbStatus = ELcDbOpen; - } - else - { - User::Leave( error ); - } - } - } - -// --------------------------------------------------------------------------- -// void CLcRegAppStore::CreateDbL() -// -// Create a new database. The database will be in exclusive access mode. -// --------------------------------------------------------------------------- -void CLcRegAppStore::CreateDbL( const TFileName& aRegAppInfoFile ) - { - // if it is already open then close it. - Close(); - - // Create empty database file. - TRAPD(error, - iFileStore = CPermanentFileStore::ReplaceL(iFsSession, aRegAppInfoFile, - EFileRead|EFileWrite); - iFileStore->SetTypeL( iFileStore->Layout() );// Set file store type - TStreamId id = iRegAppInfoDb.CreateL( iFileStore );// Create stream object - iFileStore->SetRootL( id );// Keep database id as root of store - iFileStore->CommitL();// Complete creation by commiting - // Create appinfo tables - CreateAppInfoTableL(); - ); - - if( !error ) - { - iDbStatus = ELcDbCreate; - } - else - { - User::Leave( error ); - } - } - -// --------------------------------------------------------------------------- -// void CLcRegAppStore::Close() -// -// Close the database. -// --------------------------------------------------------------------------- -void CLcRegAppStore::Close() - { - iRegAppInfoDb.Close(); - delete iFileStore; - iFileStore = NULL; - } - -// --------------------------------------------------------------------------- -// void CLcRegAppStore::CreateAppInfoTableL() -// -// Creates Appinfo table. Leaves, if the table cannot be created. -// --------------------------------------------------------------------------- -void CLcRegAppStore::CreateAppInfoTableL() - { - // Specify columns for appinfo table - TDbCol uuidCol( KAppUUIdCol, EDbColLongText8,KMaxColumnLength ); // Using default length - - // Add the columns to column set - CDbColSet* appInfoColSet = CDbColSet::NewLC(); - appInfoColSet->AddL( uuidCol ); - - // Create the appinfo table - User::LeaveIfError( iRegAppInfoDb.CreateTable(KAppInfoTable, - *appInfoColSet) ); - CleanupStack::PopAndDestroy( appInfoColSet ); - } - -// --------------------------------------------------------------------------- -// void CLcRegAppStore::AddDataToTable() -// -// Add item to database using RDbTable API -// --------------------------------------------------------------------------- -void CLcRegAppStore::AddDataToTableL( const TDesC8& aAppUid ) - { - // Create an updateable database table object - RDbTable table; - CleanupClosePushL( table ); - - User::LeaveIfError( table.Open( iRegAppInfoDb, KAppInfoTable, table.EUpdatable )); - - CDbColSet* dbColSet = table.ColSetL(); - CleanupStack::PushL( dbColSet ); - - //table.Reset(); - TBool lRowPos = table.FirstL(); - - TDbColNo colNo = dbColSet->ColNo(KAppUUIdCol); - - // Do first time insert and then do Update - if( iDbStatus == ELcDbOpen && lRowPos ) - { - table.UpdateL(); - table.SetColL( colNo, aAppUid ); // col = 1 - } - else - { - table.InsertL(); - table.SetColL( colNo, aAppUid ); // col = 1 - iDbStatus = ELcDbOpen; - } - - table.PutL(); // Complete changes (the insertion) - - CleanupStack::PopAndDestroy( dbColSet ); - CleanupStack::PopAndDestroy(); - } - -// --------------------------------------------------------------------------- -// void CLcRegAppStore::GetUuidValueL() -// -// Get packed Uuid from database according to column name -// --------------------------------------------------------------------------- -void CLcRegAppStore::GetUuidValueL(TDes8& aUuid) - { - aUuid.Zero(); - if(!BaflUtils::FileExists( iFsSession, iLcRegdbFile ) ) - { - return; - } - - _LIT(KSelectAll,"SELECT * FROM AppInfo" ); - - // Create a view on the database - RDbView view; - CleanupClosePushL( view ); - TInt lResult = view.Prepare( iRegAppInfoDb, TDbQuery( KSelectAll ), view.EReadOnly ); - if( lResult == KErrNone ) - { - lResult = view.EvaluateAll(); - - CDbColSet* colSet = view.ColSetL(); - CleanupStack::PushL( colSet ); - - // Append each result row - if ( view.FirstL() ) - { - view.GetL(); - TDbColNo colNo = colSet->ColNo( KAppUUIdCol ); - RDbColReadStream readStream; // A stream object for long columns - readStream.OpenLC( view, colNo ); - readStream.ReadL( aUuid, view.ColLength( colNo ) ); - CleanupStack::Pop(); //readStream - readStream.Close(); - } - CleanupStack::PopAndDestroy( colSet ); - } - CleanupStack::PopAndDestroy( &view ); - } -// End of file -