mymoneyseqaccessmgr.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           mymoneyseqaccessmgr.h  -  description
00003                              -------------------
00004     begin                : Sun May 5 2002
00005     copyright            : (C) 2000-2002 by Michael Edwardes
00006     email                : mte@users.sourceforge.net
00007                            Javier Campos Morales <javi_c@users.sourceforge.net>
00008                            Felix Rodriguez <frodriguez@users.sourceforge.net>
00009                            John C <thetacoturtle@users.sourceforge.net>
00010                            Thomas Baumgart <ipwizard@users.sourceforge.net>
00011                            Kevin Tambascio <ktambascio@users.sourceforge.net>
00012  ***************************************************************************/
00013 
00014 /***************************************************************************
00015  *                                                                         *
00016  *   This program is free software; you can redistribute it and/or modify  *
00017  *   it under the terms of the GNU General Public License as published by  *
00018  *   the Free Software Foundation; either version 2 of the License, or     *
00019  *   (at your option) any later version.                                   *
00020  *                                                                         *
00021  ***************************************************************************/
00022 
00023 #ifndef MYMONEYSEQACCESSMGR_H
00024 #define MYMONEYSEQACCESSMGR_H
00025 
00026 // ----------------------------------------------------------------------------
00027 // QT Includes
00028 
00029 // ----------------------------------------------------------------------------
00030 // Project Includes
00031 
00032 #include "imymoneystorage.h"
00033 #include "imymoneyserialize.h"
00034 #include "mymoneymap.h"
00035 
00055 class MyMoneyBalanceCacheItem {
00056 public:
00057   MyMoneyBalanceCacheItem() { valid = false; };
00058   MyMoneyBalanceCacheItem(const MyMoneyMoney& val) { balance = val; valid = true; };
00059 
00060   bool operator == (const MyMoneyBalanceCacheItem& right) const;
00061   bool          valid;
00062   MyMoneyMoney  balance;
00063 };
00064 
00078 class MyMoneySeqAccessMgr : public IMyMoneyStorage, public IMyMoneySerialize,
00079                             public MyMoneyKeyValueContainer
00080 {
00081 public:
00082 
00083   MyMoneySeqAccessMgr();
00084   ~MyMoneySeqAccessMgr();
00085 
00086   // general get functions
00087   const MyMoneyPayee user(void) const { return m_user; };
00088   const QDate creationDate(void) const { return m_creationDate; };
00089   const QDate lastModificationDate(void) const { return m_lastModificationDate; };
00090   unsigned int currentFixVersion(void) const { return m_currentFixVersion; };
00091   unsigned int fileFixVersion(void) const { return m_fileFixVersion; };
00092 
00093 
00094   // general set functions
00095   void setUser(const MyMoneyPayee& user) { m_user = user;
00096         touch(); };
00097   void setCreationDate(const QDate& val) { m_creationDate = val; touch(); };
00098   void setLastModificationDate(const QDate& val) { m_lastModificationDate = val; m_dirty = false; };
00099   void setFileFixVersion(const unsigned int v) { m_fileFixVersion = v; };
00103   KSharedPtr <MyMoneyStorageSql> connectToDatabase (const KURL& url);
00109   virtual void fillStorage() {  };
00110 
00116   MyMoneySeqAccessMgr const * duplicate(void);
00117 
00125   const MyMoneyAccount account(const QString& id) const;
00126 
00134   bool isStandardAccount(const QString& id) const;
00135 
00153   void setAccountName(const QString& id, const QString& name);
00154 
00162   void addAccount(MyMoneyAccount& account);
00163 
00171   void addPayee(MyMoneyPayee& payee);
00172 
00181   const MyMoneyPayee payee(const QString& id) const;
00182 
00192   const MyMoneyPayee payeeByName(const QString& payee) const;
00193 
00201   void modifyPayee(const MyMoneyPayee& payee);
00202 
00210   void removePayee(const MyMoneyPayee& payee);
00211 
00218   const QValueList<MyMoneyPayee> payeeList(void) const;
00219 
00228   void addAccount(MyMoneyAccount& parent, MyMoneyAccount& account);
00229 
00239   void addInstitution(MyMoneyInstitution& institution);
00240 
00252   void addTransaction(MyMoneyTransaction& transaction, const bool skipAccountUpdate = false);
00253 
00266   void modifyAccount(const MyMoneyAccount& account, const bool skipCheck = false);
00267 
00276   void modifyInstitution(const MyMoneyInstitution& institution);
00277 
00286   void modifyTransaction(const MyMoneyTransaction& transaction);
00287 
00296   void reparentAccount(MyMoneyAccount &account, MyMoneyAccount& parent);
00297 
00304   void removeTransaction(const MyMoneyTransaction& transaction);
00305 
00315   void removeAccount(const MyMoneyAccount& account);
00316 
00324   void removeInstitution(const MyMoneyInstitution& institution);
00325 
00334   const MyMoneyTransaction transaction(const QString& id) const;
00335 
00344   const MyMoneyTransaction transaction(const QString& account, const int idx) const;
00345 
00353   bool hasActiveSplits(const QString& id) const;
00354 
00366   const MyMoneyMoney balance(const QString& id, const QDate& date = QDate()) const;
00367 
00379   const MyMoneyMoney totalBalance(const QString& id, const QDate& date = QDate()) const;
00380 
00388   const MyMoneyInstitution institution(const QString& id) const;
00389 
00396   bool dirty(void) const { return m_dirty; }
00397 
00404   void setDirty(void) { m_dirty = true; };
00405 
00412   const QValueList<MyMoneyInstitution> institutionList(void) const;
00413 
00421   void accountList(QValueList<MyMoneyAccount>& list) const;
00422 
00439   void transactionList(QValueList<MyMoneyTransaction>& list, MyMoneyTransactionFilter& filter) const;
00440 
00457   void transactionList(QValueList< QPair<MyMoneyTransaction, MyMoneySplit> >& list, MyMoneyTransactionFilter& filter) const;
00458 
00462   const QValueList<MyMoneyTransaction> transactionList(MyMoneyTransactionFilter& filter) const;
00463 
00468   bool isDuplicateTransaction(const QString& id) const { return m_transactionKeys.contains(id); }
00469 
00481   unsigned int transactionCount(const QString& account = QString()) const;
00482 
00483   const QMap<QString, unsigned long> transactionCountMap(void) const;
00484 
00491   unsigned int institutionCount(void) const;
00492 
00499   unsigned int accountCount(void) const;
00500 
00505   const MyMoneyAccount liability(void) const { return account(STD_ACC_LIABILITY); };
00506 
00511   const MyMoneyAccount asset(void) const { return account(STD_ACC_ASSET); };
00512 
00517   const MyMoneyAccount expense(void) const { return account(STD_ACC_EXPENSE); };
00518 
00523   const MyMoneyAccount income(void) const { return account(STD_ACC_INCOME); };
00524 
00529   const MyMoneyAccount equity(void) const { return account(STD_ACC_EQUITY); };
00530 
00531   virtual void loadAccounts(const QMap<QString, MyMoneyAccount>& acc);
00532   virtual void loadTransactions(const QMap<QString, MyMoneyTransaction>& map);
00533   virtual void loadInstitutions(const QMap<QString, MyMoneyInstitution>& map);
00534   virtual void loadPayees(const QMap<QString, MyMoneyPayee>& map);
00535   virtual void loadSchedules(const QMap<QString, MyMoneySchedule>& map);
00536   virtual void loadSecurities(const QMap<QString, MyMoneySecurity>& map);
00537   virtual void loadCurrencies(const QMap<QString, MyMoneySecurity>& map);
00538   virtual void loadPrices(const MyMoneyPriceList& list);
00539 
00540   virtual void loadAccountId(const unsigned long id);
00541   virtual void loadTransactionId(const unsigned long id);
00542   virtual void loadPayeeId(const unsigned long id);
00543   virtual void loadInstitutionId(const unsigned long id);
00544   virtual void loadScheduleId(const unsigned long id);
00545   virtual void loadSecurityId(const unsigned long id);
00546   virtual void loadReportId(const unsigned long id);
00547   virtual void loadBudgetId(const unsigned long id);
00548 
00549   virtual unsigned long accountId(void) const { return m_nextAccountID; };
00550   virtual unsigned long transactionId(void) const { return m_nextTransactionID; };
00551   virtual unsigned long payeeId(void) const { return m_nextPayeeID; };
00552   virtual unsigned long institutionId(void) const { return m_nextInstitutionID; };
00553   virtual unsigned long scheduleId(void) const { return m_nextScheduleID; };
00554   virtual unsigned long securityId(void) const { return m_nextSecurityID; };
00555   virtual unsigned long reportId(void) const { return m_nextReportID; };
00556   virtual unsigned long budgetId(void) const { return m_nextBudgetID; };
00557 
00558 
00566   const QString value(const QString& key) const;
00567 
00575   void setValue(const QString& key, const QString& val);
00576 
00584   void deletePair(const QString& key);
00585 
00586   // documented in IMyMoneySerialize base class
00587   const QMap<QString, QString> pairs(void) const;
00588 
00589   // documented in IMyMoneySerialize base class
00590   void setPairs(const QMap<QString, QString>& list);
00591 
00602   void addSchedule(MyMoneySchedule& sched);
00603 
00612   void modifySchedule(const MyMoneySchedule& sched);
00613 
00622   void removeSchedule(const MyMoneySchedule& sched);
00623 
00633   const MyMoneySchedule schedule(const QString& id) const;
00634 
00644   virtual void addSecurity(MyMoneySecurity& security);
00645 
00654   void modifySecurity(const MyMoneySecurity& security);
00655 
00664   void removeSecurity(const MyMoneySecurity& security);
00665 
00675   const MyMoneySecurity security(const QString& id) const;
00676 
00677 
00682   const QValueList<MyMoneySecurity> securityList(void) const;
00683 
00693   void addCurrency(const MyMoneySecurity& currency);
00694 
00703   void modifyCurrency(const MyMoneySecurity& currency);
00704 
00713   void removeCurrency(const MyMoneySecurity& currency);
00714 
00724   const MyMoneySecurity currency(const QString& id) const;
00725 
00734   const QValueList<MyMoneySecurity> currencyList(void) const;
00735 
00762   const QValueList<MyMoneySchedule> scheduleList(const QString& accountId = QString(),
00763                                      const MyMoneySchedule::typeE type = MyMoneySchedule::TYPE_ANY,
00764                                      const MyMoneySchedule::occurenceE occurence = MyMoneySchedule::OCCUR_ANY,
00765                                      const MyMoneySchedule::paymentTypeE paymentType = MyMoneySchedule::STYPE_ANY,
00766                                      const QDate& startDate = QDate(),
00767                                      const QDate& endDate = QDate(),
00768                                      const bool overdue = false) const;
00769 
00770   const QValueList<MyMoneySchedule> scheduleListEx( int scheduleTypes,
00771                                               int scheduleOcurrences,
00772                                               int schedulePaymentTypes,
00773                                               QDate startDate,
00774                                               const QStringList& accounts=QStringList()) const;
00775 
00784   const QValueList<MyMoneyReport> reportList( void ) const;
00785 
00796   void addReport( MyMoneyReport& report );
00797 
00806   void loadReports( const QMap<QString, MyMoneyReport>& reports );
00807 
00816   void modifyReport( const MyMoneyReport& report );
00817 
00824   unsigned countReports(void) const;
00825 
00835   const MyMoneyReport report( const QString& id ) const;
00836 
00845   void removeReport(const MyMoneyReport& report);
00846 
00855   const QValueList<MyMoneyBudget> budgetList( void ) const;
00856 
00867   void addBudget( MyMoneyBudget& budget );
00868 
00877   void loadBudgets(const QMap<QString, MyMoneyBudget>& budgets);
00878 
00888   const MyMoneyBudget budgetByName(const QString& budget) const;
00889 
00898   void modifyBudget( const MyMoneyBudget& budget );
00899 
00906   unsigned countBudgets(void) const;
00907 
00917   MyMoneyBudget budget( const QString& id ) const;
00918 
00927   void removeBudget(const MyMoneyBudget& budget);
00928 
00929 
00933   void addPrice(const MyMoneyPrice& price);
00934 
00938   void removePrice(const MyMoneyPrice& price);
00939 
00944   const MyMoneyPrice price(const QString& fromId, const QString& toId, const QDate& date, const bool exactDate) const;
00945 
00949   const MyMoneyPriceList priceList(void) const;
00950 
00954   void clearCache(void);
00955 
00967   bool isReferenced(const MyMoneyObject& obj, const MyMoneyFileBitArray& skipCheck = MyMoneyFileBitArray()) const;
00968 
00973   void rebuildAccountBalances(void);
00974 
00975   virtual void startTransaction(void);
00976   virtual bool commitTransaction(void);
00977   virtual void rollbackTransaction(void);
00978 
00979 protected:
00980   void removeReferences(const QString& id);
00981 
00982 private:
00983 
00984   static const int INSTITUTION_ID_SIZE = 6;
00985   static const int ACCOUNT_ID_SIZE = 6;
00986   static const int TRANSACTION_ID_SIZE = 18;
00987   static const int PAYEE_ID_SIZE = 6;
00988   static const int SCHEDULE_ID_SIZE = 6;
00989   static const int SECURITY_ID_SIZE = 6;
00990   static const int REPORT_ID_SIZE = 6;
00991   static const int BUDGET_ID_SIZE = 6;
00992 
00997   void touch(void);
00998 
01005   void invalidateBalanceCache(const QString& id);
01006 
01011   MyMoneyPayee m_user;
01012 
01018   unsigned long m_nextInstitutionID;
01019 
01025   unsigned long m_nextAccountID;
01026 
01032   unsigned long m_nextTransactionID;
01033 
01039   unsigned long m_nextPayeeID;
01040 
01046   unsigned long m_nextScheduleID;
01047 
01053   unsigned long m_nextSecurityID;
01054 
01055   unsigned long m_nextReportID;
01056 
01062   unsigned long m_nextBudgetID;
01063 
01068   MyMoneyMap<QString, MyMoneyInstitution> m_institutionList;
01069 
01074   MyMoneyMap<QString, MyMoneyAccount> m_accountList;
01075 
01080   mutable QMap<QString, MyMoneyBalanceCacheItem> m_balanceCache;
01081 
01087   mutable QDate          m_balanceCacheDate;
01088 
01094   MyMoneyMap<QString, MyMoneyTransaction> m_transactionList;
01095 
01101   MyMoneyMap<QString, QString> m_transactionKeys;
01102 
01106   MyMoneyMap<QString, MyMoneyPayee> m_payeeList;
01107 
01111   MyMoneyMap<QString, MyMoneySchedule> m_scheduleList;
01112 
01120   MyMoneyMap<QString, MyMoneySecurity> m_securitiesList;
01121 
01125   MyMoneyMap<QString, MyMoneySecurity> m_currencyList;
01126 
01127   MyMoneyMap<QString, MyMoneyReport> m_reportList;
01128 
01132   MyMoneyMap<QString, MyMoneyBudget> m_budgetList;
01133 
01134   MyMoneyMap<MyMoneySecurityPair, MyMoneyPriceEntries> m_priceList;
01135 
01139   bool  m_dirty;
01140 
01146   QDate m_creationDate;
01147 
01152   QDate m_lastModificationDate;
01153 
01158   unsigned int m_currentFixVersion;
01163   unsigned int m_fileFixVersion;
01168   QString nextInstitutionID(void);
01169 
01174   QString nextAccountID(void);
01175 
01180   QString nextTransactionID(void);
01181 
01186   QString nextPayeeID(void);
01187 
01192   QString nextScheduleID(void);
01193 
01198   QString nextSecurityID(void);
01199 
01200   QString nextReportID(void);
01201 
01206   QString nextBudgetID(void);
01207 
01208 
01219   void reparentAccount(MyMoneyAccount &account, MyMoneyAccount& parent, const bool sendNotification);
01223   void close(void) {}
01224 
01230   bool m_transactionListFull;
01231 };
01232 #endif

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