00001
00002
00003
00004
00005
00006
00013
00014
00015
00016
00017
00018
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 };
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
00109
00110
00111
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
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
00141
00142 };
00143
00144
00145
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
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
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
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