00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
#include "StDbXmlWriter.h"
00036
#include "StDbTable.h"
00037
00038
00039
00040
void
00041 StDbXmlWriter::streamHeader(
const char* name){
00042 *
os <<
"<StDbName>"<<name<< endl;
00043 }
00044
00045
00046
00047
void
00048 StDbXmlWriter::streamAccessor(){
00049 *
os <<
"<StDbAccessor>" << endl;
00050 }
00051
00052
00053
00054
void
00055 StDbXmlWriter::endAccessor(){
00056 *
os <<
"</StDbAccessor>" << endl;
00057 }
00058
00059
00060
00061
void
00062 StDbXmlWriter::streamTail(){
00063 *
os <<
"</StDbName>" << endl;
00064 }
00065
00066
00067
00068
void
00069 StDbXmlWriter::streamRow(
int row){
00070 *
os <<
"<TabRow>" << row << endl;
00071 }
00072
00073
00074
00075
void
00076 StDbXmlWriter::streamEndRow(){
00077 *
os <<
"</TabRow>" << endl;
00078 }
00079
00080
00081
void
00082 StDbXmlWriter::streamTableName(
const char* name){
00083 *
os <<
"<StDbTable>"<<name << endl;
00084 }
00085
00086
00087
void
00088 StDbXmlWriter::streamEndTableName(){
00089 *
os <<
"</StDbTable>"<< endl;
00090 }
00091
00092
00093
00094
void
00095 StDbXmlWriter::ioTable(
StDbTable* table){
00096
00097
char * name = table->
getName();
00098
streamTableName(name);
delete [] name;
00099
streamAccessor();
00100 table->
StreamAccessor((
typeAcceptor*)
this,
false);
00101
endAccessor();
00102
00103
int k;
00104
int nrows;
00105
int* elements = table->
getElementID(nrows);
00106
00107
if(!elements){
00108 elements =
new int[nrows];
00109
for(k=0;k<nrows;k++)elements[k]=k;
00110 }
00111
00112 table->
setRowNumber();
00113
00114
for(k=0;k<nrows;k++){
00115
streamRow(k);
00116 table->
dbStreamer((
typeAcceptor*)
this,
false);
00117
streamEndRow();
00118 }
00119
streamEndTableName();
00120 }
00121
00122
00123
00124
void
00125 StDbXmlWriter::pass(
char* name,
char*& i,
int& len){
00126 *
os <<
"<dbString> "<<name<<
" <value> "<< i <<
" </value> </dbString>" << endl;
00127 }
00128
00129
00130
00131
void
00132 StDbXmlWriter::pass(
char* name,
unsigned char& i,
int& len){
00133 *
os <<
"<dbUChar> "<<name<<
" <value> "<< (
int)i <<
" </value> </dbUChar>" << endl;
00134 }
00135
00136
00137
00138
void
00139 StDbXmlWriter::pass(
char* name,
unsigned char*& i,
int& len){
00140 *
os <<
"<dbUCharArray> " << name <<
" <length> ";
00141 *
os << len <<
" </length>" << endl;
00142 *
os <<
"<value>" << endl;
00143
00144
int icount = 0;
00145
for(
int j=0; j<len-1;j++){
00146 *
os << (
int)i[j] <<
", ";
00147 icount++;
00148
if(icount==8){
00149 *
os << endl;
00150 icount = 0;
00151 }
00152 }
00153
00154 *
os << (
int)i[len-1] << endl;
00155 *
os <<
"</value> </dbUCharArray> " << endl;
00156 }
00157
00158
00159
00160
00161
void
00162 StDbXmlWriter::pass(
char* name,
short& i,
int& len){
00163 *
os <<
"<dbShort> "<<name<<
" <value> "<< i <<
" </value> </dbShort>" << endl;
00164 }
00165
00166
00167
00168
void
00169 StDbXmlWriter::pass(
char* name,
short*& i,
int& len){
00170
00171 *
os <<
"<dbShortArray> " << name <<
" <length> ";
00172 *
os << len <<
" </length>" << endl;
00173 *
os <<
"<value>" << endl;
00174
00175
int icount = 0;
00176
for(
int j=0; j<len-1;j++){
00177 *
os << i[j] <<
", ";
00178 icount++;
00179
if(icount==8){
00180 *
os << endl;
00181 icount = 0;
00182 }
00183 }
00184
00185 *
os << i[len-1] << endl;
00186 *
os <<
"</value> </dbShortArray> " << endl;
00187 }
00188
00189
00190
00191
void
00192 StDbXmlWriter::pass(
char* name,
unsigned short& i,
int& len){
00193 *
os <<
"<dbUShort> "<<name<<
" <value> "<< i <<
" </value> </dbUShort>" << endl;
00194 }
00195
00196
00197
00198
void
00199 StDbXmlWriter::pass(
char* name,
unsigned short*& i,
int& len){
00200
00201 *
os <<
"<dbUShortArray> " << name <<
" <length> ";
00202 *
os << len <<
" </length>" << endl;
00203 *
os <<
"<value>" << endl;
00204
00205
int icount = 0;
00206
for(
int j=0; j<len-1;j++){
00207 *
os << i[j] <<
", ";
00208 icount++;
00209
if(icount==8){
00210 *
os << endl;
00211 icount = 0;
00212 }
00213 }
00214
00215 *
os << i[len-1] << endl;
00216 *
os <<
"</value> </dbUShortArray> " << endl;
00217 }
00218
00219
00220
00221
void
00222 StDbXmlWriter::pass(
char* name,
int& i,
int& len){
00223 *
os <<
"<dbInt> "<<name<<
" <value> "<< i <<
" </value> </dbInt>" << endl;
00224 }
00225
00226
00227
00228
void
00229 StDbXmlWriter::pass(
char* name,
int*& i,
int& len){
00230
00231 *
os <<
"<dbIntArray> " << name <<
" <length> ";
00232 *
os << len <<
" </length>" << endl;
00233 *
os <<
"<value>" << endl;
00234
00235
int icount = 0;
00236
for(
int j=0; j<len-1;j++){
00237 *
os << i[j] <<
", ";
00238 icount++;
00239
if(icount==8){
00240 *
os << endl;
00241 icount = 0;
00242 }
00243 }
00244
00245 *
os << i[len-1] << endl;
00246 *
os <<
"</value> </dbIntArray> " << endl;
00247 }
00248
00249
00250
00251
void
00252 StDbXmlWriter::pass(
char* name,
unsigned int& i,
int& len){
00253 *
os <<
"<dbUInt> "<<name<<
" <value> "<< i <<
" </value> </dbUInt>" << endl;
00254 }
00255
00256
00257
00258
void
00259 StDbXmlWriter::pass(
char* name,
unsigned int*& i,
int& len){
00260
00261 *
os <<
"<dbUIntArray> " << name <<
" <length> ";
00262 *
os << len <<
" </length>" << endl;
00263 *
os <<
"<value>" << endl;
00264
00265
int icount = 0;
00266
for(
int j=0; j<len-1;j++){
00267 *
os << i[j] <<
", ";
00268 icount++;
00269
if(icount==8){
00270 *
os << endl;
00271 icount = 0;
00272 }
00273 }
00274
00275 *
os << i[len-1] << endl;
00276 *
os <<
"</value> </dbUIntArray> " << endl;
00277 }
00278
00279
00280
00281
void
00282 StDbXmlWriter::pass(
char* name,
float& i,
int& len){
00283 *
os <<
"<dbFloat> "<<name<<
" <value> "<< i <<
" </value> </dbFloat>" << endl;
00284 }
00285
00286
00287
00288
void
00289 StDbXmlWriter::pass(
char* name,
float*& i,
int& len){
00290
00291 *
os <<
"<dbFloatArray> " << name <<
" <length> ";
00292 *
os << len <<
" </length>" << endl;
00293 *
os <<
"<value>" << endl;
00294
00295
int icount = 0;
00296
for(
int j=0; j<len-1;j++){
00297 *
os << i[j] <<
", ";
00298 icount++;
00299
if(icount==8){
00300 *
os << endl;
00301 icount = 0;
00302 }
00303 }
00304
00305 *
os << i[len-1] << endl;
00306 *
os <<
"</value> </dbFloatArray> " << endl;
00307 }
00308
00309
00310
00311
void
00312 StDbXmlWriter::pass(
char* name,
double& i,
int& len){
00313 *
os <<
"<dbDouble> "<<name<<
" <value> "<< i <<
" </value> </dbDouble>" << endl;
00314 }
00315
00316
00317
00318
void
00319 StDbXmlWriter::pass(
char* name,
double*& i,
int& len){
00320
00321 *
os <<
"<dbDoubleArray> " << name <<
" <length> ";
00322 *
os << len <<
" </length>" << endl;
00323 *
os <<
"<value>" << endl;
00324
00325
int icount = 0;
00326
for(
int j=0; j<len-1;j++){
00327 *
os << i[j] <<
", ";
00328 icount++;
00329
if(icount==8){
00330 *
os << endl;
00331 icount = 0;
00332 }
00333 }
00334
00335 *
os << i[len-1] << endl;
00336 *
os <<
"</value> </dbDoubleArray> " << endl;
00337 }
00338
00339
00340
void
00341 StDbXmlWriter::pass(
char* name,
long& i,
int& len){
00342 *
os <<
"<dbLong> "<<name<<
" <value> "<< i <<
" </value> </dbLong>" << endl;
00343 }
00344
00345
00346
00347
void
00348 StDbXmlWriter::pass(
char* name,
long*& i,
int& len){
00349
00350 *
os <<
"<dbLongArray> " << name <<
" <length> ";
00351 *
os << len <<
" </length>" << endl;
00352 *
os <<
"<value>" << endl;
00353
00354
int icount = 0;
00355
for(
int j=0; j<len-1;j++){
00356 *
os << i[j] <<
", ";
00357 icount++;
00358
if(icount==8){
00359 *
os << endl;
00360 icount = 0;
00361 }
00362 }
00363
00364 *
os << i[len-1] << endl;
00365 *
os <<
"</value> </dbLongArray> " << endl;
00366 }
00367
00368
00369
00370
void
00371 StDbXmlWriter::pass(
char* name,
unsigned long& i,
int& len){
00372 *
os <<
"<dbULong> "<<name<<
" <value> "<< i <<
" </value> </dbULong>" << endl;
00373 }
00374
void
00375 StDbXmlWriter::pass(
char* name,
long long& i,
int& len){
00376 *
os <<
"<dbLongLong> "<<name<<
" <value> "<< i <<
" </value> </dbLongLong>" << endl;
00377 }
00378
00379
00380
00381
void
00382 StDbXmlWriter::pass(
char* name,
unsigned long*& i,
int& len){
00383
00384 *
os <<
"<dbULongArray> " << name <<
" <length> ";
00385 *
os << len <<
" </length>" << endl;
00386 *
os <<
"<value>" << endl;
00387
00388
int icount = 0;
00389
for(
int j=0; j<len-1;j++){
00390 *
os << i[j] <<
", ";
00391 icount++;
00392
if(icount==8){
00393 *
os << endl;
00394 icount = 0;
00395 }
00396 }
00397
00398 *
os << i[len-1] << endl;
00399 *
os <<
"</value> </dbULongArray> " << endl;
00400 }
00401
00402
00403
void
00404 StDbXmlWriter::pass(
char* name,
long long*& i,
int& len){
00405
00406 *
os <<
"<dbLongLongArray> " << name <<
" <length> ";
00407 *
os << len <<
" </length>" << endl;
00408 *
os <<
"<value>" << endl;
00409
00410
int icount = 0;
00411
for(
int j=0; j<len-1;j++){
00412 *
os << i[j] <<
", ";
00413 icount++;
00414
if(icount==8){
00415 *
os << endl;
00416 icount = 0;
00417 }
00418 }
00419
00420 *
os << i[len-1] << endl;
00421 *
os <<
"</value> </dbLongLongArray> " << endl;
00422 }
00423
00424
00425
00426
00427
00428
00429
00430
00431
00432
00433
00434
00435
00436