Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

mymoneydatabasemgr.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           mymoneydatabasemgr.h  -  description
00003                              -------------------
00004     begin                : June 5 2007
00005     copyright            : (C) 2007 by Fernando Vilas
00006     email                : Fernando Vilas <fvilas@iname.com>
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #ifndef MYMONEYDATABASEMGR_H
00019 #define MYMONEYDATABASEMGR_H
00020 
00021 // ----------------------------------------------------------------------------
00022 // QT Includes
00023 
00024 // ----------------------------------------------------------------------------
00025 // Project Includes
00026 
00027 #include "imymoneyserialize.h"
00028 #include "imymoneystorage.h"
00029 #include "mymoneymap.h"
00030 #include "mymoneystoragesql.h"
00031 
00044 class MyMoneyDatabaseMgr : public IMyMoneyStorage, public IMyMoneySerialize,
00045                             public MyMoneyKeyValueContainer
00046 {
00047 public:
00048   MyMoneyDatabaseMgr();
00049   ~MyMoneyDatabaseMgr();
00050 
00051   // general get functions
00052   virtual const MyMoneyPayee user(void) const;
00053   virtual const QDate creationDate(void) const;
00054   virtual const QDate lastModificationDate(void) const;
00055   virtual unsigned int currentFixVersion(void) const;
00056   virtual unsigned int fileFixVersion(void) const;
00057 
00058   // general set functions
00059   virtual void setUser(const MyMoneyPayee& user);
00060   virtual void setFileFixVersion(const unsigned int v);
00061 
00062   // methods provided by MyMoneyKeyValueContainer
00063   virtual void setValue(const QCString& key, const QString& value);
00064   virtual const QString value(const QCString& key) const;
00065   virtual void deletePair(const QCString& key);
00066 
00072   virtual MyMoneyDatabaseMgr const * duplicate(void);
00073 
00081   virtual void addAccount(MyMoneyAccount& account);
00082 
00093   virtual void addAccount(MyMoneyAccount& parent, MyMoneyAccount& account);
00094 
00102   virtual void addPayee(MyMoneyPayee& payee);
00103 
00112   virtual const MyMoneyPayee payee(const QCString& id) const;
00113 
00123   virtual const MyMoneyPayee payeeByName(const QString& payee) const;
00124 
00132   virtual void modifyPayee(const MyMoneyPayee& payee);
00133 
00141   virtual void removePayee(const MyMoneyPayee& payee);
00142 
00149   virtual const QValueList<MyMoneyPayee> payeeList(void) const;
00150 
00160   virtual const MyMoneyAccount account(const QCString& id) const;
00161 
00171   virtual bool isStandardAccount(const QCString& id) const;
00172 
00182   virtual void setAccountName(const QCString& id, const QString& name);
00183 
00194   virtual void addInstitution(MyMoneyInstitution& institution);
00195 
00208   virtual void addTransaction(MyMoneyTransaction& transaction, const bool skipAccountUpdate = false);
00209 
00219   virtual bool hasActiveSplits(const QCString& id) const;
00220 
00232   virtual const MyMoneyMoney balance(const QCString& id, const QDate& date) const;
00233 
00245   virtual const MyMoneyMoney totalBalance(const QCString& id, const QDate& date) const;
00246 
00254   virtual const MyMoneyInstitution institution(const QCString& id) const;
00255 
00262   virtual bool dirty(void) const;
00263 
00273   virtual void setDirty(void);
00274 
00281   virtual unsigned int accountCount(void) const;
00282 
00290   virtual const QValueList<MyMoneyInstitution> institutionList(void) const;
00291 
00300   virtual void modifyAccount(const MyMoneyAccount& account, const bool skipCheck = false);
00301 
00310   virtual void modifyInstitution(const MyMoneyInstitution& institution);
00311 
00320   virtual void modifyTransaction(const MyMoneyTransaction& transaction);
00321 
00330   virtual void reparentAccount(MyMoneyAccount &account, MyMoneyAccount& parent);
00331 
00340   virtual void removeTransaction(const MyMoneyTransaction& transaction);
00341 
00353   virtual unsigned int transactionCount(const QCString& account = QCString()) const;
00354 
00364   virtual const QMap<QCString, unsigned long> transactionCountMap(void) const;
00365 
00379   virtual const QValueList<MyMoneyTransaction> transactionList(MyMoneyTransactionFilter& filter) const;
00380 
00389   virtual void transactionList(QValueList<MyMoneyTransaction>& list, MyMoneyTransactionFilter& filter) const;
00390 
00399   virtual void transactionList(QValueList<QPair<MyMoneyTransaction, MyMoneySplit> >& list, MyMoneyTransactionFilter& filter) const;
00400 
00410   virtual void removeAccount(const MyMoneyAccount& account);
00411 
00421   virtual void removeInstitution(const MyMoneyInstitution& institution);
00422 
00431   virtual const MyMoneyTransaction transaction(const QCString& id) const;
00432 
00441   virtual const MyMoneyTransaction transaction(const QCString& account, const int idx) const;
00442 
00449   virtual unsigned int institutionCount(void) const;
00450 
00458   virtual void accountList(QValueList<MyMoneyAccount>& list) const;
00459 
00464   virtual const MyMoneyAccount liability(void) const;
00465 
00470   virtual const MyMoneyAccount asset(void) const;
00471 
00476   virtual const MyMoneyAccount expense(void) const;
00477 
00482   virtual const MyMoneyAccount income(void) const;
00483 
00488   virtual const MyMoneyAccount equity(void) const;
00489 
00499   virtual void addSecurity(MyMoneySecurity& security);
00500 
00509   virtual void modifySecurity(const MyMoneySecurity& security);
00510 
00519   virtual void removeSecurity(const MyMoneySecurity& security);
00520 
00530   virtual const MyMoneySecurity security(const QCString& id) const;
00531 
00538   virtual const QValueList<MyMoneySecurity> securityList(void) const;
00539 
00540   virtual void addPrice(const MyMoneyPrice& price);
00541   virtual void removePrice(const MyMoneyPrice& price);
00542   virtual const MyMoneyPrice price(const QCString& fromId, const QCString& toId, const QDate& date, const bool exactDate) const;
00543 
00549   virtual const MyMoneyPriceList priceList(void) const;
00550 
00561   virtual void addSchedule(MyMoneySchedule& sched);
00562 
00571   virtual void modifySchedule(const MyMoneySchedule& sched);
00572 
00581   virtual void removeSchedule(const MyMoneySchedule& sched);
00582 
00592   virtual const MyMoneySchedule schedule(const QCString& id) const;
00593 
00620   virtual const QValueList<MyMoneySchedule> scheduleList(const QCString& accountId = QCString(),
00621                                      const MyMoneySchedule::typeE type = MyMoneySchedule::TYPE_ANY,
00622                                      const MyMoneySchedule::occurenceE occurence = MyMoneySchedule::OCCUR_ANY,
00623                                      const MyMoneySchedule::paymentTypeE paymentType = MyMoneySchedule::STYPE_ANY,
00624                                      const QDate& startDate = QDate(),
00625                                      const QDate& endDate = QDate(),
00626                                      const bool overdue = false) const;
00627 
00628   virtual const QValueList<MyMoneySchedule> scheduleListEx( int scheduleTypes,
00629                                               int scheduleOcurrences,
00630                                               int schedulePaymentTypes,
00631                                               QDate startDate,
00632                                               const QCStringList& accounts=QCStringList()) const;
00633 
00643   virtual void addCurrency(const MyMoneySecurity& currency);
00644 
00653   virtual void modifyCurrency(const MyMoneySecurity& currency);
00654 
00663   virtual void removeCurrency(const MyMoneySecurity& currency);
00664 
00674   virtual const MyMoneySecurity currency(const QCString& id) const;
00675 
00684   virtual const QValueList<MyMoneySecurity> currencyList(void) const;
00685 
00694   virtual const QValueList<MyMoneyReport> reportList( void ) const;
00695 
00706   virtual void addReport( MyMoneyReport& report );
00707 
00716   virtual void modifyReport( const MyMoneyReport& report );
00717 
00724   virtual unsigned countReports( void ) const;
00725 
00735   virtual const MyMoneyReport report( const QCString& id ) const;
00736 
00745   virtual void removeReport(const MyMoneyReport& report);
00746 
00755   virtual const QValueList<MyMoneyBudget> budgetList( void ) const;
00756 
00767   virtual void addBudget( MyMoneyBudget& budget );
00768 
00778   virtual const MyMoneyBudget budgetByName(const QString& budget) const;
00779 
00788   virtual void modifyBudget( const MyMoneyBudget& budget );
00789 
00796   virtual unsigned countBudgets( void ) const;
00797 
00807   virtual MyMoneyBudget budget( const QCString& id ) const;
00808 
00817   virtual void removeBudget(const MyMoneyBudget& budget);
00818 
00819 
00820 
00824   virtual void clearCache(void);
00825 
00837   virtual bool isReferenced(const MyMoneyObject& obj, const MyMoneyFileBitArray& skipCheck = MyMoneyFileBitArray()) const;
00838 
00842   virtual void close(void);
00843 
00847   virtual void startTransaction(void);
00848   virtual bool commitTransaction(void);
00849   virtual void rollbackTransaction(void);
00850 
00851   // general set functions
00852   virtual void setCreationDate(const QDate& val);
00853 
00857   virtual MyMoneyStorageSql *connectToDatabase
00858       (const KURL& url);
00864   virtual void fillStorage();
00865 
00874   virtual void setLastModificationDate(const QDate& val);
00875 
00889   // virtual const QValueList<MyMoneyTransaction> transactionList(const QCString& account = "") const;
00890 
00895   virtual bool isDuplicateTransaction(const QCString&) const;
00896 
00897   virtual void loadAccounts(const QMap<QCString, MyMoneyAccount>& map);
00898   virtual void loadTransactions(const QMap<QCString, MyMoneyTransaction>& map);
00899   virtual void loadInstitutions(const QMap<QCString, MyMoneyInstitution>& map);
00900   virtual void loadPayees(const QMap<QCString, MyMoneyPayee>& map);
00901   virtual void loadSchedules(const QMap<QCString, MyMoneySchedule>& map);
00902   virtual void loadSecurities(const QMap<QCString, MyMoneySecurity>& map);
00903   virtual void loadCurrencies(const QMap<QCString, MyMoneySecurity>& map);
00904   virtual void loadReports( const QMap<QCString, MyMoneyReport>& reports );
00905   virtual void loadBudgets( const QMap<QCString, MyMoneyBudget>& budgets );
00906   virtual void loadPrices(const MyMoneyPriceList& list);
00907 
00908   virtual unsigned long accountId(void) const;
00909   virtual unsigned long transactionId(void) const;
00910   virtual unsigned long payeeId(void) const;
00911   virtual unsigned long institutionId(void) const;
00912   virtual unsigned long scheduleId(void) const;
00913   virtual unsigned long securityId(void) const;
00914   virtual unsigned long reportId(void) const;
00915   virtual unsigned long budgetId(void) const;
00916 
00917   virtual void loadAccountId(const unsigned long id);
00918   virtual void loadTransactionId(const unsigned long id);
00919   virtual void loadPayeeId(const unsigned long id);
00920   virtual void loadInstitutionId(const unsigned long id);
00921   virtual void loadScheduleId(const unsigned long id);
00922   virtual void loadSecurityId(const unsigned long id);
00923   virtual void loadReportId(const unsigned long id);
00924   virtual void loadBudgetId(const unsigned long id);
00925 
00934   virtual const QMap<QCString, QString> pairs(void) const;
00935 
00947   virtual void setPairs(const QMap<QCString, QString>& list);
00948 
00953   virtual void rebuildAccountBalances(void);
00954 
00955 private:
00961   QDate m_creationDate;
00962 
00967   unsigned int m_currentFixVersion;
00968 
00973   unsigned int m_fileFixVersion;
00974 
00979   QDate m_lastModificationDate;
00980 
00984   KSharedPtr <MyMoneyStorageSql> m_sql;
00985 
00990   MyMoneyPayee m_user;
00991 
00996   const QCString nextInstitutionID(void);
00997 
01002   const QCString nextAccountID(void);
01003 
01008   const QCString nextTransactionID(void);
01009 
01014   const QCString nextPayeeID(void);
01015 
01020   const QCString nextScheduleID(void);
01021 
01026   const QCString nextSecurityID(void);
01027 
01028   const QCString nextReportID(void);
01029 
01034   const QCString nextBudgetID(void);
01035 
01036   static const int INSTITUTION_ID_SIZE = 6;
01037   static const int ACCOUNT_ID_SIZE = 6;
01038   static const int TRANSACTION_ID_SIZE = 18;
01039   static const int PAYEE_ID_SIZE = 6;
01040   static const int SCHEDULE_ID_SIZE = 6;
01041   static const int SECURITY_ID_SIZE = 6;
01042   static const int REPORT_ID_SIZE = 6;
01043   static const int BUDGET_ID_SIZE = 6;
01044 
01045   // Increment this to force an update in KMMView.
01046   // This is different from the db schema version stored in
01047   // MMStorageSql::m_majorVersion
01048   static const int CURRENT_FIX_VERSION = 3;
01049 
01050 };
01051 #endif

Generated on Mon Nov 17 11:59:19 2008 for KMyMoney by  doxygen 1.4.1