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 } |