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