--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/notepad/notepad1/SyncMLAdapter/inc/nsmlnotepadDatabase.h Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,273 @@
+/*
+* Copyright (c) 2003 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: calss which directly deal with notepad database.
+*
+*/
+
+
+#ifndef NSMLNOTEPADDATABASE_H
+#define NSMLNOTEPADDATABASE_H
+
+//INCLUDES
+#include <d32dbms.h>
+#include <badesca.h>
+
+//CLASS Forward declarations
+class CNpdItem;
+
+//Constants
+const TInt KNpdSqlStringMaxLength(128);
+
+
+_LIT(KNpdDataFile, "c:Notepad.dat"); //from npdlib.rsg
+
+const TUid KSecureUid = {0x101F8878};
+_LIT(KSecure, "SECURE");
+
+_LIT(KNpdSqlInsert, "SELECT * FROM Table1");
+_LIT(KNpdSqlFormatSeek, "SELECT * FROM Table1 WHERE key=%d");
+_LIT(KNpdSqlDeleteHead, "DELETE FROM Table1 WHERE key="); //39 chars
+_LIT(KNpdSqlDeleteAll, "DELETE FROM Table1"); // 20 chars
+
+_LIT(KNpdTableName, "Table1");
+_LIT(KNpdKey, "key");
+_LIT(KNpdUpdateTime, "time");
+_LIT(KNpdMemo, "memo");
+
+
+const TInt KNpdSqlDeleteHeadSize(49); // %d costs 10 chars in max
+const TInt KMaxFileLength(255);
+
+//Class declarations
+
+class CNSmlNotepadDatabase : public CBase
+ {
+ public:
+ /**
+ * Creates new instance of CNpdSmlDbModel based class.
+ * @return CNpdSmlDbModel* Newly created instance.
+ */
+ static CNSmlNotepadDatabase* NewL();
+
+ virtual ~CNSmlNotepadDatabase();
+ private:
+ // Constructor
+ CNSmlNotepadDatabase();
+ /**
+ * 2-phase constructor
+ */
+ void ConstructL();
+
+ public:
+
+ /**
+ * Opens notepad database file. If file does not exist, or is corrupted,
+ * a new, empty file is created.
+ * @return KErrNone if successful, a system wide error code otherwise.
+ */
+ void OpenL();
+
+ /**
+ * Opens notepad database file. If file does not exist, or is corrupted,
+ * a new, empty file is created.
+ * @param aStoreName, name of the notepad database file name
+ */
+ void OpenL(const TDesC& aStoreName);
+
+ /**
+ * Adds a note to the database.
+ * @param aNote the note to be added.
+ * @param aKey database index of the newly added note.
+ */
+ void AddNoteL(CNpdItem& aNote, TInt &aKey);
+
+ /**
+ * Deletes a note from the database.
+ * @param aKey database index of the note to be deleted.
+ */
+ void DeleteNoteL(const TInt aKey);
+
+
+ /**
+ * Closes the database.
+ */
+ void Close();
+
+ /**
+ * Reads a note from the database.
+ * @param aKey database index of the desired note.
+ * @param aNote reference to note object, used to return note data.
+ */
+ void GetNoteL(const TInt aKey, CNpdItem& aNote);
+
+ /**
+ * Updates a note in the database.
+ * @param aKey database index of the note to be updated.
+ * @param aNote note data. This data overrides existing note.
+ */
+ void UpdateNoteL(const TInt aKey, CNpdItem& aItem);
+
+
+ /**
+ * Empties the database. All notes are deleted and the database is
+ * compacted.
+ * @return KErrNone if successful, a system wide error code otherwise.
+ */
+ TInt Reset();
+
+ /**
+ * Checks if the database has been succesfully openend
+ * @return ETrue if database has been succesfully opened, EFalse otherwise
+ */
+ TBool IsOpen();
+ /**
+ * gets teh default database storename of the notepad database
+ * @Param aStoreName holds the default notepad database's file name.
+ */
+ void GetDefaultDatastoreName(TDes& aStoreName);
+ /**
+ * lists the notepad database file names
+ * @returns available notepad database file names.
+ */
+ CDesCArray* ListDatabasesL();
+ /**
+ * Get the id of the first record in the table
+ * @returns id of the first record, if no records then returns -1.
+ */
+ TInt FirstL();
+ /**
+ * Get the id of the next record in the table
+ * @returns id of the next record, if no records then returns -1.
+ */
+ TInt NextL();
+ /**
+ * Get the id of the last record in the table
+ * @returns id of the last record, if no records then returns -1.
+ */
+ TInt LastL();
+
+
+ private:
+
+
+ /**
+ * Creates a column set used to create a new database file.
+ * @return column set.
+ */
+ CDbColSet* CreateColSetLC();
+
+
+ /**
+ * Creates a new database file.
+ */
+ void CreateDBL();
+
+ /**
+ * Rolls back last database transaction.
+ */
+ void Rollback();
+
+ private: // Data
+ // Interface to database
+ RDbNamedDatabase iDatabase;
+ // Session to database server
+ RDbs iDbs;
+ // Flag for whether database has been opened
+ TBool iOpened;
+ HBufC* iDataFile;
+ RDbTable iTable;
+
+ enum TNotepadColumnType
+ {
+ ENotepadKey = 1, // this must be 1 (DBMS/SQL restriction)
+ ENotepadUpdateTime,
+ ENotepadMemo
+ };
+ };
+
+class CNpdItem : public CBase
+ {
+ public:
+ // Destructor
+ virtual ~CNpdItem();
+
+ /**
+ * Creates new instance of CNpdItem based class.
+ * @return CNpdItem* Newly created instance.
+ */
+ static CNpdItem* NewLC();
+
+ /**
+ * Creates new instance of CNpdItem based class.
+ * @param aKey database index key
+ * @param aLastModified timestamp
+ * @param aContent content (text) of the note
+ * @return CNpdItem* Newly created instance.
+ */
+ static CNpdItem* NewLC(TInt aKey, const TTime& aLastModified, HBufC* aContent);
+ private:
+ // Constructor
+ CNpdItem();
+ //Overloaded Constructor
+ CNpdItem(TInt aKey, const TTime& aLastModified, HBufC *content);
+
+ public:
+ /**
+ * Returns database key.
+ * @return key value.
+ */
+ TInt Key() const;
+
+ /**
+ * Returns the time stamp of the note.
+ * @return when note was last modified.
+ */
+ TTime LastModified() const;
+
+ /**
+ * Returns content of the note
+ * @return text of the note.
+ */
+ HBufC* Content();
+
+ /**
+ * Set note data.
+ * @param aKey database index
+ * @param aModTime time note was last modified
+ * @param aContent content of the note
+ */
+ void Set(TInt aKey, const TTime& aModTime, HBufC* aContent);
+
+ /**
+ * Set content of the note
+ * @param aContent text of the note.
+ */
+ void SetContent(HBufC* aContent);
+
+ /**
+ * Returns timestamp of the note
+ * @param aLastModified time note was last modified.
+ */
+ void SetModified(const TTime& aLastModified);
+
+ private:
+ TInt iKey;
+ TTime iLastModified;
+ HBufC* iContent; // owned
+ };
+
+
+
+
+#endif // NSMLNOTEPADDATABASE_H