1 /**********************************************************
2 * This file has been automatically created by "typemaker2"
3 * from the file "imexporter_context.xml".
4 * Please do not edit this file, all changes will be lost.
5 * Better edit the mentioned source file instead.
6 **********************************************************/
7
8 #ifdef HAVE_CONFIG_H
9 # include <config.h>
10 #endif
11
12 #include "./imexporter_context_p.h"
13
14 #include <gwenhywfar/misc.h>
15 #include <gwenhywfar/debug.h>
16
17 /* code headers */
18
19 /* macro functions */
GWEN_LIST_FUNCTIONS(AB_IMEXPORTER_CONTEXT,AB_ImExporterContext)20 GWEN_LIST_FUNCTIONS(AB_IMEXPORTER_CONTEXT, AB_ImExporterContext)
21 GWEN_LIST2_FUNCTIONS(AB_IMEXPORTER_CONTEXT, AB_ImExporterContext)
22
23
24 AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_new(void)
25 {
26 AB_IMEXPORTER_CONTEXT *p_struct;
27
28 GWEN_NEW_OBJECT(AB_IMEXPORTER_CONTEXT, p_struct)
29 p_struct->_refCount=1;
30 GWEN_LIST_INIT(AB_IMEXPORTER_CONTEXT, p_struct)
31 /* members */
32 p_struct->accountInfoList=AB_ImExporterAccountInfo_List_new();
33 p_struct->securityList=AB_Security_List_new();
34 p_struct->messageList=AB_Message_List_new();
35 /* virtual functions */
36
37 return p_struct;
38 }
39
AB_ImExporterContext_free(AB_IMEXPORTER_CONTEXT * p_struct)40 void AB_ImExporterContext_free(AB_IMEXPORTER_CONTEXT *p_struct)
41 {
42 if (p_struct) {
43 assert(p_struct->_refCount);
44 if (p_struct->_refCount==1) {
45 GWEN_LIST_FINI(AB_IMEXPORTER_CONTEXT, p_struct)
46 /* members */
47 AB_ImExporterAccountInfo_List_free(p_struct->accountInfoList);
48 p_struct->accountInfoList=NULL;
49 AB_Security_List_free(p_struct->securityList);
50 p_struct->securityList=NULL;
51 AB_Message_List_free(p_struct->messageList);
52 p_struct->messageList=NULL;
53 p_struct->_refCount=0;
54 GWEN_FREE_OBJECT(p_struct);
55 }
56 else
57 p_struct->_refCount--;
58 }
59 }
60
AB_ImExporterContext_Attach(AB_IMEXPORTER_CONTEXT * p_struct)61 void AB_ImExporterContext_Attach(AB_IMEXPORTER_CONTEXT *p_struct)
62 {
63 assert(p_struct);
64 assert(p_struct->_refCount);
65 p_struct->_refCount++;
66 }
67
AB_ImExporterContext_dup(const AB_IMEXPORTER_CONTEXT * p_src)68 AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_dup(const AB_IMEXPORTER_CONTEXT *p_src)
69 {
70 AB_IMEXPORTER_CONTEXT *p_struct;
71
72 assert(p_src);
73 p_struct=AB_ImExporterContext_new();
74 /* member "accountInfoList" */
75 if (p_struct->accountInfoList) {
76 AB_ImExporterAccountInfo_List_free(p_struct->accountInfoList);
77 p_struct->accountInfoList=NULL;
78 p_struct->accountInfoList=NULL;
79 }
80 if (p_src->accountInfoList) {
81 p_struct->accountInfoList=AB_ImExporterAccountInfo_List_dup(p_src->accountInfoList);
82 }
83
84 /* member "securityList" */
85 if (p_struct->securityList) {
86 AB_Security_List_free(p_struct->securityList);
87 p_struct->securityList=NULL;
88 p_struct->securityList=NULL;
89 }
90 if (p_src->securityList) {
91 p_struct->securityList=AB_Security_List_dup(p_src->securityList);
92 }
93
94 /* member "messageList" */
95 if (p_struct->messageList) {
96 AB_Message_List_free(p_struct->messageList);
97 p_struct->messageList=NULL;
98 p_struct->messageList=NULL;
99 }
100 if (p_src->messageList) {
101 p_struct->messageList=AB_Message_List_dup(p_src->messageList);
102 }
103
104 return p_struct;
105 }
106
AB_ImExporterContext_copy(AB_IMEXPORTER_CONTEXT * p_struct,const AB_IMEXPORTER_CONTEXT * p_src)107 AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_copy(AB_IMEXPORTER_CONTEXT *p_struct, const AB_IMEXPORTER_CONTEXT *p_src)
108 {
109 assert(p_struct);
110 assert(p_src);
111 /* member "accountInfoList" */
112 if (p_struct->accountInfoList) {
113 AB_ImExporterAccountInfo_List_free(p_struct->accountInfoList);
114 p_struct->accountInfoList=NULL;
115 p_struct->accountInfoList=NULL;
116 }
117 if (p_src->accountInfoList) {
118 p_struct->accountInfoList=AB_ImExporterAccountInfo_List_dup(p_src->accountInfoList);
119 }
120
121 /* member "securityList" */
122 if (p_struct->securityList) {
123 AB_Security_List_free(p_struct->securityList);
124 p_struct->securityList=NULL;
125 p_struct->securityList=NULL;
126 }
127 if (p_src->securityList) {
128 p_struct->securityList=AB_Security_List_dup(p_src->securityList);
129 }
130
131 /* member "messageList" */
132 if (p_struct->messageList) {
133 AB_Message_List_free(p_struct->messageList);
134 p_struct->messageList=NULL;
135 p_struct->messageList=NULL;
136 }
137 if (p_src->messageList) {
138 p_struct->messageList=AB_Message_List_dup(p_src->messageList);
139 }
140
141 return p_struct;
142 }
143
AB_ImExporterContext_GetAccountInfoList(const AB_IMEXPORTER_CONTEXT * p_struct)144 AB_IMEXPORTER_ACCOUNTINFO_LIST *AB_ImExporterContext_GetAccountInfoList(const AB_IMEXPORTER_CONTEXT *p_struct)
145 {
146 assert(p_struct);
147 return p_struct->accountInfoList;
148 }
149
AB_ImExporterContext_GetSecurityList(const AB_IMEXPORTER_CONTEXT * p_struct)150 AB_SECURITY_LIST *AB_ImExporterContext_GetSecurityList(const AB_IMEXPORTER_CONTEXT *p_struct)
151 {
152 assert(p_struct);
153 return p_struct->securityList;
154 }
155
AB_ImExporterContext_GetMessageList(const AB_IMEXPORTER_CONTEXT * p_struct)156 AB_MESSAGE_LIST *AB_ImExporterContext_GetMessageList(const AB_IMEXPORTER_CONTEXT *p_struct)
157 {
158 assert(p_struct);
159 return p_struct->messageList;
160 }
161
AB_ImExporterContext_SetAccountInfoList(AB_IMEXPORTER_CONTEXT * p_struct,AB_IMEXPORTER_ACCOUNTINFO_LIST * p_src)162 void AB_ImExporterContext_SetAccountInfoList(AB_IMEXPORTER_CONTEXT *p_struct, AB_IMEXPORTER_ACCOUNTINFO_LIST *p_src)
163 {
164 assert(p_struct);
165 if (p_struct->accountInfoList) {
166 AB_ImExporterAccountInfo_List_free(p_struct->accountInfoList);
167 p_struct->accountInfoList=NULL;
168 }
169 p_struct->accountInfoList=p_src;
170 }
171
AB_ImExporterContext_SetSecurityList(AB_IMEXPORTER_CONTEXT * p_struct,AB_SECURITY_LIST * p_src)172 void AB_ImExporterContext_SetSecurityList(AB_IMEXPORTER_CONTEXT *p_struct, AB_SECURITY_LIST *p_src)
173 {
174 assert(p_struct);
175 if (p_struct->securityList) {
176 AB_Security_List_free(p_struct->securityList);
177 p_struct->securityList=NULL;
178 }
179 p_struct->securityList=p_src;
180 }
181
AB_ImExporterContext_SetMessageList(AB_IMEXPORTER_CONTEXT * p_struct,AB_MESSAGE_LIST * p_src)182 void AB_ImExporterContext_SetMessageList(AB_IMEXPORTER_CONTEXT *p_struct, AB_MESSAGE_LIST *p_src)
183 {
184 assert(p_struct);
185 if (p_struct->messageList) {
186 AB_Message_List_free(p_struct->messageList);
187 p_struct->messageList=NULL;
188 }
189 p_struct->messageList=p_src;
190 }
191
192 /* list1 functions */
AB_ImExporterContext_List_dup(const AB_IMEXPORTER_CONTEXT_LIST * p_src)193 AB_IMEXPORTER_CONTEXT_LIST *AB_ImExporterContext_List_dup(const AB_IMEXPORTER_CONTEXT_LIST *p_src)
194 {
195 AB_IMEXPORTER_CONTEXT_LIST *p_dest;
196 AB_IMEXPORTER_CONTEXT *p_elem;
197
198 assert(p_src);
199 p_dest=AB_ImExporterContext_List_new();
200 p_elem=AB_ImExporterContext_List_First(p_src);
201 while (p_elem) {
202 AB_IMEXPORTER_CONTEXT *p_cpy;
203
204 p_cpy=AB_ImExporterContext_dup(p_elem);
205 AB_ImExporterContext_List_Add(p_cpy, p_dest);
206 p_elem=AB_ImExporterContext_List_Next(p_elem);
207 }
208
209 return p_dest;
210 }
211
AB_ImExporterContext_ReadDb(AB_IMEXPORTER_CONTEXT * p_struct,GWEN_DB_NODE * p_db)212 void AB_ImExporterContext_ReadDb(AB_IMEXPORTER_CONTEXT *p_struct, GWEN_DB_NODE *p_db)
213 {
214 assert(p_struct);
215 /* member "accountInfoList" */
216 if (p_struct->accountInfoList) {
217 AB_ImExporterAccountInfo_List_free(p_struct->accountInfoList);
218 p_struct->accountInfoList=NULL;
219 }
220 {
221 GWEN_DB_NODE *dbSource;
222 dbSource=GWEN_DB_GetGroup(p_db, GWEN_PATH_FLAGS_NAMEMUSTEXIST, "accountInfoList");
223 if (dbSource) {
224 AB_IMEXPORTER_ACCOUNTINFO_LIST *t;
225 GWEN_DB_NODE *dbT;
226 t=AB_ImExporterAccountInfo_List_new();
227 dbT=GWEN_DB_FindFirstGroup(dbSource, "accountInfo");
228 while (dbT) {
229 AB_IMEXPORTER_ACCOUNTINFO *elem;
230 elem=AB_ImExporterAccountInfo_fromDb(dbT);
231 if (elem)
232 AB_ImExporterAccountInfo_List_Add(elem, t);
233 dbT=GWEN_DB_FindNextGroup(dbT, "accountInfo");
234 }
235 p_struct->accountInfoList=t;
236 }
237 else
238 p_struct->accountInfoList=AB_ImExporterAccountInfo_List_new();
239 }
240 if (p_struct->accountInfoList==NULL) {
241 p_struct->accountInfoList=AB_ImExporterAccountInfo_List_new();
242 }
243
244 /* member "securityList" */
245 if (p_struct->securityList) {
246 AB_Security_List_free(p_struct->securityList);
247 p_struct->securityList=NULL;
248 }
249 {
250 GWEN_DB_NODE *dbSource;
251 dbSource=GWEN_DB_GetGroup(p_db, GWEN_PATH_FLAGS_NAMEMUSTEXIST, "securityList");
252 if (dbSource) {
253 AB_SECURITY_LIST *t;
254 GWEN_DB_NODE *dbT;
255 t=AB_Security_List_new();
256 dbT=GWEN_DB_FindFirstGroup(dbSource, "security");
257 while (dbT) {
258 AB_SECURITY *elem;
259 elem=AB_Security_fromDb(dbT);
260 if (elem)
261 AB_Security_List_Add(elem, t);
262 dbT=GWEN_DB_FindNextGroup(dbT, "security");
263 }
264 p_struct->securityList=t;
265 }
266 else
267 p_struct->securityList=AB_Security_List_new();
268 }
269 if (p_struct->securityList==NULL) {
270 p_struct->securityList=AB_Security_List_new();
271 }
272
273 /* member "messageList" */
274 if (p_struct->messageList) {
275 AB_Message_List_free(p_struct->messageList);
276 p_struct->messageList=NULL;
277 }
278 {
279 GWEN_DB_NODE *dbSource;
280 dbSource=GWEN_DB_GetGroup(p_db, GWEN_PATH_FLAGS_NAMEMUSTEXIST, "messageList");
281 if (dbSource) {
282 AB_MESSAGE_LIST *t;
283 GWEN_DB_NODE *dbT;
284 t=AB_Message_List_new();
285 dbT=GWEN_DB_FindFirstGroup(dbSource, "message");
286 while (dbT) {
287 AB_MESSAGE *elem;
288 elem=AB_Message_fromDb(dbT);
289 if (elem)
290 AB_Message_List_Add(elem, t);
291 dbT=GWEN_DB_FindNextGroup(dbT, "message");
292 }
293 p_struct->messageList=t;
294 }
295 else
296 p_struct->messageList=AB_Message_List_new();
297 }
298 if (p_struct->messageList==NULL) {
299 p_struct->messageList=AB_Message_List_new();
300 }
301
302 }
303
AB_ImExporterContext_WriteDb(const AB_IMEXPORTER_CONTEXT * p_struct,GWEN_DB_NODE * p_db)304 int AB_ImExporterContext_WriteDb(const AB_IMEXPORTER_CONTEXT *p_struct, GWEN_DB_NODE *p_db)
305 {
306 int p_rv;
307
308 assert(p_struct);
309 /* member "accountInfoList" */
310 {
311 if (p_struct->accountInfoList) {
312 GWEN_DB_NODE *dbDest;
313 AB_IMEXPORTER_ACCOUNTINFO *elem;
314 dbDest=GWEN_DB_GetGroup(p_db, GWEN_DB_FLAGS_OVERWRITE_GROUPS, "accountInfoList");
315 assert(dbDest);
316 p_rv=0;
317 elem=AB_ImExporterAccountInfo_List_First(p_struct->accountInfoList);
318 while (elem) {
319 GWEN_DB_NODE *dbElem;
320 dbElem=GWEN_DB_GetGroup(dbDest, GWEN_PATH_FLAGS_CREATE_GROUP, "accountInfo");
321 assert(dbElem);
322 p_rv=AB_ImExporterAccountInfo_toDb(elem, dbElem);
323 if (p_rv<0) {
324 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", p_rv);
325 break;
326 }
327 elem=AB_ImExporterAccountInfo_List_Next(elem);
328 }
329 }
330 else
331 p_rv=0;
332 }
333 if (p_rv<0) {
334 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
335 return p_rv;
336 }
337
338 /* member "securityList" */
339 {
340 if (p_struct->securityList) {
341 GWEN_DB_NODE *dbDest;
342 AB_SECURITY *elem;
343 dbDest=GWEN_DB_GetGroup(p_db, GWEN_DB_FLAGS_OVERWRITE_GROUPS, "securityList");
344 assert(dbDest);
345 p_rv=0;
346 elem=AB_Security_List_First(p_struct->securityList);
347 while (elem) {
348 GWEN_DB_NODE *dbElem;
349 dbElem=GWEN_DB_GetGroup(dbDest, GWEN_PATH_FLAGS_CREATE_GROUP, "security");
350 assert(dbElem);
351 p_rv=AB_Security_toDb(elem, dbElem);
352 if (p_rv<0) {
353 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", p_rv);
354 break;
355 }
356 elem=AB_Security_List_Next(elem);
357 }
358 }
359 else
360 p_rv=0;
361 }
362 if (p_rv<0) {
363 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
364 return p_rv;
365 }
366
367 /* member "messageList" */
368 {
369 if (p_struct->messageList) {
370 GWEN_DB_NODE *dbDest;
371 AB_MESSAGE *elem;
372 dbDest=GWEN_DB_GetGroup(p_db, GWEN_DB_FLAGS_OVERWRITE_GROUPS, "messageList");
373 assert(dbDest);
374 p_rv=0;
375 elem=AB_Message_List_First(p_struct->messageList);
376 while (elem) {
377 GWEN_DB_NODE *dbElem;
378 dbElem=GWEN_DB_GetGroup(dbDest, GWEN_PATH_FLAGS_CREATE_GROUP, "message");
379 assert(dbElem);
380 p_rv=AB_Message_toDb(elem, dbElem);
381 if (p_rv<0) {
382 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", p_rv);
383 break;
384 }
385 elem=AB_Message_List_Next(elem);
386 }
387 }
388 else
389 p_rv=0;
390 }
391 if (p_rv<0) {
392 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)\n", p_rv);
393 return p_rv;
394 }
395
396 return 0;
397 }
398
AB_ImExporterContext_fromDb(GWEN_DB_NODE * p_db)399 AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_fromDb(GWEN_DB_NODE *p_db)
400 {
401 AB_IMEXPORTER_CONTEXT *p_struct;
402 p_struct=AB_ImExporterContext_new();
403 AB_ImExporterContext_ReadDb(p_struct, p_db);
404 return p_struct;
405 }
406
AB_ImExporterContext_toDb(const AB_IMEXPORTER_CONTEXT * p_struct,GWEN_DB_NODE * p_db)407 int AB_ImExporterContext_toDb(const AB_IMEXPORTER_CONTEXT *p_struct, GWEN_DB_NODE *p_db)
408 {
409 return AB_ImExporterContext_WriteDb(p_struct, p_db);
410 }
411
AB_ImExporterContext_ReadXml(AB_IMEXPORTER_CONTEXT * p_struct,GWEN_XMLNODE * p_db)412 void AB_ImExporterContext_ReadXml(AB_IMEXPORTER_CONTEXT *p_struct, GWEN_XMLNODE *p_db)
413 {
414 assert(p_struct);
415 /* member "accountInfoList" */
416 if (p_struct->accountInfoList) {
417 AB_ImExporterAccountInfo_List_free(p_struct->accountInfoList);
418 p_struct->accountInfoList=NULL;
419 }
420 {
421 GWEN_XMLNODE *dbSource;
422 dbSource=GWEN_XMLNode_FindFirstTag(p_db, "accountInfoList", NULL, NULL);
423 if (dbSource) {
424 AB_IMEXPORTER_ACCOUNTINFO_LIST *t;
425 GWEN_XMLNODE *dbT;
426 t=AB_ImExporterAccountInfo_List_new();
427 dbT=GWEN_XMLNode_FindFirstTag(dbSource, "accountInfo", NULL, NULL);
428 while (dbT) {
429 AB_IMEXPORTER_ACCOUNTINFO *elem;
430 elem=AB_ImExporterAccountInfo_fromXml(dbT);
431 if (elem)
432 AB_ImExporterAccountInfo_List_Add(elem, t);
433 dbT=GWEN_XMLNode_FindNextTag(dbT, "accountInfo", NULL, NULL);
434 }
435 p_struct->accountInfoList=t;
436 }
437 else
438 p_struct->accountInfoList=AB_ImExporterAccountInfo_List_new();
439 }
440 if (p_struct->accountInfoList==NULL) { /* preset member "accountInfoList" if empty */
441 p_struct->accountInfoList=AB_ImExporterAccountInfo_List_new();
442 }
443
444 /* member "securityList" */
445 if (p_struct->securityList) {
446 AB_Security_List_free(p_struct->securityList);
447 p_struct->securityList=NULL;
448 }
449 {
450 GWEN_XMLNODE *dbSource;
451 dbSource=GWEN_XMLNode_FindFirstTag(p_db, "securityList", NULL, NULL);
452 if (dbSource) {
453 AB_SECURITY_LIST *t;
454 GWEN_XMLNODE *dbT;
455 t=AB_Security_List_new();
456 dbT=GWEN_XMLNode_FindFirstTag(dbSource, "security", NULL, NULL);
457 while (dbT) {
458 AB_SECURITY *elem;
459 elem=AB_Security_fromXml(dbT);
460 if (elem)
461 AB_Security_List_Add(elem, t);
462 dbT=GWEN_XMLNode_FindNextTag(dbT, "security", NULL, NULL);
463 }
464 p_struct->securityList=t;
465 }
466 else
467 p_struct->securityList=AB_Security_List_new();
468 }
469 if (p_struct->securityList==NULL) { /* preset member "securityList" if empty */
470 p_struct->securityList=AB_Security_List_new();
471 }
472
473 /* member "messageList" */
474 if (p_struct->messageList) {
475 AB_Message_List_free(p_struct->messageList);
476 p_struct->messageList=NULL;
477 }
478 {
479 GWEN_XMLNODE *dbSource;
480 dbSource=GWEN_XMLNode_FindFirstTag(p_db, "messageList", NULL, NULL);
481 if (dbSource) {
482 AB_MESSAGE_LIST *t;
483 GWEN_XMLNODE *dbT;
484 t=AB_Message_List_new();
485 dbT=GWEN_XMLNode_FindFirstTag(dbSource, "message", NULL, NULL);
486 while (dbT) {
487 AB_MESSAGE *elem;
488 elem=AB_Message_fromXml(dbT);
489 if (elem)
490 AB_Message_List_Add(elem, t);
491 dbT=GWEN_XMLNode_FindNextTag(dbT, "message", NULL, NULL);
492 }
493 p_struct->messageList=t;
494 }
495 else
496 p_struct->messageList=AB_Message_List_new();
497 }
498 if (p_struct->messageList==NULL) { /* preset member "messageList" if empty */
499 p_struct->messageList=AB_Message_List_new();
500 }
501
502 }
503
AB_ImExporterContext_WriteXml(const AB_IMEXPORTER_CONTEXT * p_struct,GWEN_XMLNODE * p_db)504 void AB_ImExporterContext_WriteXml(const AB_IMEXPORTER_CONTEXT *p_struct, GWEN_XMLNODE *p_db)
505 {
506 assert(p_struct);
507 /* member "accountInfoList" */
508 {
509 if (p_struct->accountInfoList) {
510 GWEN_XMLNODE *dbDest;
511 AB_IMEXPORTER_ACCOUNTINFO *elem;
512 dbDest=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "accountInfoList");
513 elem=AB_ImExporterAccountInfo_List_First(p_struct->accountInfoList);
514 while (elem) {
515 GWEN_XMLNODE *dbElem;
516 dbElem=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "accountInfo");
517 assert(dbElem);
518 AB_ImExporterAccountInfo_toXml(elem, dbElem);
519 GWEN_XMLNode_AddChild(dbDest, dbElem);
520 elem=AB_ImExporterAccountInfo_List_Next(elem);
521 }
522 GWEN_XMLNode_AddChild(p_db, dbDest);
523 }
524 }
525
526 /* member "securityList" */
527 {
528 if (p_struct->securityList) {
529 GWEN_XMLNODE *dbDest;
530 AB_SECURITY *elem;
531 dbDest=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "securityList");
532 elem=AB_Security_List_First(p_struct->securityList);
533 while (elem) {
534 GWEN_XMLNODE *dbElem;
535 dbElem=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "security");
536 assert(dbElem);
537 AB_Security_toXml(elem, dbElem);
538 GWEN_XMLNode_AddChild(dbDest, dbElem);
539 elem=AB_Security_List_Next(elem);
540 }
541 GWEN_XMLNode_AddChild(p_db, dbDest);
542 }
543 }
544
545 /* member "messageList" */
546 {
547 if (p_struct->messageList) {
548 GWEN_XMLNODE *dbDest;
549 AB_MESSAGE *elem;
550 dbDest=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "messageList");
551 elem=AB_Message_List_First(p_struct->messageList);
552 while (elem) {
553 GWEN_XMLNODE *dbElem;
554 dbElem=GWEN_XMLNode_new(GWEN_XMLNodeTypeTag, "message");
555 assert(dbElem);
556 AB_Message_toXml(elem, dbElem);
557 GWEN_XMLNode_AddChild(dbDest, dbElem);
558 elem=AB_Message_List_Next(elem);
559 }
560 GWEN_XMLNode_AddChild(p_db, dbDest);
561 }
562 }
563
564 }
565
AB_ImExporterContext_toXml(const AB_IMEXPORTER_CONTEXT * p_struct,GWEN_XMLNODE * p_db)566 void AB_ImExporterContext_toXml(const AB_IMEXPORTER_CONTEXT *p_struct, GWEN_XMLNODE *p_db)
567 {
568 AB_ImExporterContext_WriteXml(p_struct, p_db);
569 }
570
AB_ImExporterContext_fromXml(GWEN_XMLNODE * p_db)571 AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_fromXml(GWEN_XMLNODE *p_db)
572 {
573 AB_IMEXPORTER_CONTEXT *p_struct;
574 p_struct=AB_ImExporterContext_new();
575 AB_ImExporterContext_ReadXml(p_struct, p_db);
576 return p_struct;
577 }
578
AB_ImExporterContext_List2__freeAll_cb(AB_IMEXPORTER_CONTEXT * t,void * user_data)579 static AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_List2__freeAll_cb(AB_IMEXPORTER_CONTEXT *t, void *user_data)
580 {
581 AB_ImExporterContext_free(t);
582 return NULL;
583 }
AB_ImExporterContext_List2_freeAll(AB_IMEXPORTER_CONTEXT_LIST2 * tl)584 int AB_ImExporterContext_List2_freeAll(AB_IMEXPORTER_CONTEXT_LIST2 *tl)
585 {
586 if (tl) {
587 AB_ImExporterContext_List2_ForEach(tl, AB_ImExporterContext_List2__freeAll_cb, NULL);
588 AB_ImExporterContext_List2_free(tl);
589 }
590 else {
591 DBG_ERROR(AQBANKING_LOGDOMAIN, "List missing");
592 return GWEN_ERROR_INVALID;
593 }
594 return 0;
595 }
AB_ImExporterContext_Clear(AB_IMEXPORTER_CONTEXT * st)596 void AB_ImExporterContext_Clear(AB_IMEXPORTER_CONTEXT *st)
597 {
598 assert(st);
599 if (st->accountInfoList)
600 AB_ImExporterAccountInfo_List_Clear(st->accountInfoList);
601 if (st->securityList)
602 AB_Security_List_Clear(st->securityList);
603 if (st->messageList)
604 AB_Message_List_Clear(st->messageList);
605 }
AB_ImExporterContext_AddContext(AB_IMEXPORTER_CONTEXT * st,AB_IMEXPORTER_CONTEXT * stSrc)606 void AB_ImExporterContext_AddContext(AB_IMEXPORTER_CONTEXT *st, AB_IMEXPORTER_CONTEXT *stSrc)
607 {
608 assert(st);
609 if (stSrc->accountInfoList) {
610 AB_IMEXPORTER_ACCOUNTINFO *iea;
611 iea=AB_ImExporterAccountInfo_List_First(stSrc->accountInfoList);
612 while (iea) {
613 AB_IMEXPORTER_ACCOUNTINFO *ieaNext;
614 ieaNext=AB_ImExporterAccountInfo_List_Next(iea);
615 AB_ImExporterAccountInfo_List_Del(iea);
616 AB_ImExporterAccountInfo_List_Add(iea, st->accountInfoList);
617 iea=ieaNext;
618 }
619 }
620 if (stSrc->securityList) {
621 AB_SECURITY *sec;
622 sec=AB_Security_List_First(stSrc->securityList);
623 while (sec) {
624 AB_SECURITY *secNext;
625 secNext=AB_Security_List_Next(sec);
626 AB_Security_List_Del(sec);
627 AB_Security_List_Add(sec, st->securityList);
628 sec=secNext;
629 }
630 }
631 if (stSrc->messageList) {
632 AB_MESSAGE *msg;
633 msg=AB_Message_List_First(stSrc->messageList);
634 while (msg) {
635 AB_MESSAGE *msgNext;
636 msgNext=AB_Message_List_Next(msg);
637 AB_Message_List_Del(msg);
638 AB_Message_List_Add(msg, st->messageList);
639 msg=msgNext;
640 }
641 }
642 AB_ImExporterContext_free(stSrc);
643 }
AB_ImExporterContext_GetFirstAccountInfo(const AB_IMEXPORTER_CONTEXT * st)644 AB_IMEXPORTER_ACCOUNTINFO *AB_ImExporterContext_GetFirstAccountInfo(const AB_IMEXPORTER_CONTEXT *st)
645 {
646 assert(st);
647 if (st->accountInfoList)
648 return AB_ImExporterAccountInfo_List_First(st->accountInfoList);
649 return NULL;
650 }
AB_ImExporterContext_AddAccountInfo(AB_IMEXPORTER_CONTEXT * st,AB_IMEXPORTER_ACCOUNTINFO * ai)651 void AB_ImExporterContext_AddAccountInfo(AB_IMEXPORTER_CONTEXT *st, AB_IMEXPORTER_ACCOUNTINFO *ai)
652 {
653 assert(st);
654 if (ai) {
655 if (NULL==st->accountInfoList)
656 st->accountInfoList=AB_ImExporterAccountInfo_List_new();
657 AB_ImExporterAccountInfo_List_Add(ai, st->accountInfoList);
658 }
659 }
AB_ImExporterContext_GetAccountInfoCount(const AB_IMEXPORTER_CONTEXT * st)660 int AB_ImExporterContext_GetAccountInfoCount(const AB_IMEXPORTER_CONTEXT *st)
661 {
662 assert(st);
663 if (st->accountInfoList)
664 return AB_ImExporterAccountInfo_List_GetCount(st->accountInfoList);
665 return 0;
666 }
AB_ImExporterContext_GetOrAddAccountInfo(AB_IMEXPORTER_CONTEXT * st,uint32_t uniqueId,const char * iban,const char * bankCode,const char * accountNumber,int accountType)667 AB_IMEXPORTER_ACCOUNTINFO *AB_ImExporterContext_GetOrAddAccountInfo(AB_IMEXPORTER_CONTEXT *st, uint32_t uniqueId,
668 const char *iban, const char *bankCode, const char *accountNumber, int accountType)
669 {
670 assert(st);
671 if (NULL==st->accountInfoList)
672 st->accountInfoList=AB_ImExporterAccountInfo_List_new();
673 return AB_ImExporterAccountInfo_List_GetOrAdd(st->accountInfoList, uniqueId, iban, bankCode, accountNumber,
674 accountType);
675 }
AB_ImExporterContext_GetFirstSecurity(const AB_IMEXPORTER_CONTEXT * st)676 AB_SECURITY *AB_ImExporterContext_GetFirstSecurity(const AB_IMEXPORTER_CONTEXT *st)
677 {
678 assert(st);
679 if (st->securityList)
680 return AB_Security_List_First(st->securityList);
681 return NULL;
682 }
AB_ImExporterContext_FindSecurity(const AB_IMEXPORTER_CONTEXT * st,const char * nameSpace,const char * id)683 AB_SECURITY *AB_ImExporterContext_FindSecurity(const AB_IMEXPORTER_CONTEXT *st, const char *nameSpace, const char *id)
684 {
685 assert(st);
686 if (st->securityList) {
687 AB_SECURITY *sec;
688 assert(st);
689 if (nameSpace==NULL)
690 nameSpace="";
691 if (id==NULL)
692 id="";
693 sec=AB_Security_List_First(st->securityList);
694 while (sec) {
695 const char *s1, *s2;
696 s1=AB_Security_GetUniqueId(sec);
697 if (s1==NULL)
698 s1="";
699 s2=AB_Security_GetNameSpace(sec);
700 if (s2==NULL)
701 s2="";
702 if (strcasecmp(s2, nameSpace)==0 && strcasecmp(s1, id)==0)
703 return sec;
704 sec=AB_Security_List_Next(sec);
705 }
706 }
707 return NULL;
708 }
AB_ImExporterContext_AddSecurity(AB_IMEXPORTER_CONTEXT * st,AB_SECURITY * sec)709 void AB_ImExporterContext_AddSecurity(AB_IMEXPORTER_CONTEXT *st, AB_SECURITY *sec)
710 {
711 assert(st);
712 if (sec) {
713 if (NULL==st->securityList)
714 st->securityList=AB_Security_List_new();
715 AB_Security_List_Add(sec, st->securityList);
716 }
717 }
AB_ImExporterContext_GetFirstMessage(const AB_IMEXPORTER_CONTEXT * st)718 AB_MESSAGE *AB_ImExporterContext_GetFirstMessage(const AB_IMEXPORTER_CONTEXT *st)
719 {
720 assert(st);
721 if (st->messageList)
722 return AB_Message_List_First(st->messageList);
723 return NULL;
724 }
AB_ImExporterContext_AddMessage(AB_IMEXPORTER_CONTEXT * st,AB_MESSAGE * msg)725 void AB_ImExporterContext_AddMessage(AB_IMEXPORTER_CONTEXT *st, AB_MESSAGE *msg)
726 {
727 assert(st);
728 if (msg) {
729 if (NULL==st->messageList)
730 st->messageList=AB_Message_List_new();
731 AB_Message_List_Add(msg, st->messageList);
732 }
733 }
AB_ImExporterContext_AddTransaction(AB_IMEXPORTER_CONTEXT * st,AB_TRANSACTION * t)734 void AB_ImExporterContext_AddTransaction(AB_IMEXPORTER_CONTEXT *st, AB_TRANSACTION *t)
735 {
736 assert(st);
737 if (t) {
738 AB_IMEXPORTER_ACCOUNTINFO *ai=NULL;
739 if (NULL==st->accountInfoList) {
740 /* no account info list, nothing to search, just create the list */ st->accountInfoList=
741 AB_ImExporterAccountInfo_List_new();
742 }
743 else {
744 /* first try to get by unique account id */ if (AB_Transaction_GetUniqueAccountId(t))
745 ai=AB_ImExporterAccountInfo_List_GetByAccountId(st->accountInfoList,
746 AB_Transaction_GetUniqueAccountId(t)); /* next try by IBAN */ if (ai==NULL) {
747 const char *s;
748 s=AB_Transaction_GetLocalIban(t);
749 if (s && *s)
750 ai=AB_ImExporterAccountInfo_List_GetByIban(st->accountInfoList, s);
751 } /* then try by account number and bank code */ if (ai==NULL)
752 ai=AB_ImExporterAccountInfo_List_GetByBankCodeAndAccountNumber(st->accountInfoList, AB_Transaction_GetLocalBankCode(t),
753 AB_Transaction_GetLocalAccountNumber(t), AB_AccountType_Unknown);
754 } /* create account info if not found */ if (ai==NULL) {
755 /* create account info */ ai=AB_ImExporterAccountInfo_new();
756 AB_ImExporterAccountInfo_FillFromTransaction(ai, t);
757 AB_ImExporterAccountInfo_List_Add(ai, st->accountInfoList);
758 } /* set transaction type if none set */ if (AB_Transaction_GetType(t)<=AB_Transaction_TypeNone)
759 AB_Transaction_SetType(t, AB_Transaction_TypeStatement); /* finally add transaction */
760 AB_ImExporterAccountInfo_AddTransaction(ai, t);
761 }
762 }
763
764 /* code headers */
765
766