metadataengine/server/src/mdssqliteconnection.cpp
branchRCL_3
changeset 26 9f21bab39f42
parent 14 646a02f170b9
child 27 4a4892eec172
equal deleted inserted replaced
22:ab88d4a85041 26:9f21bab39f42
    73     {
    73     {
    74     }
    74     }
    75 
    75 
    76 void CMdSSqLiteConnection::OpenDbL( const TDesC& aDbFileName )
    76 void CMdSSqLiteConnection::OpenDbL( const TDesC& aDbFileName )
    77     {
    77     {
    78     _LIT8( KMdsSqlDbaConfig, "cache_size=10000; page_size=4096; encoding=\"UTF-16\";");
    78     _LIT8( KMdsSqlDbaConfig, "cache_size=8000; page_size=2048; encoding=\"UTF-16\";");
    79 
    79     _LIT8( KBlacklistSqlDbaConfig, "cache_size=4000; page_size=1024; encoding=\"UTF-16\";");
    80     TInt err = KErrNone;
       
    81 
    80 
    82     delete iDbFileName;
    81     delete iDbFileName;
    83     iDbFileName = NULL; // in case AllocL leaves
    82     iDbFileName = NULL; // in case AllocL leaves
    84     iDbFileName = aDbFileName.AllocL();
    83     iDbFileName = aDbFileName.AllocL();
    85 
    84 
       
    85     TBool setupForMdsServer( EFalse );
       
    86     // Check if it is MDS server DB that is accessed, otherwise setup will be for Blacklist Server
       
    87     if( iDbFileName->Des().FindF( KMdsSqlDbDefaultName ) != KErrNotFound )
       
    88         {
       
    89         setupForMdsServer = ETrue;
       
    90         }
       
    91     
       
    92     TInt err = KErrNone;
       
    93     
    86     // we need to set up policy, because we use secure database
    94     // we need to set up policy, because we use secure database
    87 	TSecurityPolicy defaultPolicy(TSecurityPolicy::EAlwaysPass);
    95 	TSecurityPolicy defaultPolicy(TSecurityPolicy::EAlwaysPass);
    88     RSqlSecurityPolicy sqlSecurityPolicy;
    96     RSqlSecurityPolicy sqlSecurityPolicy;
    89     CleanupClosePushL( sqlSecurityPolicy );
    97     CleanupClosePushL( sqlSecurityPolicy );
    90     err = sqlSecurityPolicy.Create( defaultPolicy );
    98     err = sqlSecurityPolicy.Create( defaultPolicy );
    97     /**
   105     /**
    98      * Open database:
   106      * Open database:
    99      *   First we try to open db. If this fails because db not creater yer, then
   107      *   First we try to open db. If this fails because db not creater yer, then
   100      *   try to create it. Otherwise we cannot open it and we leave
   108      *   try to create it. Otherwise we cannot open it and we leave
   101      */
   109      */
   102     err = iMdeSqlDb.Open( *iDbFileName, &KMdsSqlDbaConfig );
   110     if( setupForMdsServer )
       
   111         {
       
   112         err = iMdeSqlDb.Open( *iDbFileName, &KMdsSqlDbaConfig );
       
   113         }
       
   114     else
       
   115         {
       
   116         err = iMdeSqlDb.Open( *iDbFileName, &KBlacklistSqlDbaConfig );
       
   117         }
   103     if ( err != KErrNone )
   118     if ( err != KErrNone )
   104         {
   119         {
   105         __LOG1( ELogDb, "Cannot open database %d", err );
   120         __LOG1( ELogDb, "Cannot open database %d", err );
   106             
   121             
   107         if( err == KErrNotFound )
   122         if( err == KErrNotFound )
   108             {
   123             {
   109             __LOG1( ELogDb, "Cannot find database %d", err );
   124             __LOG1( ELogDb, "Cannot find database %d", err );
   110             err = iMdeSqlDb.Create( *iDbFileName, sqlSecurityPolicy, &KMdsSqlDbaConfig );
   125             if( setupForMdsServer )
       
   126                 {
       
   127                 err = iMdeSqlDb.Create( *iDbFileName, sqlSecurityPolicy, &KMdsSqlDbaConfig );
       
   128                 }
       
   129             else
       
   130                 {
       
   131                 err = iMdeSqlDb.Create( *iDbFileName, sqlSecurityPolicy, &KBlacklistSqlDbaConfig );
       
   132                 }
   111             if( err != KErrNone )
   133             if( err != KErrNone )
   112                 {
   134                 {
   113                 __LOG1( ELogDb, "Unknown error while creating %d", err );
   135                 __LOG1( ELogDb, "Unknown error while creating %d", err );
   114                 User::LeaveIfError( err );
   136                 User::LeaveIfError( err );
   115                 }
   137                 }
   116             }
   138             }
   117         else if( err == KErrCorrupt ||
   139         else if( err == KErrCorrupt ||
   118                 err == KSqlErrCorrupt )
   140                 err == KSqlErrCorrupt )
   119             {
   141             {
   120             __LOGLB( ELogDb, "Warning: Database is corrupted, will delete and re-create it." );
   142             __LOGLB( ELogDb, "Warning: Database is corrupted, will delete and re-create it." );
   121             err = DeleteAndReCreateDB( iDbFileName, sqlSecurityPolicy, &KMdsSqlDbaConfig );
   143             if( setupForMdsServer )
       
   144                 {
       
   145                 err = DeleteAndReCreateDB( iDbFileName, sqlSecurityPolicy, &KMdsSqlDbaConfig );
       
   146                 }
       
   147             else
       
   148                 {
       
   149                 err = DeleteAndReCreateDB( iDbFileName, sqlSecurityPolicy, &KBlacklistSqlDbaConfig );
       
   150                 }
   122         
   151         
   123             if ( KErrNone == err  )
   152             if ( KErrNone == err  )
   124                 {
   153                 {
   125                 err = iMdeSqlDb.Open( *iDbFileName, &KMdsSqlDbaConfig );
   154                 if( setupForMdsServer )
       
   155                     {
       
   156                     err = iMdeSqlDb.Open( *iDbFileName, &KMdsSqlDbaConfig );
       
   157                     }
       
   158                 else
       
   159                     {
       
   160                     err = iMdeSqlDb.Open( *iDbFileName, &KBlacklistSqlDbaConfig );
       
   161                     }
   126                 if ( err != KErrNone )
   162                 if ( err != KErrNone )
   127                     {
   163                     {
   128                     __LOG1( ELogDb, "Cannot open database again after delete and re-create %d", err );
   164                     __LOG1( ELogDb, "Cannot open database again after delete and re-create %d", err );
   129                     User::LeaveIfError( err );
   165                     User::LeaveIfError( err );
   130                     }
   166                     }