diff -r 000000000000 -r 2e3d3ce01487 tzservices/tzserver/Server/Include/tzuserdata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tzservices/tzserver/Server/Include/tzuserdata.h Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,105 @@ +// Copyright (c) 2008-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 __TZUSERDATA_H__ +#define __TZUSERDATA_H__ + +#include +#include + +class CTzUserNames; +class RProperty; + +enum TTzUserDataChangeOp + { + ETzUserDataCreated, // User defined TZ data has been created. + ETzUserDataUpdated, // User defined TZ data has been updated. + ETzUserDataDeleted, // User defined TZ data has been deleted. + ETzUserDataRestored, // User defined TZ data has been restored. + }; + +struct TTzUserDataChange + { + // Operation that has changed user defined TZ data. + TTzUserDataChangeOp iOperation; + + // Numeric TZID of the changed user defined TZ data. + TInt iTzId; + }; + +class MTzUserDataChangeObserver + { +public: + virtual void NotifyUserTzRulesChange(TTzUserDataChange aChange) = 0; + virtual void NotifyUserTzNamesChange(TTzUserDataChange aChange) = 0; + }; + +class CTzUserDataDb : public CBase + { +public: + static CTzUserDataDb* NewL(); + ~CTzUserDataDb(); + + void AddObserverL(MTzUserDataChangeObserver* aChangeObs); + void RemoveObserver(MTzUserDataChangeObserver* aChangeObs); + +// CRUD operations. + TInt CreateTzL(const CTzRules& aTzRules, const CTzUserNames& aTzNames); + void ReadTzRulesL(CTzRules& aRules, TUint aTzId); + CTzUserNames* ReadTzNamesL(TUint aTzId); + void ReadTzIdsL(RArray& aTzIds); + void UpdateTzL(TUint aTzId, const CTzRules& aTzRules, const CTzUserNames& aTzNames); + void DeleteTzL(TUint aTzId); + +// Check if a given user ID exists in the database + TBool IsIdInDbL(TUint aTzId); + +// Backup and restore operations. + void BackupBeginningL(); + void BackupCompletedL(); + void RestoreBeginningL(); + void RestoreCompletedL(); + private: + CTzUserDataDb(); + void ConstructL(); + +// Database operations. + void OpenL(); + void CreateL(); + void CreateSchemaL(); + void Close(); + +// Transaction operations. + void BeginTransactionL(); + void CommitTransactionL(); + void RollbackTransaction(); + static void CleanupDatabaseRollback(TAny* aDatabase); + +// Notification operations. + void NotifyTzRulesChange(TUint aTzId, TTzUserDataChangeOp aChangeOp); + void NotifyTzNamesChange(TUint aTzId, TTzUserDataChangeOp aChangeOp); + +// Reuse TZ IDs + TUint32 FindUnusedTzIdL(); + + private: + RSqlDatabase iDatabase; + TBool iBackupInProgress; + TBool iRestoreInProgress; + TUint32 iNextCandidateTzId; + RPointerArray iChangeObservers; + }; + +#endif // __TZUSERDATA_H__