mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp
branchRCL_3
changeset 9 bee149131e4b
parent 0 a2952bb97e68
child 23 4740b34b83ce
--- a/mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp	Tue Feb 02 00:27:58 2010 +0200
+++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp	Fri Feb 19 23:18:32 2010 +0200
@@ -31,8 +31,12 @@
 // ---------------------------------------------------------------------------
 //
 CMPXHarvesterDB::CMPXHarvesterDB( TDriveNumber aDrive, RFs& aFs  ) :
-                                                             iDrive( aDrive),
-                                                             iFs( aFs )
+                                  iDrive( aDrive),
+                                  iFs( aFs )
+#ifdef __RAMDISK_PERF_ENABLE
+                                  ,iRamDrive(aDrive),
+                                  iUseRamDrive(EFalse)
+#endif // __RAMDISK_PERF_ENABLE
     {
     }
 
@@ -75,7 +79,7 @@
 //
 TInt CMPXHarvesterDB::OpenL()
     {
-    MPX_DEBUG1("CMPXHarvesterDB::OpenL <---");
+    MPX_FUNC("CMPXHarvesterDB::OpenL");
 
     // There is no need to re-open if it was already open
     if( iDBOpen )
@@ -84,18 +88,11 @@
         }
 
     TInt rtn( KErrNone );
-    TDriveUnit drive( iDrive );
-    TFileName fileName;
-    fileName.Append( drive.Name() );
-    fileName.Append( KHarvesterDBPath );
-
-    // Make sure Path exists
-    if (!BaflUtils::PathExists(iFs, fileName))
-        {
-        iFs.MkDirAll(fileName);
-        }
-
-    fileName.Append( KHarvesterDBName );
+    TFileName fileName = GenerateDbName();
+    TParsePtr fileParser( fileName );
+    TFileName filePath = fileParser.DriveAndPath();
+    // Make sure Path exists; allow to leave if can't create the path
+    BaflUtils::EnsurePathExistsL(iFs, filePath);
 
     // Try to open the stream
     TRAPD( err,
@@ -107,20 +104,9 @@
     if( err )
         {
         MPX_DEBUG2("CMPXHarvesterDB::OpenL -- New database %i", err);
-
-        TRAPD( openErr,
-            iStore = CPermanentFileStore::ReplaceL(iFs, fileName ,EFileRead|EFileWrite);
-        	iStore->SetTypeL(iStore->Layout());
-            CreateDBL();
-            iDBOpen = ETrue;
-            );
-
-        if( KErrNone != openErr )
-            {
-            iDBOpen = EFalse;
-            User::Leave( openErr );
-            }
-
+        iStore = CPermanentFileStore::ReplaceL(iFs, fileName ,EFileRead|EFileWrite);
+        iStore->SetTypeL(iStore->Layout());
+        CreateDBL();
         // If the open stream error was not found, that is fine
         // because it is a new db, other errors means the stream
         // is corrupted
@@ -131,9 +117,8 @@
         {
         MPX_DEBUG1("CMPXHarvesterDB::OpenL -- Opening database" );
         rtn = OpenDBL();
-        iDBOpen = ETrue;
         }
-
+    iDBOpen = ETrue;
 
     // Check volume Id
     //
@@ -160,7 +145,6 @@
         rtn = OpenL();
         }
 
-    MPX_DEBUG1("CMPXHarvesterDB::OpenL --->");
     return rtn;
     }
 
@@ -196,15 +180,26 @@
     MPX_DEBUG1("CMPXHarvesterDB::CreateDBL <---");
 
     // remove old databases before creating/replacing new database
-
-    TFileName dbFileName;
-    TDriveUnit drive( iDrive );
-    dbFileName.Append( drive.Name() );
-    dbFileName.Append( KHarvesterDBPath );
-    dbFileName.Append( KHarvesterDBPattern );
+    TFileName fileName = GenerateDbName();
+    TParsePtr fileParser( fileName );
+    TFileName filePath = fileParser.DriveAndPath();
+#ifdef __RAMDISK_PERF_ENABLE
+    if ( iUseRamDrive )
+        {
+        TDriveUnit drive( iDrive );
+        filePath.Append(drive.Name()[0]);
+        filePath.Append(KHarvesterDBPattern);
+        }
+    else
+        {
+#endif // __RAMDISK_PERF_ENABLE
+        filePath.Append( KHarvesterDBPattern );
+#ifdef __RAMDISK_PERF_ENABLE
+        }
+#endif // __RAMDISK_PERF_ENABLE
     
     CFileMan* fileManager = CFileMan::NewL(iFs);
