/** * Copyright Mikael Högdahl - triyana@users.sourceforge.net * * This source is distributed under the terms of the Q Public License version 1.0, * created by Trolltech (www.trolltech.com). */ #ifndef DBFactory_h #define DBFactory_h #include #include #include class Account; class Security; class Set; class SetItem; class MHString; class MHVector; /** * DBFactory creates data vectors */ class DBFactory { public: static void Clear (); static void ClearAccount() {aaAccount->Erase();} static void ClearGuard() {aaGuard->Erase();} static void ClearPref() {aaPref->Erase();} static void ClearPrice (); static void ClearSecurity() {aaSecurity->Erase();} static void ClearSet() {aaSet->Erase();} static const char* Database () {return aaPath->Get();} static void Export (const char* fileName, bool account, bool transactions, bool set, bool security, bool price, bool guard, bool Pref); static int GetPrefIntValue (const char* key, int min, int max, int def); static int GetPrefIntValue (const char* key, int view, int min, int max, int def); static const char* GetPrefStringValue (const char* key, const char* def = ""); static int GetUniqueID(); static const char* GetWorkSpaceName () {if (DBFactory::aaWorkSpace == 0) DBFactory::SetWorkSpace (STRING(DEFAULT_WORKSPACE)); return aaWorkSpace->Get();} static MHVector* LoadAccount(); static MHVector* LoadClosedPrice (Security* security) {return loadPrice(security, true);} static MHVector* LoadGuard(); static MHVector* LoadPref(); static void LoadPortfolio (Account* account, MHVector* out); static MHVector* LoadPrice (Security* security) {return loadPrice(security, false);} static void LoadRawPrice (Security* set, MHVector* out); static MHVector* LoadSecurity(); static MHVector* LoadSet(); static void LoadSetItem (Set* set, MHVector* out); static void SetCacheSize (int t) {ClearPrice(); aaCacheSize = t;} static void SetCacheTimeout (int t) {ClearPrice(); aaCacheTimeout = t;} static void SetPrefIntValue (const char* key, int min, int max, int def, int val); static void SetPrefIntValue (const char* key, int view, int min, int max, int def, int val); static void SetPrefStringValue (const char* key, const char* val); static void SetWorkSpace (const char* file); static const char* Slash () {return "/";} static void Start (const char* database); static void Stop (); static void WriteLog (const char *Message, ...); private: enum { CACHE_SIZE = 100, CACHE_TIMEOUT = 300, }; static char aaPathSep; static int aaCacheSize; static int aaCacheTimeout; static int aaPriceAccess[CACHE_SIZE]; static MHString* aaLogName; static MHString* aaPath; static MHString* aaWorkSpace; static MHVector* aaAccount; static MHVector* aaClosed[CACHE_SIZE]; static MHVector* aaGuard; static MHVector* aaPref; static MHVector* aaPrice[CACHE_SIZE]; static MHVector* aaSecurity; static MHVector* aaSet; static Security* aaPriceName[CACHE_SIZE]; static MHVector* loadPrice (Security* security, bool closed); }; #endif