--- a/tzservices/tzloc/src/TzLocalizationDbAccessor.cpp Fri Jul 16 10:30:52 2010 +0300
+++ b/tzservices/tzloc/src/TzLocalizationDbAccessor.cpp Mon Aug 02 14:01:08 2010 +0300
@@ -103,29 +103,21 @@
{
//Database file doesn't exist. Attempt to create a new one.
error = iLocalizedTimeZoneDb.Create(iDbsSession,KTzLocalizationDbName,KTzLocalizationDbSecurityPolicy);
- if (error == KErrNone)
- {
- User::LeaveIfError(CreateFrequentlyUsedZoneTableL());
- User::LeaveIfError(CreateUserCityTableL());
- }
- }
- User::LeaveIfError(error);
- // Check if both tables are created.
- CDbColSet *colSet = NULL;
- TRAP(error, colSet = iLocalizedTimeZoneDb.ColSetL(KCZTableName));
- delete colSet;
- if (error)
- {
- User::LeaveIfError(CreateFrequentlyUsedZoneTableL());
- }
- TRAP(error, colSet = iLocalizedTimeZoneDb.ColSetL(KUCTableName));
- delete colSet;
- if (error)
- {
- User::LeaveIfError(CreateUserCityTableL());
- }
+ User::LeaveIfError(error);
+
+ //Check whether tables exist and create them if they do not
+ if (!IsTableCreatedL(KCZTableName))
+ {
+ User::LeaveIfError(CreateFrequentlyUsedZoneTableL());
+ }
+ if (!IsTableCreatedL(KUCTableName))
+ {
+ User::LeaveIfError(CreateUserCityTableL());
+ }
+ }
}
+
/**
Destructor
Closes the database tables, the database and the database session
@@ -317,3 +309,24 @@
User::LeaveIfError(iZoneView.EvaluateAll());
}
+TBool CTzLocalizationDbAccessor::IsTableCreatedL(const TDesC& aTableName) const
+ {
+ TBool result = EFalse;
+ CDbTableNames* tableNames = iLocalizedTimeZoneDb.TableNamesL();
+ CleanupStack::PushL(tableNames);
+ if(tableNames)
+ {
+ const TInt count = tableNames->Count();
+ for(TInt i = 0; i < count; i++)
+ {
+ if((*tableNames)[i] == aTableName)
+ {
+ result = ETrue;
+ break;
+ }
+ }
+ }
+ CleanupStack::PopAndDestroy(tableNames);
+ return result;
+ }
+