ofx_containers.hh

Go to the documentation of this file.
00001 /***************************************************************************
00002                           ofx_proc_rs.h 
00003                              -------------------
00004     copyright            : (C) 2002 by Benoit Grégoire
00005     email                : bock@step.polymtl.ca
00006 ***************************************************************************/
00013 /***************************************************************************
00014  *                                                                         *
00015  *   This program is free software; you can redistribute it and/or modify  *
00016  *   it under the terms of the GNU General Public License as published by  *
00017  *   the Free Software Foundation; either version 2 of the License, or     *
00018  *   (at your option) any later version.                                   *
00019  *                                                                         *
00020  ***************************************************************************/
00021 #ifndef OFX_PROC_H
00022 #define OFX_PROC_H
00023 #include "libofx.h"
00024 #include "tree.hh"
00025 #include "context.hh"
00026 
00027 using namespace std;
00028 
00033 class OfxGenericContainer {
00034  public:
00035   string type;
00036   string tag_identifier; 
00037   OfxGenericContainer *parentcontainer;
00038   LibofxContext *libofx_context;
00039 
00040   OfxGenericContainer(LibofxContext *p_libofx_context);
00041   OfxGenericContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer);
00042   OfxGenericContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00043 
00044   virtual ~OfxGenericContainer(){};
00045   
00052   virtual void add_attribute(const string identifier, const string value);
00058   virtual int gen_event();
00059 
00065   virtual int add_to_main_tree();
00066 
00068     OfxGenericContainer* getparent();
00069 };//End class OfxGenericObject
00070 
00075 class OfxDummyContainer:public OfxGenericContainer {
00076  public:
00077   OfxDummyContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00078   void add_attribute(const string identifier, const string value);
00079 };
00080 
00085 class OfxPushUpContainer:public OfxGenericContainer {
00086  public:
00087   
00088   OfxPushUpContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00089   void add_attribute(const string identifier, const string value);
00090 };
00091 
00093 class OfxStatusContainer:public OfxGenericContainer {
00094  public:
00095   OfxStatusData data;
00096   
00097   OfxStatusContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00098   ~OfxStatusContainer();
00099   void add_attribute(const string identifier, const string value);
00100 };
00101 
00106 class OfxBalanceContainer:public OfxGenericContainer {
00107  public:
00108   /* Not yet complete see spec 1.6 p.63 */
00109   //char name[OFX_BALANCE_NAME_LENGTH];
00110   //char description[OFX_BALANCE_DESCRIPTION_LENGTH];
00111   //enum BalanceType{DOLLAR, PERCENT, NUMBER} balance_type;
00112   double amount; 
00113   int amount_valid;
00114   time_t date; 
00115   int date_valid;
00116   
00117   OfxBalanceContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00118   ~OfxBalanceContainer();
00119   void add_attribute(const string identifier, const string value);
00120 };
00121 
00122 /***************************************************************************
00123  *                          OfxStatementContainer                          *
00124  ***************************************************************************/
00129 class OfxStatementContainer:public OfxGenericContainer {
00130  public:
00131   OfxStatementData data;
00132   
00133   OfxStatementContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00134   ~OfxStatementContainer();
00135   void add_attribute(const string identifier, const string value);
00136   virtual int add_to_main_tree();
00137   virtual int gen_event();
00138   void add_account(OfxAccountData * account_data);
00139   void add_balance(OfxBalanceContainer* ptr_balance_container);
00140 //  void add_transaction(const OfxTransactionData transaction_data);
00141 
00142 };
00143 
00144 /***************************************************************************
00145  *                           OfxAccountContaine r                          *
00146  ***************************************************************************/
00151 class OfxAccountContainer:public OfxGenericContainer {
00152  public:
00153   OfxAccountData data;
00154   
00155   OfxAccountContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00156   ~OfxAccountContainer();
00157   void add_attribute(const string identifier, const string value);
00158   int add_to_main_tree();
00159   virtual int gen_event();
00160  private:
00161   void gen_account_id(void);
00162   char bankid[OFX_BANKID_LENGTH];
00163   char branchid[OFX_BRANCHID_LENGTH];
00164   char acctid[OFX_ACCTID_LENGTH];
00165   char acctkey[OFX_ACCTKEY_LENGTH];
00166   char brokerid[OFX_BROKERID_LENGTH];
00167 };
00168 
00169 /***************************************************************************
00170  *                           OfxSecurityContainer                          *
00171  ***************************************************************************/
00174 class OfxSecurityContainer:public OfxGenericContainer {
00175  public:
00176   OfxSecurityData data;  
00177 
00178   OfxSecurityContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00179   ~OfxSecurityContainer();
00180   void add_attribute(const string identifier, const string value);
00181   virtual int gen_event();
00182   virtual int add_to_main_tree();
00183  private:
00184   OfxStatementContainer * parent_statement;
00185 };
00186 
00187 
00188 /***************************************************************************
00189  *                        OfxTransactionContainer                          *
00190  ***************************************************************************/
00193 class OfxTransactionContainer:public OfxGenericContainer {
00194  public:
00195   OfxTransactionData data;  
00196 
00197   OfxTransactionContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00198   ~OfxTransactionContainer();
00199   virtual void add_attribute(const string identifier, const string value);
00200   void add_account(OfxAccountData * account_data);
00201 
00202   virtual int gen_event();
00203   virtual int add_to_main_tree();
00204  private:
00205   OfxStatementContainer * parent_statement;
00206 };
00207 
00212 class OfxBankTransactionContainer:public OfxTransactionContainer {
00213  public:
00214   OfxBankTransactionContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00215   void add_attribute(const string identifier, const string value);
00216 };
00217 
00222 class OfxInvestmentTransactionContainer:public OfxTransactionContainer {
00223  public:
00224   OfxInvestmentTransactionContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00225 
00226   void add_attribute(const string identifier, const string value);
00227 };
00228 
00229 /***************************************************************************
00230  *                             OfxMainContainer                            *
00231  ***************************************************************************/
00236 class OfxMainContainer:public OfxGenericContainer {
00237 public:
00238   OfxMainContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier);
00239   ~OfxMainContainer();
00240   int add_container(OfxGenericContainer * container);
00241   int add_container(OfxStatementContainer * container);
00242   int add_container(OfxAccountContainer * container);
00243   int add_container(OfxTransactionContainer * container);
00244   int add_container(OfxSecurityContainer * container);
00245   int gen_event();
00246   OfxSecurityData * find_security(string unique_id);
00247 private:
00248   tree<OfxGenericContainer *> security_tree;
00249   tree<OfxGenericContainer *> account_tree;
00250 };
00251 
00252 
00253 #endif

Generated on Mon Feb 9 21:21:59 2009 for LibOFX by  doxygen 1.5.0