browserutilities/favouritesengine/ClientServer/srvinc/FavouritesSrvTable.h
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserutilities/favouritesengine/ClientServer/srvinc/FavouritesSrvTable.h	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,461 @@
+/*
+* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*      Declaration of class RFavouritesSrvTable.
+*      
+*
+*/
+
+
+#ifndef FAVOURITES_SRV_TABLE_H
+#define FAVOURITES_SRV_TABLE_H
+
+//  INCLUDES
+
+#include <e32base.h>
+#include <d32dbms.h>
+#include "FavouritesItemImpl.h"
+
+// FORWARD DECLARATION
+
+class MFavouritesItemData;
+class TFavouritesFilter;
+class MStreamBuf;
+
+// CLASS DECLARATION
+
+/**
+* Database table for favourites data.
+* This class provides the way to access / manipulate database tables, which
+* store favourites data in the table structure defined by the FavouritesEngine.
+* Its purpose is to hide the underlying table structure.
+* It does not provide data validation or sanity checks, and is not intended
+* to be used by users.
+*/
+NONSHARABLE_CLASS(RFavouritesSrvTable): public RDbTable
+    {
+
+    public:     // opening / closing with cleanup support
+
+        /**
+        * Open the table on this database, push a Close on the
+        * cleanup stack.
+        * @param aDb Open table on this database.
+        * @param aAccess Access mode.
+        * @return Error code.
+        */
+        void OpenL
+            (
+            RDbNamedDatabase& aDb,
+            RDbRowSet::TAccess aAccess = RDbRowSet::EUpdatable
+            );
+
+        /**
+        * Close the table, pop the cleanup item.
+        */
+        void Close();
+
+    public:     // update with cleanup support
+
+        /**
+        * Begin insertion, push a Cancel on the cleanup stack.
+        */
+        void InsertLC();
+
+        /**
+        * Begin update, push a Cancel on the cleanup stack.
+        */
+        void UpdateLC();
+
+        /**
+        * Apply changes to database, pop the cleanup item.
+        * @param aTouch If ETrue (the default), last modification time is set
+        * to current universal time.
+        */
+        void PutL( TBool aTouch = ETrue );
+
+        /**
+        * Cancel changes to database, pop the cleanup item.
+        */
+        void Cancel();
+
+    public:     // Navigation, filtering
+
+        /**
+        * Set filters.
+        * @param aFilter Filters.
+        */
+        void SetFiltersL( const TFavouritesFilter& aFilter );
+
+        /**
+        * Clear filters (all records accepted).
+        */
+        void ClearFilters();
+
+        /**
+        * Goto next record. If filtering is on, filters are considered.
+        * Otherwise it is eqivalent to base class method.
+        * @return ETrue if positioned on a record.
+        */
+        TBool NextL();
+
+        /**
+        * Goto record having this Uid. Filters are not considered.
+        * @param aUid Uid of record to go to.
+        * @return ETrue if positioned on a record.
+        */
+        TBool SeekToUidL( TInt aUid );
+
+        /**
+        * Goto record having this Uid. Filters are not considered.
+        * Leaves with KErrNotFound if no such record exists.
+        * @param aUid Uid of record to go to.
+        */
+        void GotoToUidL( TInt aUid );
+
+    public:     // data retrieval
+
+        /**
+        * Read the data from the current row to aItem. Row data must have
+        * been gotten; no validation or sanity check is performed.
+        * @param aItem This item is filled with data from the
+        * current row.
+        */
+        void ReadItemDataL( CFavouritesItemImpl& aItem ) const;
+
+        /**
+        * Get Uid from the current row. Row data must have been retrieved;
+        * no sanity check.
+        * @return The Uid in the current row.
+        */
+        TInt Uid() const;
+
+        /**
+        * Get Parent Folder Uid from the current row. Row data must have
+        * been retrieved; no sanity check.
+        * @return Parent Folder's Uid in the current row.
+        */
+        TInt ParentFolder() const;
+
+        /**
+        * Get type from the current row. Row data must have
+        * been retrieved; no sanity check.
+        * @return Type in the current row.
+        */
+        CFavouritesItem::TType Type() const;
+
+        /**
+        * Get name from the current row. Row data must have been retrieved;
+        * no sanity check.
+        * @return Pointer containing the name in the current row.
+        */
+        TPtrC Name() const;
+
+        /**
+        * Get URL from the current row. Row data must have been retrieved;
+        * no sanity check.
+        * @return Buffer containing the URL in the current row. Owner is
+        * the caller.
+        */
+        HBufC* UrlLC() const;
+
+        /**
+        * Get Wap AP from the current row. Row data must have been retrieved;
+        * no sanity check.
+        * @return WAP AP in the current row.
+        */
+        TFavouritesWapAp WapAp() const;
+
+        /**
+        * Get username from the current row. Row data must have been retrieved;
+        * no sanity check.
+        * @return Pointer containing the name in the current row.
+        */
+        TPtrC Username() const;
+
+        /**
+        * Get password from the current row. Row data must have been retrieved;
+        * no sanity check.
+        * @return Pointer containing the name in the current row.
+        */
+        TPtrC Password() const;
+
+        /**
+        * Get extra data from the current row. Row data must have been
+        * retrieved; no sanity check.
+        * @param aSink Data sink.
+        */
+        void GetExtraDataL( MStreamBuf& aSink );
+
+        /**
+        * Get Browser data from the current row. Row data must have been
+        * retrieved; no sanity check.
+        * @param aSink Data sink.
+        */
+        void GetBrowserDataL( MStreamBuf& aSink );
+
+        /**
+        * Get "factory item" flag from the current row. Row data must have
+        * been retrieved; no sanity check.
+        * @return "Factory item" flag.
+        */
+        TBool FactoryItem() const;
+
+        /**
+        * Get "read-only" flag from the current row. Row data must have
+        * been retrieved; no sanity check.
+        * @return "Read-only" flag.
+        */
+        TBool ReadOnly() const;
+
+        /**
+        * Get context id from the current row. Row data must have been
+        * retrieved; no sanity check.
+        * @return The context id in the current row.
+        */
+        TInt32 ContextId() const;
+
+        /**
+        * Get last modification time from the current row. Row data must have
+        * been retrieved; no sanity check.
+        * @return The last modification time in the current row, or zero (0)
+        * if not available.
+        */
+        TTime Modified() const;
+
+        /**
+        * Get preferred uid from the current row. Row data must have been
+        * retrieved; no sanity check.
+        * @return The preferred uid in the current row.
+        */
+        TInt PreferredUid() const;
+
+        /**
+        * Get "Hidden" flag from the current row. Row data must have
+        * been retrieved; no sanity check.
+        * @return "Hidden" flag.
+        */
+        TBool Hidden() const;
+    public:     // data update
+
+        /**
+        * Write the data from aItem to the current row. The table must be
+        * inserting or updating a row; no validation or sanity check is
+        * performed. The current row must not be read-only.
+        * @param aItem Data from this item (except Uid and read-only flag) will
+        * be written to the current row.
+        */
+        void WriteItemDataL( const CFavouritesItemImpl& aItem );
+
+        /**
+        * Set Uid to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aUid Uid to be written to the current row.
+        */
+        void SetUidL( TInt aUid );
+
+        /**
+        * Set Parent Folder Uid to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aUid Parent Folder's Uid to be written to the current row.
+        */
+        void SetParentFolderL( TInt aUid );
+
+        /**
+        * Set type to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aType Type be written to the current row.
+        */
+        void SetTypeL( CFavouritesItem::TType aType );
+
+        /**
+        * Set name to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aName Name to be written to the current row.
+        */
+        void SetNameL( const TDesC& aName );
+
+        /**
+        * Set URL to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aUrl URL to be written to the current row.
+        */
+        void SetUrlL( const TDesC& aUrl );
+
+        /**
+        * Set WAP AP to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aWapAp WAP AP to be written to the current row.
+        */
+        void SetWapApL( const TFavouritesWapAp& aWapAp );
+
+        /**
+        * Set username to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aUsername Username to be written to the current row.
+        */
+        void SetUsernameL( const TDesC& aUsername );
+
+        /**
+        * Set password to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aPassword Password to be written to the current row.
+        */
+        void SetPasswordL( const TDesC& aPassword );
+
+        /**
+        * Set extra data to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aSource Data source.
+        */
+        void SetExtraDataL( MStreamBuf& aSource );
+
+        /**
+        * Set Browser data to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aSource Data source.
+        */
+        void SetBrowserDataL( MStreamBuf& aSource );
+
+        /**
+        * Set "factory item" flag. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aFactoryItem "Factory item" flag to be written to the current
+        * row.
+        */
+        void SetFactoryItemL( TBool aFactoryItem );
+
+        /**
+        * Set "read-only" flag. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aReadOnly "Read-only"" flag to be written to the current
+        * row.
+        */
+        void SetReadOnlyL( TBool aReadOnly );
+
+        /**
+        * Set context id to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aContextId Context id to be written to the current row.
+        */
+        void SetContextIdL( TInt32 aContextId );
+
+        /**
+        * Set last modification time to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * Note: the database may not store this kind of data. This error is
+        * silently ignored.
+        * @param aModified Last modification time to be written to the current
+        * row.
+        */
+        void SetModifiedL( TTime aModified );
+
+        /**
+        * Set preferred uid to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aUid Preferred uid to be written to the current row.
+        */
+        void SetPreferredUidL( TInt aUid );
+
+        /**
+        * Set hidden value to the current row. The table must be
+        * updating or inserting a row. No sanity check.
+        * @param aHidden hidden value to be written to the current row.
+        */
+        void SetHiddenL( TBool aHidden );
+    public:     // utility
+
+        /**
+        * Place a write-lock. The cursor is positioned on an invalid row.
+        */
+        void PutWriteLockL();
+
+    public:     // creating database structure
+
+        /**
+        * Create the appropriate structure (table, columns, indexes) in aDb.
+        * @param aDb The database to be used. Must be open.
+        */
+        static void CreateStructureL( RDbNamedDatabase& aDb );
+
+        /**
+        * Verify the appropriate structure (columns, indexes) in aDb.
+        * @param aDb The database to be used. Must be open, with no rowsets
+        * opened on it.
+        * @param aUpgrade If ETrue, old structure databases are upgraded to
+        * new format (new columns added as necessary). Upgrade errors are
+        * silently ignored.
+        */
+        static void VerifyStructureL( RDbNamedDatabase& aDb, TBool aUpgrade );
+
+    private:    // implementation details
+
+        /**
+        * Get the ordinal numbers for database columns.
+        * Expects the table be open.
+        */
+        void GetColumnNumbersL();
+
+        /**
+        * Cancel changes to database; called in leave processing.
+        * @param aTable The table (RFavouritesTable*) as TAny*.
+        */
+        static void StaticCancel( TAny* aTable );
+
+    private:        // Data
+
+        /// Column ordinal for Uid.
+        TDbColNo iColNoUid;
+        /// Column ordinal for parent folder.
+        TDbColNo iColNoParentFolder;
+        /// Column ordinal for type.
+        TDbColNo iColNoType;
+        /// Column ordinal for name.
+        TDbColNo iColNoName;
+        /// Column ordinal for URL.
+        TDbColNo iColNoUrl;
+        /// Column ordinal for username.
+        TDbColNo iColNoUserName;
+        /// Column ordinal for password.
+        TDbColNo iColNoPassword;
+        /// Column ordinal for WAP AP id.
+        TDbColNo iColNoWapApId;
+        /// Column ordinal for WAP AP kind.
+        TDbColNo iColNoWapApValueKind;
+        /// Column ordinal for derived classes' data.
+        TDbColNo iColNoExtraData;
+        /// Column ordinal for factory item flag.
+        TDbColNo iColNoFactoryItem;
+        /// Column ordinal for read-ony flag.
+        TDbColNo iColNoReadOnly;
+        /// Column ordinal for context id.
+        TDbColNo iColNoContextId;
+        /// Column ordinal for last mod time (can be KDbNullColNo if no such).
+        TDbColNo iColNoModified;
+        /// Column ordinal for preferred uid (can be KDbNullColNo if no such).
+        TDbColNo iColNoPreferredUid;
+        /// Column ordinal for Browser data (can be KDbNullColNo if no such).
+        TDbColNo iColNoBrowserData;
+        ///
+        TDbColNo iColNoHidden;
+        /// ETrue if filtering is on.
+        TBool iFiltering;
+        /// Constraint when filtering.
+        RDbRowConstraint iFilter;
+
+    };
+
+#endif
+            
+// End of File