diff -r 000000000000 -r 3553901f7fa8 telephonyprotocols/csdagt/TS_CsdAgt/DbUndo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/telephonyprotocols/csdagt/TS_CsdAgt/DbUndo.h Tue Feb 02 01:41:59 2010 +0200 @@ -0,0 +1,257 @@ +// Copyright (c) 2003-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 __DBUNDO_H__ +#define __DBUNDO_H__ + +#include +#include +using namespace CommsDat; +#include +#include +#include + +// For Connection Preferences table +#include + +// COMMDB Connection Preference settings +#include + +// Indexes of the CDMA, GPRS and Dial Out IAP records +// Dependent on the database used +#define KGprsIAPIndex 2 +#define KDialOutIAPIndex 1 + +_LIT( KDialOutIap, "DialOutIsp" ); +_LIT( KGprsIap, "NTRas GPRS" ); + +// Classes to maintain an "undo" linked list to restore database state +// between tests +class CDbAgtBase; + +// Base class for storing undo data, derived classes store data specific to the +// type of column we're dealing with +class CDbUndoBase : public CBase + { +public: + virtual void UndoL(CDbAgtBase *aTable)=0; + +public: + TDblQueLink iLink; + +protected: + TPtrC iColumn; + }; + +// Derived from CDbUndoBase to store integer values requiring Undo +class CDbUndoInt : public CDbUndoBase + { +public: + + static CDbUndoInt* NewL(const TDesC &aColumn, const TUint32 &aValue); + void ConstructL(const TDesC &aColumn, const TUint32 &aValue); + + // Concrete implementation of pure virtual in CDbUndoBase + virtual void UndoL(CDbAgtBase *aDb); + +private: + // Data specific to the type of column we're are dealing with + // In this class we undo integer data. + TUint32 iValue; + }; + +// Derived from CDbUndoBase to store boolean values requiring Undo +class CDbUndoBool : public CDbUndoBase + { +public: + + static CDbUndoBool* NewL(const TDesC &aColumn, const TBool &aValue); + void ConstructL(const TDesC &aColumn, const TBool &aValue); + + // Concrete implementation of pure virtual in CDbUndoBase + virtual void UndoL(CDbAgtBase *aDb); + +private: + // Data specific to the type of column we're are dealing with + // In this class we undo boolean data. + TBool iValue; + }; + +// Derived from CDbUndoBase to store text values requiring Undo +class CDbUndoText : public CDbUndoBase + { +public: + + static CDbUndoText* NewL(const TDesC &aColumn, const TDesC16& aValue); + void ConstructL(const TDesC &aColumn, const TDesC16& aValue); + + // Concrete implementation of pure virtual in CDbUndoBase + virtual void UndoL(CDbAgtBase *aDb); + +private: + // Data specific to the type of column we're are dealing with + // In this class we undo text data. + TBuf16 iText; + }; + +// Derived from CDbUndoBase to store long text values requiring Undo +class CDbUndoLongText : public CDbUndoBase + { +public: + + static CDbUndoLongText* NewL(const TDesC &aColumn, const HBufC* aValue); + void ConstructL(const TDesC &aColumn, const HBufC* aValue); + + // Concrete implementation of pure virtual in CDbUndoBase + virtual void UndoL(CDbAgtBase *aDb); + +private: + // Data specific to the type of column we're are dealing with + // In this class we undo long text data. + HBufC* iLongText; + }; + +// Derived from CDbUndoBase to store agent extension name requiring Undo +class CDbUndoAgentExt : public CDbUndoBase + { +public: + + static CDbUndoAgentExt* NewL(const TDesC &aService, const TDesC& aAgentExt); + void ConstructL(const TDesC &aService, const TDesC& aAgentExt); + + // Concrete implementation of pure virtual in CDbUndoBase + virtual void UndoL(CDbAgtBase *aDb); + +private: + // Data specific to the type of column we're are dealing with + // In this class we undo text data. + TBuf16 iText; + }; + +// Base class for all database access +class CDbAgtBase : public CBase + { + friend class CDbUndoInt; + friend class CDbUndoBool; + friend class CDbUndoText; + friend class CDbUndoLongText; + friend class CDbUndoAgentExt; +public: + ~CDbAgtBase(); + void SetColumnIntL(const TDesC& aColumn, const TUint32& aValue); + void SetColumnBoolL(const TDesC& aColumn, const TBool& aValue); + void SetColumnTextL(const TDesC& aColumn, const TDesC16& aValue); + void SetColumnLongTextL(const TDesC& aColumn, const TDesC16& aValue); + void UndoDatabaseChangesL(); + CMDBRecordSetBase* Table(); + +protected: + CDbAgtBase(); + void ConstructL(); + + +protected: + // Used to access the database and retain a view on whichever table is of interest + CMDBSession *iDb; + CMDBRecordSetBase* iTable; + TUint iCurrentRecord; + +private: + void ModifyColumnIntL(const TDesC& aColumn, const TUint32& aValue); + void ModifyColumnBoolL(const TDesC& aColumn, const TBool& aValue); + void ModifyColumnTextL(const TDesC& aColumn, const TDesC16& aValue); + void ModifyColumnLongTextL(const TDesC& aColumn, const TDesC16& aValue); + +private: + // Double linked list header for undo functionality + TDblQue iQHeader; + + // Double linked list iterator for undo functionality + TDblQueIter iQIter; + + }; + +// GPRS OUTGOING specific class +class CDbGPRSOutgoingTable : public CDbAgtBase + { +public: + static CDbGPRSOutgoingTable *NewL(); + ~CDbGPRSOutgoingTable(); + +private: + CDbGPRSOutgoingTable(); + void ConstructL(); + }; + +// CSD specific class +class CDbCsdTable : public CDbAgtBase + { +public: + static CDbCsdTable *NewL(); + ~CDbCsdTable(); + CMDBRecordSetBase* Table(); + +private: + CDbCsdTable(); + void ConstructL(); + }; + +// MODEM specific class +class CDbModemTable : public CDbAgtBase + { +public: + static CDbModemTable *NewL(); + ~CDbModemTable(); + +private: + CDbModemTable(); + void ConstructL(); + }; +/* +// Preference table +class CDbPrefTable : public CDbAgtBase + { +public: + static CDbPrefTable *NewL( TCommDbConnectionDirection aDirection, CCommsDbConnectionPrefTableView::TCommDbIapBearer aBearerUpdate, TBool aReadOnly, TCommDbDialogPref aDialogPref ); + ~CDbPrefTable(); + +private: + CDbPrefTable(); + void ConstructL(); + CCommsDbConnectionPrefTableView* iPrefTable; + + TBuf16 iIapName; + TCommDbConnectionDirection iDirection; + CCommsDbConnectionPrefTableView::TCommDbIapBearer iBearerUpdate; + CCommsDbConnectionPrefTableView::TCommDbIapConnectionPref iOldPrefs; + TBool iReadOnly; + TCommDbDialogPref iDialogPref; + }; + +// IAP table +class CDbIapTable : public CDbAgtBase + { +public: + static CDbIapTable *NewL(const TDesC16& aIapName); + ~CDbIapTable(); + void GetBearerSetIapId(TUint32& aIapId); + +private: + CDbIapTable(); + void ConstructL(); + TBuf16 iIapName; + }; +*/ +#endif // DBUNDO