LibOFX
ofx_containers.hh
Go to the documentation of this file.
1 /***************************************************************************
2  ofx_proc_rs.h
3  -------------------
4  copyright : (C) 2002 by Benoit Gr�goire
5  email : benoitg@coeus.ca
6 ***************************************************************************/
13 /***************************************************************************
14  * *
15  * This program is free software; you can redistribute it and/or modify *
16  * it under the terms of the GNU General Public License as published by *
17  * the Free Software Foundation; either version 2 of the License, or *
18  * (at your option) any later version. *
19  * *
20  ***************************************************************************/
21 #ifndef OFX_PROC_H
22 #define OFX_PROC_H
23 #include "libofx.h"
24 #include "tree.hh"
25 #include "context.hh"
26 
32 {
33 public:
34  std::string type;
35  std::string tag_identifier;
36  OfxGenericContainer *parentcontainer;
37  LibofxContext *libofx_context;
38 
39  OfxGenericContainer(LibofxContext *p_libofx_context);
40  OfxGenericContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer);
41  OfxGenericContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
42 
43  virtual ~OfxGenericContainer() {};
44 
51  virtual void add_attribute(const std::string identifier, const std::string value);
57  virtual int gen_event();
58 
64  virtual int add_to_main_tree();
65 
68 };//End class OfxGenericObject
69 
75 {
76 public:
77  OfxDummyContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
78  void add_attribute(const std::string identifier, const std::string value);
79 };
80 
86 {
87 public:
88  OfxInv401kContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
89  void add_attribute(const std::string identifier, const std::string value);
90 };
91 
97 {
98 public:
99 
100  OfxPushUpContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
101  void add_attribute(const std::string identifier, const std::string value);
102 };
103 
106 {
107 public:
108  OfxStatusData data;
109 
110  OfxStatusContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
112  void add_attribute(const std::string identifier, const std::string value);
113 };
114 
120 {
121 public:
122  /* Not yet complete see spec 1.6 p.63 */
123  //std::string name;
124  //std::string description;
125  //enum BalanceType{DOLLAR, PERCENT, NUMBER} balance_type;
126  double amount;
127  bool amount_valid;
128  time_t date;
130 
132  double margin_balance;
134 
136  double short_balance;
138 
140  double buying_power;
141  bool buying_power_valid;
142 
143  OfxBalanceContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
145  void add_attribute(const std::string identifier, const std::string value);
146 };
147 
148 /***************************************************************************
149  * OfxStatementContainer *
150  ***************************************************************************/
156 {
157 public:
158  OfxStatementData data;
159 
160  OfxStatementContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
162  void add_attribute(const std::string identifier, const std::string value);
163  virtual int add_to_main_tree();
164  virtual int gen_event();
165  void add_account(OfxAccountData * account_data);
166  void add_balance(OfxBalanceContainer* ptr_balance_container);
167 // void add_transaction(const OfxTransactionData transaction_data);
168 
169 };
170 
171 /***************************************************************************
172  * OfxAccountContainer *
173  ***************************************************************************/
179 {
180 public:
181  OfxAccountData data;
182 
183  OfxAccountContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
185  void add_attribute(const std::string identifier, const std::string value);
186  int add_to_main_tree();
187  virtual int gen_event();
188 private:
189  void gen_account_id(void);
190  std::string m_bankid;
191  std::string m_branchid;
192  std::string m_acctid;
193  std::string m_acctkey;
194  std::string m_brokerid;
195 };
196 
197 /***************************************************************************
198  * OfxSecurityContainer *
199  ***************************************************************************/
203 {
204 public:
205  OfxSecurityData data;
206 
207  OfxSecurityContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
209  void add_attribute(const std::string identifier, const std::string value);
210  virtual int gen_event();
211  virtual int add_to_main_tree();
212 private:
213  OfxStatementContainer * parent_statement;
214 };
215 
216 
217 /***************************************************************************
218  * OfxPositionContainer *
219  ***************************************************************************/
223 {
224 public:
225  OfxPositionData data;
226 
227  OfxPositionContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
229  void add_attribute(const std::string identifier, const std::string value);
230  void add_account(OfxAccountData * account_data);
231  virtual int gen_event();
232  virtual int add_to_main_tree();
233 private:
234  OfxStatementContainer * parent_statement;
235 };
236 
237 
238 /***************************************************************************
239  * OfxTransactionContainer *
240  ***************************************************************************/
244 {
245 public:
246  OfxTransactionData data;
247 
248  OfxTransactionContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
250  virtual void add_attribute(const std::string identifier, const std::string value);
251  void add_account(OfxAccountData * account_data);
252 
253  virtual int gen_event();
254  virtual int add_to_main_tree();
255 private:
256  OfxStatementContainer * parent_statement;
257 };
258 
264 {
265 public:
266  OfxBankTransactionContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
267  void add_attribute(const std::string identifier, const std::string value);
268 };
269 
275 {
276 public:
277  OfxInvestmentTransactionContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
278 
279  void add_attribute(const std::string identifier, const std::string value);
280 };
281 
282 /***************************************************************************
283  * OfxMainContainer *
284  ***************************************************************************/
290 {
291 public:
292  OfxMainContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, std::string para_tag_identifier);
293  ~OfxMainContainer();
294  int add_container(OfxGenericContainer * container);
295  int add_container(OfxStatementContainer * container);
296  int add_container(OfxAccountContainer * container);
297  int add_container(OfxTransactionContainer * container);
298  int add_container(OfxSecurityContainer * container);
299  int add_container(OfxPositionContainer * container);
300  int gen_event();
301  OfxSecurityData * find_security(std::string unique_id);
302 private:
303  tree<OfxGenericContainer *> security_tree;
304  tree<OfxGenericContainer *> account_tree;
305 };
306 
307 
308 #endif
OfxGenericContainer::type
std::string type
Definition: ofx_containers.hh:41
OfxBalanceContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_containers_misc.cpp:167
OfxBalanceContainer::date_valid
bool date_valid
Definition: ofx_containers.hh:129
OfxAccountContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_container_account.cpp:67
OfxDummyContainer
A container to hold OFX SGML elements that LibOFX knows nothing about.
Definition: ofx_containers.hh:74
OfxSecurityData
An abstraction of a security, such as a stock, mutual fund, etc.
Definition: inc/libofx.h:369
OfxPositionContainer::add_to_main_tree
virtual int add_to_main_tree()
Add this container to the main tree.
Definition: ofx_container_position.cpp:181
OfxTransactionContainer::gen_event
virtual int gen_event()
Generate libofx.h events.
Definition: ofx_container_transaction.cpp:68
OfxStatusContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_containers_misc.cpp:94
OfxTransactionData
An abstraction of a transaction in an account.
Definition: inc/libofx.h:693
OfxPositionContainer::gen_event
virtual int gen_event()
Generate libofx.h events.
Definition: ofx_container_position.cpp:158
OfxTransactionContainer::add_to_main_tree
virtual int add_to_main_tree()
Add this container to the main tree.
Definition: ofx_container_transaction.cpp:82
OfxAccountData
An abstraction of an account.
Definition: inc/libofx.h:287
OfxMainContainer
The root container. Created by the <OFX> OFX element or by the export functions.
Definition: ofx_containers.hh:289
OfxBalanceContainer::amount
double amount
Definition: ofx_containers.hh:126
OfxStatusContainer
Represents the <STATUS> OFX SGML entity.
Definition: ofx_containers.hh:105
OfxPushUpContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_containers_misc.cpp:62
OfxGenericContainer::gen_event
virtual int gen_event()
Generate libofx.h events.
Definition: ofx_container_generic.cpp:68
OfxInvestmentTransactionContainer
Represents a bank or credid card transaction.
Definition: ofx_containers.hh:274
OfxMainContainer::gen_event
int gen_event()
Generate libofx.h events.
Definition: ofx_container_main.cpp:183
OfxStatusData
An abstraction of an OFX STATUS element.
Definition: inc/libofx.h:225
OfxAccountContainer
Represents a bank account or a credit card account.
Definition: ofx_containers.hh:178
OfxSecurityContainer::add_to_main_tree
virtual int add_to_main_tree()
Add this container to the main tree.
Definition: ofx_container_security.cpp:348
OfxBankTransactionContainer
Represents a bank or credid card transaction.
Definition: ofx_containers.hh:263
OfxAccountContainer::add_to_main_tree
int add_to_main_tree()
Add this container to the main tree.
Definition: ofx_container_account.cpp:135
OfxStatementData
An abstraction of an account statement.
Definition: inc/libofx.h:1068
OfxSecurityContainer::gen_event
virtual int gen_event()
Generate libofx.h events.
Definition: ofx_container_security.cpp:342
OfxSecurityContainer
Represents a security, such as a stock or bond.
Definition: ofx_containers.hh:202
OfxGenericContainer
A generic container for an OFX SGML element. Every container inherits from OfxGenericContainer.
Definition: ofx_containers.hh:31
OfxInv401kContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_containers_misc.cpp:211
OfxGenericContainer::add_attribute
virtual void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_container_generic.cpp:57
LibofxContext
Definition: context.hh:23
OfxBalanceContainer::short_balance_valid
bool short_balance_valid
Definition: ofx_containers.hh:137
OfxBankTransactionContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_container_transaction.cpp:176
OfxInv401kContainer
A container to hold OFX SGML elements for <INV401K>
Definition: ofx_containers.hh:85
OfxAccountContainer::gen_event
virtual int gen_event()
Generate libofx.h events.
Definition: ofx_container_account.cpp:129
OfxStatementContainer::add_to_main_tree
virtual int add_to_main_tree()
Add this container to the main tree.
Definition: ofx_container_statement.cpp:116
OfxBalanceContainer
Represents the <BALANCE>, <INVBAL> or <INV401KBAL> OFX SGML entity.
Definition: ofx_containers.hh:119
OfxPositionContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_container_position.cpp:45
OfxStatementContainer::gen_event
virtual int gen_event()
Generate libofx.h events.
Definition: ofx_container_statement.cpp:128
OfxGenericContainer::getparent
OfxGenericContainer * getparent()
Returns the parent container object (the one representing the containing OFX SGML element)
Definition: ofx_container_generic.cpp:63
OfxInvestmentTransactionContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_container_transaction.cpp:390
OfxStatementContainer
Represents a statement for either a bank account or a credit card account.
Definition: ofx_containers.hh:155
OfxSecurityContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_container_security.cpp:58
OfxDummyContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_containers_misc.cpp:47
OfxTransactionContainer
Represents a generic transaction.
Definition: ofx_containers.hh:243
OfxBalanceContainer::margin_balance_valid
bool margin_balance_valid
Definition: ofx_containers.hh:133
OfxBalanceContainer::date
time_t date
Definition: ofx_containers.hh:128
OfxPushUpContainer
A container to hold a OFX SGML element for which you want the parent to process it's data elements.
Definition: ofx_containers.hh:96
OfxPositionContainer
Represents an investment position, such as a stock or bond.
Definition: ofx_containers.hh:222
tree< OfxGenericContainer * >
OfxGenericContainer::tag_identifier
std::string tag_identifier
Definition: ofx_containers.hh:42
OfxTransactionContainer::add_attribute
virtual void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_container_transaction.cpp:96
OfxGenericContainer::add_to_main_tree
virtual int add_to_main_tree()
Add this container to the main tree.
Definition: ofx_container_generic.cpp:74
OfxPositionData
An abstraction of a security position held in an account.
Definition: inc/libofx.h:1172
OfxStatementContainer::add_attribute
void add_attribute(const std::string identifier, const std::string value)
Add data to a container object.
Definition: ofx_container_statement.cpp:50