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 QString& key, const QString& value);
00064   virtual const QString value(const QString& key) const;
00065   virtual void deletePair(const QString& 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 QString& 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 QString& id) const;
00161 
00171   virtual bool isStandardAccount(const QString& id) const;
00172 
00182   virtual void setAccountName(const QString& 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 QString& id) const;
00220 
00232   virtual const MyMoneyMoney balance(const QString& id, const QDate& date) const;
00233 
00245   virtual const MyMoneyMoney totalBalance(const QString& id, const QDate& date) const;
00246 
00254   virtual const MyMoneyInstitution institution(const QString& 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 QString& account = QString()) const;
00354 
00364   virtual const QMap<QString, 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 QString& id) const;
00432 
00441   virtual const MyMoneyTransaction transaction(const QString& 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 QString& 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 QString& fromId, const QString& 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 QString& id) const;
00593 
00620   virtual const QValueList<MyMoneySchedule> scheduleList(const QString& accountId = QString(),
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 QStringList& accounts=QStringList()) 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 QString& 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 QString& 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 QString& 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 KSharedPtr <MyMoneyStorageSql> connectToDatabase
00858       (const KURL& url);
00864   virtual void fillStorage();
00865 
00874   virtual void setLastModificationDate(const QDate& val);
00875 
00880   virtual bool isDuplicateTransaction(const QString&) const;
00881 
00882   virtual void loadAccounts(const QMap<QString, MyMoneyAccount>& map);
00883   virtual void loadTransactions(const QMap<QString, MyMoneyTransaction>& map);
00884   virtual void loadInstitutions(const QMap<QString, MyMoneyInstitution>& map);
00885   virtual void loadPayees(const QMap<QString, MyMoneyPayee>& map);
00886   virtual void loadSchedules(const QMap<QString, MyMoneySchedule>& map);
00887   virtual void loadSecurities(const QMap<QString, MyMoneySecurity>& map);
00888   virtual void loadCurrencies(const QMap<QString, MyMoneySecurity>& map);
00889   virtual void loadReports( const QMap<QString, MyMoneyReport>& reports );
00890   virtual void loadBudgets( const QMap<QString, MyMoneyBudget>& budgets );
00891   virtual void loadPrices(const MyMoneyPriceList& list);
00892 
00893   virtual unsigned long accountId(void) const;
00894   virtual unsigned long transactionId(void) const;
00895   virtual unsigned long payeeId(void) const;
00896   virtual unsigned long institutionId(void) const;
00897   virtual unsigned long scheduleId(void) const;
00898   virtual unsigned long securityId(void) const;
00899   virtual unsigned long reportId(void) const;
00900   virtual unsigned long budgetId(void) const;
00901 
00902   virtual void loadAccountId(const unsigned long id);
00903   virtual void loadTransactionId(const unsigned long id);
00904   virtual void loadPayeeId(const unsigned long id);
00905   virtual void loadInstitutionId(const unsigned long id);
00906   virtual void loadScheduleId(const unsigned long id);
00907   virtual void loadSecurityId(const unsigned long id);
00908   virtual void loadReportId(const unsigned long id);
00909   virtual void loadBudgetId(const unsigned long id);
00910 
00919   virtual const QMap<QString, QString> pairs(void) const;
00920 
00932   virtual void setPairs(const QMap<QString, QString>& list);
00933 
00938   virtual void rebuildAccountBalances(void);
00939 
00940 private:
00946   QDate m_creationDate;
00947 
00952   unsigned int m_currentFixVersion;
00953 
00958   unsigned int m_fileFixVersion;
00959 
00964   QDate m_lastModificationDate;
00965 
00969   KSharedPtr <MyMoneyStorageSql> m_sql;
00970 
00975   MyMoneyPayee m_user;
00976 
00981   const QString nextInstitutionID(void);
00982 
00987   const QString nextAccountID(void);
00988 
00993   const QString nextTransactionID(void);
00994 
00999   const QString nextPayeeID(void);
01000 
01005   const QString nextScheduleID(void);
01006 
01011   const QString nextSecurityID(void);
01012 
01013   const QString nextReportID(void);
01014 
01019   const QString nextBudgetID(void);
01020 
01021   void removeReferences(const QString& id);
01022 
01023   static const int INSTITUTION_ID_SIZE = 6;
01024   static const int ACCOUNT_ID_SIZE = 6;
01025   static const int TRANSACTION_ID_SIZE = 18;
01026   static const int PAYEE_ID_SIZE = 6;
01027   static const int SCHEDULE_ID_SIZE = 6;
01028   static const int SECURITY_ID_SIZE = 6;
01029   static const int REPORT_ID_SIZE = 6;
01030   static const int BUDGET_ID_SIZE = 6;
01031 
01032   // Increment this to force an update in KMMView.
01033   // This is different from the db schema version stored in
01034   // MMStorageSql::m_majorVersion
01035   static const int CURRENT_FIX_VERSION = 3;
01036 
01037 };
01038 #endif

Generated on Wed Jan 26 13:03:18 2011 for KMyMoney by  doxygen 1.5.6