Changeset 1162:3d7c2150b7af
- Timestamp:
- 02/22/09 14:15:38 (3 years ago)
- Branch:
- libdodo
- Files:
-
- 74 edited
-
trunk/src/cgiBasicExchange.cc (modified) (1 diff)
-
trunk/src/cgiBasicServer.cc (modified) (1 diff)
-
trunk/src/cgiDialogue.cc (modified) (23 diffs)
-
trunk/src/cgiFastExchange.cc (modified) (8 diffs)
-
trunk/src/cgiFastServer.cc (modified) (4 diffs)
-
trunk/src/dataBaseAccumulator.cc (modified) (20 diffs)
-
trunk/src/dataBaseMysql.cc (modified) (15 diffs)
-
trunk/src/dataBasePostgresql.cc (modified) (17 diffs)
-
trunk/src/dataBaseSqlConstructor.cc (modified) (15 diffs)
-
trunk/src/dataBaseSqlite.cc (modified) (17 diffs)
-
trunk/src/dataFormatJsonNode.cc (modified) (16 diffs)
-
trunk/src/dataFormatJsonProcessor.cc (modified) (6 diffs)
-
trunk/src/dataFormatXmlNode.cc (modified) (6 diffs)
-
trunk/src/dataFormatXmlProcessor.cc (modified) (19 diffs)
-
trunk/src/dataMemoryShared.cc (modified) (7 diffs)
-
trunk/src/dataTplProcessor.cc (modified) (28 diffs)
-
trunk/src/exceptionBasic.cc (modified) (12 diffs)
-
trunk/src/graphicsDraw.cc (modified) (8 diffs)
-
trunk/src/graphicsImage.cc (modified) (20 diffs)
-
trunk/src/graphicsTransform.cc (modified) (4 diffs)
-
trunk/src/ioChannel.cc (modified) (4 diffs)
-
trunk/src/ioEvent.cc (modified) (6 diffs)
-
trunk/src/ioFileFifo.cc (modified) (16 diffs)
-
trunk/src/ioFileRegular.cc (modified) (16 diffs)
-
trunk/src/ioFileTemp.cc (modified) (12 diffs)
-
trunk/src/ioNetworkClient.cc (modified) (6 diffs)
-
trunk/src/ioNetworkConnection.cc (modified) (18 diffs)
-
trunk/src/ioNetworkExchange.cc (modified) (10 diffs)
-
trunk/src/ioNetworkHttp.cc (modified) (28 diffs)
-
trunk/src/ioNetworkServer.cc (modified) (10 diffs)
-
trunk/src/ioNetworkSslClient.cc (modified) (10 diffs)
-
trunk/src/ioNetworkSslExchange.cc (modified) (8 diffs)
-
trunk/src/ioNetworkSslServer.cc (modified) (12 diffs)
-
trunk/src/ioPipe.cc (modified) (13 diffs)
-
trunk/src/ioSsl.cc (modified) (1 diff)
-
trunk/src/ioStdio.cc (modified) (5 diffs)
-
trunk/src/ioString.cc (modified) (10 diffs)
-
trunk/src/pcProcessCollection.cc (modified) (21 diffs)
-
trunk/src/pcSyncProcessDataCollection.cc (modified) (6 diffs)
-
trunk/src/pcSyncProcessDataSingle.cc (modified) (7 diffs)
-
trunk/src/pcSyncProcessSection.cc (modified) (5 diffs)
-
trunk/src/pcSyncThreadDataCollection.cc (modified) (6 diffs)
-
trunk/src/pcSyncThreadDataSingle.cc (modified) (4 diffs)
-
trunk/src/pcSyncThreadSection.cc (modified) (2 diffs)
-
trunk/src/pcThreadCollection.cc (modified) (23 diffs)
-
trunk/src/rpcCgiServer.cc (modified) (2 diffs)
-
trunk/src/rpcClient.cc (modified) (1 diff)
-
trunk/src/rpcHttpClient.cc (modified) (2 diffs)
-
trunk/src/rpcJsonClient.cc (modified) (5 diffs)
-
trunk/src/rpcJsonMethod.cc (modified) (2 diffs)
-
trunk/src/rpcJsonResponse.cc (modified) (2 diffs)
-
trunk/src/rpcJsonServer.cc (modified) (4 diffs)
-
trunk/src/rpcJsonValue.cc (modified) (4 diffs)
-
trunk/src/rpcMethod.cc (modified) (3 diffs)
-
trunk/src/rpcResponse.cc (modified) (7 diffs)
-
trunk/src/rpcServer.cc (modified) (5 diffs)
-
trunk/src/rpcValue.cc (modified) (16 diffs)
-
trunk/src/rpcXmlClient.cc (modified) (4 diffs)
-
trunk/src/rpcXmlMethod.cc (modified) (2 diffs)
-
trunk/src/rpcXmlResponse.cc (modified) (2 diffs)
-
trunk/src/rpcXmlServer.cc (modified) (4 diffs)
-
trunk/src/rpcXmlValue.cc (modified) (3 diffs)
-
trunk/src/toolsCode.cc (modified) (50 diffs)
-
trunk/src/toolsFilesystem.cc (modified) (36 diffs)
-
trunk/src/toolsLibrary.cc (modified) (4 diffs)
-
trunk/src/toolsLogger.cc (modified) (4 diffs)
-
trunk/src/toolsMisc.cc (modified) (15 diffs)
-
trunk/src/toolsNetwork.cc (modified) (12 diffs)
-
trunk/src/toolsOs.cc (modified) (48 diffs)
-
trunk/src/toolsRegexp.cc (modified) (6 diffs)
-
trunk/src/toolsString.cc (modified) (30 diffs)
-
trunk/src/toolsTime.cc (modified) (9 diffs)
-
trunk/src/xexec.cc (modified) (33 diffs)
-
uncrustify/.uncrustify.cfg (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/cgiBasicExchange.cc
r1160 r1162 55 55 //------------------------------------------------------------------- 56 56 57 char *exchange::getenv(const char *buf) 57 char * 58 exchange::getenv(const char *buf) 58 59 { 59 60 return ::getenv(buf); -
trunk/src/cgiBasicServer.cc
r1160 r1162 50 50 //------------------------------------------------------------------- 51 51 52 void server::serve(serverHandler func) 52 void 53 server::serve(serverHandler func) 53 54 { 54 55 exchange cSTD; -
trunk/src/cgiDialogue.cc
r1160 r1162 236 236 //------------------------------------------------------------------- 237 237 238 dialogue::operator exchange*() 238 dialogue::operator exchange 239 *() 239 240 { 240 241 printHeaders(); … … 245 246 //------------------------------------------------------------------- 246 247 247 void dialogue::flush() 248 void 249 dialogue::flush() 248 250 { 249 251 cgiIO.flush(); … … 252 254 //------------------------------------------------------------------- 253 255 254 void dialogue::printStream(const dodoString &buf) 256 void 257 dialogue::printStream(const dodoString &buf) 255 258 { 256 259 printHeaders(); … … 261 264 //------------------------------------------------------------------- 262 265 263 dodoString dialogue::getCharset() 266 dodoString 267 dialogue::getCharset() 264 268 { 265 269 unsigned long temp; … … 280 284 } 281 285 282 void dialogue::print(const dodoString &buf) 286 void 287 dialogue::print(const dodoString &buf) 283 288 { 284 289 printHeaders(); … … 290 295 //------------------------------------------------------------------- 291 296 292 void dialogue::makeAuth() 297 void 298 dialogue::makeAuth() 293 299 { 294 300 dodoString &httpAuthorization = ENVIRONMENT[CGI_ENVIRONMENT_HTTPAUTHORIZATION]; … … 399 405 //------------------------------------------------------------------- 400 406 401 void dialogue::requestAuthentication(const dodoString &realm, 402 short type) 407 void 408 dialogue::requestAuthentication(const dodoString &realm, 409 short type) 403 410 { 404 411 returnCode = CGI_STATUSCODE_UNAUTHORIZED; … … 421 428 //------------------------------------------------------------------- 422 429 423 __cgiAuthInfo dialogue::getAuthenticationInfo() 430 __cgiAuthInfo 431 dialogue::getAuthenticationInfo() 424 432 { 425 433 __cgiAuthInfo info = … … 433 441 //------------------------------------------------------------------- 434 442 435 bool dialogue::isAuthenticated(const dodoString &user, 436 const dodoString &password) 443 bool 444 dialogue::isAuthenticated(const dodoString &user, 445 const dodoString &password) 437 446 { 438 447 if (authInfo.type == CGI_AUTHTYPE_BASIC) … … 492 501 //------------------------------------------------------------------- 493 502 494 void dialogue::cleanTmp() 503 void 504 dialogue::cleanTmp() 495 505 { 496 506 dodoMap<dodoString, __cgiFile>::iterator i(FILES.begin()), j(FILES.end()); … … 506 516 //------------------------------------------------------------------- 507 517 508 void dialogue::detectMethod() 518 void 519 dialogue::detectMethod() 509 520 { 510 521 if (tools::string::iequal(ENVIRONMENT[CGI_ENVIRONMENT_REQUESTMETHOD], "GET")) … … 527 538 //------------------------------------------------------------------- 528 539 529 int dialogue::getMethod() const 540 int 541 dialogue::getMethod() const 530 542 { 531 543 return method; … … 534 546 //------------------------------------------------------------------- 535 547 536 void dialogue::make(dodoStringMap &val, 537 const dodoString &string, 538 const char *delim) 548 void 549 dialogue::make(dodoStringMap &val, 550 const dodoString &string, 551 const char *delim) 539 552 { 540 553 dodoStringArray getPair = tools::misc::split(tools::code::decodeUrl(string), delim); … … 556 569 //------------------------------------------------------------------- 557 570 558 void dialogue::makeEnv() 571 void 572 dialogue::makeEnv() 559 573 { 560 574 char *env; … … 612 626 //------------------------------------------------------------------- 613 627 614 void dialogue::initHeaders(dodoMap<short, dodoString> &headers) 628 void 629 dialogue::initHeaders(dodoMap<short, dodoString> &headers) 615 630 { 616 631 if (headers.size() > 0) … … 627 642 //------------------------------------------------------------------- 628 643 629 void dialogue::setResponseStatus(short code) 644 void 645 dialogue::setResponseStatus(short code) 630 646 { 631 647 if (code <= CGI_STATUSCODE_HTTPVERSIONNOTSUPPORTED) … … 641 657 //------------------------------------------------------------------- 642 658 643 void dialogue::printHeaders() const 659 void 660 dialogue::printHeaders() const 644 661 { 645 662 if (headersPrinted) … … 691 708 //------------------------------------------------------------------- 692 709 693 void dialogue::makeContent() 710 void 711 dialogue::makeContent() 694 712 { 695 713 unsigned long inSize = tools::string::stringToUL(ENVIRONMENT[CGI_ENVIRONMENT_CONTENTLENGTH]); … … 707 725 //------------------------------------------------------------------- 708 726 709 void dialogue::makePost() 727 void 728 dialogue::makePost() 710 729 { 711 730 if (content.size() == 0) … … 843 862 switch (errno) 844 863 { 845 case EACCES:846 case EISDIR:847 848 file.error = CGI_POSTFILEERR_ACCESS_DENY;849 850 break;851 852 case ENAMETOOLONG:853 case ENOTDIR:854 855 file.error = CGI_POSTFILEERR_BAD_FILE_NAME;856 857 break;858 859 case ENOMEM:860 861 file.error = CGI_POSTFILEERR_NO_SPACE;862 863 break;864 865 default:866 867 throw exception::basic(exception::ERRMODULE_CGIDIALOGUE, DIALOGUEEX_MAKEPOST, exception::ERRNO_ERRNO, errno, strerror(errno), __LINE__, __FILE__);864 case EACCES: 865 case EISDIR: 866 867 file.error = CGI_POSTFILEERR_ACCESS_DENY; 868 869 break; 870 871 case ENAMETOOLONG: 872 case ENOTDIR: 873 874 file.error = CGI_POSTFILEERR_BAD_FILE_NAME; 875 876 break; 877 878 case ENOMEM: 879 880 file.error = CGI_POSTFILEERR_NO_SPACE; 881 882 break; 883 884 default: 885 886 throw exception::basic(exception::ERRMODULE_CGIDIALOGUE, DIALOGUEEX_MAKEPOST, exception::ERRNO_ERRNO, errno, strerror(errno), __LINE__, __FILE__); 868 887 } 869 888 } … … 940 959 //------------------------------------------------------------------- 941 960 942 dodoString dialogue::request(const dodoString &varName) 961 dodoString 962 dialogue::request(const dodoString &varName) 943 963 { 944 964 dodoStringMap::iterator item = GET.find(varName); … … 959 979 //------------------------------------------------------------------- 960 980 961 void dialogue::setCookie(const dodoString &name, 962 const dodoString &value, 963 const dodoString &expires, 964 const dodoString &path, 965 const dodoString &domain, 966 bool secure) 981 void 982 dialogue::setCookie(const dodoString &name, 983 const dodoString &value, 984 const dodoString &expires, 985 const dodoString &path, 986 const dodoString &domain, 987 bool secure) 967 988 { 968 989 __cgiCookie temp(secure); … … 978 999 //------------------------------------------------------------------- 979 1000 980 void dialogue::setCookie(const __cgiCookie &cookie) 1001 void 1002 dialogue::setCookie(const __cgiCookie &cookie) 981 1003 { 982 1004 cookies.push_back(cookie); -
trunk/src/cgiFastExchange.cc
r1160 r1162 57 57 //------------------------------------------------------------------- 58 58 59 void exchange::flush() 59 void 60 exchange::flush() 60 61 { 61 62 if (FCGX_FFlush(request->out) == -1) … … 67 68 //------------------------------------------------------------------- 68 69 69 char *exchange::getenv(const char *buf) 70 char * 71 exchange::getenv(const char *buf) 70 72 { 71 73 return FCGX_GetParam(buf, request->envp); … … 74 76 //------------------------------------------------------------------- 75 77 76 int exchange::getInDescriptor() const 78 int 79 exchange::getInDescriptor() const 77 80 { 78 81 return -1; … … 81 84 //------------------------------------------------------------------- 82 85 83 int exchange::getOutDescriptor() const 86 int 87 exchange::getOutDescriptor() const 84 88 { 85 89 return -1; … … 88 92 //------------------------------------------------------------------- 89 93 90 void exchange::_read(char * const a_data) 94 void 95 exchange::_read(char * const a_data) 91 96 { 92 97 memset(a_data, '\0', inSize); … … 97 102 //------------------------------------------------------------------- 98 103 99 void exchange::_write(const char *const buf) 104 void 105 exchange::_write(const char *const buf) 100 106 { 101 107 if (FCGX_PutStr(buf, outSize, request->out) == -1) … … 107 113 //------------------------------------------------------------------- 108 114 109 void exchange::_writeStream(const char * const data) 115 void 116 exchange::_writeStream(const char * const data) 110 117 { 111 118 unsigned long _outSize = outSize; … … 134 141 //------------------------------------------------------------------- 135 142 136 unsigned long exchange::_readStream(char * const data) 143 unsigned long 144 exchange::_readStream(char * const data) 137 145 { 138 146 unsigned long _inSize = inSize++; -
trunk/src/cgiFastServer.cc
r1160 r1162 54 54 //------------------------------------------------------------------- 55 55 56 void dummyStackThread(dodo::cgi::exchange &data) 56 void 57 dummyStackThread(dodo::cgi::exchange &data) 57 58 { 58 59 } … … 116 117 #ifdef PTHREAD_EXT 117 118 118 void *server::stackThread(void *data) 119 void * 120 server::stackThread(void *data) 119 121 { 120 122 FCGX_Request request; … … 164 166 //------------------------------------------------------------------- 165 167 166 void server::serve(serverHandler func) 168 void 169 server::serve(serverHandler func) 167 170 { 168 171 if (!isFastCgi()) … … 228 231 //------------------------------------------------------------------- 229 232 230 bool server::isFastCgi() 233 bool 234 server::isFastCgi() 231 235 { 232 236 return !FCGX_IsCGI(); -
trunk/src/dataBaseAccumulator.cc
r1160 r1162 63 63 //------------------------------------------------------------------- 64 64 65 void accumulator::callFunction(const dodoString &name, 66 const dodoStringArray &arguments, 67 const dodoString &as) 65 void 66 accumulator::callFunction(const dodoString &name, 67 const dodoStringArray &arguments, 68 const dodoString &as) 68 69 { 69 70 collectedData.qType = ACCUMULATOR_REQUEST_CALL_FUNCTION; … … 87 88 //------------------------------------------------------------------- 88 89 89 void accumulator::callProcedure(const dodoString &name, 90 const dodoStringArray &arguments) 90 void 91 accumulator::callProcedure(const dodoString &name, 92 const dodoStringArray &arguments) 91 93 { 92 94 collectedData.qType = ACCUMULATOR_REQUEST_CALL_PROCEDURE; … … 102 104 //------------------------------------------------------------------- 103 105 104 void accumulator::select(const dodoString &a_table, 105 const dodoStringArray &a_fields, 106 const dodoString &a_where) 106 void 107 accumulator::select(const dodoString &a_table, 108 const dodoStringArray &a_fields, 109 const dodoString &a_where) 107 110 { 108 111 collectedData.qType = ACCUMULATOR_REQUEST_SELECT; … … 126 129 //------------------------------------------------------------------- 127 130 128 void accumulator::selectAll(const dodoString &a_table, 129 const dodoString &a_where) 131 void 132 accumulator::selectAll(const dodoString &a_table, 133 const dodoString &a_where) 130 134 { 131 135 collectedData.qType = ACCUMULATOR_REQUEST_SELECT; … … 150 154 //------------------------------------------------------------------- 151 155 152 void accumulator::insert(const dodoString &a_table, 153 const dodoStringMap &a_fields) 156 void 157 accumulator::insert(const dodoString &a_table, 158 const dodoStringMap &a_fields) 154 159 { 155 160 collectedData.qType = ACCUMULATOR_REQUEST_INSERT; … … 177 182 //------------------------------------------------------------------- 178 183 179 void accumulator::insert(const dodoString &a_table, 180 const dodoArray<dodoStringMap> &a_fields) 184 void 185 accumulator::insert(const dodoString &a_table, 186 const dodoArray<dodoStringMap> &a_fields) 181 187 { 182 188 collectedData.qType = ACCUMULATOR_REQUEST_INSERT; … … 217 223 //------------------------------------------------------------------- 218 224 219 void accumulator::insert(const dodoString &a_table, 220 const dodoStringArray &a_values, 221 const dodoStringArray &a_fields) 225 void 226 accumulator::insert(const dodoString &a_table, 227 const dodoStringArray &a_values, 228 const dodoStringArray &a_fields) 222 229 { 223 230 collectedData.qType = ACCUMULATOR_REQUEST_INSERT; … … 237 244 //------------------------------------------------------------------- 238 245 239 void accumulator::insert(const dodoString &a_table, 240 const dodoArray<dodoStringArray> &a_values, 241 const dodoStringArray &a_fields) 246 void 247 accumulator::insert(const dodoString &a_table, 248 const dodoArray<dodoStringArray> &a_values, 249 const dodoStringArray &a_fields) 242 250 { 243 251 collectedData.qType = ACCUMULATOR_REQUEST_INSERT; … … 259 267 //------------------------------------------------------------------- 260 268 261 void accumulator::insertSelect(const dodoString &a_tableTo, 262 const dodoString &a_tableFrom, 263 const dodoStringArray &a_fieldsTo, 264 const dodoStringArray &a_fieldsFrom, 265 const dodoString &a_where) 269 void 270 accumulator::insertSelect(const dodoString &a_tableTo, 271 const dodoString &a_tableFrom, 272 const dodoStringArray &a_fieldsTo, 273 const dodoStringArray &a_fieldsFrom, 274 const dodoString &a_where) 266 275 { 267 276 collectedData.qType = ACCUMULATOR_REQUEST_INSERT_SELECT; … … 290 299 //------------------------------------------------------------------- 291 300 292 void accumulator::update(const dodoString &a_table, 293 const dodoStringMap &a_fields, 294 const dodoString &a_where) 301 void 302 accumulator::update(const dodoString &a_table, 303 const dodoStringMap &a_fields, 304 const dodoString &a_where) 295 305 { 296 306 collectedData.qType = ACCUMULATOR_REQUEST_UPDATE; … … 327 337 //------------------------------------------------------------------- 328 338 329 void accumulator::update(const dodoString &a_table, 330 const dodoStringArray &a_values, 331 const dodoStringArray &a_fields, 332 const dodoString &a_where) 339 void 340 accumulator::update(const dodoString &a_table, 341 const dodoStringArray &a_values, 342 const dodoStringArray &a_fields, 343 const dodoString &a_where) 333 344 { 334 345 collectedData.qType = ACCUMULATOR_REQUEST_UPDATE; … … 356 367 //------------------------------------------------------------------- 357 368 358 void accumulator::del(const dodoString &a_table, 359 const dodoString &a_where) 369 void 370 accumulator::del(const dodoString &a_table, 371 const dodoString &a_where) 360 372 { 361 373 collectedData.qType = ACCUMULATOR_REQUEST_DELETE; … … 380 392 //------------------------------------------------------------------- 381 393 382 void accumulator::subquery(const dodoStringArray &sub, 383 int type) 394 void 395 accumulator::subquery(const dodoStringArray &sub, 396 int type) 384 397 { 385 398 collectedData.qType = type; … … 390 403 //------------------------------------------------------------------- 391 404 392 void accumulator::limit(unsigned int a_number) 405 void 406 accumulator::limit(unsigned int a_number) 393 407 { 394 408 addFlag(collectedData.qShift, 1 << ACCUMULATOR_ADDREQUEST_LIMIT); … … 398 412 //------------------------------------------------------------------- 399 413 400 void accumulator::offset(unsigned int a_number) 414 void 415 accumulator::offset(unsigned int a_number) 401 416 { 402 417 addFlag(collectedData.qShift, 1 << ACCUMULATOR_ADDREQUEST_OFFSET); … … 407 422 //------------------------------------------------------------------- 408 423 409 void accumulator::order(const dodoString &order) 424 void 425 accumulator::order(const dodoString &order) 410 426 { 411 427 collectedData.order = order; … … 416 432 //------------------------------------------------------------------- 417 433 418 void accumulator::group(const dodoString &group) 434 void 435 accumulator::group(const dodoString &group) 419 436 { 420 437 collectedData.group = group; … … 425 442 //------------------------------------------------------------------- 426 443 427 void accumulator::having(const dodoString &having) 444 void 445 accumulator::having(const dodoString &having) 428 446 { 429 447 collectedData.having = having; … … 434 452 //------------------------------------------------------------------- 435 453 436 void accumulator::join(const dodoString &table, 437 int type, 438 const dodoString &condition) 454 void 455 accumulator::join(const dodoString &table, 456 int type, 457 const dodoString &condition) 439 458 { 440 459 collectedData.joinTables.push_back(table); … … 447 466 //------------------------------------------------------------------- 448 467 449 void accumulator::cleanCollected() 468 void 469 accumulator::cleanCollected() 450 470 { 451 471 collectedData.qType = -1; -
trunk/src/dataBaseMysql.cc
r1160 r1162 112 112 //------------------------------------------------------------------- 113 113 114 void mysql::connectSettings(unsigned long a_type, 115 const __mysqlSslOptions &options) 114 void 115 mysql::connectSettings(unsigned long a_type, 116 const __mysqlSslOptions &options) 116 117 { 117 118 if (mysqlHandle == NULL) … … 135 136 //------------------------------------------------------------------- 136 137 137 void mysql::connect(const __connectionInfo &info) 138 void 139 mysql::connect(const __connectionInfo &info) 138 140 { 139 141 collectedData.dbInfo = info; … … 189 191 //------------------------------------------------------------------- 190 192 191 void mysql::disconnect() 193 void 194 mysql::disconnect() 192 195 { 193 196 if (mysqlHandle != NULL) … … 216 219 //------------------------------------------------------------------- 217 220 218 dodoArray<dodo::dodoStringArray>mysql::fetchRows() const 221 dodoArray<dodo::dodoStringArray> 222 mysql::fetchRows() const 219 223 { 220 224 if (mysqlHandle == NULL) … … 283 287 //------------------------------------------------------------------- 284 288 285 dodo::dodoStringArray mysql::fetchFields() const 289 dodo::dodoStringArray 290 mysql::fetchFields() const 286 291 { 287 292 if (mysqlHandle == NULL) … … 325 330 //------------------------------------------------------------------- 326 331 327 __tuples mysql::fetch() const 332 __tuples 333 mysql::fetch() const 328 334 { 329 335 return __tuples(fetchRows(), fetchFields()); … … 332 338 //------------------------------------------------------------------- 333 339 334 unsigned int mysql::rowsCount() const 340 unsigned int 341 mysql::rowsCount() const 335 342 { 336 343 if (mysqlHandle == NULL) … … 351 358 //------------------------------------------------------------------- 352 359 353 unsigned int mysql::fieldsCount() const 360 unsigned int 361 mysql::fieldsCount() const 354 362 { 355 363 if (mysqlHandle == NULL) … … 370 378 //------------------------------------------------------------------- 371 379 372 unsigned int mysql::affectedRowsCount() const 380 unsigned int 381 mysql::affectedRowsCount() const 373 382 { 374 383 if (mysqlHandle == NULL) … … 389 398 //------------------------------------------------------------------- 390 399 391 void mysql::getFieldsTypes(const dodoString &table) 400 void 401 mysql::getFieldsTypes(const dodoString &table) 392 402 { 393 403 if (mysqlHandle == NULL) … … 495 505 //------------------------------------------------------------------- 496 506 497 void mysql::exec(const dodoString &query, 498 bool result) 507 void 508 mysql::exec(const dodoString &query, 509 bool result) 499 510 { 500 511 if (mysqlHandle == NULL) … … 562 573 //------------------------------------------------------------------- 563 574 564 void mysql::setCharset(const dodoString &charset) 575 void 576 mysql::setCharset(const dodoString &charset) 565 577 { 566 578 if (mysqlHandle == NULL) … … 574 586 //------------------------------------------------------------------- 575 587 576 void mysql::setConnectTimeout(unsigned int time) 588 void 589 mysql::setConnectTimeout(unsigned int time) 577 590 { 578 591 if (mysqlHandle == NULL) … … 586 599 //------------------------------------------------------------------- 587 600 588 dodoString mysql::getCharset() const 601 dodoString 602 mysql::getCharset() const 589 603 { 590 604 if (mysqlHandle == NULL) … … 598 612 //------------------------------------------------------------------- 599 613 600 dodo::dodoStringMapArray mysql::fetchFieldsToRows() const 614 dodo::dodoStringMapArray 615 mysql::fetchFieldsToRows() const 601 616 { 602 617 if (mysqlHandle == NULL) -
trunk/src/dataBasePostgresql.cc
r1160 r1162 146 146 //------------------------------------------------------------------- 147 147 148 void postgresql::connect(const __connectionInfo &info) 148 void 149 postgresql::connect(const __connectionInfo &info) 149 150 { 150 151 collectedData.dbInfo = info; … … 193 194 //------------------------------------------------------------------- 194 195 195 void postgresql::disconnect() 196 void 197 postgresql::disconnect() 196 198 { 197 199 if (pgHandle != NULL) … … 220 222 //------------------------------------------------------------------- 221 223 222 dodoArray<dodo::dodoStringArray>postgresql::fetchRows() const 224 dodoArray<dodo::dodoStringArray> 225 postgresql::fetchRows() const 223 226 { 224 227 if (pgHandle == NULL) … … 281 284 //------------------------------------------------------------------- 282 285 283 dodo::dodoStringArray postgresql::fetchFields() const 286 dodo::dodoStringArray 287 postgresql::fetchFields() const 284 288 { 285 289 if (pgHandle == NULL) … … 320 324 //------------------------------------------------------------------- 321 325 322 __tuples postgresql::fetch() const 326 __tuples 327 postgresql::fetch() const 323 328 { 324 329 return __tuples(fetchRows(), fetchFields()); … … 327 332 //------------------------------------------------------------------- 328 333 329 unsigned int postgresql::rowsCount() const 334 unsigned int 335 postgresql::rowsCount() const 330 336 { 331 337 if (pgHandle == NULL) … … 346 352 //------------------------------------------------------------------- 347 353 348 unsigned int postgresql::fieldsCount() const 354 unsigned int 355 postgresql::fieldsCount() const 349 356 { 350 357 if (pgHandle == NULL) … … 365 372 //------------------------------------------------------------------- 366 373 367 unsigned int postgresql::affectedRowsCount() const 374 unsigned int 375 postgresql::affectedRowsCount() const 368 376 { 369 377 if (pgHandle == NULL) … … 384 392 //------------------------------------------------------------------- 385 393 386 void postgresql::getFieldsTypes(const dodoString &table) 394 void 395 postgresql::getFieldsTypes(const dodoString &table) 387 396 { 388 397 if (pgHandle == NULL) … … 418 427 switch (status) 419 428 { 420 case PGRES_EMPTY_QUERY:421 case PGRES_BAD_RESPONSE:422 case PGRES_NONFATAL_ERROR:423 case PGRES_FATAL_ERROR:424 425 throw exception::basic(exception::ERRMODULE_DATABASEPOSTGRESQL, POSTGRESQLEX_GETFIELDSTYPES, exception::ERRNO_MYSQL, status, PQerrorMessage(pgHandle), __LINE__, __FILE__);429 case PGRES_EMPTY_QUERY: 430 case PGRES_BAD_RESPONSE: 431 case PGRES_NONFATAL_ERROR: 432 case PGRES_FATAL_ERROR: 433 434 throw exception::basic(exception::ERRMODULE_DATABASEPOSTGRESQL, POSTGRESQLEX_GETFIELDSTYPES, exception::ERRNO_MYSQL, status, PQerrorMessage(pgHandle), __LINE__, __FILE__); 426 435 } 427 436 … … 502 511 //------------------------------------------------------------------- 503 512 504 void postgresql::exec(const dodoString &query, 505 bool result) 513 void 514 postgresql::exec(const dodoString &query, 515 bool result) 506 516 { 507 517 if (pgHandle == NULL) … … 566 576 switch (status) 567 577 { 568 case PGRES_EMPTY_QUERY:569 case PGRES_BAD_RESPONSE:570 case PGRES_NONFATAL_ERROR:571 case PGRES_FATAL_ERROR:572 573 throw exception::basic(exception::ERRMODULE_DATABASEPOSTGRESQL, POSTGRESQLEX_EXEC, exception::ERRNO_MYSQL, status, PQerrorMessage(pgHandle), __LINE__, __FILE__);578 case PGRES_EMPTY_QUERY: 579 case PGRES_BAD_RESPONSE: 580 case PGRES_NONFATAL_ERROR: 581 case PGRES_FATAL_ERROR: 582 583 throw exception::basic(exception::ERRMODULE_DATABASEPOSTGRESQL, POSTGRESQLEX_EXEC, exception::ERRNO_MYSQL, status, PQerrorMessage(pgHandle), __LINE__, __FILE__); 574 584 } 575 585 … … 586 596 //------------------------------------------------------------------- 587 597 588 void postgresql::updateCollect() 598 void 599 postgresql::updateCollect() 589 600 { 590 601 request = statements[SQLCONSTRUCTOR_STATEMENT_UPDATE]; … … 711 722 //------------------------------------------------------------------- 712 723 713 void postgresql::insertCollect() 724 void 725 postgresql::insertCollect() 714 726 { 715 727 request = statements[SQLCONSTRUCTOR_STATEMENT_INSERT]; … … 904 916 //------------------------------------------------------------------- 905 917 906 dodo::dodoStringMapArray postgresql::fetchFieldsToRows() const 918 dodo::dodoStringMapArray 919 postgresql::fetchFieldsToRows() const 907 920 { 908 921 dodoStringMapArray rowsFields; … … 947 960 //------------------------------------------------------------------- 948 961 949 void postgresql::setCharset(const dodoString &charset) 962 void 963 postgresql::setCharset(const dodoString &charset) 950 964 { 951 965 if (pgHandle == NULL) … … 963 977 //------------------------------------------------------------------- 964 978 965 dodoString postgresql::getCharset() const 979 dodoString 980 postgresql::getCharset() const 966 981 { 967 982 if (pgHandle == NULL) -
trunk/src/dataBaseSqlConstructor.cc
r1160 r1162 105 105 //------------------------------------------------------------------- 106 106 107 void constructor::setFieldType(const dodoString &table, 108 const dodoString &field, 109 short type) 107 void 108 constructor::setFieldType(const dodoString &table, 109 const dodoString &field, 110 short type) 110 111 { 111 112 fieldTypes[collectedData.dbInfo.db + statements[SQLCONSTRUCTOR_STATEMENT_COLON] + table][field] = type; … … 114 115 //------------------------------------------------------------------- 115 116 116 void constructor::additionalCollect(unsigned int qTypeTocheck, 117 const dodoString &collectedString) 117 void 118 constructor::additionalCollect(unsigned int qTypeTocheck, 119 const dodoString &collectedString) 118 120 { 119 121 if (collectedData.qShift == ACCUMULATOR_NONE) … … 131 133 //------------------------------------------------------------------- 132 134 133 void constructor::callFunctionCollect() 135 void 136 constructor::callFunctionCollect() 134 137 { 135 138 request = statements[SQLCONSTRUCTOR_STATEMENT_SELECT]; … … 142 145 //------------------------------------------------------------------- 143 146 144 void constructor::callProcedureCollect() 147 void 148 constructor::callProcedureCollect() 145 149 { 146 150 request = statements[SQLCONSTRUCTOR_STATEMENT_CALL]; … … 153 157 //------------------------------------------------------------------- 154 158 155 void constructor::selectCollect() 159 void 160 constructor::selectCollect() 156 161 { 157 162 if (collectedData.table.size() > 0) … … 171 176 //------------------------------------------------------------------- 172 177 173 void constructor::insertCollect() 178 void 179 constructor::insertCollect() 174 180 { 175 181 request = statements[SQLCONSTRUCTOR_STATEMENT_INSERT]; … … 302 308 //------------------------------------------------------------------- 303 309 304 void constructor::insertSelectCollect() 310 void 311 constructor::insertSelectCollect() 305 312 { 306 313 dodoString fieldsPartTo = tools::misc::join(collectedData.fields, statements[SQLCONSTRUCTOR_STATEMENT_COMA]); … … 327 334 //------------------------------------------------------------------- 328 335 329 void constructor::updateCollect() 336 void 337 constructor::updateCollect() 330 338 { 331 339 request = statements[SQLCONSTRUCTOR_STATEMENT_UPDATE]; … … 422 430 //------------------------------------------------------------------- 423 431 424 void constructor::delCollect() 432 void 433 constructor::delCollect() 425 434 { 426 435 request = statements[SQLCONSTRUCTOR_STATEMENT_DELETE]; … … 431 440 //------------------------------------------------------------------- 432 441 433 void constructor::subCollect() 442 void 443 constructor::subCollect() 434 444 { 435 445 request = tools::misc::join(collectedData.subQueries, sqlQStArr[collectedData.qType - 1]); … … 438 448 //------------------------------------------------------------------- 439 449 440 void constructor::joinCollect() 450 void 451 constructor::joinCollect() 441 452 { 442 453 dodoStringArray::iterator i = collectedData.joinTables.begin(), j = collectedData.joinTables.end(); … … 466 477 //------------------------------------------------------------------- 467 478 468 dodoString constructor::queryCollect() 479 dodoString 480 constructor::queryCollect() 469 481 { 470 482 bool additionalActions = true; … … 473 485 switch (collectedData.qType) 474 486 { 475 case ACCUMULATOR_REQUEST_SELECT:476 477 selectCollect();478 selectAction = true;479 480 break;481 482 case ACCUMULATOR_REQUEST_INSERT:483 484 insertCollect();485 additionalActions = false;486 487 break;488 489 case ACCUMULATOR_REQUEST_UPDATE:490 491 updateCollect();492 493 break;494 495 case ACCUMULATOR_REQUEST_DELETE:496 497 delCollect();498 499 break;500 501 case ACCUMULATOR_REQUEST_INSERT_SELECT:502 503 insertSelectCollect();504 selectAction = true;505 506 break;507 508 case SUBREQUEST_UNION:509 case SUBREQUEST_UNION_ALL:510 case SUBREQUEST_MINUS:511 case SUBREQUEST_INTERSECT:512 513 subCollect();514 additionalActions = false;515 516 break;517 518 case ACCUMULATOR_REQUEST_CALL_FUNCTION:519 520 callFunctionCollect();521 selectAction = true;522 523 break;524 525 case ACCUMULATOR_REQUEST_CALL_PROCEDURE:526 527 callProcedureCollect();528 529 break;530 531 default:532 533 additionalActions = false;487 case ACCUMULATOR_REQUEST_SELECT: 488 489 selectCollect(); 490 selectAction = true; 491 492 break; 493 494 case ACCUMULATOR_REQUEST_INSERT: 495 496 insertCollect(); 497 additionalActions = false; 498 499 break; 500 501 case ACCUMULATOR_REQUEST_UPDATE: 502 503 updateCollect(); 504 505 break; 506 507 case ACCUMULATOR_REQUEST_DELETE: 508 509 delCollect(); 510 511 break; 512 513 case ACCUMULATOR_REQUEST_INSERT_SELECT: 514 515 insertSelectCollect(); 516 selectAction = true; 517 518 break; 519 520 case SUBREQUEST_UNION: 521 case SUBREQUEST_UNION_ALL: 522 case SUBREQUEST_MINUS: 523 case SUBREQUEST_INTERSECT: 524 525 subCollect(); 526 additionalActions = false; 527 528 break; 529 530 case ACCUMULATOR_REQUEST_CALL_FUNCTION: 531 532 callFunctionCollect(); 533 selectAction = true; 534 535 break; 536 537 case ACCUMULATOR_REQUEST_CALL_PROCEDURE: 538 539 callProcedureCollect(); 540 541 break; 542 543 default: 544 545 additionalActions = false; 534 546 } 535 547 … … 557 569 //------------------------------------------------------------------- 558 570 559 dodoString constructor::escapeFields(const dodoString &data) 571 dodoString 572 constructor::escapeFields(const dodoString &data) 560 573 { 561 574 dodoString temp; … … 587 600 //------------------------------------------------------------------- 588 601 589 dodoString constructor::joinFields(const dodoStringArray &fields, 590 const dodoString &separator, 591 const dodoString &frame, 592 int limit) 602 dodoString 603 constructor::joinFields(const dodoStringArray &fields, 604 const dodoString &separator, 605 const dodoString &frame, 606 int limit) 593 607 { 594 608 int k(0); -
trunk/src/dataBaseSqlite.cc
r1160 r1162 88 88 //------------------------------------------------------------------- 89 89 90 void sqlite::connect(const __connectionInfo &info) 90 void 91 sqlite::connect(const __connectionInfo &info) 91 92 { 92 93 collectedData.dbInfo = info; … … 127 128 //------------------------------------------------------------------- 128 129 129 void sqlite::disconnect() 130 void 131 sqlite::disconnect() 130 132 { 131 133 if (sqliteHandle != NULL) … … 157 159 //------------------------------------------------------------------- 158 160 159 dodoArray<dodo::dodoStringArray>sqlite::fetchRows() const 161 dodoArray<dodo::dodoStringArray> 162 sqlite::fetchRows() const 160 163 { 161 164 if (sqliteHandle == NULL) … … 193 196 switch (sqlite3_step(sqliteResult)) 194 197 { 195 case SQLITE_BUSY:196 197 continue;198 199 case SQLITE_DONE:200 201 iterate = false;202 203 break;204 205 case SQLITE_ERROR:206 207 throw exception::basic(exception::ERRMODULE_DATABASESQLITE, SQLITEEX_FETCHROWS, exception::ERRNO_SQLITE, sqlite3_errcode(sqliteHandle), sqlite3_errmsg(sqliteHandle), __LINE__, __FILE__);208 209 case SQLITE_ROW:210 211 rowsPart.clear();198 case SQLITE_BUSY: 199 200 continue; 201 202 case SQLITE_DONE: 203 204 iterate = false; 205 206 break; 207 208 case SQLITE_ERROR: 209 210 throw exception::basic(exception::ERRMODULE_DATABASESQLITE, SQLITEEX_FETCHROWS, exception::ERRNO_SQLITE, sqlite3_errcode(sqliteHandle), sqlite3_errmsg(sqliteHandle), __LINE__, __FILE__); 211 212 case SQLITE_ROW: 213 214 rowsPart.clear(); 212 215 213 216 #ifndef USE_DEQUE 214 rowsPart.reserve(numFields);215 #endif 216 217 for (i = 0; i < numFields; ++i)218 {219 switch (sqlite3_column_type(sqliteResult, i))220 {221 case SQLITE_INTEGER:222 223 rowsPart.push_back(tools::string::iToString(sqlite3_column_int(sqliteResult, i)));224 225 break;226 227 case SQLITE_FLOAT:228 229 rowsPart.push_back(tools::string::dToString(sqlite3_column_double(sqliteResult, i)));230 231 break;232 233 case SQLITE_TEXT:234 235 rowsPart.push_back(dodoString((const char *)sqlite3_column_text(sqliteResult, i), sqlite3_column_bytes(sqliteResult, i)));236 237 break;238 239 case SQLITE_BLOB:240 241 rowsPart.push_back(dodoString((const char *)sqlite3_column_blob(sqliteResult, i), sqlite3_column_bytes(sqliteResult, i)));242 243 break;244 245 case SQLITE_NULL:246 default:247 248 rowsPart.push_back(statements[SQLCONSTRUCTOR_STATEMENT_NULL]);249 250 break;251 }252 }253 254 rows.push_back(rowsPart);255 256 break;217 rowsPart.reserve(numFields); 218 #endif 219 220 for (i = 0; i < numFields; ++i) 221 { 222 switch (sqlite3_column_type(sqliteResult, i)) 223 { 224 case SQLITE_INTEGER: 225 226 rowsPart.push_back(tools::string::iToString(sqlite3_column_int(sqliteResult, i))); 227 228 break; 229 230 case SQLITE_FLOAT: 231 232 rowsPart.push_back(tools::string::dToString(sqlite3_column_double(sqliteResult, i))); 233 234 break; 235 236 case SQLITE_TEXT: 237 238 rowsPart.push_back(dodoString((const char *)sqlite3_column_text(sqliteResult, i), sqlite3_column_bytes(sqliteResult, i))); 239 240 break; 241 242 case SQLITE_BLOB: 243 244 rowsPart.push_back(dodoString((const char *)sqlite3_column_blob(sqliteResult, i), sqlite3_column_bytes(sqliteResult, i))); 245 246 break; 247 248 case SQLITE_NULL: 249 default: 250 251 rowsPart.push_back(statements[SQLCONSTRUCTOR_STATEMENT_NULL]); 252 253 break; 254 } 255 } 256 257 rows.push_back(rowsPart); 258 259 break; 257 260 } 258 261 } … … 267 270 //------------------------------------------------------------------- 268 271 269 dodo::dodoStringArray sqlite::fetchFields() const 272 dodo::dodoStringArray 273 sqlite::fetchFields() const 270 274 { 271 275 if (sqliteHandle == NULL) … … 306 310 //------------------------------------------------------------------- 307 311 308 __tuples sqlite::fetch() const 312 __tuples 313 sqlite::fetch() const 309 314 { 310 315 return __tuples(fetchRows(), fetchFields()); … … 313 318 //------------------------------------------------------------------- 314 319 315 unsigned int sqlite::rowsCount() const 320 unsigned int 321 sqlite::rowsCount() const 316 322 { 317 323 if (sqliteHandle == NULL) … … 333 339 switch (result) 334 340 { 335 case SQLITE_BUSY:336 337 continue;338 339 case SQLITE_DONE:340 341 iterate = false;342 343 break;344 345 case SQLITE_ERROR:346 347 throw exception::basic(exception::ERRMODULE_DATABASESQLITE, SQLITEEX_FETCHROWS, exception::ERRNO_SQLITE, sqlite3_errcode(sqliteHandle), sqlite3_errmsg(sqliteHandle), __LINE__, __FILE__);348 349 case SQLITE_ROW:350 351 ++numRows;352 353 break;341 case SQLITE_BUSY: 342 343 continue; 344 345 case SQLITE_DONE: 346 347 iterate = false; 348 349 break; 350 351 case SQLITE_ERROR: 352 353 throw exception::basic(exception::ERRMODULE_DATABASESQLITE, SQLITEEX_FETCHROWS, exception::ERRNO_SQLITE, sqlite3_errcode(sqliteHandle), sqlite3_errmsg(sqliteHandle), __LINE__, __FILE__); 354 355 case SQLITE_ROW: 356 357 ++numRows; 358 359 break; 354 360 } 355 361 } … … 365 371 //------------------------------------------------------------------- 366 372 367 unsigned int sqlite::fieldsCount() const 373 unsigned int 374 sqlite::fieldsCount() const 368 375 { 369 376 if (sqliteHandle == NULL) … … 384 391 //------------------------------------------------------------------- 385 392 386 unsigned int sqlite::affectedRowsCount() const 393 unsigned int 394 sqlite::affectedRowsCount() const 387 395 { 388 396 if (sqliteHandle == NULL) … … 403 411 //------------------------------------------------------------------- 404 412 405 void sqlite::getFieldsTypes(const dodoString &table) 413 void 414 sqlite::getFieldsTypes(const dodoString &table) 406 415 { 407 416 if (sqliteHandle == NULL) … … 558 567 switch (sqlite3_step(sqliteResult)) 559 568 { 560 case SQLITE_BUSY: 561 562 continue; 563 564 case SQLITE_DONE: 565 566 iterate = false; 567 568 break; 569 570 case SQLITE_ERROR: 571 572 throw exception::basic(exception::ERRMODULE_DATABASESQLITE, SQLITEEX_GETFIELDSTYPES, exception::ERRNO_SQLITE, sqlite3_errcode(sqliteHandle), sqlite3_errmsg(sqliteHandle), __LINE__, __FILE__); 573 574 case SQLITE_ROW: 575 576 columnName = (const char *)sqlite3_column_text(sqliteResult, 1); 577 columnType = (const char *)sqlite3_column_text(sqliteResult, 2); 578 579 field = types->second.find(columnName); 580 581 if (field == fieldsEnd) 582 { 583 if (strcasestr(columnType, "char") != NULL || 584 strcasestr(columnType, "date") != NULL || 585 strcasestr(columnType, "time") != NULL || 586 strcasestr(columnType, "text") != NULL || 587 strcasestr(columnType, "enum") != NULL || 588 strcasestr(columnType, "set") != NULL) 589 { 590 types->second.insert(make_pair(dodoString(columnName), sql::FIELDTYPE_TEXT)); 569 case SQLITE_BUSY: 570 571 continue; 572 573 case SQLITE_DONE: 574 575 iterate = false; 576 577 break; 578 579 case SQLITE_ERROR: 580 581 throw exception::basic(exception::ERRMODULE_DATABASESQLITE, SQLITEEX_GETFIELDSTYPES, exception::ERRNO_SQLITE, sqlite3_errcode(sqliteHandle), sqlite3_errmsg(sqliteHandle), __LINE__, __FILE__); 582 583 case SQLITE_ROW: 584 585 columnName = (const char *)sqlite3_column_text(sqliteResult, 1); 586 columnType = (const char *)sqlite3_column_text(sqliteResult, 2); 587 588 field = types->second.find(columnName); 589 590 if (field == fieldsEnd) 591 { 592 if (strcasestr(columnType, "char") != NULL || 593 strcasestr(columnType, "date") != NULL || 594 strcasestr(columnType, "time") != NULL || 595 strcasestr(columnType, "text") != NULL || 596 strcasestr(columnType, "enum") != NULL || 597 strcasestr(columnType, "set") != NULL) 598 { 599 types->second.insert(make_pair(dodoString(columnName), sql::FIELDTYPE_TEXT)); 600 } 601 else 602 { 603 if (strcasestr(columnType, "blob") != NULL) 604 { 605 types->second.insert(make_pair(dodoString(columnName), sql::FIELDTYPE_BINARY)); 591 606 } 592 607 else 593 608 { 594 if (strcasestr(columnType, "blob") != NULL) 595 { 596 types->second.insert(make_pair(dodoString(columnName), sql::FIELDTYPE_BINARY)); 597 } 598 else 599 { 600 types->second.insert(make_pair(dodoString(columnName), sql::FIELDTYPE_NUMERIC)); 601 } 602 } 609 types->second.insert(make_pair(dodoString(columnName), sql::FIELDTYPE_NUMERIC)); 610 } 611 } 612 } 613 else 614 { 615 if (strcasestr(columnType, "char") != NULL || 616 strcasestr(columnType, "date") != NULL || 617 strcasestr(columnType, "time") != NULL || 618 strcasestr(columnType, "text") != NULL || 619 strcasestr(columnType, "enum") != NULL || 620 strcasestr(columnType, "set") != NULL) 621 { 622 field->second = sql::FIELDTYPE_TEXT; 603 623 } 604 624 else 605 625 { 606 if (strcasestr(columnType, "char") != NULL || 607 strcasestr(columnType, "date") != NULL || 608 strcasestr(columnType, "time") != NULL || 609 strcasestr(columnType, "text") != NULL || 610 strcasestr(columnType, "enum") != NULL || 611 strcasestr(columnType, "set") != NULL) 612 { 613 field->second = sql::FIELDTYPE_TEXT; 626 if (strcasestr(columnType, "blob") != NULL) 627 { 628 field->second = sql::FIELDTYPE_BINARY; 614 629 } 615 630 else 616 631 { 617 if (strcasestr(columnType, "blob") != NULL) 618 { 619 field->second = sql::FIELDTYPE_BINARY; 620 } 621 else 622 { 623 field->second = sql::FIELDTYPE_NUMERIC; 624 } 625 } 626 } 627 628 break; 632 field->second = sql::FIELDTYPE_NUMERIC; 633 } 634 } 635 } 636 637 break; 629 638 } 630 639 } … … 643 652 //------------------------------------------------------------------- 644 653 645 void sqlite::exec(const dodoString &query, 646 bool result) 654 void 655 sqlite::exec(const dodoString &query, 656 bool result) 647 657 { 648 658 if (sqliteHandle == NULL) … … 715 725 //------------------------------------------------------------------- 716 726 717 void sqlite::updateCollect() 727 void 728 sqlite::updateCollect() 718 729 { 719 730 request = statements[SQLCONSTRUCTOR_STATEMENT_UPDATE]; … … 840 851 //------------------------------------------------------------------- 841 852 842 void sqlite::insertCollect() 853 void 854 sqlite::insertCollect() 843 855 { 844 856 request = statements[SQLCONSTRUCTOR_STATEMENT_INSERT]; … … 1033 1045 //------------------------------------------------------------------- 1034 1046 1035 dodo::dodoStringMapArray sqlite::fetchFieldsToRows() const 1047 dodo::dodoStringMapArray 1048 sqlite::fetchFieldsToRows() const 1036 1049 { 1037 1050 if (sqliteHandle == NULL) … … 1065 1078 switch (sqlite3_step(sqliteResult)) 1066 1079 { 1067 case SQLITE_BUSY:1068 1069 continue;1070 1071 case SQLITE_DONE:1072 1073 iterate = false;1074 1075 break;1076 1077 case SQLITE_ERROR:1078 1079 throw exception::basic(exception::ERRMODULE_DATABASESQLITE, SQLITEEX_FETCHFIELDSTOROWS, exception::ERRNO_SQLITE, sqlite3_errcode(sqliteHandle), sqlite3_errmsg(sqliteHandle), __LINE__, __FILE__);1080 1081 case SQLITE_ROW:1082 1083 rowFieldsPart.clear();1084 1085 for (i = 0; i < numFields; ++i)1086 {1087 switch (sqlite3_column_type(sqliteResult, i))1088 {1089 case SQLITE_INTEGER:1090 1091 rowFieldsPart.insert(make_pair(sqlite3_column_name(sqliteResult, i), tools::string::iToString(sqlite3_column_int(sqliteResult, i))));1092 1093 break;1094 1095 case SQLITE_FLOAT:1096 1097 rowFieldsPart.insert(make_pair(sqlite3_column_name(sqliteResult, i), tools::string::dToString(sqlite3_column_double(sqliteResult, i))));1098 1099 break;1100 1101 case SQLITE_TEXT:1102 1103 rowFieldsPart.insert(make_pair(sqlite3_column_name(sqliteResult, i), dodoString((const char *)sqlite3_column_text(sqliteResult, i), sqlite3_column_bytes(sqliteResult, i))));1104 1105 break;1106 1107 case SQLITE_BLOB:1108 1109 rowFieldsPart.insert(make_pair(sqlite3_column_name(sqliteResult, i), dodoString((const char *)sqlite3_column_blob(sqliteResult, i), sqlite3_column_bytes(sqliteResult, i))));1110 1111 break;1112 1113 case SQLITE_NULL:1114 default:1115 1116 rowFieldsPart.insert(make_pair(dodoString(sqlite3_column_name(sqliteResult, i)), statements[SQLCONSTRUCTOR_STATEMENT_NULL]));1117 1118 break;1119 }1120 }1121 1122 rowsFields.push_back(rowFieldsPart);1123 1124 break;1080 case SQLITE_BUSY: 1081 1082 continue; 1083 1084 case SQLITE_DONE: 1085 1086 iterate = false; 1087 1088 break; 1089 1090 case SQLITE_ERROR: 1091 1092 throw exception::basic(exception::ERRMODULE_DATABASESQLITE, SQLITEEX_FETCHFIELDSTOROWS, exception::ERRNO_SQLITE, sqlite3_errcode(sqliteHandle), sqlite3_errmsg(sqliteHandle), __LINE__, __FILE__); 1093 1094 case SQLITE_ROW: 1095 1096 rowFieldsPart.clear(); 1097 1098 for (i = 0; i < numFields; ++i) 1099 { 1100 switch (sqlite3_column_type(sqliteResult, i)) 1101 { 1102 case SQLITE_INTEGER: 1103 1104 rowFieldsPart.insert(make_pair(sqlite3_column_name(sqliteResult, i), tools::string::iToString(sqlite3_column_int(sqliteResult, i)))); 1105 1106 break; 1107 1108 case SQLITE_FLOAT: 1109 1110 rowFieldsPart.insert(make_pair(sqlite3_column_name(sqliteResult, i), tools::string::dToString(sqlite3_column_double(sqliteResult, i)))); 1111 1112 break; 1113 1114 case SQLITE_TEXT: 1115 1116 rowFieldsPart.insert(make_pair(sqlite3_column_name(sqliteResult, i), dodoString((const char *)sqlite3_column_text(sqliteResult, i), sqlite3_column_bytes(sqliteResult, i)))); 1117 1118 break; 1119 1120 case SQLITE_BLOB: 1121 1122 rowFieldsPart.insert(make_pair(sqlite3_column_name(sqliteResult, i), dodoString((const char *)sqlite3_column_blob(sqliteResult, i), sqlite3_column_bytes(sqliteResult, i)))); 1123 1124 break; 1125 1126 case SQLITE_NULL: 1127 default: 1128 1129 rowFieldsPart.insert(make_pair(dodoString(sqlite3_column_name(sqliteResult, i)), statements[SQLCONSTRUCTOR_STATEMENT_NULL])); 1130 1131 break; 1132 } 1133 } 1134 1135 rowsFields.push_back(rowFieldsPart); 1136 1137 break; 1125 1138 } 1126 1139 } -
trunk/src/dataFormatJsonNode.cc
r1160 r1162 79 79 //------------------------------------------------------------------- 80 80 81 void node::setString(const dodoString &value) 81 void 82 node::setString(const dodoString &value) 82 83 { 83 84 valueDataType = DATATYPE_STRING; … … 88 89 //------------------------------------------------------------------- 89 90 90 void node::setBoolean(bool value) 91 void 92 node::setBoolean(bool value) 91 93 { 92 94 valueDataType = DATATYPE_BOOLEAN; … … 97 99 //------------------------------------------------------------------- 98 100 99 void node::setNumeric(long value) 101 void 102 node::setNumeric(long value) 100 103 { 101 104 valueDataType = DATATYPE_NUMERIC; … … 106 109 //------------------------------------------------------------------- 107 110 108 void node::setNull() 111 void 112 node::setNull() 109 113 { 110 114 valueDataType = DATATYPE_NULL; … … 113 117 //------------------------------------------------------------------- 114 118 115 void node::addArrayElement(const node &value) 119 void 120 node::addArrayElement(const node &value) 116 121 { 117 122 valueDataType = DATATYPE_ARRAY; … … 122 127 //------------------------------------------------------------------- 123 128 124 void node::addObjectMember(const dodoString &name, 125 const node &value) 129 void 130 node::addObjectMember(const dodoString &name, 131 const node &value) 126 132 { 127 133 valueDataType = DATATYPE_OBJECT; … … 132 138 //------------------------------------------------------------------- 133 139 134 void node::setArray(const dodoArray<node> &value) 140 void 141 node::setArray(const dodoArray<node> &value) 135 142 { 136 143 valueDataType = DATATYPE_ARRAY; … … 141 148 //------------------------------------------------------------------- 142 149 143 void node::setObject(const dodoMap<dodoString, node, dodoMapStringCompare> &value) 150 void 151 node::setObject(const dodoMap<dodoString, node, dodoMapStringCompare> &value) 144 152 { 145 153 valueDataType = DATATYPE_OBJECT; … … 181 189 //------------------------------------------------------------------- 182 190 183 short node::getType() 191 short 192 node::getType() 184 193 { 185 194 return valueDataType; … … 188 197 //------------------------------------------------------------------- 189 198 190 dodoString node::getString() 199 dodoString 200 node::getString() 191 201 { 192 202 if (valueDataType != DATATYPE_STRING) … … 200 210 //------------------------------------------------------------------- 201 211 202 bool node::getBoolean() 212 bool 213 node::getBoolean() 203 214 { 204 215 if (valueDataType != DATATYPE_BOOLEAN) … … 212 223 //------------------------------------------------------------------- 213 224 214 long node::getNumeric() 225 long 226 node::getNumeric() 215 227 { 216 228 if (valueDataType != DATATYPE_NUMERIC) … … 224 236 //------------------------------------------------------------------- 225 237 226 dodoArray<node>node::getArray() 238 dodoArray<node> 239 node::getArray() 227 240 { 228 241 if (valueDataType != DATATYPE_ARRAY) … … 236 249 //------------------------------------------------------------------- 237 250 238 dodoMap<dodoString, node, dodo::dodoMapStringCompare>node::getObject() 251 dodoMap<dodoString, node, dodo::dodoMapStringCompare> 252 node::getObject() 239 253 { 240 254 if (valueDataType != DATATYPE_OBJECT) … … 248 262 //------------------------------------------------------------------- 249 263 250 bool node::isNull() 264 bool 265 node::isNull() 251 266 { 252 267 return (valueDataType == DATATYPE_NULL); … … 255 270 //------------------------------------------------------------------- 256 271 257 void node::clear() 272 void 273 node::clear() 258 274 { 259 275 stringValue.clear(); -
trunk/src/dataFormatJsonProcessor.cc
r1160 r1162 44 44 //------------------------------------------------------------------- 45 45 46 dodoString processor::make(const node &root) 46 dodoString 47 processor::make(const node &root) 47 48 { 48 49 switch (root.valueDataType) 49 50 { 50 case DATATYPE_STRING: 51 { 52 dodoString jsonObject = "\""; 53 dodoString stringValue = root.stringValue; 54 tools::string::replace("\"", "\\\"", stringValue); 55 jsonObject.append(stringValue); 56 jsonObject.append("\""); 57 58 return jsonObject; 59 } 60 61 case DATATYPE_OBJECT: 62 { 63 dodoString jsonObject = "{"; 64 65 dodoMap<dodoString, node, dodoMapStringCompare>::const_iterator i = root.objectValue.begin(), j = root.objectValue.end(); 66 if (i != j) 67 { 68 for (--j; i != j; ++i) 69 { 70 jsonObject.append("\""); 71 jsonObject.append(i->first); 72 jsonObject.append("\":"); 73 74 jsonObject.append(make(i->second)); 75 jsonObject.append(","); 76 } 51 case DATATYPE_STRING: 52 { 53 dodoString jsonObject = "\""; 54 dodoString stringValue = root.stringValue; 55 tools::string::replace("\"", "\\\"", stringValue); 56 jsonObject.append(stringValue); 57 jsonObject.append("\""); 58 59 return jsonObject; 60 } 61 62 case DATATYPE_OBJECT: 63 { 64 dodoString jsonObject = "{"; 65 66 dodoMap<dodoString, node, dodoMapStringCompare>::const_iterator i = root.objectValue.begin(), j = root.objectValue.end(); 67 if (i != j) 68 { 69 for (--j; i != j; ++i) 70 { 77 71 jsonObject.append("\""); 78 72 jsonObject.append(i->first); … … 80 74 81 75 jsonObject.append(make(i->second)); 82 } 83 84 jsonObject.append("}"); 85 86 return jsonObject; 87 } 88 89 case DATATYPE_ARRAY: 90 { 91 dodoString jsonObject = "["; 92 93 dodoArray<node>::const_iterator i = root.arrayValue.begin(), j = root.arrayValue.end(); 94 if (i != j) 95 { 96 --j; 97 for (; i != j; ++i) 98 { 99 jsonObject.append(make(*i)); 100 jsonObject.append(","); 101 } 76 jsonObject.append(","); 77 } 78 jsonObject.append("\""); 79 jsonObject.append(i->first); 80 jsonObject.append("\":"); 81 82 jsonObject.append(make(i->second)); 83 } 84 85 jsonObject.append("}"); 86 87 return jsonObject; 88 } 89 90 case DATATYPE_ARRAY: 91 { 92 dodoString jsonObject = "["; 93 94 dodoArray<node>::const_iterator i = root.arrayValue.begin(), j = root.arrayValue.end(); 95 if (i != j) 96 { 97 --j; 98 for (; i != j; ++i) 99 { 102 100 jsonObject.append(make(*i)); 103 } 104 105 jsonObject.append("]"); 106 107 return jsonObject; 108 } 109 110 case DATATYPE_NUMERIC: 111 112 return tools::string::lToString(root.numericValue); 113 114 case DATATYPE_BOOLEAN: 115 116 return root.booleanValue ? "true" : "false"; 117 118 case DATATYPE_NULL: 119 default: 120 121 return "null"; 101 jsonObject.append(","); 102 } 103 jsonObject.append(make(*i)); 104 } 105 106 jsonObject.append("]"); 107 108 return jsonObject; 109 } 110 111 case DATATYPE_NUMERIC: 112 113 return tools::string::lToString(root.numericValue); 114 115 case DATATYPE_BOOLEAN: 116 117 return root.booleanValue ? "true" : "false"; 118 119 case DATATYPE_NULL: 120 default: 121 122 return "null"; 122 123 } 123 124 … … 127 128 //------------------------------------------------------------------- 128 129 129 unsigned long processor::processArray(dodoArray<node> &jnode, 130 const dodoString &root, 131 unsigned long pos) 130 unsigned long 131 processor::processArray(dodoArray<node> &jnode, 132 const dodoString &root, 133 unsigned long pos) 132 134 { 133 135 jnode.clear(); … … 142 144 switch (root[i]) 143 145 { 144 case ' ': 145 case '\r': 146 case '\n': 147 case '\t': 146 case ' ': 147 case '\r': 148 case '\n': 149 case '\t': 150 151 break; 152 153 case '[': 154 155 if (initial) 156 { 157 initial = false; 158 } 159 else 160 { 161 i = processValue(subNode, root, i); 162 163 jnode.push_back(subNode); 164 } 165 166 break; 167 168 case ']': 169 170 return i; 171 172 case ',': 173 174 break; 175 176 default: 177 178 i = processValue(subNode, root, i); 179 180 jnode.push_back(subNode); 181 } 182 } 183 184 return i; 185 } 186 187 //------------------------------------------------------------------- 188 189 unsigned long 190 processor::processValue(node &node, 191 const dodoString &root, 192 unsigned long pos) 193 { 194 node.clear(); 195 196 unsigned long i(pos), j(root.size()); 197 for (; i < j; ++i) 198 { 199 switch (root[i]) 200 { 201 case ' ': 202 case '\r': 203 case '\n': 204 case '\t': 205 206 break; 207 208 case '"': 209 210 node.valueDataType = DATATYPE_STRING; 211 212 return processString(node.stringValue, root, i); 213 214 case '{': 215 216 node.valueDataType = DATATYPE_OBJECT; 217 218 return processObject(node.objectValue, root, i); 219 220 case '[': 221 222 node.valueDataType = DATATYPE_ARRAY; 223 224 return processArray(node.arrayValue, root, i); 225 226 case 't': 227 case 'f': 228 229 node.valueDataType = DATATYPE_BOOLEAN; 230 231 return processBoolean(node.booleanValue, root, i); 232 233 case 'n': 234 235 node.valueDataType = DATATYPE_NULL; 236 237 return processNull(root, i); 238 239 default: 240 241 node.valueDataType = DATATYPE_NUMERIC; 242 243 return processNumeric(node.numericValue, root, i); 244 } 245 } 246 } 247 248 //------------------------------------------------------------------- 249 250 unsigned long 251 processor::processBoolean(bool &node, 252 const dodoString &root, 253 unsigned long pos) 254 { 255 if ((root.size() - pos) < 4) 256 { 257 throw exception::basic(exception::ERRMODULE_DATAFORMATJSONPROCESSOR, PROCESSOREX_PROCESSBOOLEAN, exception::ERRNO_LIBDODO, PROCESSOREX_MALFORMEDJSONBOOLEAN, DATAFORMATJSONPROCESSOREX_MALFORMEDJSONBOOLEAN_STR, __LINE__, __FILE__); 258 } 259 260 if (root[pos] == 't' && root[pos + 1] == 'r' && root[pos + 2] == 'u' && root[pos + 3] == 'e') 261 { 262 node = true; 263 264 return pos + 3; 265 } 266 else 267 { 268 if (root[pos] == 'f' && root[pos + 1] == 'a' && root[pos + 2] == 'l' && root[pos + 3] == 's' && root[pos + 4] == 'e') 269 { 270 node = false; 271 272 return pos + 4; 273 } 274 else 275 { 276 throw exception::basic(exception::ERRMODULE_DATAFORMATJSONPROCESSOR, PROCESSOREX_PROCESSBOOLEAN, exception::ERRNO_LIBDODO, PROCESSOREX_MALFORMEDJSONBOOLEAN, DATAFORMATJSONPROCESSOREX_MALFORMEDJSONBOOLEAN_STR, __LINE__, __FILE__); 277 } 278 } 279 280 return pos; 281 } 282 283 //------------------------------------------------------------------- 284 285 unsigned long 286 processor::processNull(const dodoString &root, 287 unsigned long pos) 288 { 289 if ((root.size() - pos) < 4) 290 { 291 throw exception::basic(exception::ERRMODULE_DATAFORMATJSONPROCESSOR, PROCESSOREX_PROCESSNULL, exception::ERRNO_LIBDODO, PROCESSOREX_MALFORMEDJSONNULL, DATAFORMATJSONPROCESSOREX_MALFORMEDJSONNULL_STR, __LINE__, __FILE__); 292 } 293 294 if (root[pos] == 'n' && root[pos + 1] == 'u' && root[pos + 2] == 'l' && root[pos + 3] == 'l') 295 { 296 return pos + 3; 297 } 298 else 299 { 300 throw exception::basic(exception::ERRMODULE_DATAFORMATJSONPROCESSOR, PROCESSOREX_PROCESSNULL, exception::ERRNO_LIBDODO, PROCESSOREX_MALFORMEDJSONNULL, DATAFORMATJSONPROCESSOREX_MALFORMEDJSONNULL_STR, __LINE__, __FILE__); 301 } 302 303 return pos; 304 } 305 306 //------------------------------------------------------------------- 307 308 unsigned long 309 processor::processNumeric(long &node, 310 const dodoString &root, 311 unsigned long pos) 312 { 313 dodoString numeric; 314 315 unsigned long i(pos), j(root.size()); 316 for (; i < j; ++i) 317 { 318 switch (root[i]) 319 { 320 case ' ': 321 case '\r': 322 case '\n': 323 case '\t': 324 325 break; 326 327 case '1': 328 case '2': 329 case '3': 330 case '4': 331 case '5': 332 case '6': 333 case '7': 334 case '8': 335 case '9': 336 case '0': 337 case '+': 338 case '-': 339 case 'e': 340 case 'E': 341 342 numeric.append(1, root[i]); 343 344 break; 345 346 case ',': 347 case ']': 348 case '}': 349 350 node = tools::string::stringToL(numeric); 351 352 return i - 1; 353 354 default: 355 356 throw exception::basic(exception::ERRMODULE_DATAFORMATJSONPROCESSOR, PROCESSOREX_PROCESSNUMERIC, exception::ERRNO_LIBDODO, PROCESSOREX_MALFORMEDJSONNUMERIC, DATAFORMATJSONPROCESSOREX_MALFORMEDJSONNUMERIC_STR, __LINE__, __FILE__); 357 } 358 } 359 360 361 return i; 362 } 363 364 //------------------------------------------------------------------- 365 366 unsigned long 367 processor::processObject(dodoMap<dodoString, node, dodoMapStringCompare> &jnode, 368 const dodoString &root, 369 unsigned long pos) 370 { 371 jnode.clear(); 372 373 short state = JSON_STATE_OBJECT_INITIAL; 374 375 node subNodeValue; 376 dodoString subNodeName; 377 378 unsigned long i(pos), j(root.size()); 379 for (; i < j; ++i) 380 { 381 switch (root[i]) 382 { 383 case ' ': 384 case '\r': 385 case '\n': 386 case '\t': 387 case ':': 388 case ',': 389 390 break; 391 392 case '{': 393 394 if (state == JSON_STATE_OBJECT_INITIAL) 395 { 396 state = JSON_STATE_OBJECT_OBJECTNAME; 148 397 149 398 break; 150 151 case '[': 152 399 } 400 else 401 { 402 if (state == JSON_STATE_OBJECT_OBJECTVALUE) 403 { 404 subNodeValue.clear(); 405 406 subNodeValue.valueDataType = DATATYPE_OBJECT; 407 408 i = processObject(subNodeValue.objectValue, root, i); 409 jnode.insert(make_pair(subNodeName, subNodeValue)); 410 411 state = JSON_STATE_OBJECT_OBJECTNAME; 412 413 break; 414 } 415 } 416 417 case '}': 418 419 return i; 420 421 case '"': 422 423 if (state == JSON_STATE_OBJECT_OBJECTNAME) 424 { 425 i = processString(subNodeName, root, i); 426 427 state = JSON_STATE_OBJECT_OBJECTVALUE; 428 429 break; 430 } 431 else 432 { 433 if (state == JSON_STATE_OBJECT_OBJECTVALUE) 434 { 435 subNodeValue.clear(); 436 437 subNodeValue.valueDataType = DATATYPE_STRING; 438 439 i = processString(subNodeValue.stringValue, root, i); 440 jnode.insert(make_pair(subNodeName, subNodeValue)); 441 442 state = JSON_STATE_OBJECT_OBJECTNAME; 443 444 break; 445 } 446 } 447 448 default: 449 450 if (state == JSON_STATE_OBJECT_OBJECTVALUE) 451 { 452 i = processValue(subNodeValue, root, i); 453 jnode.insert(make_pair(subNodeName, subNodeValue)); 454 455 state = JSON_STATE_OBJECT_OBJECTNAME; 456 } 457 } 458 } 459 460 return i; 461 } 462 463 //------------------------------------------------------------------- 464 465 node 466 processor::processString(const dodoString &root) 467 { 468 node node; 469 470 node.valueDataType = DATATYPE_OBJECT; 471 processObject(node.objectValue, root, 0); 472 473 return node; 474 } 475 476 //------------------------------------------------------------------- 477 478 node 479 processor::processFile(const dodoString &path) 480 { 481 node node; 482 483 node.valueDataType = DATATYPE_OBJECT; 484 processObject(node.objectValue, tools::filesystem::getFileContents(path), 0); 485 486 return node; 487 } 488 489 //------------------------------------------------------------------- 490 491 dodoString 492 processor::fromMap(const dodoStringMap &root) 493 { 494 node nodeDef; 495 node subNodeDef; 496 497 nodeDef.valueDataType = DATATYPE_OBJECT; 498 subNodeDef.valueDataType = DATATYPE_STRING; 499 500 dodoStringMap::const_iterator i = root.begin(), j = root.end(); 501 for (; i != j; ++i) 502 { 503 subNodeDef.stringValue = i->second; 504 nodeDef.objectValue.insert(make_pair(i->first, subNodeDef)); 505 } 506 507 return make(nodeDef); 508 } 509 510 //------------------------------------------------------------------- 511 512 dodo::dodoStringMap 513 processor::toMap(const dodoString &jnode) 514 { 515 node JSON = processString(jnode); 516 517 dodoStringMap map; 518 519 dodoMap<dodoString, node, dodoMapStringCompare>::iterator i = JSON.objectValue.begin(), j = JSON.objectValue.end(); 520 for (; i != j; ++i) 521 { 522 map.insert(make_pair(i->first, i->second.stringValue)); 523 } 524 525 return map; 526 } 527 528 //------------------------------------------------------------------- 529 530 unsigned long 531 processor::processString(dodoString &jnode, 532 const dodoString &root, 533 unsigned long pos) 534 { 535 jnode.clear(); 536 537 bool escape = false; 538 bool initial = true; 539 540 unsigned long i(pos), j(root.size()); 541 for (; i < j; ++i) 542 { 543 switch (root[i]) 544 { 545 case '\\': 546 547 if (!escape) 548 { 549 escape = true; 550 551 break; 552 } 553 554 case '"': 555 556 if (!escape) 557 { 153 558 if (initial) 154 559 { 155 560 initial = false; 156 }157 else158 {159 i = processValue(subNode, root, i);160 161
