Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

StDbXmlWriter.cc

Go to the documentation of this file.
00001 /*************************************************************************** 00002 * 00003 * $Id: StDbXmlWriter.cc,v 1.7 2001/10/24 04:05:20 porter Exp $ 00004 * 00005 * Author: R. Jeff Porter 00006 *************************************************************************** 00007 * 00008 * Description: implement typeAcceptor for WRITING XML files of DB-tables 00009 * 00010 *************************************************************************** 00011 * 00012 * $Log: StDbXmlWriter.cc,v $ 00013 * Revision 1.7 2001/10/24 04:05:20 porter 00014 * added long long type to I/O and got rid of obsolete dataIndex table 00015 * 00016 * Revision 1.6 2000/01/10 20:37:55 porter 00017 * expanded functionality based on planned additions or feedback from Online work. 00018 * update includes: 00019 * 1. basis for real transaction model with roll-back 00020 * 2. limited SQL access via the manager for run-log & tagDb 00021 * 3. balance obtained between enumerated & string access to databases 00022 * 4. 3-levels of diagnostic output: Quiet, Normal, Verbose 00023 * 5. restructured Node model for better XML support 00024 * 00025 * Revision 1.5 1999/12/03 17:03:24 porter 00026 * added multi-row support for the Xml reader & writer 00027 * 00028 * Revision 1.4 1999/09/30 02:06:12 porter 00029 * add StDbTime to better handle timestamps, modify SQL content (mysqlAccessor) 00030 * allow multiple rows (StDbTable), & Added the comment sections at top of 00031 * each header and src file 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(); // set to 0 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

Generated on Thu Aug 24 14:45:28 2006 for Doxygen by doxygen 1.3.7