00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef __BOOKDBENGINE_H__
00031 #define __BOOKDBENGINE_H__
00032
00033
00034 #include <e32std.h>
00035 #include <badesca.h>
00036 #include <d32dbms.h>
00037 #include <f32file.h>
00038
00039
00040
00041 class CFileStore;
00042
00043
00044 _LIT(KBooksTable, "Books");
00045 _LIT(KBooksAuthorCol, "Author");
00046 _LIT(KBooksTitleCol, "Title");
00047 _LIT(KBooksDescriptionCol, "Description");
00048 _LIT(KBooksDateCol,"PublishDate");
00049 _LIT(KBooksIndexName,"BooksIndex");
00050 const int KTitleMaxLength = 60;
00051 const int KDescriptionMaxLength = 128;
00052
00053
00058 const int KBookItemMaxLength = 256;
00059
00064 _LIT(KSeparator,"|");
00065
00066
00099 class CBookDb : public CBase
00100 {
00101 public:
00102
00108 static CBookDb* NewL();
00109
00115 ~CBookDb();
00116
00117
00118 public:
00119
00135 TInt OpenDb(const TFileName& aExistingBookFile);
00136
00155 TInt CreateDb(const TFileName& aNewBookFile);
00156
00170 TInt RemoveDb(const TFileName& aExistingBookFile);
00171
00182 TInt Close();
00183
00190 TBool IsOpen() const;
00191
00208 TInt AddBookWithSql(const TDesC& aAuthor,
00209 const TDesC& aTitle,
00210 const TDesC& aDescription);
00211
00228 TInt AddBookWithCppApiL(const TDesC& aAuthor,
00229 const TDesC& aTitle,
00230 const TDesC& aDescription);
00231
00242 CDesCArrayFlat* GetAllBooksL();
00243
00260 CDesCArrayFlat* GetBooksByKeyL(const TDesC& aColumnName,
00261 const TDesC& aSearchString);
00262
00277 TInt GetABookFast(const TDesC& aTitle, TDes& aResult);
00278
00292 TInt RemoveBooks(const TDesC& aTitle, TInt& aResultCount);
00293
00303 TInt RemoveAllBooks(TInt& aResultCount);
00304
00305
00318 TInt UpdateBookTitle(const TDesC& aOldTitleKey, const TDesC& aNewTitle);
00319
00320
00321
00332 CDesCArrayFlat* ColumnNamesAndSizesL();
00333
00341 TInt HasDateColumn(TBool& aReturnValue);
00342
00352 TInt AddDateColumn();
00353
00363 TInt RemoveDateColumn();
00364
00365 private:
00366
00373 void ConstructL();
00374
00380 CBookDb();
00381
00382 private:
00383
00384 void CreateBooksTableL();
00385 void CreateBooksIndexL();
00386 void DropBooksTable();
00387
00388 private:
00389
00390 RFs iFsSession;
00391 RDbStoreDatabase iBookDb;
00392 CFileStore* iFileStore;
00393 TBool iOpen;
00394 };
00395
00396 #endif // __BOOKDBENGINE_H__
00397
00398