syncmlfw/ds/adapterlog/inc/NSmlAdapterLog.h
changeset 0 b497e44ab2fc
--- /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 <f32file.h>
+#include <d32dbms.h>
+#include <SmlDataSyncDefs.h>
+
+// 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