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