diff -r 5aadd1120515 -r b57382753122 notepad/notepad1/SyncMLAdapter/inc/nsmlnotepadDatabase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/notepad/notepad1/SyncMLAdapter/inc/nsmlnotepadDatabase.h Wed Nov 03 17:12:22 2010 +0530 @@ -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 +#include + +//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