/** Inserts the data into the URITbl. @param aUri URI object @param [out] aUriId The URI will be filled upon successful insertion. This ID uniquelly indentifies the URI. @return Returns the number of rows inserted. Normally 1. Otherwise returns with system-wide error code. */ TInt CUriListInterface::InsertIntoUriTblL ( const TUriC8& aUri, TInt& aUriId ) { const TDesC8& id ( iStringPool.String (URILIST::EId,URILIST::Table).DesC() ); aUriId = GetMaxIdValueL ( KUriTblName(), id ) + 1; _LIT8 ( KUriTblInsertStmt, "INSERT INTO %S VALUES (:V1, :V2, :V3, :V4, :V5, :V6, :V7, :V8)" ); RBuf8 sqlStmt; sqlStmt.CreateL ( KMaxDbStmtLen ); CleanupClosePushL ( sqlStmt ); sqlStmt.Format ( KUriTblInsertStmt(), &(KUriTblName()) ); MDBTransaction* dbTrans = iDbAccessor->PrepareTransactionL ( sqlStmt ); CleanupStack::PopAndDestroy (); // sqlStmt CleanupStack::PushL ( TCleanupItem ( CUriListInterface::DestroyTransObj, dbTrans ) ); // We are having 8 parameters for this query. First bind the query with parameter position 0 // and so on dbTrans->BindIntL ( URILIST::EId, aUriId ); dbTrans->BindTextL ( URILIST::EScheme, aUri.IsPresent(EUriScheme) ? aUri.Extract ( EUriScheme ) : KNullDesC8() ); dbTrans->BindTextL ( URILIST::EUserInfo, aUri.IsPresent(EUriUserinfo) ? aUri.Extract ( EUriUserinfo ) : KNullDesC8() ); dbTrans->BindTextL ( URILIST::EHost, aUri.IsPresent(EUriHost) ? aUri.Extract ( EUriHost ) : KNullDesC8() ); dbTrans->BindTextL ( URILIST::EPort, aUri.IsPresent(EUriPort) ? aUri.Extract ( EUriPort ) : KNullDesC8() ); dbTrans->BindTextL ( URILIST::EPath, aUri.IsPresent(EUriPath) ? aUri.Extract ( EUriPath ) : KNullDesC8() ); dbTrans->BindTextL ( URILIST::EQuery, aUri.IsPresent(EUriQuery) ? aUri.Extract ( EUriQuery ) : KNullDesC8() ); dbTrans->BindTextL ( URILIST::EFragments, aUri.IsPresent(EUriFragment) ? aUri.Extract ( EUriFragment ) : KNullDesC8() ); TInt result = dbTrans->ExecuteL (); CleanupStack::PopAndDestroy (); //dbTrans return result; }
/** Inserts the data into the TLDTbl. @return Returns the number of rows inserted. Normally 1. Otherwise returns with system-wide error code. */ TInt CUriListInterface::InsertIntoTldTblL ( const CTldProperties& aTldProps ) { _LIT8 ( KTldTblInsertStmt, "INSERT INTO %S VALUES ( :V1, :V2, :V3 )" ); RBuf8 sqlStmt; sqlStmt.CreateL ( KMaxDbStmtLen ); CleanupClosePushL ( sqlStmt ); sqlStmt.Format ( KTldTblInsertStmt(), &(KTldTblName()) ); MDBTransaction* dbTrans = iDbAccessor->PrepareTransactionL ( sqlStmt ); CleanupStack::PushL ( TCleanupItem ( CUriListInterface::DestroyTransObj, dbTrans ) ); dbTrans->BindTextL ( TLDLIST::ETLDName, aTldProps.TldName() ); TInt lt = static_cast<TInt> ( aTldProps.ListType() ) ; dbTrans->BindIntL ( TLDLIST::EListType, lt ); dbTrans->BindTextL ( TLDLIST::ECharacterSet, aTldProps.CharacterSet() ); TInt result = dbTrans->ExecuteL (); CleanupStack::PopAndDestroy (2); // sqlStmt, dbTrans return result; }
/** Checks whether the duplicate entry in the TLDTbl. @return ETrue if already such row exist else retrns EFalse */ TBool CUriListInterface::IsDuplicateEntryL ( const CTldProperties& aTldProps ) { _LIT8 ( KTldTblSearchStmt, "SELECT * FROM %S WHERE %S=:V1 and %S=:V2" ); const TDesC8& KTldName (iStringPool.String (TLDLIST::ETLDName,TLDLIST::Table).DesC()); const TDesC8& KTldListType (iStringPool.String (TLDLIST::EListType,TLDLIST::Table).DesC()); RBuf8 sqlStmt; sqlStmt.CreateL ( KMaxDbStmtLen ); CleanupClosePushL ( sqlStmt ); sqlStmt.Format ( KTldTblSearchStmt(), &(KTldTblName()), &KTldName, &KTldListType ); MDBTransaction* dbTrans = iDbAccessor->PrepareTransactionL ( sqlStmt ); CleanupStack::PushL ( TCleanupItem ( CUriListInterface::DestroyTransObj, dbTrans ) ); dbTrans->BindTextL ( TLDLIST::ETLDName, aTldProps.TldName() ); TInt lt = static_cast<TInt> ( aTldProps.ListType() ) ; dbTrans->BindIntL ( TLDLIST::EListType, lt ); TBool result( dbTrans->Next () ); CleanupStack::PopAndDestroy (2); // sqlStmt, dbTrans return result; }
void ScrShotsGenUtils::DumpJsFileL(CScrShotsSettings* scrShotsSettings) { CGetImei* getImei = CGetImei::NewL(); CleanupStack::PushL(getImei); RBuf8 formatBuf; formatBuf.Create(256); formatBuf.CleanupClosePushL(); TFileName infoFile; User::LeaveIfError(CEikonEnv::Static()->FsSession().PrivatePath(infoFile)); infoFile.Append( KDeviceJSFile ); TParsePtrC parse((CEikonEnv::Static()->EikAppUi()->Application())->AppFullName()); infoFile.Insert(0, KCDriveWithColon); RFs fsConn; User::LeaveIfError(fsConn.Connect()); CleanupClosePushL(fsConn); RFile jsFile; if(BaflUtils::FileExists(fsConn, infoFile)){ BaflUtils::DeleteFile(fsConn, infoFile); } //now create the file User::LeaveIfError(jsFile.Create(fsConn, infoFile, EFileWrite)); CleanupClosePushL(jsFile); // User::LeaveIfError(jsFile.Write(KFunctionBlockStart)); RBuf8 values; values.Create(256); for(int i = 0; i < KDeviceParamsCount ; i++){ formatBuf.Zero(); TInt sizeOfItem = User::StringLength((TText8 *)DeviceParams [i]); TPtr8 item((unsigned char*)DeviceParams [i],sizeOfItem ,sizeOfItem ); switch(i){ //device_model case 0:{ CDeviceTypeInformation* devInfo = SysUtil::GetDeviceTypeInfoL(); CleanupStack::PushL(devInfo); TPtrC manufName, modelCode, modelName; devInfo->GetManufacturerName(manufName); devInfo->GetModelCode(modelCode); devInfo->GetModelName(modelName); RBuf8 manufName8, modelName8, modelCode8; manufName8.Create(128); modelName8.Create(128); modelCode8.Create(128); manufName8.CleanupClosePushL(); modelName8.CleanupClosePushL(); modelCode8.CleanupClosePushL(); manufName8.Copy(manufName); modelName8.Copy(modelName); modelCode8.Copy(modelCode); values.Format(KModelNameFormatString, &manufName8, &modelName8, &modelCode8); CleanupStack::PopAndDestroy(4); break; } //firmware_version case 1:{ RBuf swVersion; swVersion.Create(128); SysUtil::GetSWVersion(swVersion); values.Copy(swVersion); TInt pos = 0; while((pos = values.Find(_L8("\n"))) != KErrNotFound){ //values.Delete(pos,1); values.Replace(pos,1,_L8("_")); } swVersion.Close(); break; } //ram_info case 2:{ TInt totalram= 0; HAL::Get(HALData::EMemoryRAM, totalram); totalram /= 1024; values.Num(totalram); break; } //uptime case 3:{ TTimeIntervalMicroSeconds32 iTickPeriod; UserHal::TickPeriod(iTickPeriod); TUint tickCount = User::TickCount(); TUint noOfTicksPerSecond = (1000 * 1000) / iTickPeriod.Int(); TInt noOfSecsSinceStartUp = tickCount / noOfTicksPerSecond;//noOfMicroSecsSinceStartup / (1000 * 1000); values.Num(noOfSecsSinceStartUp); break; } //scrshot count case 4:{ values.Num(scrShotsSettings->TotalScrShotCount()); break; } //symbian version case 5:{ TVersion epocver = User::Version(); values.Copy(epocver.Name()); break; } //series 60 version case 6:{ VersionInfo::TPlatformVersion platformVersion; VersionInfo::GetVersion(platformVersion); TInt aMajor = platformVersion.iMajorVersion; TInt aMinor = platformVersion.iMinorVersion; values.Format(_L8("%d.%d"),aMajor, aMinor); break; } //country code case 7:{ TLocale loc; int code = loc.CountryCode(); values.Num(code); break; } //imei hash case 8:{ TBuf8<256> inputimei; TBuf8<256> outimeihash; if(getImei->IsImeiFetched()){ getImei->GetImei(inputimei); GetWhirlPoolHash(outimeihash,inputimei); values.Copy(outimeihash); } } break; } formatBuf.Format(KStringVariableDeclaration, &item, &values); TRACE_ON(RDebug::Printf((const char*)formatBuf.PtrZ())); jsFile.Write(formatBuf); } values.Close(); CleanupStack::PopAndDestroy(4); //TODO: This code should be commented in final release build #if BRAHMA_DEBUG //code to copy the js file just created to the c:\ so that it can be analyzed _LIT(KTargetFileName, "c:\\device_info.js"); BaflUtils::CopyFile(CEikonEnv::Static()->FsSession(),infoFile, KTargetFileName); #endif }