1 /***************************************************************************
2  begin       : Mon Mar 01 2004
3  copyright   : (C) 2004 by Martin Preuss
4  email       : martin@libchipcard.de
5 
6  ***************************************************************************
7  * This file is part of the project "AqBanking".                           *
8  * Please see toplevel file COPYING of that project for license details.   *
9  ***************************************************************************/
10 
11 #ifdef HAVE_CONFIG_H
12 # include <config.h>
13 #endif
14 
15 #include "bankinfoplugin_p.h"
16 
17 #include <gwenhywfar/debug.h>
18 #include <gwenhywfar/misc.h>
19 
20 #include <assert.h>
21 
22 
23 GWEN_INHERIT_FUNCTIONS(AB_BANKINFO_PLUGIN)
GWEN_LIST_FUNCTIONS(AB_BANKINFO_PLUGIN,AB_BankInfoPlugin)24 GWEN_LIST_FUNCTIONS(AB_BANKINFO_PLUGIN, AB_BankInfoPlugin)
25 GWEN_LIST2_FUNCTIONS(AB_BANKINFO_PLUGIN, AB_BankInfoPlugin)
26 
27 GWEN_INHERIT(GWEN_PLUGIN, AB_PLUGIN_BANKINFO)
28 
29 
30 
31 AB_BANKINFO_PLUGIN *AB_BankInfoPlugin_new(const char *country)
32 {
33   AB_BANKINFO_PLUGIN *bip;
34 
35   assert(country);
36   GWEN_NEW_OBJECT(AB_BANKINFO_PLUGIN, bip);
37   GWEN_INHERIT_INIT(AB_BANKINFO_PLUGIN, bip);
38   GWEN_LIST_INIT(AB_BANKINFO_PLUGIN, bip);
39   bip->usage=1;
40   bip->country=strdup(country);
41 
42   return bip;
43 }
44 
45 
46 
AB_BankInfoPlugin_free(AB_BANKINFO_PLUGIN * bip)47 void AB_BankInfoPlugin_free(AB_BANKINFO_PLUGIN *bip)
48 {
49   if (bip) {
50     assert(bip->usage);
51     if (--(bip->usage)==0) {
52       GWEN_INHERIT_FINI(AB_BANKINFO_PLUGIN, bip);
53 
54       GWEN_Plugin_free(bip->plugin);
55       free(bip->country);
56 
57       GWEN_LIST_FINI(AB_BANKINFO_PLUGIN, bip);
58       GWEN_FREE_OBJECT(bip);
59     }
60   }
61 }
62 
63 
64 
AB_BankInfoPlugin_Attach(AB_BANKINFO_PLUGIN * bip)65 void AB_BankInfoPlugin_Attach(AB_BANKINFO_PLUGIN *bip)
66 {
67   assert(bip);
68   assert(bip->usage);
69   bip->usage++;
70 }
71 
72 
73 
AB_BankInfoPlugin_GetCountry(const AB_BANKINFO_PLUGIN * bip)74 const char *AB_BankInfoPlugin_GetCountry(const AB_BANKINFO_PLUGIN *bip)
75 {
76   assert(bip);
77   assert(bip->usage);
78   return bip->country;
79 }
80 
81 
82 
AB_BankInfoPlugin_GetBankInfo(AB_BANKINFO_PLUGIN * bip,const char * branchId,const char * bankId)83 AB_BANKINFO *AB_BankInfoPlugin_GetBankInfo(AB_BANKINFO_PLUGIN *bip,
84                                            const char *branchId,
85                                            const char *bankId)
86 {
87   assert(bip);
88   assert(bip->usage);
89   if (bip->getBankInfoFn)
90     return bip->getBankInfoFn(bip, branchId, bankId);
91 
92   DBG_INFO(AQBANKING_LOGDOMAIN, "GetBankInfo function not set");
93   return 0;
94 }
95 
96 
97 
AB_BankInfoPlugin_GetBankInfoByTemplate(AB_BANKINFO_PLUGIN * bip,AB_BANKINFO * tbi,AB_BANKINFO_LIST2 * bl)98 int AB_BankInfoPlugin_GetBankInfoByTemplate(AB_BANKINFO_PLUGIN *bip,
99                                             AB_BANKINFO *tbi,
100                                             AB_BANKINFO_LIST2 *bl)
101 {
102   assert(bip);
103   assert(bip->usage);
104   if (bip->getBankInfoByTemplateFn)
105     return bip->getBankInfoByTemplateFn(bip, tbi, bl);
106 
107   DBG_INFO(AQBANKING_LOGDOMAIN, "GetBankInfoByTemplate function not set");
108   return GWEN_ERROR_NOT_SUPPORTED;
109 }
110 
111 
112 
AB_BankInfoPlugin_CheckAccount(AB_BANKINFO_PLUGIN * bip,const char * branchId,const char * bankId,const char * accountId)113 AB_BANKINFO_CHECKRESULT AB_BankInfoPlugin_CheckAccount(AB_BANKINFO_PLUGIN *bip,
114                                                        const char *branchId,
115                                                        const char *bankId,
116                                                        const char *accountId)
117 {
118   assert(bip);
119   assert(bip->usage);
120   if (bip->checkAccountFn)
121     return bip->checkAccountFn(bip, branchId, bankId, accountId);
122 
123   DBG_INFO(AQBANKING_LOGDOMAIN, "CheckAccount function not set");
124   return AB_BankInfoCheckResult_UnknownResult;
125 }
126 
127 
128 
AB_BankInfoPlugin_SetGetBankInfoFn(AB_BANKINFO_PLUGIN * bip,AB_BANKINFOPLUGIN_GETBANKINFO_FN f)129 void AB_BankInfoPlugin_SetGetBankInfoFn(AB_BANKINFO_PLUGIN *bip,
130                                         AB_BANKINFOPLUGIN_GETBANKINFO_FN f)
131 {
132   assert(bip);
133   assert(bip->usage);
134   bip->getBankInfoFn=f;
135 }
136 
137 
138 
AB_BankInfoPlugin_SetGetBankInfoByTemplateFn(AB_BANKINFO_PLUGIN * bip,AB_BANKINFOPLUGIN_GETBANKINFOBYTMPLATE_FN f)139 void AB_BankInfoPlugin_SetGetBankInfoByTemplateFn(AB_BANKINFO_PLUGIN *bip,
140                                                   AB_BANKINFOPLUGIN_GETBANKINFOBYTMPLATE_FN f)
141 {
142   assert(bip);
143   assert(bip->usage);
144   bip->getBankInfoByTemplateFn=f;
145 }
146 
147 
148 
AB_BankInfoPlugin_SetCheckAccountFn(AB_BANKINFO_PLUGIN * bip,AB_BANKINFOPLUGIN_CHECKACCOUNT_FN f)149 void AB_BankInfoPlugin_SetCheckAccountFn(AB_BANKINFO_PLUGIN *bip,
150                                          AB_BANKINFOPLUGIN_CHECKACCOUNT_FN f)
151 {
152   assert(bip);
153   assert(bip->usage);
154   bip->checkAccountFn=f;
155 }
156 
157 
158 
AB_BankInfoPlugin_SetPlugin(AB_BANKINFO_PLUGIN * bip,GWEN_PLUGIN * pl)159 void AB_BankInfoPlugin_SetPlugin(AB_BANKINFO_PLUGIN *bip,
160                                  GWEN_PLUGIN *pl)
161 {
162   assert(bip);
163   assert(bip->usage);
164 
165   bip->plugin=pl;
166 }
167 
168 
169 
170 
171 
172 
173 
AB_Plugin_BankInfo_new(GWEN_PLUGIN_MANAGER * pm,const char * name,const char * fileName)174 GWEN_PLUGIN *AB_Plugin_BankInfo_new(GWEN_PLUGIN_MANAGER *pm,
175                                     const char *name,
176                                     const char *fileName)
177 {
178   GWEN_PLUGIN *pl;
179   AB_PLUGIN_BANKINFO *xpl;
180 
181   pl=GWEN_Plugin_new(pm, name, fileName);
182   GWEN_NEW_OBJECT(AB_PLUGIN_BANKINFO, xpl);
183   GWEN_INHERIT_SETDATA(GWEN_PLUGIN, AB_PLUGIN_BANKINFO, pl, xpl,
184                        AB_Plugin_BankInfo_FreeData);
185 
186   return pl;
187 }
188 
189 
190 
191 GWENHYWFAR_CB
AB_Plugin_BankInfo_FreeData(void * bp,void * p)192 void AB_Plugin_BankInfo_FreeData(void *bp, void *p)
193 {
194   AB_PLUGIN_BANKINFO *xpl;
195 
196   xpl=(AB_PLUGIN_BANKINFO *)p;
197   GWEN_FREE_OBJECT(xpl);
198 }
199 
200 
201 
AB_Plugin_BankInfo_Factory(GWEN_PLUGIN * pl,AB_BANKING * ab)202 AB_BANKINFO_PLUGIN *AB_Plugin_BankInfo_Factory(GWEN_PLUGIN *pl,
203                                                AB_BANKING *ab)
204 {
205   AB_PLUGIN_BANKINFO *xpl;
206 
207   assert(pl);
208   xpl=GWEN_INHERIT_GETDATA(GWEN_PLUGIN, AB_PLUGIN_BANKINFO, pl);
209   assert(xpl);
210 
211   assert(xpl->pluginFactoryFn);
212   return xpl->pluginFactoryFn(pl, ab);
213 }
214 
215 
216 
AB_Plugin_BankInfo_SetFactoryFn(GWEN_PLUGIN * pl,AB_PLUGIN_BANKINFO_FACTORY_FN fn)217 void AB_Plugin_BankInfo_SetFactoryFn(GWEN_PLUGIN *pl,
218                                      AB_PLUGIN_BANKINFO_FACTORY_FN fn)
219 {
220   AB_PLUGIN_BANKINFO *xpl;
221 
222   assert(pl);
223   xpl=GWEN_INHERIT_GETDATA(GWEN_PLUGIN, AB_PLUGIN_BANKINFO, pl);
224   assert(xpl);
225 
226   xpl->pluginFactoryFn=fn;
227 }
228 
229 
230 
231 
232 
233 
234