// --------------------------------------------------------------------------- // CNSmlDmFotaAdapterDb::LongStrValueL() // Returns the value in FW object identified by aObject in column aColumn. // --------------------------------------------------------------------------- // HBufC8* CNSmlDmFotaAdapterDb::LongStrValueL( const TDesC& aColumn, const TNSmlDmFwObjectId aObject ) { DBG_ARGS( _S16("CNSmlDmFotaAdapterDb::LongStrValueL('%S', %d): begin"), &aColumn, aObject ); HBufC8* value = NULL; FetchRowL( aObject ); if ( iView.FirstL() ) { // get value iView.GetL(); RDbColReadStream rStream; rStream.OpenL( iView, iColSet->ColNo( aColumn ) ); CleanupClosePushL( rStream ); TInt length = 0; TRAPD( err, length = rStream.ReadInt32L() ); HBufC* buf = HBufC::NewLC( length ); TPtr bufPtr = buf->Des(); if ( err == KErrNone ) { rStream.ReadL( bufPtr, length ); } // convert to 8-bit value = HBufC8::NewL( bufPtr.Length() ); value->Des().Copy( bufPtr ); CleanupStack::PopAndDestroy( buf ); CleanupStack::PopAndDestroy( &rStream ); } _DBG_FILE("CNSmlDmFotaAdapterDb::LongStrValueL(): end"); return value; }
//-------------------------------------------------------------------- //-------------------------------------------------------------------- // void CPosLmNameIndex::LoadL() { // Skip index loading for empty databases TInt numLandmarks = PosLmServerUtility::TotalLandmarkCountL( iDbAccess ); if ( numLandmarks == 0 ) { iTimeStamp.UniversalTime(); iStatus = KErrNone; return; } RDbTable table; TInt err = table.Open( iDatabase, KPosLmIndexTable, RDbRowSet::EReadOnly ); if ( err ) { LOG("NameIndex::LoadL: index table not found"); User::Leave( err ); } CleanupClosePushL( table ); table.FirstL(); if ( table.AtEnd() ) { LOG("NameIndex::LoadL: index not found"); User::Leave( KErrNotFound ); } table.GetL(); // verify that index is valid for current language if ( !table.IsColNull( EPosLmIncLanguageCol ) ) { TLanguage lang = (TLanguage) table.ColInt32( EPosLmIncLanguageCol ); if ( User::Language() != lang ) { LOG2("NameIndex::LoadL: index not valid, lang %d, current lang %d", lang, User::Language() ); User::Leave( KErrCorrupt ); } } else { LOG("NameIndex::LoadL: index lang not found"); User::Leave( KErrCorrupt ); } // read the index if ( !table.IsColNull( EPosLmIncIndexDataCol ) ) { RDbColReadStream readStream; readStream.OpenL( table, EPosLmIncIndexDataCol ); CleanupClosePushL( readStream ); InternalizeL( readStream ); CleanupStack::PopAndDestroy( &readStream ); // basic check for the index if ( Count() != numLandmarks ) { LOG2("NameIndex::LoadL: index not valid, count %d, landmarks in db %d", Count(), numLandmarks ); User::Leave( KErrCorrupt ); } } else { LOG("NameIndex::LoadL: index data not found"); User::Leave( KErrCorrupt ); } // read the time stamp iTimeStamp.UniversalTime(); if ( !table.IsColNull( EPosLmIncTimestampCol ) ) { iTimeStamp = table.ColTime( EPosLmIncTimestampCol ); } else { LOG("NameIndex::LoadL: index timestamp not found"); User::Leave( KErrCorrupt ); } CleanupStack::PopAndDestroy ( &table ); // index is valid iStatus = KErrNone; }