101 TInt error = iLocalizedTimeZoneDb.Open(iDbsSession,KTzLocalizationDbName,KTzLocalizationDbSecurityPolicy); |
101 TInt error = iLocalizedTimeZoneDb.Open(iDbsSession,KTzLocalizationDbName,KTzLocalizationDbSecurityPolicy); |
102 if (error == KErrNotFound) |
102 if (error == KErrNotFound) |
103 { |
103 { |
104 //Database file doesn't exist. Attempt to create a new one. |
104 //Database file doesn't exist. Attempt to create a new one. |
105 error = iLocalizedTimeZoneDb.Create(iDbsSession,KTzLocalizationDbName,KTzLocalizationDbSecurityPolicy); |
105 error = iLocalizedTimeZoneDb.Create(iDbsSession,KTzLocalizationDbName,KTzLocalizationDbSecurityPolicy); |
106 if (error == KErrNone) |
106 User::LeaveIfError(error); |
107 { |
107 |
108 User::LeaveIfError(CreateFrequentlyUsedZoneTableL()); |
108 //Check whether tables exist and create them if they do not |
109 User::LeaveIfError(CreateUserCityTableL()); |
109 if (!IsTableCreatedL(KCZTableName)) |
110 } |
110 { |
111 } |
111 User::LeaveIfError(CreateFrequentlyUsedZoneTableL()); |
112 User::LeaveIfError(error); |
112 } |
113 // Check if both tables are created. |
113 if (!IsTableCreatedL(KUCTableName)) |
114 CDbColSet *colSet = NULL; |
114 { |
115 TRAP(error, colSet = iLocalizedTimeZoneDb.ColSetL(KCZTableName)); |
115 User::LeaveIfError(CreateUserCityTableL()); |
116 delete colSet; |
116 } |
117 if (error) |
117 } |
118 { |
118 } |
119 User::LeaveIfError(CreateFrequentlyUsedZoneTableL()); |
119 |
120 } |
120 |
121 TRAP(error, colSet = iLocalizedTimeZoneDb.ColSetL(KUCTableName)); |
|
122 delete colSet; |
|
123 if (error) |
|
124 { |
|
125 User::LeaveIfError(CreateUserCityTableL()); |
|
126 } |
|
127 } |
|
128 |
|
129 /** |
121 /** |
130 Destructor |
122 Destructor |
131 Closes the database tables, the database and the database session |
123 Closes the database tables, the database and the database session |
132 @internalTechnology |
124 @internalTechnology |
133 */ |
125 */ |
315 iZoneView.EUpdatable) |
307 iZoneView.EUpdatable) |
316 ); |
308 ); |
317 |
309 |
318 User::LeaveIfError(iZoneView.EvaluateAll()); |
310 User::LeaveIfError(iZoneView.EvaluateAll()); |
319 } |
311 } |
|
312 TBool CTzLocalizationDbAccessor::IsTableCreatedL(const TDesC& aTableName) const |
|
313 { |
|
314 TBool result = EFalse; |
|
315 CDbTableNames* tableNames = iLocalizedTimeZoneDb.TableNamesL(); |
|
316 CleanupStack::PushL(tableNames); |
|
317 if(tableNames) |
|
318 { |
|
319 const TInt count = tableNames->Count(); |
|
320 for(TInt i = 0; i < count; i++) |
|
321 { |
|
322 if((*tableNames)[i] == aTableName) |
|
323 { |
|
324 result = ETrue; |
|
325 break; |
|
326 } |
|
327 } |
|
328 } |
|
329 CleanupStack::PopAndDestroy(tableNames); |
|
330 return result; |
|
331 } |
|
332 |