-    TInt ret = fileManager->Delete(dbFileName);	
+    TInt ret = fileManager->Delete(filePath); 
     delete fileManager;
     fileManager = NULL;
 
@@ -474,12 +469,7 @@
 //
 TInt CMPXHarvesterDB::DeleteDatabase()
     {
-    TDriveUnit drive( iDrive );
-    TFileName fileName;
-    fileName.Append( drive.Name() );
-    fileName.Append( KHarvesterDBPath );
-    fileName.Append( KHarvesterDBName );
-
+    TFileName fileName = GenerateDbName();
     return iFs.Delete( fileName );
     }
 
@@ -607,4 +597,127 @@
     iDatabase->Rollback();
     }
 
+#ifdef __RAMDISK_PERF_ENABLE
+// ---------------------------------------------------------------------------
+// Set RAM drive info
+// ---------------------------------------------------------------------------
+//
+void CMPXHarvesterDB::SetRamDriveInfo(TDriveNumber aDrive, TBool aUseRamDrive)
+    {
+    MPX_FUNC("CMPXHarvesterDB::SetRamDriveInfo");
+    iRamDrive = aDrive;
+    iUseRamDrive = aUseRamDrive;
+    }
+
+// ---------------------------------------------------------------------------
+// Get UseRamDrive
+// ---------------------------------------------------------------------------
+//
+TBool CMPXHarvesterDB::IsUseRamDrive()
+    {
+    MPX_FUNC("CMPXHarvesterDB::IsUseRamDrive");
+    return iUseRamDrive;
+    }
+
+// ---------------------------------------------------------------------------
+// Get the state of the database.
+// ---------------------------------------------------------------------------
+//
+TDbState CMPXHarvesterDB::GetDbState()
+    {
+    MPX_FUNC("CMPXHarvesterDB::GetDbState");
+    TDbState state = EDbClose;
+    if ( InTransaction() )
+        {
+        state = EDbInTransaction;
+        }
+    else if ( iDBOpen )
+        {
+        state = EDbOpen;
+        }
+    
+    MPX_DEBUG2("CMPXHarvesterDB::GetDbState state = %d", state );
+    return state;
+    }
+
+// ---------------------------------------------------------------------------
+// Set the state of the database.
+// ---------------------------------------------------------------------------
+//
+void CMPXHarvesterDB::SetDbStateL( TDbState aState )
+    {
+    MPX_FUNC("CMPXHarvesterDB::SetDbState");
+    MPX_DEBUG2("CMPXHarvesterDB::SetDbState state = %d", aState );
+    
+    switch( aState )
+        {
+        case EDbClose:
+            {
+            if ( InTransaction() )
+                {
+                CommitL();
+                }
+            Close();
+            break;
+            }
+        case EDbOpen:
+            {
+            if ( InTransaction() )
+                {
+                CommitL();
+                }
+            OpenL();
+            break;
+            }
+        case EDbInTransaction:
+            {
+            if ( !InTransaction() )
+                {
+                OpenL();
+                BeginL();
+                }
+            break;
+            }
+        default:
+            {
+            // should never get here
+            User::Leave(KErrNotSupported);
+            }
+        }
+    }
+
+#endif // __RAMDISK_PERF_ENABLE
+
+// ---------------------------------------------------------------------------
+// Generate the database name
+// ---------------------------------------------------------------------------
+//
+TFileName CMPXHarvesterDB::GenerateDbName()
+    {
+    MPX_FUNC("CMPXHarvesterDB::GenerateDbName");
+    TFileName fileName;
+#ifdef __RAMDISK_PERF_ENABLE
+    if ( iUseRamDrive )
+        {
+        TDriveUnit ramDrive( iRamDrive );
+        fileName.Append( ramDrive.Name() );
+        fileName.Append( KHarvesterDBPath );
+        TDriveUnit drive( iDrive );
+        fileName.Append(drive.Name()[0]);
+        fileName.Append(KHarvesterDBName);
+        }
+    else
+        {
+#endif // __RAMDISK_PERF_ENABLE
+        TDriveUnit drive( iDrive );
+        fileName.Append( drive.Name() );
+        fileName.Append( KHarvesterDBPath );
+        fileName.Append( KHarvesterDBName );
+#ifdef __RAMDISK_PERF_ENABLE
+        }
+#endif // __RAMDISK_PERF_ENABLE
+    MPX_DEBUG2("CMPXHarvesterDB::GenerateDbName file name = %S", &fileName );
+    return fileName;
+    }
+
 // End of file