tzservices/tzloc/src/TzLocalizationDbAccessor.cpp
branchRCL_3
changeset 19 924385140d98
parent 15 312d2b433792
child 20 c2c61fdca848
equal deleted inserted replaced
18:0818dd463d41 19:924385140d98
   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