diff -r 000000000000 -r dd21522fd290 browserutilities/favouritesengine/ClientServer/srvinc/FavouritesSrvTable.h --- /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 +#include +#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