tzservices/tzloc/src/TzLocalizationDbAccessor.cpp
branchRCL_3
changeset 63 c2c61fdca848
parent 62 924385140d98
child 82 4610cd70c542
equal deleted inserted replaced
62:924385140d98 63:c2c61fdca848
   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 	 	User::LeaveIfError(error); 
   106 		if (error == KErrNone)
   107  	 
   107 			{
   108  		//Check whether tables exist and create them if they do not	 
   108 			User::LeaveIfError(CreateFrequentlyUsedZoneTableL());
   109  		if (!IsTableCreatedL(KCZTableName)) 
   109 			User::LeaveIfError(CreateUserCityTableL());
   110  			{ 
   110 			}
   111 			User::LeaveIfError(CreateFrequentlyUsedZoneTableL()); 
   111 		}
   112  			} 
   112 	User::LeaveIfError(error);
   113   		if (!IsTableCreatedL(KUCTableName)) 
   113 	// Check if both tables are created.
   114  			{ 
   114 	CDbColSet *colSet = NULL;
   115  			User::LeaveIfError(CreateUserCityTableL()); 
   115 	TRAP(error, colSet = iLocalizedTimeZoneDb.ColSetL(KCZTableName));
   116  			} 
   116 	delete colSet;
   117   		}
   117 	if (error)
   118 	}
   118 		{
   119 
   119 		User::LeaveIfError(CreateFrequentlyUsedZoneTableL());
   120 	
   120 		}
       
   121 	TRAP(error, colSet = iLocalizedTimeZoneDb.ColSetL(KUCTableName));
       
   122 	delete colSet;
       
   123 	if (error)
       
   124 	        {
       
   125 		User::LeaveIfError(CreateUserCityTableL());
       
   126 		}
       
   127 	}
       
   128 
   121 /**
   129 /**
   122 Destructor
   130 Destructor
   123 Closes the database tables, the database and the database session
   131 Closes the database tables, the database and the database session
   124 @internalTechnology
   132 @internalTechnology
   125 */
   133 */
   307 		iZoneView.EUpdatable)
   315 		iZoneView.EUpdatable)
   308 		);
   316 		);
   309 
   317 
   310 	User::LeaveIfError(iZoneView.EvaluateAll());
   318 	User::LeaveIfError(iZoneView.EvaluateAll());
   311 	}
   319 	}
   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