You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kmymoney/kmymoney2/mymoney/storage/imymoneyserialize.h

375 lines
14 KiB

/***************************************************************************
imymoneyserialize.h - description
-------------------
begin : Fri May 10 2002
copyright : (C) 2000-2002 by Michael Edwardes
email : mte@users.sourceforge.net
Javier Campos Morales <javi_c@users.sourceforge.net>
Felix Rodriguez <frodriguez@users.sourceforge.net>
John C <thetacoturtle@users.sourceforge.net>
Thomas Baumgart <ipwizard@users.sourceforge.net>
Kevin Tambascio <ktambascio@users.sourceforge.net>
***************************************************************************/
/***************************************************************************
* *
* 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
// ----------------------------------------------------------------------------
// QT Includes
#include <tqstring.h>
#include <tqvaluelist.h>
// ----------------------------------------------------------------------------
// Project Includes
#include <kmymoney/mymoneyutils.h>
#include <kmymoney/mymoneyinstitution.h>
#include <kmymoney/mymoneyaccount.h>
#include <kmymoney/mymoneytransaction.h>
#include <kmymoney/mymoneypayee.h>
#include <kmymoney/mymoneyscheduled.h>
#include <kmymoney/mymoneytransactionfilter.h>
#include <kmymoney/mymoneysecurity.h>
#include <kmymoney/mymoneyprice.h>
#include <kmymoney/mymoneyreport.h>
#include <kmymoney/mymoneybudget.h>
#include "mymoneystoragesql.h"
/**
* @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 KSharedPtr <MyMoneyStorageSql> 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<MyMoneyAccount>& list) const = 0;
/**
* This method returns a list of the institutions
* inside a MyMoneyStorage object
*
* @return TQMap containing the institution information
*/
virtual const TQValueList<MyMoneyInstitution> 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<MyMoneyTransaction> receiving
* the set of transactions
* @param filter MyMoneyTransactionFilter object with the match criteria
*/
virtual void transactionList(TQValueList<MyMoneyTransaction>& 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<MyMoneyPayee> containing the payee information
*/
virtual const TQValueList<MyMoneyPayee> 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<MyMoneySchedule> 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<MyMoneySecurity> 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<TQString, MyMoneyAccount>& map) = 0;
virtual void loadTransactions(const TQMap<TQString, MyMoneyTransaction>& map) = 0;
virtual void loadInstitutions(const TQMap<TQString, MyMoneyInstitution>& map) = 0;
virtual void loadPayees(const TQMap<TQString, MyMoneyPayee>& map) = 0;
virtual void loadSchedules(const TQMap<TQString, MyMoneySchedule>& map) = 0;
virtual void loadSecurities(const TQMap<TQString, MyMoneySecurity>& map) = 0;
virtual void loadCurrencies(const TQMap<TQString, MyMoneySecurity>& map) = 0;
virtual void loadReports( const TQMap<TQString, MyMoneyReport>& reports ) = 0;
virtual void loadBudgets( const TQMap<TQString, MyMoneyBudget>& 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<TQString, TQString> containing all key/value pairs of
* this container.
*/
virtual const TQMap<TQString, TQString> 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<TQString, TQString> 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<TQString, TQString>& list) = 0;
virtual const TQValueList<MyMoneySchedule> 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<MyMoneySecurity> 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<MyMoneyReport> 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<MyMoneyBudget> 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