-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxbioconn.cpp
126 lines (107 loc) · 5.06 KB
/
xbioconn.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/* gSAFE - LIB
general Sql dAtabase FrontEnd
http://hyperprog.com/gsafe/
(C) 2005-2025 Péter Deák (hyper80@gmail.com)
License: Apache 2.0
XBase Connection to gDAFE datelib (based on XBase Import/Export lib)
xbioconn.cpp
*/
/*
* WARNING: This file's is depends on xbio.h/xbio.cpp which requires XBase library
* (http://linux.techass.com/projects/xdb/)
* If you don't want to use the XBase support just remove
* the xbio* files from your project, or undefine (remove) the ENABLE_XBASE_SUPPORT macro!
*/
#include "xbioconn.h"
#include "dconsole.h"
#ifdef ENABLE_XBASE_SUPPORT
HXBaseRecordSync::HXBaseRecordSync(void)
{
fieldconn.clear();
}
QString HXBaseRecordSync::className()
{
return "HXBaseRecordSync";
}
HXBaseRecordSync::~HXBaseRecordSync(void)
{
fieldconn.clear();
}
void HXBaseRecordSync::assign(QString htablefieldsqlname, QString xbasefieldname)
{
fieldconn.push_back(HFieldPairs(htablefieldsqlname,xbasefieldname));
}
void HXBaseRecordSync::clearAssigns(void)
{
fieldconn.clear();
}
int HXBaseRecordSync::syncHRecordToXBase(HRecord *record,HXBaseFileWriter *dbf)
{
QList<HFieldPairs>::iterator i;
for(i=fieldconn.begin();i!=fieldconn.end();++i)
{
QString gsafetype;
HField *d;
d = record->fieldByName(i->gsafefieldname);
if(d == NULL)
{
sdebug(QString("ERROR in HXBaseRecordSync::syncHTableToXBase :\n"
"Can't find field in HRecord with name \"%1\" (Passed with assign) SKIPPING!")
.arg(i->gsafefieldname));
continue;
}
gsafetype = d->className();
if(gsafetype == "HStaticField")
continue;
if(gsafetype == "HNKeyField") dbf->setFieldDecimal(i->xbasefieldname, d->strValue().toInt() );
if(gsafetype == "HSKeyField") dbf->setFieldStr(i->xbasefieldname, d->strValue() );
if(gsafetype == "HSmallTextField") dbf->setFieldStr(i->xbasefieldname, d->strValue() );
if(gsafetype == "HLargeTextField") dbf->setFieldStr(i->xbasefieldname, d->strValue() );
if(gsafetype == "HNumberField") dbf->setFieldDecimal(i->xbasefieldname, ((HNumberField *)d)->value() );
if(gsafetype == "HFloatingField") dbf->setFieldFloat(i->xbasefieldname, ((HFloatingField *)d)->value() );
if(gsafetype == "HDateField") dbf->setFieldDate(i->xbasefieldname, ((HDateField *)d)->value() );
if(gsafetype == "HTimestampField") dbf->setFieldStr(i->xbasefieldname, d->strValue() );
if(gsafetype == "HCheckField") dbf->setFieldBool(i->xbasefieldname, ((HCheckField *)d)->value() );
if(gsafetype == "HTxtSelectField") dbf->setFieldStr(i->xbasefieldname, d->strValue() );
if(gsafetype == "HNumSelectField") dbf->setFieldDecimal(i->xbasefieldname, d->strValue().toInt() );
if(gsafetype == "HSqlNChooseField") dbf->setFieldDecimal(i->xbasefieldname, d->strValue().toInt() );
if(gsafetype == "HSqlSChooseField") dbf->setFieldStr(i->xbasefieldname, d->strValue() );
}
return 0;
}
int HXBaseRecordSync::syncXBaseToHRecord(HXBaseFileReader *dbf, HRecord *record)
{
QList<HFieldPairs>::iterator i;
for(i=fieldconn.begin();i!=fieldconn.end();++i)
{
QString gsafetype;
HField *d;
d = record->fieldByName(i->gsafefieldname);
if(d == NULL)
{
sdebug(QString("ERROR in HXBaseRecordSync::syncXBaseToHTable :\n"
"Can't find field in HRecord with name \"%1\" (Passed with assign) SKIPPING!")
.arg(i->gsafefieldname));
continue;
}
gsafetype = d->className();
if(gsafetype == "HStaticField")
continue;
if(gsafetype == "HNKeyField") d->setStrValue( dbf->getFieldStr(i->xbasefieldname) );
if(gsafetype == "HSKeyField") d->setStrValue( dbf->getFieldStr(i->xbasefieldname) );
if(gsafetype == "HSmallTextField") d->setStrValue( dbf->getFieldStr(i->xbasefieldname) );
if(gsafetype == "HLargeTextField") d->setStrValue( dbf->getFieldStr(i->xbasefieldname) );
if(gsafetype == "HNumberField") ((HNumberField *)d)->setValue( (int) dbf->getFieldDecimal(i->xbasefieldname) );
if(gsafetype == "HFloatingField") ((HFloatingField *)d)->setValue( dbf->getFieldFloat(i->xbasefieldname) );
if(gsafetype == "HDateField") ((HDateField *)d)->setValue( dbf->getFieldDate(i->xbasefieldname) );
if(gsafetype == "HTimestampField") d->setStrValue( dbf->getFieldStr(i->xbasefieldname) );
if(gsafetype == "HCheckField") ((HCheckField *)d)->setValue( dbf->getFieldBool(i->xbasefieldname) );
if(gsafetype == "HTxtSelectField") d->setStrValue( dbf->getFieldStr(i->xbasefieldname) );
if(gsafetype == "HNumSelectField") d->setStrValue( QString("%1").arg(dbf->getFieldDecimal(i->xbasefieldname)) );
if(gsafetype == "HSqlNChooseField") d->setStrValue( QString("%1").arg(dbf->getFieldDecimal(i->xbasefieldname)) );
if(gsafetype == "HSqlSChooseField") d->setStrValue( dbf->getFieldStr(i->xbasefieldname) );
}
return 0;
}
#endif // ENABLE_XBASE_SUPPORT
//end code.