/*************************************************************************** imymoneyserialize.h - description ------------------- begin : Fri May 10 2002 copyright : (C) 2000-2002 by Michael Edwardes email : mte@users.sourceforge.net Javier Campos Morales Felix Rodriguez John C Thomas Baumgart Kevin Tambascio ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef IMYMONEYSERIALIZE_H #define IMYMONEYSERIALIZE_H // ---------------------------------------------------------------------------- // TQt Includes #include #include // ---------------------------------------------------------------------------- // Project Includes #include #include #include #include #include #include #include #include #include #include #include #include /** * @author Thomas Baumgart */ /** * This class represents the interface to serialize a MyMoneyStorage object */ class IMyMoneySerialize { public: IMyMoneySerialize(); virtual ~IMyMoneySerialize(); // general get functions virtual const MyMoneyPayee user(void) const = 0; virtual const TQDate creationDate(void) const = 0; virtual const TQDate lastModificationDate(void) const = 0; virtual unsigned int currentFixVersion(void) const = 0; virtual unsigned int fileFixVersion(void) const = 0; // general set functions virtual void setUser(const MyMoneyPayee& val) = 0; virtual void setCreationDate(const TQDate& val) = 0; virtual void setFileFixVersion(const unsigned int v) = 0; /** * This method is used to get a SQL reader for subsequent database access */ virtual TDESharedPtr connectToDatabase (const KURL& url) = 0; /** * This method is used when a database file is open, and the data is to * be saved in a different file or format. It will ensure that all data * from the database is available in memory to enable it to be written. */ virtual void fillStorage() = 0; /** * This method is used to set the last modification date of * the storage object. It also clears the dirty flag and should * therefor be called as last operation when loading from a * file. * * @param val TQDate of last modification */ virtual void setLastModificationDate(const TQDate& val) = 0; /** * This method returns a list of accounts inside the storage object. * * @param list reference to TQValueList receiving the account objects * * @note The standard accounts will not be returned */ virtual void accountList(TQValueList& list) const = 0; /** * This method returns a list of the institutions * inside a MyMoneyStorage object * * @return TQMap containing the institution information */ virtual const TQValueList institutionList(void) const = 0; /** * This method is used to pull a list of transactions from the file * global transaction pool. It returns all those transactions * that match the filter passed as argument. If the filter is empty, * the whole journal will be returned. * * @param list reference to TQValueList receiving * the set of transactions * @param filter MyMoneyTransactionFilter object with the match criteria */ virtual void transactionList(TQValueList& list, MyMoneyTransactionFilter& filter) const = 0; /** * This method returns whether a given transaction is already in memory, to avoid * reloading it from the database */ virtual bool isDuplicateTransaction(const TQString&) const = 0; /** * This method returns a list of the payees * inside a MyMoneyStorage object * * @return TQValueList containing the payee information */ virtual const TQValueList payeeList(void) const = 0; /** * This method returns a list of the scheduled transactions * inside a MyMoneyStorage object. In order to retrieve a complete * list of the transactions, all arguments should be used with their * default arguments. */ virtual const TQValueList scheduleList(const TQString& = TQString(), const MyMoneySchedule::typeE = MyMoneySchedule::TYPE_ANY, const MyMoneySchedule::occurenceE = MyMoneySchedule::OCCUR_ANY, const MyMoneySchedule::paymentTypeE = MyMoneySchedule::STYPE_ANY, const TQDate& = TQDate(), const TQDate& = TQDate(), const bool = false) const = 0; /** * This method returns a list of security objects that the engine has * knowledge of. */ virtual const TQValueList securityList(void) const = 0; /** * This method is used to return the standard liability account * @return MyMoneyAccount liability account(group) */ virtual const MyMoneyAccount liability(void) const = 0; /** * This method is used to return the standard asset account * @return MyMoneyAccount asset account(group) */ virtual const MyMoneyAccount asset(void) const = 0; /** * This method is used to return the standard expense account * @return MyMoneyAccount expense account(group) */ virtual const MyMoneyAccount expense(void) const = 0; /** * This method is used to return the standard income account * @return MyMoneyAccount income account(group) */ virtual const MyMoneyAccount income(void) const = 0; /** * This method is used to return the standard equity account * @return MyMoneyAccount equity account(group) */ virtual const MyMoneyAccount equity(void) const = 0; /** * This method is used to create a new account * * An exception will be thrown upon error conditions. * * @param account MyMoneyAccount filled with data */ virtual void addAccount(MyMoneyAccount& account) = 0; /** * This method is used to add one account as sub-ordinate to another * (parent) account. The objects that are passed will be modified * accordingly. * * An exception will be thrown upon error conditions. * * @param parent parent account the account should be added to * @param account the account to be added * * @deprecated This method is only provided as long as we provide * the version 0.4 binary reader. As soon as we deprecate * this compatability mode this method will disappear from * this interface! */ virtual void addAccount(MyMoneyAccount& parent, MyMoneyAccount& account) = 0; /** * This method is used to create a new payee * * An exception will be thrown upon error conditions * * @param payee MyMoneyPayee reference to payee information * * @deprecated This method is only provided as long as we provide * the version 0.4 binary reader. As soon as we deprecate * this compatability mode this method will disappear from * this interface! * */ virtual void addPayee(MyMoneyPayee& payee) = 0; /** * Adds an institution to the storage. A * respective institution-ID will be generated within this record. * The ID is stored as TQString in the object passed as argument. * * An exception will be thrown upon error conditions. * * @param institution The complete institution information in a * MyMoneyInstitution object * * @deprecated This method is only provided as long as we provide * the version 0.4 binary reader. As soon as we deprecate * this compatability mode this method will disappear from * this interface! */ virtual void addInstitution(MyMoneyInstitution& institution) = 0; /** * Adds a transaction to the file-global transaction pool. A respective * transaction-ID will be generated within this record. The ID is stored * as TQString with the object. * * An exception will be thrown upon error conditions. * * @param transaction reference to the transaction * @param skipAccountUpdate if set, the transaction lists of the accounts * referenced in the splits are not updated. This is used for * bulk loading a lot of transactions but not during normal operation. * Refreshing the account's transaction list can be done using * refreshAllAccountTransactionList(). * * @deprecated This method is only provided as long as we provide * the version 0.4 binary reader. As soon as we deprecate * this compatability mode this method will disappear from * this interface! */ virtual void addTransaction(MyMoneyTransaction& transaction, const bool skipAccountUpdate = false) = 0; virtual void loadAccounts(const TQMap& map) = 0; virtual void loadTransactions(const TQMap& map) = 0; virtual void loadInstitutions(const TQMap& map) = 0; virtual void loadPayees(const TQMap& map) = 0; virtual void loadSchedules(const TQMap& map) = 0; virtual void loadSecurities(const TQMap& map) = 0; virtual void loadCurrencies(const TQMap& map) = 0; virtual void loadReports( const TQMap& reports ) = 0; virtual void loadBudgets( const TQMap& budgets ) = 0; virtual void loadPrices(const MyMoneyPriceList& list) = 0; virtual unsigned long accountId(void) const = 0; virtual unsigned long transactionId(void) const = 0; virtual unsigned long payeeId(void) const = 0; virtual unsigned long institutionId(void) const = 0; virtual unsigned long scheduleId(void) const = 0; virtual unsigned long securityId(void) const = 0; virtual unsigned long reportId(void) const = 0; virtual unsigned long budgetId(void) const = 0; virtual void loadAccountId(const unsigned long id) = 0; virtual void loadTransactionId(const unsigned long id) = 0; virtual void loadPayeeId(const unsigned long id) = 0; virtual void loadInstitutionId(const unsigned long id) = 0; virtual void loadScheduleId(const unsigned long id) = 0; virtual void loadSecurityId(const unsigned long id) = 0; virtual void loadReportId(const unsigned long id) = 0; virtual void loadBudgetId(const unsigned long id) = 0; /** * This method is used to retrieve the whole set of key/value pairs * from the container. It is meant to be used for permanent storage * functionality. See MyMoneyKeyValueContainer::pairs() for details. * * @return TQMap containing all key/value pairs of * this container. */ virtual const TQMap pairs(void) const = 0; /** * This method is used to initially store a set of key/value pairs * in the container. It is meant to be used for loading functionality * from permanent storage. See MyMoneyKeyValueContainer::setPairs() * for details * * @param list const TQMap containing the set of * key/value pairs to be loaded into the container. * * @note All existing key/value pairs in the container will be deleted. */ virtual void setPairs(const TQMap& list) = 0; virtual const TQValueList scheduleListEx( int scheduleTypes, int scheduleOcurrences, int schedulePaymentTypes, TQDate startDate, const TQStringList& accounts=TQStringList()) const = 0; /** * This method is used to retrieve the list of all currencies * known to the engine. * * An exception will be thrown upon erronous situations. * * @return TQValueList of all MyMoneySecurity objects representing a currency. */ virtual const TQValueList currencyList(void) const = 0; /** * This method is used to retrieve the list of all reports * known to the engine. * * An exception will be thrown upon erronous situations. * * @return TQValueList of all MyMoneyReport objects. */ virtual const TQValueList reportList( void ) const = 0; /** * This method is used to retrieve the list of all budgets * known to the engine. * * An exception will be thrown upon erronous situations. * * @return TQValueList of all MyMoneyBudget objects. */ virtual const TQValueList budgetList( void ) const = 0; /** * This method adds a price entry to the price list. */ virtual void addPrice(const MyMoneyPrice& price) = 0; /** * This method returns a list of all prices. * * @return MyMoneyPriceList of all MyMoneyPrice objects. */ virtual const MyMoneyPriceList priceList(void) const = 0; /** * This method recalculates the balances of all accounts * based on the transactions stored in the engine. */ virtual void rebuildAccountBalances(void) = 0; }; #endif