Changeset 11075 for trunk/ippTools/src/camtool.c
- Timestamp:
- Jan 12, 2007, 12:24:34 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/camtool.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/camtool.c
r11024 r11075 30 30 static bool pendingimfileMode(pxConfig *config); 31 31 static bool addprocessedexpMode(pxConfig *config); 32 static bool faultexpMode(pxConfig *config); 32 static bool processedexpMode(pxConfig *config); 33 static bool updateprocessedexpMode(pxConfig *config); 33 34 static bool blockMode(pxConfig *config); 34 35 static bool maskedMode(pxConfig *config); … … 52 53 MODECASE(P3TOOL_MODE_PENDINGIMFILE, pendingimfileMode); 53 54 MODECASE(P3TOOL_MODE_ADDPROCESSEDEXP, addprocessedexpMode); 54 MODECASE(P3TOOL_MODE_FAULTEXP, faultexpMode); 55 MODECASE(P3TOOL_MODE_PROCESSEDEXP, processedexpMode); 56 MODECASE(P3TOOL_MODE_UPDATEPROCESSEDEXP,updateprocessedexpMode); 55 57 MODECASE(P3TOOL_MODE_BLOCK, blockMode); 56 58 MODECASE(P3TOOL_MODE_MASKED, maskedMode); … … 86 88 } 87 89 88 bool faulted = psMetadataLookupU64(&status, config->args, "-faulted");89 if (!status) {90 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -faulted");91 return false;92 }93 94 90 psString query = psStringCopy( 95 91 "SELECT" 96 92 " p3PendingExp.*," 97 " raw ScienceExp.camera"93 " rawExp.camera" 98 94 " FROM p3PendingExp" 99 " JOIN raw ScienceExp"95 " JOIN rawExp" 100 96 " USING(exp_tag)" 101 97 " LEFT JOIN p3ProcessedExp" … … 114 110 } 115 111 116 if (faulted) {117 // list only faulted rows118 psStringAppend(&query, " %s", "AND p3PendingExp.fault != 0");119 } else {120 // don't list faulted rows121 psStringAppend(&query, " %s", "AND p3PendingExp.fault = 0");122 }123 124 112 // treat limit == 0 as "no limit" 125 113 if (limit) { … … 177 165 "SELECT" 178 166 " p2ProcessedImfile.*," 179 " raw ScienceExp.camera"167 " rawExp.camera" 180 168 " FROM p3PendingExp" 181 " JOIN raw ScienceExp"169 " JOIN rawExp" 182 170 " USING(exp_tag)" 183 171 " JOIN p2ProcessedImfile" … … 345 333 return false; 346 334 } 335 347 336 // optional 348 337 psString b1_uri = psMetadataLookupStr(&status, config->args, "-b1_uri"); … … 354 343 if (!status) { 355 344 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -b2_uri"); 345 return false; 346 } 347 348 // default 349 psS8 code = psMetadataLookupS8(&status, config->args, "-code"); 350 if (!status) { 351 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -code"); 356 352 return false; 357 353 } … … 380 376 } 381 377 if (!psArrayLength(output)) { 382 // XXX check psError here383 378 psError(PS_ERR_UNKNOWN, false, "no p3PendingExp rows found"); 379 psFree(output); 384 380 return true; 381 } 382 383 // start a transaction so we don't end up with an exp_tag is both 384 // p3PendingExp & p3ProcessedExp 385 if (!psDBTransaction(config->dbh)) { 386 psError(PS_ERR_UNKNOWN, false, "database error"); 387 psFree(output); 388 return false; 385 389 } 386 390 … … 404 408 pendingRow->p2_version, 405 409 pendingRow->p3_version, 406 pendingRow->label 410 pendingRow->label, 411 code 407 412 ); 408 psFree(pendingRow);409 413 410 414 // insert the new row into the p3ProcessedImfile table 411 415 if (!p3ProcessedExpInsertObject(config->dbh, row)) { 416 // rollback 417 if (!psDBRollback(config->dbh)) { 418 psError(PS_ERR_UNKNOWN, false, "database error"); 419 } 412 420 psError(PS_ERR_UNKNOWN, false, "database error"); 413 421 psFree(row); 414 return false;415 }416 422 psFree(pendingRow); 423 return false; 424 } 417 425 psFree(row); 418 426 419 return true; 420 } 421 422 423 static bool faultexpMode(pxConfig *config) 427 // delete the p3PendingExp row from the database 428 if (!p3PendingExpDeleteObject(config->dbh, pendingRow)) { 429 // rollback 430 if (!psDBRollback(config->dbh)) { 431 psError(PS_ERR_UNKNOWN, false, "database error"); 432 } 433 psError(PS_ERR_UNKNOWN, false, "database error"); 434 psFree(pendingRow); 435 return false; 436 } 437 438 psFree(pendingRow); 439 440 // point of no return for p3PendingExp -> p3ProcessedExp 441 if (!psDBCommit(config->dbh)) { 442 psError(PS_ERR_UNKNOWN, false, "database error"); 443 return false; 444 } 445 446 return true; 447 } 448 449 static bool processedexpMode(pxConfig *config) 424 450 { 425 451 PS_ASSERT_PTR_NON_NULL(config, false); 426 452 427 453 bool status = false; 428 ps S8 code = psMetadataLookupS8(&status, config->args, "-code");429 if (!status) { 430 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for - code");431 return false; 432 } 433 434 if (!pxSetFaultCode(config->dbh, "p3PendingExp", config->where, code)) {435 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");436 return false;437 }438 439 return true; 440 } 441 442 443 static bool blockMode(pxConfig *config) 444 { 445 PS_ASSERT_PTR_NON_NULL(config, false);446 447 bool status = false;448 psString label = psMetadataLookupStr(&status, config->args, "-label");449 if (!status) {450 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -label"); 451 return false;452 }453 if (!label) {454 ps Error(PS_ERR_UNKNOWN, true, "-label is required");455 return false;456 } 457 458 if (!p3MaskInsert(config->dbh, label)) {459 ps Error(PS_ERR_UNKNOWN, false, "database error");460 return false;461 }462 463 return true;464 } 465 466 static bool maskedMode(pxConfig *config) 467 { 468 PS_ASSERT_PTR_NON_NULL(config, false);469 470 psString query = psStringCopy("SELECT * FROM p3Mask");454 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 455 if (!status) { 456 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit"); 457 return false; 458 } 459 460 bool faulted = psMetadataLookupU64(&status, config->args, "-faulted"); 461 if (!status) { 462 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -faulted"); 463 return false; 464 } 465 466 psString query = psStringCopy( 467 "SELECT" 468 " p3ProcessedExp.*," 469 " rawExp.camera" 470 " FROM p3ProcessedExp" 471 " JOIN rawExp" 472 " USING(exp_tag)" 473 " WHERE" 474 " p3ProcessedExp.exp_tag IS NOT NULL" 475 ); 476 477 if (config->where) { 478 psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL); 479 psStringAppend(&query, " %s", whereClause); 480 psFree(whereClause); 481 } 482 483 if (faulted) { 484 // list only faulted rows 485 psStringAppend(&query, " %s", "AND p3ProcessedExp.fault != 0"); 486 } else { 487 // don't list faulted rows 488 psStringAppend(&query, " %s", "AND p3ProcessedExp.fault = 0"); 489 } 490 491 // treat limit == 0 as "no limit" 492 if (limit) { 493 psString limitString = psDBGenerateLimitSQL(limit); 494 psStringAppend(&query, " %s", limitString); 495 psFree(limitString); 496 } 471 497 472 498 if (!p_psDBRunQuery(config->dbh, query)) { … … 484 510 if (!psArrayLength(output)) { 485 511 // XXX check psError here 486 psError(PS_ERR_UNKNOWN, false, "no p3 Maskrows found");512 psError(PS_ERR_UNKNOWN, false, "no p3ProcessedExp rows found"); 487 513 psFree(output); 488 514 return true; … … 499 525 } 500 526 527 // negate simple so the default is true 528 if (!ippdbPrintMetadatas(stdout, output, "p3ProcessedExp", !simple)) { 529 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 530 psFree(output); 531 return false; 532 } 533 534 psFree(output); 535 536 return true; 537 } 538 539 540 static bool updateprocessedexpMode(pxConfig *config) 541 { 542 PS_ASSERT_PTR_NON_NULL(config, false); 543 544 bool status = false; 545 psS8 code = psMetadataLookupS8(&status, config->args, "-code"); 546 if (!status) { 547 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -code"); 548 return false; 549 } 550 551 if (!pxSetFaultCode(config->dbh, "p3ProcessedExp", config->where, code)) { 552 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 553 return false; 554 } 555 556 return true; 557 } 558 559 560 static bool blockMode(pxConfig *config) 561 { 562 PS_ASSERT_PTR_NON_NULL(config, false); 563 564 bool status = false; 565 psString label = psMetadataLookupStr(&status, config->args, "-label"); 566 if (!status) { 567 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -label"); 568 return false; 569 } 570 if (!label) { 571 psError(PS_ERR_UNKNOWN, true, "-label is required"); 572 return false; 573 } 574 575 if (!p3MaskInsert(config->dbh, label)) { 576 psError(PS_ERR_UNKNOWN, false, "database error"); 577 return false; 578 } 579 580 return true; 581 } 582 583 static bool maskedMode(pxConfig *config) 584 { 585 PS_ASSERT_PTR_NON_NULL(config, false); 586 587 psString query = psStringCopy("SELECT * FROM p3Mask"); 588 589 if (!p_psDBRunQuery(config->dbh, query)) { 590 psError(PS_ERR_UNKNOWN, false, "database error"); 591 psFree(query); 592 return false; 593 } 594 psFree(query); 595 596 psArray *output = p_psDBFetchResult(config->dbh); 597 if (!output) { 598 psError(PS_ERR_UNKNOWN, false, "database error"); 599 return false; 600 } 601 if (!psArrayLength(output)) { 602 // XXX check psError here 603 psError(PS_ERR_UNKNOWN, false, "no p3Mask rows found"); 604 psFree(output); 605 return true; 606 } 607 608 bool simple = false; 609 { 610 bool status = false; 611 simple = psMetadataLookupBool(&status, config->args, "-simple"); 612 if (!status) { 613 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple"); 614 return false; 615 } 616 } 617 501 618 // negative simple so the default is true 502 619 if (!ippdbPrintMetadatas(stdout, output, "p3Mask", !simple)) {
Note:
See TracChangeset
for help on using the changeset viewer.
