LibOFX
|
00001 /*************************************************************************** 00002 ofx_proc_rs.h 00003 ------------------- 00004 copyright : (C) 2002 by Benoit Gr�goire 00005 email : benoitg@coeus.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 { 00035 public: 00036 string type; 00037 string tag_identifier; 00038 OfxGenericContainer *parentcontainer; 00039 LibofxContext *libofx_context; 00040 00041 OfxGenericContainer(LibofxContext *p_libofx_context); 00042 OfxGenericContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer); 00043 OfxGenericContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00044 00045 virtual ~OfxGenericContainer() {}; 00046 00053 virtual void add_attribute(const string identifier, const string value); 00059 virtual int gen_event(); 00060 00066 virtual int add_to_main_tree(); 00067 00069 OfxGenericContainer* getparent(); 00070 };//End class OfxGenericObject 00071 00076 class OfxDummyContainer: public OfxGenericContainer 00077 { 00078 public: 00079 OfxDummyContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00080 void add_attribute(const string identifier, const string value); 00081 }; 00082 00087 class OfxPushUpContainer: public OfxGenericContainer 00088 { 00089 public: 00090 00091 OfxPushUpContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00092 void add_attribute(const string identifier, const string value); 00093 }; 00094 00096 class OfxStatusContainer: public OfxGenericContainer 00097 { 00098 public: 00099 OfxStatusData data; 00100 00101 OfxStatusContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00102 ~OfxStatusContainer(); 00103 void add_attribute(const string identifier, const string value); 00104 }; 00105 00110 class OfxBalanceContainer: public OfxGenericContainer 00111 { 00112 public: 00113 /* Not yet complete see spec 1.6 p.63 */ 00114 //char name[OFX_BALANCE_NAME_LENGTH]; 00115 //char description[OFX_BALANCE_DESCRIPTION_LENGTH]; 00116 //enum BalanceType{DOLLAR, PERCENT, NUMBER} balance_type; 00117 double amount; 00118 int amount_valid; 00119 time_t date; 00120 int date_valid; 00121 00122 OfxBalanceContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00123 ~OfxBalanceContainer(); 00124 void add_attribute(const string identifier, const string value); 00125 }; 00126 00127 /*************************************************************************** 00128 * OfxStatementContainer * 00129 ***************************************************************************/ 00134 class OfxStatementContainer: public OfxGenericContainer 00135 { 00136 public: 00137 OfxStatementData data; 00138 00139 OfxStatementContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00140 ~OfxStatementContainer(); 00141 void add_attribute(const string identifier, const string value); 00142 virtual int add_to_main_tree(); 00143 virtual int gen_event(); 00144 void add_account(OfxAccountData * account_data); 00145 void add_balance(OfxBalanceContainer* ptr_balance_container); 00146 // void add_transaction(const OfxTransactionData transaction_data); 00147 00148 }; 00149 00150 /*************************************************************************** 00151 * OfxAccountContaine r * 00152 ***************************************************************************/ 00157 class OfxAccountContainer: public OfxGenericContainer 00158 { 00159 public: 00160 OfxAccountData data; 00161 00162 OfxAccountContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00163 ~OfxAccountContainer(); 00164 void add_attribute(const string identifier, const string value); 00165 int add_to_main_tree(); 00166 virtual int gen_event(); 00167 private: 00168 void gen_account_id(void); 00169 char bankid[OFX_BANKID_LENGTH]; 00170 char branchid[OFX_BRANCHID_LENGTH]; 00171 char acctid[OFX_ACCTID_LENGTH]; 00172 char acctkey[OFX_ACCTKEY_LENGTH]; 00173 char brokerid[OFX_BROKERID_LENGTH]; 00174 }; 00175 00176 /*************************************************************************** 00177 * OfxSecurityContainer * 00178 ***************************************************************************/ 00181 class OfxSecurityContainer: public OfxGenericContainer 00182 { 00183 public: 00184 OfxSecurityData data; 00185 00186 OfxSecurityContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00187 ~OfxSecurityContainer(); 00188 void add_attribute(const string identifier, const string value); 00189 virtual int gen_event(); 00190 virtual int add_to_main_tree(); 00191 private: 00192 OfxStatementContainer * parent_statement; 00193 }; 00194 00195 00196 /*************************************************************************** 00197 * OfxTransactionContainer * 00198 ***************************************************************************/ 00201 class OfxTransactionContainer: public OfxGenericContainer 00202 { 00203 public: 00204 OfxTransactionData data; 00205 00206 OfxTransactionContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00207 ~OfxTransactionContainer(); 00208 virtual void add_attribute(const string identifier, const string value); 00209 void add_account(OfxAccountData * account_data); 00210 00211 virtual int gen_event(); 00212 virtual int add_to_main_tree(); 00213 private: 00214 OfxStatementContainer * parent_statement; 00215 }; 00216 00221 class OfxBankTransactionContainer: public OfxTransactionContainer 00222 { 00223 public: 00224 OfxBankTransactionContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00225 void add_attribute(const string identifier, const string value); 00226 }; 00227 00232 class OfxInvestmentTransactionContainer: public OfxTransactionContainer 00233 { 00234 public: 00235 OfxInvestmentTransactionContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00236 00237 void add_attribute(const string identifier, const string value); 00238 }; 00239 00240 /*************************************************************************** 00241 * OfxMainContainer * 00242 ***************************************************************************/ 00247 class OfxMainContainer: public OfxGenericContainer 00248 { 00249 public: 00250 OfxMainContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier); 00251 ~OfxMainContainer(); 00252 int add_container(OfxGenericContainer * container); 00253 int add_container(OfxStatementContainer * container); 00254 int add_container(OfxAccountContainer * container); 00255 int add_container(OfxTransactionContainer * container); 00256 int add_container(OfxSecurityContainer * container); 00257 int gen_event(); 00258 OfxSecurityData * find_security(string unique_id); 00259 private: 00260 tree<OfxGenericContainer *> security_tree; 00261 tree<OfxGenericContainer *> account_tree; 00262 }; 00263 00264 00265 #endif