diff -r 000000000000 -r 2e3d3ce01487 tzservices/tzloc/inc/TzLocalizationDbAccessor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tzservices/tzloc/inc/TzLocalizationDbAccessor.h Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,103 @@ +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __TZLOCALIZATION_DB_ACCESSOR_H__ +#define __TZLOCALIZATION_DB_ACCESSOR_H__ + +#include +#include +#include "TzLocalizationDataTypes.h" +#include + +_LIT(KTzMutexName, "TZ_GlobalMutex"); + +/** +Provides access to the time zone localization database +through a RDbs session. +The database is stored in the DBMS private directory +@internalTechnology +*/ +class CTzLocalizationDbAccessor : public CBase + { + public: + //Enumerations used for column ordering in the database. + //The database columns MUST be created in the same order they appear in this enumeration + enum TTzCityColumn + { + // Enum will used as a DB column index, so it must start at 1 + ETzCityId =1, + ETzCityCity, + ETzCityGroup, + ETzCityResourceId, + }; + + enum TTzZoneColumn + { + // Enum will used as a DB column index, so it must start at 1 + ETzZoneId =1, + ETzZoneStdName, + ETzZoneDSTName, + ETzZoneShortStdName, + ETzZoneShortDSTName, + ETzZoneCity, + ETzZoneGroupId, + ETzZoneResourceId, + ETzZoneCityIndex, + }; + + // enum that specifies the maximum length of the strings corresponding + // to time zone IDs and group IDs + enum TTzStringLength + { + // Group ID is an unsigned 8-bit integer + EMaxGroupIdStringLength = 3, + // Time Zone ID is an unsigned 16-bit integer + EMaxTimeZoneIdStringLength = 5 + }; + + public: + //Construction / Destruction + static CTzLocalizationDbAccessor* NewL(); + static CTzLocalizationDbAccessor* NewLC(); + ~CTzLocalizationDbAccessor(); + + void PrepareCityViewL(const TDesC& aSqlQuery); + void PrepareZoneViewL(); + + TBool DbNeedsUpdatingL(); + void RecreateDbL(RTz& aTzSession); + + protected: + CTzLocalizationDbAccessor(); + //Second phase construction + void ConstructL(); + static void ReleaseMutex(TAny *target) ; + + private: + TInt CreateFrequentlyUsedZoneTableL(); + TInt CreateUserCityTableL(); + void CloseDb(); + void OpenDbL(); + + protected: + //Member data + RDbs iDbsSession; //DBMS server session + RDbNamedDatabase iLocalizedTimeZoneDb; //Database + RDbView iCityView; //Rowset + RDbView iZoneView; //Rowset + RMutex iZoneMutex ; // protecting iZoneView changes + }; + +#endif //__TZLOCALIZATION_DB_ACCESSOR_H__