tzservices/tzloc/src/TzLocalizationDbAccessor.cpp
changeset 53 920c9a724929
parent 46 eea20ed08f4b
child 63 c2c61fdca848
child 81 676b6116ca93
--- 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;	 
+ 	} 
+