示例#1
0
int AIO_OfxGroup_BUYMF_StartTag(AIO_OFX_GROUP *g,
				 const char *tagName) {
  AIO_OFX_GROUP_BUYMF *xg;
  GWEN_XML_CONTEXT *ctx;
  AIO_OFX_GROUP *gNew=NULL;

  assert(g);
  xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_BUYMF, g);
  assert(xg);

  ctx=AIO_OfxGroup_GetXmlContext(g);

  if (strcasecmp(tagName, "BUYTYPE")==0 ||
      strcasecmp(tagName, "SELLTYPE")==0) {
        /* TODO */
  }
  else if (strcasecmp(tagName, "INVBUY")==0 ||
           strcasecmp(tagName, "INVSELL")==0) {
    gNew=AIO_OfxGroup_INVBUY_new(tagName, g, ctx);
    
  }
  else {
    DBG_WARN(AQBANKING_LOGDOMAIN,
	     "Ignoring tag [%s]", tagName);
    free(xg->currentElement);
    xg->currentElement=strdup(tagName);
  }

  if (gNew) {
    AIO_OfxXmlCtx_SetCurrentGroup(ctx, gNew);
    GWEN_XmlCtx_IncDepth(ctx);
  }

  return 0;
}
示例#2
0
int AIO_OfxGroup_Document_StartTag(AIO_OFX_GROUP *g, const char *tagName) {
  AIO_OFX_GROUP *gNew=NULL;
  GWEN_XML_CONTEXT *ctx;

  assert(g);

  ctx=AIO_OfxGroup_GetXmlContext(g);

  if (strcasecmp(tagName, "OFX")==0)
    gNew=AIO_OfxGroup_OFX_new(tagName, g, ctx);
  else if (strcasecmp(tagName, "OFC")==0) {
    gNew=AIO_OfxGroup_OFX_new(tagName, g, ctx);
  }
  else {
    DBG_WARN(AQBANKING_LOGDOMAIN,
	     "Ignoring group [%s]", tagName);
    gNew=AIO_OfxGroup_Ignore_new(tagName, g, ctx);
  }

  if (gNew) {
    AIO_OfxXmlCtx_SetCurrentGroup(ctx, gNew);
    GWEN_XmlCtx_IncDepth(ctx);
  }

  return 0;
}
示例#3
0
GWEN_XML_CONTEXT *AIO_OfxXmlCtx_new(uint32_t flags, AB_IMEXPORTER_CONTEXT *ioContext) {
  GWEN_XML_CONTEXT *ctx;
  AIO_OFX_XMLCTX *xctx;
  AIO_OFX_GROUP *g;

  /* create base object */
  ctx=GWEN_XmlCtx_new(flags);
  assert(ctx);

  /* create and assign extension */
  GWEN_NEW_OBJECT(AIO_OFX_XMLCTX, xctx);
  assert(xctx);
  GWEN_INHERIT_SETDATA(GWEN_XML_CONTEXT, AIO_OFX_XMLCTX, ctx, xctx,
		       AIO_OfxXmlCtx_FreeData);
  xctx->ioContext=ioContext;

  /* set virtual functions */
  GWEN_XmlCtx_SetStartTagFn(ctx, AIO_OfxXmlCtx_StartTag);
  GWEN_XmlCtx_SetEndTagFn(ctx, AIO_OfxXmlCtx_EndTag);
  GWEN_XmlCtx_SetAddDataFn(ctx, AIO_OfxXmlCtx_AddData);
  GWEN_XmlCtx_SetAddCommentFn(ctx, AIO_OfxXmlCtx_AddComment);
  GWEN_XmlCtx_SetAddAttrFn(ctx, AIO_OfxXmlCtx_AddAttr);

  /* create initial group */
  g=AIO_OfxGroup_Document_new("OFX_FILE", NULL, ctx);
  assert(g);
  AIO_OfxXmlCtx_SetCurrentGroup(ctx, g);


  /* return base object */
  return ctx;
}
示例#4
0
int AIO_OfxGroup_ACCTINFO_StartTag(AIO_OFX_GROUP *g,
                                   const char *tagName)
{
  AIO_OFX_GROUP_ACCTINFO *xg;
  GWEN_XML_CONTEXT *ctx;
  AIO_OFX_GROUP *gNew=NULL;

  assert(g);
  xg=GWEN_INHERIT_GETDATA(AIO_OFX_GROUP, AIO_OFX_GROUP_ACCTINFO, g);
  assert(xg);

  ctx=AIO_OfxGroup_GetXmlContext(g);

  free(xg->currentElement);
  xg->currentElement=NULL;

  if (strcasecmp(tagName, "DESC")==0) {
    xg->currentElement=strdup(tagName);
  }
  else if (strcasecmp(tagName, "BANKACCTINFO")==0 ||
           strcasecmp(tagName, "CCACCTINFO")==0 ||
           strcasecmp(tagName, "BPACCTINFO")==0 ||
           strcasecmp(tagName, "INVACCTINFO")==0) {
    gNew=AIO_OfxGroup_BANKACCTINFO_new(tagName, g, ctx);
  }
  else if (strcasecmp(tagName, "DESC")==0) {
    xg->currentElement=strdup(tagName);
  }
  else {
    DBG_WARN(AQBANKING_LOGDOMAIN,
             "Ignoring tag [%s]", tagName);
    xg->currentElement=strdup(tagName);
  }

  if (gNew) {
    AIO_OfxXmlCtx_SetCurrentGroup(ctx, gNew);
    GWEN_XmlCtx_IncDepth(ctx);
  }

  return 0;
}