00001
00002
00003
00004
00005
00006
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifdef HAVE_CONFIG_H
00021 #include <config.h>
00022 #endif
00023
00024 #include <string>
00025 #include "messages.hh"
00026 #include "libofx.h"
00027 #include "ofx_containers.hh"
00028 #include "ofx_utilities.hh"
00029
00030 extern OfxMainContainer * MainContainer;
00031
00032
00033
00034
00035
00036 OfxSecurityContainer::OfxSecurityContainer(LibofxContext *p_libofx_context, OfxGenericContainer *para_parentcontainer, string para_tag_identifier):
00037 OfxGenericContainer(p_libofx_context, para_parentcontainer, para_tag_identifier)
00038 {
00039 memset(&data,0,sizeof(data));
00040 type="SECURITY";
00041 }
00042 OfxSecurityContainer::~OfxSecurityContainer()
00043 {
00044 }
00045 void OfxSecurityContainer::add_attribute(const string identifier, const string value)
00046 {
00047 if(identifier=="UNIQUEID"){
00048 strncpy(data.unique_id,value.c_str(), sizeof(data.unique_id));
00049 data.unique_id_valid = true;
00050 }
00051 else if(identifier=="UNIQUEIDTYPE"){
00052 strncpy(data.unique_id_type,value.c_str(), sizeof(data.unique_id_type));
00053 data.unique_id_type_valid = true;
00054 }
00055 else if(identifier=="SECNAME"){
00056 strncpy(data.secname,value.c_str(), sizeof(data.secname));
00057 data.secname_valid = true;
00058 }
00059 else if(identifier=="TICKER"){
00060 strncpy(data.ticker,value.c_str(), sizeof(data.ticker));
00061 data.ticker_valid = true;
00062 }
00063 else if(identifier=="UNITPRICE"){
00064 data.unitprice=ofxamount_to_double(value);
00065 data.unitprice_valid = true;
00066 }
00067 else if(identifier=="DTASOF"){
00068 data.date_unitprice = ofxdate_to_time_t(value);
00069 data.date_unitprice_valid = true;
00070 }
00071 else if(identifier=="CURDEF"){
00072 strncpy(data.currency,value.c_str(),OFX_CURRENCY_LENGTH);
00073 data.currency_valid=true;
00074 }
00075 else if(identifier=="MEMO" || identifier=="MEMO2"){
00076 strncpy(data.memo,value.c_str(), sizeof(data.memo));
00077 data.memo_valid = true;
00078 }
00079 else{
00080
00081 OfxGenericContainer::add_attribute(identifier, value);
00082 }
00083 }
00084 int OfxSecurityContainer::gen_event()
00085 {
00086 libofx_context->securityCallback(data);
00087 return true;
00088 }
00089
00090 int OfxSecurityContainer::add_to_main_tree()
00091 {
00092 if(MainContainer != NULL)
00093 {
00094 return MainContainer->add_container(this);
00095 }
00096 else
00097 {
00098 return false;
00099 }
00100 }
00101