diff -r 000000000000 -r b497e44ab2fc syncmlfw/ds/adapterlog/inc/NSmlAdapterLog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/ds/adapterlog/inc/NSmlAdapterLog.h Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,188 @@ +/* +* Copyright (c) 2005 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: AdapterLog header +* +*/ + + + +#ifndef NSMLADAPTERLOG_H +#define NSMLADAPTERLOG_H + +// INCLUDES +#include +#include +#include + +// CONSTANTS + +// Default drive, where adapter log is stored +const TInt KNSmlAdapterLogDrive = EDriveC; + + +// Dictionary stores' filenames +// These are store to private path of process +_LIT(KNSmlAdapterLogStore, "nsmladapterlog%d.dat"); + +// Database name +// This is stored to DBMS server +_LIT(KNSmlAdapterLogDbName, "c:nsmladapterlog.db"); + +// Database tables +_LIT(KNSmlTableAdapterLog, "AdapterLog"); + +// AdapterLog table columns +_LIT(KNSmlAdapterLogId, "Id"); +_LIT(KNSmlAdapterLogImplementationUID, "ImplementationUID"); +_LIT(KNSmlAdapterLogLocalDatabase, "LocalDatabase"); +_LIT(KNSmlAdapterLogServerId, "ServerId"); +_LIT(KNSmlAdapterLogRemoteDatabase, "RemoteDatabase"); + +// SQL query +_LIT(KSqlGetAdapterLogRow, "SELECT * FROM AdapterLog WHERE ImplementationUID \ += %d AND LocalDatabase = '%S' AND ServerId = '%S' AND RemoteDatabase = '%S'" ); + +// row from known server id +_LIT(KSqlGetAdapterLogRowFromServerId, "SELECT * FROM AdapterLog WHERE ServerId = '%S'" ); + + +// FORWARD DECLARATIONS +class CDictionaryStore; + + +// CLASS DECLARATION + +/** +* CNSmlAdapterLog. +* +* @lib NSmlAdapterLog.lib +* @since Series 60 3.0 +*/ +class CNSmlAdapterLog : public CBase, public MSmlSyncRelationship + { + public: // Constructors and destructor + + /** + * Creates a new instance of the CNSmlAdapterLog class. + * The method also creates the AdapterLog database if it does not + * exist. + */ + IMPORT_C static CNSmlAdapterLog* NewL(); + + /** + * Creates a new instance of the CNSmlAdapterLog class. Method + * pushes and leaves the created instance on the cleanup stack. + * The method also creates the AdapterLog database if it does not + * exist. + */ + IMPORT_C static CNSmlAdapterLog* NewLC(); + + /** + * Destructor. + */ + ~CNSmlAdapterLog(); + + public: // New functions + + /** + * Sets the adapter log key with given values. + * @param aImplUid Implementation UID. + * @param aLocalDB Local database name. + * @param aServerId Remote server ID. + * @param Remote database name. + */ + IMPORT_C void SetAdapterLogKeyL(const TInt aImplUid, + const TDesC& aLocalDB, + const TDesC& aServerId, + const TDesC& aRemoteDB); + /** + * Replaces the give old server ID with new one. + * @param aOldServerId Old remote server ID. + * @param aNewValue New remote server ID. + */ + IMPORT_C void SetServerIdL( TDesC& aOldServerId, TDesC& aNewValue ); + + public: // Functions from base classes + + /** + * From MSmlSyncRelationship. Returns the unique identifier for the + * synchronisation relationship. + * @return Unique synchronisation task key. + */ + IMPORT_C TSmlSyncTaskKey SyncTaskKey() const; + + /** + * From MSmlSyncRelationship. Opens a specified stream for reading, and + * places an item on the cleanup stack to close it. + * @param aReadStream Stream to be opened for reading. + * @param aStreamUid UID specifying the stream. + */ + IMPORT_C void OpenReadStreamLC(RReadStream& aReadStream, + TUid aStreamUid); + + /** + * From MSmlSyncRelationship. Opens the specified stream, or creates a + * new one if it does not exist, and places an item on the cleanup stack + * to close it. + * @param aWriteStream Stream to be opened for writing. + * @param aStreamUid UID specifying the stream. + */ + IMPORT_C void OpenWriteStreamLC(RWriteStream& aWriteStream, + TUid aStreamUid); + + /** + * From MSmlSyncRelationship. Tests if the specified stream identified + * exists in the store. + * @param aStreamUid UID specifying the stream. + * @return ETrue, if specified stream is present. + */ + IMPORT_C TBool IsStreamPresentL(TUid aStreamUid) const; + + private: + + /** + * C++ default constructor. + */ + CNSmlAdapterLog(); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(); + + void CreateDatabaseL(const TDesC& aFullName); + TInt GenerateIdL(); + void OpenDictionaryStoreL(); + + private: // Data + + TInt iID; + + RDbNamedDatabase iDatabase; + RFs iFsSession; + RDbs iRdbSession; + + RDbTable iTable; + CDbColSet* iColSet; + RDbView iView; + + CDictionaryStore* iDictionaryStore; + + HBufC* iPath; + static const TInt KMaxPathLength = 256; + }; + +#endif // NSMLADAPTERLOG_H + +// End of File