Changeset 25766 for branches/eam_branches/20090820/ippTools/src
- Timestamp:
- Oct 2, 2009, 5:10:19 PM (17 years ago)
- Location:
- branches/eam_branches/20090820
- Files:
-
- 44 edited
- 7 copied
-
. (modified) (1 prop)
-
ippTools/src (modified) (1 prop)
-
ippTools/src/Makefile.am (modified) (7 diffs)
-
ippTools/src/addtool.c (copied) (copied from trunk/ippTools/src/addtool.c )
-
ippTools/src/addtool.h (copied) (copied from trunk/ippTools/src/addtool.h )
-
ippTools/src/addtoolConfig.c (copied) (copied from trunk/ippTools/src/addtoolConfig.c )
-
ippTools/src/camtool.c (modified) (1 diff)
-
ippTools/src/chiptool.c (modified) (5 diffs)
-
ippTools/src/chiptool.h (modified) (1 diff)
-
ippTools/src/chiptoolConfig.c (modified) (3 diffs)
-
ippTools/src/dettool.c (modified) (6 diffs)
-
ippTools/src/dettool.h (modified) (2 diffs)
-
ippTools/src/dettoolConfig.c (modified) (14 diffs)
-
ippTools/src/dettool_detrunsummary.c (modified) (3 diffs)
-
ippTools/src/dettool_processedimfile.c (modified) (5 diffs)
-
ippTools/src/difftool.c (modified) (8 diffs)
-
ippTools/src/difftool.h (modified) (1 diff)
-
ippTools/src/difftoolConfig.c (modified) (2 diffs)
-
ippTools/src/disttool.c (modified) (28 diffs)
-
ippTools/src/disttool.h (modified) (3 diffs)
-
ippTools/src/disttoolConfig.c (modified) (12 diffs)
-
ippTools/src/faketool.c (modified) (3 diffs)
-
ippTools/src/faketool.h (modified) (1 diff)
-
ippTools/src/faketoolConfig.c (modified) (2 diffs)
-
ippTools/src/magicdstool.c (modified) (24 diffs)
-
ippTools/src/magicdstool.h (modified) (1 diff)
-
ippTools/src/magicdstoolConfig.c (modified) (8 diffs)
-
ippTools/src/magictool.c (modified) (2 diffs)
-
ippTools/src/magictoolConfig.c (modified) (1 diff)
-
ippTools/src/pstamptool.c (modified) (10 diffs)
-
ippTools/src/pstamptool.h (modified) (1 diff)
-
ippTools/src/pstamptoolConfig.c (modified) (6 diffs)
-
ippTools/src/pubtool.c (modified) (2 diffs)
-
ippTools/src/pubtoolConfig.c (modified) (1 diff)
-
ippTools/src/pxadd.c (copied) (copied from trunk/ippTools/src/pxadd.c )
-
ippTools/src/pxadd.h (copied) (copied from trunk/ippTools/src/pxadd.h )
-
ippTools/src/pxinject.c (modified) (1 diff)
-
ippTools/src/pxinjectConfig.c (modified) (1 diff)
-
ippTools/src/pxmagic.c (copied) (copied from trunk/ippTools/src/pxmagic.c )
-
ippTools/src/pxmagic.h (copied) (copied from trunk/ippTools/src/pxmagic.h )
-
ippTools/src/pxtools.c (modified) (2 diffs)
-
ippTools/src/pxtools.h (modified) (2 diffs)
-
ippTools/src/pztool.c (modified) (3 diffs)
-
ippTools/src/pztoolConfig.c (modified) (1 diff)
-
ippTools/src/regtool.c (modified) (8 diffs)
-
ippTools/src/regtoolConfig.c (modified) (3 diffs)
-
ippTools/src/stacktool.c (modified) (3 diffs)
-
ippTools/src/stacktoolConfig.c (modified) (2 diffs)
-
ippTools/src/warptool.c (modified) (5 diffs)
-
ippTools/src/warptool.h (modified) (1 diff)
-
ippTools/src/warptoolConfig.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20090820
- Property svn:mergeinfo changed
-
branches/eam_branches/20090820/ippTools/src
- Property svn:ignore
-
old new 34 34 disttool 35 35 receivetool 36 36 addtool 37 37 pubtool
-
- Property svn:ignore
-
branches/eam_branches/20090820/ippTools/src/Makefile.am
r24512 r25766 1 1 bin_PROGRAMS = \ 2 addtool \ 2 3 caltool \ 3 4 camtool \ … … 23 24 pubtool 24 25 25 26 bin_SCRIPTS = \27 fakemagic28 29 26 pkginclude_HEADERS = \ 27 pxadd.h \ 30 28 pxadmin.h \ 31 29 pxcam.h \ … … 34 32 pxdata.h \ 35 33 pxfake.h \ 34 pxmagic.h \ 36 35 pxregister.h \ 37 36 pxtag.h \ … … 42 41 43 42 noinst_HEADERS = \ 43 addtool.h \ 44 44 caltool.h \ 45 45 camtool.h \ … … 68 68 libpxtools_la_LDFLAGS = -release $(PACKAGE_VERSION) 69 69 libpxtools_la_SOURCES = \ 70 pxadd.c \ 70 71 pxcam.c \ 71 72 pxchip.c \ … … 75 76 pxfake.c \ 76 77 pxfault.c \ 78 pxmagic.c \ 77 79 pxregister.c \ 78 80 pxtag.c \ … … 96 98 pstamptool.c \ 97 99 pstamptoolConfig.c 100 101 addtool_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(IPPDB_CFLAGS) 102 addtool_LDADD = $(PSLIB_LIBS) $(PSMODULES_LIBS) $(IPPDB_LIBS) libpxtools.la 103 addtool_SOURCES = \ 104 addtool.c \ 105 addtoolConfig.c 98 106 99 107 caltool_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(IPPDB_CFLAGS) -
branches/eam_branches/20090820/ippTools/src/camtool.c
r24681 r25766 656 656 return false; 657 657 } 658 659 /* if (!pxaddQueueByCamID(config, */ 660 /* pendingRow->cam_id, */ 661 /* pendingRow->workdir, */ 662 /* pendingRow->label, */ 663 /* pendingRow->reduction, */ 664 /* pendingRow->dvodb */ 665 /* )) { */ 666 /* // rollback */ 667 /* if (!psDBRollback(config->dbh)) { */ 668 /* psError(PS_ERR_UNKNOWN, false, "database error"); */ 669 /* } */ 670 /* psError(PS_ERR_UNKNOWN, false, "failed to queue new addRun"); */ 671 /* psFree(pendingRow); */ 672 /* return false; */ 673 /* } */ 674 658 675 psFree(pendingRow); 659 676 -
branches/eam_branches/20090820/ippTools/src/chiptool.c
r24562 r25766 54 54 static bool tofullimfileMode(pxConfig *config); 55 55 static bool topurgedimfileMode(pxConfig *config); 56 static bool toscrubbedimfileMode(pxConfig *config); 56 57 static bool exportrunMode(pxConfig *config); 57 58 static bool importrunMode(pxConfig *config); … … 93 94 MODECASE(CHIPTOOL_MODE_TOFULLIMFILE, tofullimfileMode); 94 95 MODECASE(CHIPTOOL_MODE_TOPURGEDIMFILE, topurgedimfileMode); 96 MODECASE(CHIPTOOL_MODE_TOSCRUBBEDIMFILE, toscrubbedimfileMode); 95 97 MODECASE(CHIPTOOL_MODE_EXPORTRUN, exportrunMode); 96 98 MODECASE(CHIPTOOL_MODE_IMPORTRUN, importrunMode); … … 601 603 PXOPT_COPY_STR(config->args, where, "-reduction", "chipRun.reduction", "=="); 602 604 pxAddLabelSearchArgs (config, where, "-label", "chipRun.label", "LIKE"); 603 PXOPT_COPY_S64(config->args, where, "-magicked", "chipRun.magicked", "=="); 605 PXOPT_COPY_S64(config->args, where, "-magicked", "chipProcessedImfile.magicked", "=="); 606 607 PXOPT_LOOKUP_U64(magicked, config->args, "-magicked", false, false); 608 PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false); 609 PXOPT_LOOKUP_BOOL(not_destreaked, config->args, "-not_destreaked", false); 604 610 605 611 if (!psListLength(where->list) && … … 629 635 // don't list faulted rows 630 636 psStringAppend(&query, " %s", "AND chipProcessedImfile.fault = 0"); 637 } 638 if (not_destreaked) { 639 if (destreaked) { 640 psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -destreaked makes no sense"); 641 return false; 642 } 643 if (magicked) { 644 psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -magicked makes no sense"); 645 return false; 646 } 647 psStringAppend(&query, " AND chipProcessedImfile.magicked = 0"); 648 } 649 if (destreaked) { 650 psStringAppend(&query, " AND chipProcessedImfile.magicked != 0"); 631 651 } 632 652 … … 1333 1353 return change_imfile_data_state(config, "purged", "goto_purged"); 1334 1354 } 1335 1355 static bool toscrubbedimfileMode(pxConfig *config) 1356 { 1357 return change_imfile_data_state(config, "scrubbed", "goto_scrubbed"); 1358 } 1336 1359 bool exportrunMode(pxConfig *config) 1337 1360 { -
branches/eam_branches/20090820/ippTools/src/chiptool.h
r23339 r25766 45 45 CHIPTOOL_MODE_TOFULLIMFILE, 46 46 CHIPTOOL_MODE_TOPURGEDIMFILE, 47 CHIPTOOL_MODE_TOSCRUBBEDIMFILE, 47 48 CHIPTOOL_MODE_EXPORTRUN, 48 49 CHIPTOOL_MODE_IMPORTRUN -
branches/eam_branches/20090820/ippTools/src/chiptoolConfig.c
r24562 r25766 158 158 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 159 159 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by chipRun label (LIKE comparison)", NULL); 160 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-magicked", 0, "search by magicked status", false); 160 161 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-destreaked", 0, "search for destreaked images", false); 162 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-not_destreaked", 0, "search for images that have not been destreaked", false); 163 psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-magicked", 0, "search by magicked value", 0); 161 164 psMetadataAddU64(processedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 162 165 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-all", 0, "list everything without search terms", false); … … 247 250 psMetadataAddS64(topurgedimfileArgs, PS_LIST_TAIL, "-chip_id", 0, "chip ID to update", 0); 248 251 psMetadataAddStr(topurgedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "class ID to update", NULL); 252 253 // -toscrubbedimfile 254 psMetadata *toscrubbedimfileArgs = psMetadataAlloc(); 255 psMetadataAddS64(toscrubbedimfileArgs, PS_LIST_TAIL, "-chip_id", 0, "chip ID to update", 0); 256 psMetadataAddStr(toscrubbedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "class ID to update", NULL); 249 257 250 258 // -exportrun … … 282 290 PXOPT_ADD_MODE("-tofullimfile", "set imfile state to full", CHIPTOOL_MODE_TOFULLIMFILE, tofullimfileArgs); 283 291 PXOPT_ADD_MODE("-topurgedimfile", "set imfile state to purged", CHIPTOOL_MODE_TOPURGEDIMFILE, topurgedimfileArgs); 292 PXOPT_ADD_MODE("-toscrubbedimfile", "set imfile state to scrubbed", CHIPTOOL_MODE_TOSCRUBBEDIMFILE, toscrubbedimfileArgs); 284 293 285 294 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", CHIPTOOL_MODE_EXPORTRUN, exportrunArgs); -
branches/eam_branches/20090820/ippTools/src/dettool.c
r24866 r25766 150 150 MODECASE(DETTOOL_MODE_UPDATEDETRUN, updatedetrunMode); 151 151 MODECASE(DETTOOL_MODE_RERUN, rerunMode); 152 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_DETRUNSUMMARY, pendingcleanup_detrunsummaryMode); 152 153 // register 153 154 MODECASE(DETTOOL_MODE_REGISTER_DETREND, register_detrendMode); … … 1827 1828 if (!strcmp(data_state, "drop")) return true; 1828 1829 if (!strcmp(data_state, "register")) return true; 1830 // These are valid data states, and are necessary for the cleanup to work correctly. 1831 if (!strcmp(data_state, "full")) return true; 1832 if (!strcmp(data_state, "goto_cleaned")) return true; 1833 if (!strcmp(data_state, "goto_scrubbed")) return true; 1834 if (!strcmp(data_state, "goto_purged")) return true; 1835 if (!strcmp(data_state, "cleaned")) return true; 1836 if (!strcmp(data_state, "scrubbed")) return true; 1837 if (!strcmp(data_state, "purged")) return true; 1838 if (!strcmp(data_state, "error_cleaned")) return true; 1839 if (!strcmp(data_state, "error_scrubbed")) return true; 1840 if (!strcmp(data_state, "error_purged")) return true; 1829 1841 1830 1842 psError(PS_ERR_UNKNOWN, true, "invalid data state: %s", data_state); … … 1853 1865 1854 1866 if (!isValidDataState (data_state)) return false; 1855 1867 1856 1868 char *query = "UPDATE detProcessedImfile SET data_state = '%s'" 1857 1869 " WHERE det_id = %" PRId64 … … 1900 1912 " WHERE det_id = %" PRId64 1901 1913 " AND iteration = %" PRId32 1902 " AND class_id = %s";1914 " AND class_id = '%s'"; 1903 1915 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, iteration, class_id)) { 1904 1916 psError(PS_ERR_UNKNOWN, false, … … 1922 1934 " WHERE det_id = %" PRId64 1923 1935 " AND iteration = %" PRId32 1924 " AND class_id = %s"; 1925 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, iteration)) { 1936 " AND class_id = '%s'"; 1937 /* fprintf(stderr,"DETTOOL SAYS: %s\n",query); */ 1938 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, iteration,class_id)) { 1926 1939 psError(PS_ERR_UNKNOWN, false, 1927 1940 "failed to change state for det_id %" PRId64 ", iteration %" PRId32, … … 1944 1957 " WHERE det_id = %" PRId64 1945 1958 " AND iteration = %" PRId32 1946 " AND class_id = %s";1959 " AND class_id = '%s'"; 1947 1960 if (!p_psDBRunQueryF(config->dbh, query, data_state, det_id, iteration, class_id)) { 1948 1961 psError(PS_ERR_UNKNOWN, false, -
branches/eam_branches/20090820/ippTools/src/dettool.h
r23310 r25766 111 111 DETTOOL_MODE_REVERTDETRUNSUMMARY, 112 112 DETTOOL_MODE_UPDATEDETRUNSUMMARY, 113 DETTOOL_MODE_PENDINGCLEANUP_DETRUNSUMMARY, 113 114 DETTOOL_MODE_UPDATEDETRUN, 114 115 DETTOOL_MODE_RERUN, … … 209 210 bool revertdetrunsummaryMode(pxConfig *config); 210 211 bool updatedetrunsummaryMode(pxConfig *config); 212 bool pendingcleanup_detrunsummaryMode(pxConfig *config); 211 213 212 214 // other utilities -
branches/eam_branches/20090820/ippTools/src/dettoolConfig.c
r24866 r25766 41 41 // XXX EAM : is this used? does it make sense? 42 42 psMetadata *pendingArgs = psMetadataAlloc(); 43 psMetadataAddS64(pendingArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0);44 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exposure type", NULL);45 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-inst", 0, "search by camera", NULL);46 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-telescope", 0, "search by telescope", NULL);47 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-filter", 0, "search by filter", NULL);43 psMetadataAddS64(pendingArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 44 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exposure type", NULL); 45 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-inst", 0, "search by camera", NULL); 46 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-telescope", 0, "search by telescope", NULL); 47 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-filter", 0, "search by filter", NULL); 48 48 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-uri", 0, "search by URL", NULL); 49 psMetadataAddBool(pendingArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);49 psMetadataAddBool(pendingArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 50 50 51 51 // -definebytag … … 125 125 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_min", 0, "define min rotator position angle", NAN); 126 126 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_max", 0, "define max rotator position angle", NAN); 127 127 128 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_sun_angle_min", 0, "define min solar angle", NAN); 128 129 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_sun_angle_max", 0, "define max solar angle", NAN); … … 137 138 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_moon_phase_max", 0, "define max moon phase", NAN); 138 139 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-comment", 0, "search by comment field (LIKE comparison)", NULL); 140 139 141 140 142 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "print the exposures that would be included in the detrend run and exit", false); … … 207 209 // -addcorrectimfile 208 210 psMetadata *addcorrectimfileArgs = psMetadataAlloc(); 209 psMetadataAddS64(addcorrectimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0);210 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID (required)", NULL);211 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-uri", 0, "define resid file URI", NULL);211 psMetadataAddS64(addcorrectimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 212 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID (required)", NULL); 213 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-uri", 0, "define resid file URI", NULL); 212 214 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 213 215 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); … … 306 308 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 307 309 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 308 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-data_state", 0, "se arch for telescope", NULL);310 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); 309 311 310 312 // -pendingcleanup_processedimfile … … 366 368 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 367 369 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 368 psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-data_state", 0, "se arch for telescope", NULL);370 psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); 369 371 370 372 // -pendingcleanup_processedexp … … 426 428 psMetadataAddS32(updatestackedArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 427 429 psMetadataAddStr(updatestackedArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 428 psMetadataAddStr(updatestackedArgs, PS_LIST_TAIL, "-data_state", 0, "se arch for telescope", NULL);430 psMetadataAddStr(updatestackedArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); 429 431 430 432 // -pendingcleanup_stacked … … 478 480 psMetadataAddS32(updatenormalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 479 481 psMetadataAddStr(updatenormalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 480 psMetadataAddStr(updatenormalizedstatArgs, PS_LIST_TAIL, "-data_state", 0, "se arch for telescope", NULL);482 psMetadataAddStr(updatenormalizedstatArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); 481 483 482 484 // -pendingcleanup_normalizedstat … … 540 542 psMetadataAddS32(updatenormalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 541 543 psMetadataAddStr(updatenormalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 542 psMetadataAddStr(updatenormalizedimfileArgs, PS_LIST_TAIL, "-data_state", 0, "se arch for telescope", NULL);544 psMetadataAddStr(updatenormalizedimfileArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); 543 545 544 546 // -pendingcleanup_normalizedimfile … … 598 600 psMetadataAddS64(updatenormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 599 601 psMetadataAddS32(updatenormalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 600 psMetadataAddStr(updatenormalizedexpArgs, PS_LIST_TAIL, "-data_state", 0, "se arch for telescope", NULL);602 psMetadataAddStr(updatenormalizedexpArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); 601 603 602 604 // -pendingcleanup_normalizedexp … … 678 680 psMetadataAddS64(updateresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 679 681 psMetadataAddStr(updateresidimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 680 psMetadataAddStr(updateresidimfileArgs, PS_LIST_TAIL, "-data_state", 0, "se arch for telescope", NULL);682 psMetadataAddStr(updateresidimfileArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); 681 683 682 684 // -pendingcleanup_residimfile … … 759 761 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 760 762 psMetadataAddBool(updateresidexpArgs, PS_LIST_TAIL, "-reject", 0, "exposure is not to be stacked in the next iteration", false); 761 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-data_state", 0, "se arch for telescope", NULL);763 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-data_state", 0, "set state", NULL); 762 764 763 765 // -pendingcleanup_residexp … … 813 815 psMetadataAddBool(updatedetrunsummaryArgs, PS_LIST_TAIL, "-accept", 0, "declare that this detrun iteration is accepted as a master", false); 814 816 psMetadataAddBool(updatedetrunsummaryArgs, PS_LIST_TAIL, "-reject", 0, "reject this detrun iteration as a master", false); 817 psMetadataAddStr(updatedetrunsummaryArgs, PS_LIST_TAIL, "-data_state", 0, "set the data state", NULL); 818 psMetadataAddS32(updatedetrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 819 820 // -pendingcleanup_detrunsummary 821 psMetadata *pendingcleanup_detrunsummaryArgs = psMetadataAlloc(); 822 psMetadataAddS64(pendingcleanup_detrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", 0); 823 psMetadataAddS32(pendingcleanup_detrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 824 psMetadataAddU64(pendingcleanup_detrunsummaryArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 825 psMetadataAddBool(pendingcleanup_detrunsummaryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 815 826 816 827 // -updatedetrun … … 968 979 PXOPT_ADD_MODE("-updatedetrunsummary", "", DETTOOL_MODE_UPDATEDETRUNSUMMARY, updatedetrunsummaryArgs); 969 980 981 PXOPT_ADD_MODE("-pendingcleanup_detrunsummary", "", DETTOOL_MODE_PENDINGCLEANUP_DETRUNSUMMARY, pendingcleanup_detrunsummaryArgs); 982 970 983 PXOPT_ADD_MODE("-updatedetrun", "", DETTOOL_MODE_UPDATEDETRUN, updatedetrunArgs); 971 984 PXOPT_ADD_MODE("-rerun", "", DETTOOL_MODE_RERUN, rerunArgs); -
branches/eam_branches/20090820/ippTools/src/dettool_detrunsummary.c
r23688 r25766 336 336 } 337 337 338 // XXX need to add -data_state here 338 bool pendingcleanup_detrunsummaryMode(pxConfig *config) { 339 PS_ASSERT_PTR_NON_NULL(config, false); 340 341 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 342 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 343 344 psMetadata *where = psMetadataAlloc(); 345 PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "=="); 346 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 347 348 psString query = pxDataGet("dettool_pendingcleanup_detrunsummary.sql"); 349 if (!query) { 350 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 351 return(false); 352 } 353 354 if (psListLength(where->list)) { 355 psString whereClause = psDBGenerateWhereConditionSQL(where, "detRunSummary"); 356 psStringAppend(&query, " AND %s", whereClause); 357 psFree(whereClause); 358 } 359 psFree(where); 360 361 // treat limit == 0 as "no limit" 362 if (limit) { 363 psString limitString = psDBGenerateLimitSQL(limit); 364 psStringAppend(&query, " %s", limitString); 365 psFree(limitString); 366 } 367 // fprintf(stderr,">>>%s<<<\n",query); 368 if (!p_psDBRunQuery(config->dbh, query)) { 369 psError(PS_ERR_UNKNOWN, false, "database error"); 370 psFree(query); 371 return(false); 372 } 373 psFree(query); 374 375 psArray *output = p_psDBFetchResult(config->dbh); 376 if (!output) { 377 psError(PS_ERR_UNKNOWN, false, "database error"); 378 return(false); 379 } 380 if (!psArrayLength(output)) { 381 psTrace("dettool", PS_LOG_INFO, "no rows found"); 382 psFree(output); 383 return(true); 384 } 385 386 // negative simple so the default is true 387 if (!ippdbPrintMetadatas(stdout, output, "pendingCleanupDetRun", !simple)) { 388 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 389 psFree(output); 390 return(false); 391 } 392 psFree(output); 393 394 return(true); 395 } 396 397 398 // preliminary code now. 339 399 bool updatedetrunsummaryMode(pxConfig *config) 340 400 { … … 344 404 PXOPT_LOOKUP_BOOL(accept, config->args, "-accept", false); 345 405 PXOPT_LOOKUP_BOOL(reject, config->args, "-reject", false); 406 PXOPT_LOOKUP_STR(data_state, config->args, "-data_state", ((accept == 0)&&(reject == 0)), false); 407 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", ((accept == 0)&&(reject == 0)), false); 408 346 409 347 410 if (accept && reject) { … … 350 413 } 351 414 352 if (!(accept || reject)) { 353 psError(PS_ERR_UNKNOWN, true, "either -accept or -reject is required"); 354 return false; 355 } 356 357 char *query = "UPDATE detRunSummary SET accept = %d WHERE det_id = %"PRId64; 358 if (!p_psDBRunQueryF(config->dbh, query, accept, det_id)) { 359 psError(PS_ERR_UNKNOWN, false, "database error"); 360 return false; 415 if (!(accept || reject || (data_state != NULL))) { 416 psError(PS_ERR_UNKNOWN, true, "either -accept or -reject is required if -data_state is not supplied"); 417 return false; 418 } 419 420 if (accept || reject) { 421 char *query = "UPDATE detRunSummary SET accept = %d WHERE det_id = %"PRId64; 422 if (!p_psDBRunQueryF(config->dbh, query, accept, det_id)) { 423 psError(PS_ERR_UNKNOWN, false, "database error"); 424 return false; 425 } 426 } 427 else { 428 PS_ASSERT_PTR_NON_NULL(data_state,false); 429 430 /* if (!isValidDataState(data_state)) return false; */ 431 432 433 434 char *query_detRunSummary = "UPDATE detRunSummary SET data_state = '%s'" 435 " WHERE det_id = %" PRId64 436 " AND iteration = %" PRId32; 437 if (!p_psDBRunQueryF(config->dbh, query_detRunSummary, data_state, det_id,iteration)) { 438 psError(PS_ERR_UNKNOWN, false, 439 "failed to change state for det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 440 return false; 441 } 442 443 /* This check allows the one update to flag everything for cleanup. The check for full is only temporary while I test for bugs. */ 444 if ((!strncmp(data_state,"goto_",5) 445 // || (!strcmp(data_state,"full")) 446 // || (!strcmp(data_state,"cleaned")) 447 )) { 448 char *query_detProcessedImfile = "UPDATE detProcessedImfile SET data_state = '%s'" 449 " WHERE det_id = %" PRId64; 450 if (!p_psDBRunQueryF(config->dbh, query_detProcessedImfile,data_state,det_id)) { 451 psError(PS_ERR_UNKNOWN, false, 452 "failed to change state for detProcessedImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 453 return(false); 454 } 455 456 char *query_detProcessedExp = "UPDATE detProcessedExp SET data_state = '%s'" 457 " WHERE det_id = %" PRId64; 458 if (!p_psDBRunQueryF(config->dbh, query_detProcessedExp,data_state,det_id)) { 459 psError(PS_ERR_UNKNOWN, false, 460 "failed to change state for detProcessedExp det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 461 return(false); 462 } 463 464 char *query_detNormalizedImfile = "UPDATE detNormalizedImfile SET data_state = '%s'" 465 " WHERE det_id = %" PRId64 466 " AND iteration = %" PRId32; 467 if (!p_psDBRunQueryF(config->dbh, query_detNormalizedImfile,data_state,det_id,iteration)) { 468 psError(PS_ERR_UNKNOWN, false, 469 "failed to change state for detNormalizedImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 470 return(false); 471 } 472 473 char *query_detNormalizedStatImfile = "UPDATE detNormalizedStatImfile SET data_state = '%s'" 474 " WHERE det_id = %" PRId64 475 " AND iteration = %" PRId32; 476 if (!p_psDBRunQueryF(config->dbh, query_detNormalizedStatImfile,data_state,det_id,iteration)) { 477 psError(PS_ERR_UNKNOWN, false, 478 "failed to change state for detNormalizedStatImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 479 return(false); 480 } 481 482 char *query_detNormalizedExp = "UPDATE detNormalizedExp SET data_state = '%s'" 483 " WHERE det_id = %" PRId64 484 " AND iteration = %" PRId32; 485 if (!p_psDBRunQueryF(config->dbh, query_detNormalizedExp,data_state,det_id,iteration)) { 486 psError(PS_ERR_UNKNOWN, false, 487 "failed to change state for detNormalizedExp det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 488 return(false); 489 } 490 491 char *query_detResidImfile = "UPDATE detResidImfile SET data_state = '%s'" 492 " WHERE det_id = %" PRId64 493 " AND iteration = %" PRId32; 494 if (!p_psDBRunQueryF(config->dbh, query_detResidImfile,data_state,det_id,iteration)) { 495 psError(PS_ERR_UNKNOWN, false, 496 "failed to change state for detResidImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 497 return(false); 498 } 499 500 char *query_detResidExp = "UPDATE detResidExp SET data_state = '%s'" 501 " WHERE det_id = %" PRId64 502 " AND iteration = %" PRId32; 503 if (!p_psDBRunQueryF(config->dbh, query_detResidExp,data_state,det_id,iteration)) { 504 psError(PS_ERR_UNKNOWN, false, 505 "failed to change state for detResidExp det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 506 return(false); 507 } 508 509 char *query_detStackedImfile = "UPDATE detStackedImfile SET data_state = '%s'" 510 " WHERE det_id = %" PRId64 511 " AND iteration = %" PRId32; 512 if (!p_psDBRunQueryF(config->dbh, query_detStackedImfile,data_state,det_id,iteration)) { 513 psError(PS_ERR_UNKNOWN, false, 514 "failed to change state for detStackedImfile det_id %" PRId64 ", iteration %" PRId32, det_id,iteration); 515 return(false); 516 } 517 } 518 /* End if */ 519 361 520 } 362 521 -
branches/eam_branches/20090820/ippTools/src/dettool_processedimfile.c
r23688 r25766 314 314 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 315 315 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 316 316 /* int i; */ 317 317 psMetadata *where = psMetadataAlloc(); 318 318 PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "=="); … … 345 345 return false; 346 346 } 347 /* fprintf(stderr,"DETTOOL:procimfile: %s\n",query); */ 347 348 psFree(query); 348 349 … … 350 351 if (!output) { 351 352 psError(PS_ERR_UNKNOWN, false, "database error"); 353 /* fprintf(stderr,"WTF !output?\n"); */ 352 354 return false; 353 355 } 354 356 if (!psArrayLength(output)) { 355 357 psTrace("dettool", PS_LOG_INFO, "no rows found"); 358 /* fprintf(stderr,"WTF no rows??\n"); */ 356 359 psFree(output); 357 360 return true; … … 359 362 360 363 // negative simple so the default is true 364 /* i = (int) ippdbPrintMetadatas(stdout, output, "detCleanupProcessedImfile", !simple); */ 365 /* fprintf(stderr,">>%d<<\n",i); */ 361 366 if (!ippdbPrintMetadatas(stdout, output, "detCleanupProcessedImfile", !simple)) { 362 367 psError(PS_ERR_UNKNOWN, false, "failed to print array"); … … 364 369 return false; 365 370 } 371 /* fprintf(stderr,"DETTOOL:procimfile: %s\n",output); */ 372 /* psFree(output); */ 366 373 367 374 psFree(output); -
branches/eam_branches/20090820/ippTools/src/difftool.c
r25074 r25766 37 37 static bool todiffskyfileMode(pxConfig *config); 38 38 static bool adddiffskyfileMode(pxConfig *config); 39 static bool advanceMode(pxConfig *config); 39 40 static bool diffskyfileMode(pxConfig *config); 40 41 static bool revertdiffskyfileMode(pxConfig *config); … … 50 51 51 52 static bool setdiffRunState(pxConfig *config, psS64 diff_id, const char *state, psS64 magicked); 52 static bool diffRunComplete(pxConfig *config);53 53 54 54 # define MODECASE(caseName, func) \ … … 76 76 MODECASE(DIFFTOOL_MODE_TODIFFSKYFILE, todiffskyfileMode); 77 77 MODECASE(DIFFTOOL_MODE_ADDDIFFSKYFILE, adddiffskyfileMode); 78 MODECASE(DIFFTOOL_MODE_ADVANCE, advanceMode); 78 79 MODECASE(DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileMode); 79 80 MODECASE(DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileMode); 80 81 MODECASE(DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunMode); 81 MODECASE(DIFFTOOL_MODE_DEFINEWARPSTACK, definewarpstackMode);82 MODECASE(DIFFTOOL_MODE_DEFINEWARPSTACK, definewarpstackMode); 82 83 MODECASE(DIFFTOOL_MODE_DEFINEWARPWARP, definewarpwarpMode); 83 84 MODECASE(DIFFTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); … … 555 556 } 556 557 557 if (!diffRunComplete(config)) {558 if (!psDBRollback(config->dbh)) {559 psError(PS_ERR_UNKNOWN, false, "database error");560 }561 psError(PS_ERR_UNKNOWN, false, "database error");562 return false;563 }564 565 558 // point of no return 566 559 if (!psDBCommit(config->dbh)) { … … 569 562 } 570 563 564 565 return true; 566 } 567 568 static bool advanceMode(pxConfig *config) 569 { 570 PS_ASSERT_PTR_NON_NULL(config, false); 571 572 psMetadata *where = psMetadataAlloc(); 573 PXOPT_COPY_S64(config->args, where, "-diff_id", "diffRun.diff_id", "=="); 574 pxAddLabelSearchArgs (config, where, "-label", "diffRun.label", "=="); 575 576 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 577 578 // look for completed diffRuns 579 psString query = pxDataGet("difftool_completed_runs.sql"); 580 if (!query) { 581 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 582 return false; 583 } 584 585 psString whereString = psStringCopy(""); 586 if (psListLength(where->list)) { 587 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 588 psStringAppend(&whereString, "\n AND %s", whereClause); 589 psFree(whereClause); 590 } 591 psFree(where); 592 593 // treat limit == 0 as "no limit" 594 if (limit) { 595 psString limitString = psDBGenerateLimitSQL(limit); 596 psStringAppend(&query, " %s", limitString); 597 psFree(limitString); 598 } 599 600 if (!psDBTransaction(config->dbh)) { 601 psError(PS_ERR_UNKNOWN, false, "database error"); 602 psFree(whereString); 603 return false; 604 } 605 606 if (!p_psDBRunQueryF(config->dbh, query, whereString)) { 607 psError(PS_ERR_UNKNOWN, false, "database error"); 608 psFree(query); 609 psFree(whereString); 610 if (!psDBRollback(config->dbh)) { 611 psError(PS_ERR_UNKNOWN, false, "database error"); 612 } 613 return false; 614 } 615 psFree(query); 616 psFree(whereString); 617 618 psArray *output = p_psDBFetchResult(config->dbh); 619 if (!output) { 620 psError(PS_ERR_UNKNOWN, false, "database error"); 621 if (!psDBRollback(config->dbh)) { 622 psError(PS_ERR_UNKNOWN, false, "database error"); 623 } 624 return false; 625 } 626 if (!psArrayLength(output)) { 627 psTrace("difftool", PS_LOG_INFO, "no rows found"); 628 psFree(output); 629 return true; 630 } 631 632 for (long i = 0; i < psArrayLength(output); i++) { 633 psMetadata *row = output->data[i]; 634 635 psS64 diff_id = psMetadataLookupS64(NULL, row, "diff_id"); 636 psS64 magicked = psMetadataLookupS64(NULL, row, "magicked"); 637 638 // set diffRun.state to 'full' 639 if (!setdiffRunState(config, diff_id, "full", magicked)) { 640 psError(PS_ERR_UNKNOWN, false, "failed to change diffRun.state for diff_id: %" PRId64, 641 diff_id); 642 psFree(output); 643 if (!psDBRollback(config->dbh)) { 644 psError(PS_ERR_UNKNOWN, false, "database error"); 645 } 646 return false; 647 } 648 } 649 psFree(output); 650 651 if (!psDBCommit(config->dbh)) { 652 psError(PS_ERR_UNKNOWN, false, "database error"); 653 return false; 654 } 571 655 572 656 return true; … … 581 665 PXOPT_COPY_S64(config->args, where, "-diff_id", "diffSkyfile.diff_id", "=="); 582 666 PXOPT_COPY_STR(config->args, where, "-skycell_id", "diffInputSkyfile.skycell_id", "=="); 583 PXOPT_COPY_S64(config->args, where, "-diff_skyfile_id", "diffInputSkyfile.diff_skyfile_id", "==");667 PXOPT_COPY_S64(config->args, where, "-diff_skyfile_id", "diffInputSkyfile.diff_skyfile_id", "=="); 584 668 PXOPT_COPY_STR(config->args, where, "-tess_id", "diffRun.tess_id", "=="); 585 669 PXOPT_COPY_S16(config->args, where, "-fault", "diffSkyfile.fault", "=="); 586 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawInput.exp_id", "=="); 587 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawInput.exp_name", "=="); 588 PXOPT_COPY_STR(config->args, where, "-warp_id", "warpInput.warp_id", "=="); 589 670 PXOPT_COPY_S64(config->args, where, "-magicked", "diffSkyfile.magicked", "=="); 671 pxAddLabelSearchArgs (config, where, "-label", "diffRun.label", "LIKE"); 672 673 PXOPT_LOOKUP_BOOL(template, config->args, "-template", false); 674 if (!template) { 675 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawInput.exp_id", "=="); 676 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawInput.exp_name", "=="); 677 PXOPT_COPY_STR(config->args, where, "-warp_id", "warpInput.warp_id", "=="); 678 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawInput.dateobs", ">="); 679 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawInput.dateobs", "<="); 680 PXOPT_COPY_STR(config->args, where, "-filter", "rawInput.filter", "=="); 681 } else { 682 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawTemplate.exp_id", "=="); 683 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawTemplate.exp_name", "=="); 684 PXOPT_COPY_STR(config->args, where, "-warp_id", "warpTemplate.warp_id", "=="); 685 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawTemplate.dateobs", ">="); 686 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawTemplate.dateobs", "<="); 687 PXOPT_COPY_STR(config->args, where, "-filter", "rawTemplate.filter", "=="); 688 } 689 690 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 590 691 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 591 692 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 693 694 PXOPT_LOOKUP_U64(magicked, config->args, "-magicked", false, false); 695 PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false); 696 PXOPT_LOOKUP_BOOL(not_destreaked, config->args, "-not_destreaked", false); 592 697 593 698 psString query = pxDataGet("difftool_skyfile.sql"); … … 601 706 psStringAppend(&query, " WHERE %s", whereClause); 602 707 psFree(whereClause); 708 } else if (!all) { 709 psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required"); 603 710 } 604 711 psFree(where); 712 713 if (not_destreaked) { 714 if (destreaked) { 715 psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -destreaked makes no sense"); 716 return false; 717 } 718 if (magicked) { 719 psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -magicked makes no sense"); 720 return false; 721 } 722 psStringAppend(&query, " AND diffSkyfile.magicked = 0"); 723 } 724 if (destreaked) { 725 psStringAppend(&query, " AND diffSkyfile.magicked != 0"); 726 } 727 605 728 606 729 // treat limit == 0 as "no limit" … … 1810 1933 } 1811 1934 1812 static bool diffRunComplete(pxConfig *config)1813 {1814 PS_ASSERT_PTR_NON_NULL(config, false);1815 1816 // look for completed diffRuns1817 psString query = pxDataGet("difftool_completed_runs.sql");1818 if (!query) {1819 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");1820 return false;1821 }1822 1823 if (!p_psDBRunQuery(config->dbh, query)) {1824 psError(PS_ERR_UNKNOWN, false, "database error");1825 psFree(query);1826 return false;1827 }1828 psFree(query);1829 1830 psArray *output = p_psDBFetchResult(config->dbh);1831 if (!output) {1832 psError(PS_ERR_UNKNOWN, false, "database error");1833 return false;1834 }1835 if (!psArrayLength(output)) {1836 psTrace("difftool", PS_LOG_INFO, "no rows found");1837 psFree(output);1838 return true;1839 }1840 for (long i = 0; i < psArrayLength(output); i++) {1841 psMetadata *row = output->data[i];1842 1843 psS64 diff_id = psMetadataLookupS64(NULL, row, "diff_id");1844 psS64 magicked = psMetadataLookupS64(NULL, row, "magicked");1845 1846 // set diffRun.state to 'stop'1847 if (!setdiffRunState(config, diff_id, "full", magicked)) {1848 psError(PS_ERR_UNKNOWN, false, "failed to change diffRun.state for diff_id: %" PRId64,1849 diff_id);1850 psFree(output);1851 return false;1852 }1853 }1854 1855 return true;1856 }1857 1935 1858 1936 bool exportrunMode(pxConfig *config) -
branches/eam_branches/20090820/ippTools/src/difftool.h
r24174 r25766 31 31 DIFFTOOL_MODE_TODIFFSKYFILE, 32 32 DIFFTOOL_MODE_ADDDIFFSKYFILE, 33 DIFFTOOL_MODE_ADVANCE, 33 34 DIFFTOOL_MODE_DIFFSKYFILE, 34 35 DIFFTOOL_MODE_REVERTDIFFSKYFILE, -
branches/eam_branches/20090820/ippTools/src/difftoolConfig.c
r24933 r25766 115 115 psMetadataAddBool(adddiffskyfileArgs, PS_LIST_TAIL, "-magicked", 0, "define magicked state", false); 116 116 117 // -advance 118 psMetadata *advanceArgs = psMetadataAlloc(); 119 psMetadataAddS64(advanceArgs, PS_LIST_TAIL, "-diff_id", 0, "select by diff ID", 0); 120 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "select by label", NULL); 121 psMetadataAddS32(advanceArgs, PS_LIST_TAIL, "-limit", 0, "limit number of results", 0); 122 117 123 // -diffskyfile 118 124 psMetadata *diffskyfileArgs = psMetadataAlloc(); 119 psMetadataAddS64(diffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff ID", 0); 120 psMetadataAddStr(diffskyfileArgs , PS_LIST_TAIL, "-skycell_id", 0, "define skycell ID", NULL); 121 psMetadataAddS64(diffskyfileArgs, PS_LIST_TAIL, "-diff_skyfile_id", 0, "search by diff_skyfile_id ID", 0); 122 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-tess_id", 0, "define tessellation ID", NULL); 123 psMetadataAddS64(diffskyfileArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure ID", 0); 124 psMetadataAddStr(diffskyfileArgs , PS_LIST_TAIL, "-exp_name", 0, "define exposure name", NULL); 125 psMetadataAddStr(diffskyfileArgs , PS_LIST_TAIL, "-warp_id", 0, "define warp_id", NULL); 126 psMetadataAddU64(diffskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 127 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 128 psMetadataAddS16(diffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 125 psMetadataAddS64(diffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff ID", 0); 126 psMetadataAddStr(diffskyfileArgs , PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL); 127 psMetadataAddS64(diffskyfileArgs, PS_LIST_TAIL, "-diff_skyfile_id", 0, "search by diff_skyfile_id ID", 0); 128 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tessellation ID", NULL); 129 psMetadataAddStr(diffskyfileArgs , PS_LIST_TAIL, "-warp_id", 0, "search by warp_id", NULL); 130 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-template", 0, "apply exposure args to template of bothways diff", false); 131 psMetadataAddS64(diffskyfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 132 psMetadataAddStr(diffskyfileArgs , PS_LIST_TAIL, "-exp_name", 0, "search by exposure name", NULL); 133 psMetadataAddTime(diffskyfileArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 134 psMetadataAddTime(diffskyfileArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL); 135 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 136 psMetadataAddS64(diffskyfileArgs, PS_LIST_TAIL, "-magicked", 0, "search by magicked value", 0); 137 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-destreaked", 0, "search for destreaked images", false); 138 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-not_destreaked", 0, "search for images that are not destreaked", false); 139 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by diffRun label (LIKE comparison)", NULL); 140 psMetadataAddS16(diffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 141 142 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); 143 psMetadataAddU64(diffskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 144 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 129 145 130 146 // -revertdiffskyfile … … 267 283 PXOPT_ADD_MODE("-todiffskyfile", "", DIFFTOOL_MODE_TODIFFSKYFILE, todiffskyfileArgs); 268 284 PXOPT_ADD_MODE("-adddiffskyfile", "", DIFFTOOL_MODE_ADDDIFFSKYFILE, adddiffskyfileArgs); 285 PXOPT_ADD_MODE("-advance", "", DIFFTOOL_MODE_ADVANCE, advanceArgs); 269 286 PXOPT_ADD_MODE("-diffskyfile", "", DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileArgs); 270 287 PXOPT_ADD_MODE("-revertdiffskyfile","", DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileArgs); -
branches/eam_branches/20090820/ippTools/src/disttool.c
r25031 r25766 2 2 * disttool.c 3 3 * 4 * Copyright (C) 2008 4 * Copyright (C) 2008-2009 5 5 * 6 6 * This program is free software; you can redistribute it and/or modify it … … 37 37 static bool pendingcomponentMode(pxConfig *config); 38 38 static bool addprocessedcomponentMode(pxConfig *config); 39 static bool revertcomponentMode(pxConfig *config); 39 40 static bool processedcomponentMode(pxConfig *config); 40 41 static bool toadvanceMode(pxConfig *config); … … 51 52 static bool listtargetMode(pxConfig *config); 52 53 53 static bool definedsproductMode(pxConfig *config);54 static bool updatedsproductMode(pxConfig *config);55 56 54 static bool definedestinationMode(pxConfig *config); 57 55 static bool updatedestinationMode(pxConfig *config); … … 59 57 static bool defineinterestMode(pxConfig *config); 60 58 static bool updateinterestMode(pxConfig *config); 59 static bool listinterestsMode(pxConfig *config); 61 60 62 61 # define MODECASE(caseName, func) \ … … 86 85 MODECASE(DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentMode); 87 86 MODECASE(DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentMode); 87 MODECASE(DISTTOOL_MODE_REVERTCOMPONENT, revertcomponentMode); 88 88 MODECASE(DISTTOOL_MODE_TOADVANCE, toadvanceMode); 89 89 MODECASE(DISTTOOL_MODE_PENDINGFILESET, pendingfilesetMode); … … 97 97 MODECASE(DISTTOOL_MODE_UPDATETARGET, updatetargetMode); 98 98 MODECASE(DISTTOOL_MODE_LISTTARGET, listtargetMode); 99 MODECASE(DISTTOOL_MODE_DEFINEDSPRODUCT, definedsproductMode);100 MODECASE(DISTTOOL_MODE_UPDATEDSPRODUCT, updatedsproductMode);101 99 MODECASE(DISTTOOL_MODE_DEFINEDESTINATION, definedestinationMode); 102 100 MODECASE(DISTTOOL_MODE_UPDATEDESTINATION, updatedestinationMode); 103 101 MODECASE(DISTTOOL_MODE_DEFINEINTEREST, defineinterestMode); 104 102 MODECASE(DISTTOOL_MODE_UPDATEINTEREST, updateinterestMode); 103 MODECASE(DISTTOOL_MODE_LISTINTERESTS, listinterestsMode); 105 104 default: 106 105 psAbort("invalid option (this should not happen)"); … … 151 150 stage, 152 151 stage_id, 152 0, 153 153 set_label, 154 154 outroot, … … 223 223 } 224 224 } else if (!strcmp(stage, "camera")) { 225 magicRunType = "chipRun"; // This is used below to set the magicked business 225 magicRunType = "camRun"; // This is used below to set the magicked business 226 runJoinStr = "camRun.cam_id"; 226 227 query = pxDataGet("disttool_definebyquery_camera.sql"); 227 228 if (!query) { … … 288 289 psStringAppend(&query, " AND (stackRun.label = '%s')", label); 289 290 } 290 // stack stage doesn't require magic (perhaps let the script do this?291 // stack stage doesn't require magic 291 292 no_magic = true; 292 293 } else { … … 306 307 307 308 if (!no_magic) { 308 psStringAppend(&query, " AND ( distTarget.clean OR%s.magicked)", magicRunType);309 psStringAppend(&query, " AND (%s.magicked)", magicRunType); 309 310 310 311 // is selecting by magic_ds_id really interesting? 311 312 if (magic_ds_id) { 312 if (strcmp(stage, "camera")) { 313 // stage other than camera 314 if (!runJoinStr) { 315 psError(PS_ERR_PROGRAMMING, true, "cannot select by magic_ds_id for stage: %s", stage); 316 psFree(query); 317 return false; 318 } 319 psStringAppend(&joinHook, "\nJOIN magicDSRun ON magicDSRun.stage = distTarget.stage" 313 if (!runJoinStr) { 314 psError(PS_ERR_PROGRAMMING, true, "cannot select by magic_ds_id for stage: %s", stage); 315 psFree(query); 316 return false; 317 } 318 psStringAppend(&joinHook, "\nJOIN magicDSRun ON magicDSRun.stage = distTarget.stage" 320 319 " AND magicDSRun.stage_id = %s", runJoinStr); 321 } else {322 // camera masks are magicked when the chipRun is magicked323 // XXX: This is confusing. Is it dangerous?324 // Maybe I should add a magicked bit to camRun. Note this isn't325 psStringAppend(&joinHook, "\nJOIN magicDSRun ON magicDSRun.stage = 'chip'"326 " AND magicDSRun.stage_id = chipRun.chip_id");327 }328 320 psStringAppend(&query, " AND (magicDSRun.state = 'full' AND magicDSRun.re_place AND (magic_ds_id = %" PRId64 "))", magic_ds_id); 329 321 } … … 377 369 psString run_tag = psMetadataLookupStr(NULL, md, "run_tag"); 378 370 psS64 stage_id = psMetadataLookupS64(NULL, md, "stage_id"); 371 psS64 magic_ds_id = psMetadataLookupS64(NULL, md, "magicked"); 379 372 psS64 target_id = psMetadataLookupS64(NULL, md, "target_id"); 380 373 psString target_label = psMetadataLookupStr(NULL, md, "label"); … … 395 388 stage, 396 389 stage_id, 390 magic_ds_id, 397 391 new_label, 398 392 outroot, … … 500 494 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 501 495 502 // we need to disambiguate fault so make a copy of the where list before adding fault503 psMetadata *whereComponent = psMetadataCopy(NULL, where);504 496 PXOPT_COPY_S16(config->args, where, "-fault", "distRun.fault", "=="); 505 PXOPT_COPY_S16(config->args, whereComponent, "-fault", "distComponent.fault", "==");506 497 507 498 // It might be useful to be able to query by the parameters of the underlying runs … … 513 504 } 514 505 515 if (!psDBTransaction(config->dbh)) { 516 psError(PS_ERR_UNKNOWN, false, "database error"); 506 psString query = pxDataGet("disttool_revertrun.sql"); 507 if (!query) { 508 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 509 if (!psDBRollback(config->dbh)) { 510 psError(PS_ERR_UNKNOWN, false, "database error"); 511 } 512 return false; 513 } 514 515 if (psListLength(where->list)) { 516 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 517 psStringAppend(&query, " AND %s", whereClause); 518 psFree(whereClause); 519 } 520 psFree(where); 521 522 if (!p_psDBRunQuery(config->dbh, query)) { 523 psError(PS_ERR_UNKNOWN, false, "database error"); 524 psFree(query); 525 return false; 526 } 527 528 int numUpdated = psDBAffectedRows(config->dbh); 529 530 psLogMsg("disttool", PS_LOG_INFO, "Updated %d dist runs", numUpdated); 531 532 return true; 533 } 534 535 static bool revertcomponentMode(pxConfig *config) 536 { 537 psMetadata *where = psMetadataAlloc(); 538 PXOPT_COPY_S64(config->args, where, "-dist_id", "distRun.dist_id", "=="); 539 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "==");; 540 PXOPT_COPY_STR(config->args, where, "-component", "component", "==");; 541 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); 542 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 543 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 544 545 PXOPT_COPY_S16(config->args, where, "-fault", "distComponent.fault", "=="); 546 547 // It might be useful to be able to query by the parameters of the underlying runs 548 549 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 517 550 psFree(where); 518 return false; 519 } 520 521 // Update state to 'new' 522 int numUpdated; // Number updated 523 { 524 psString query = pxDataGet("disttool_revertrun_update.sql"); 525 if (!query) { 526 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 527 if (!psDBRollback(config->dbh)) { 528 psError(PS_ERR_UNKNOWN, false, "database error"); 529 } 530 return false; 531 } 532 533 if (psListLength(where->list)) { 534 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 535 psStringAppend(&query, " AND %s", whereClause); 536 psFree(whereClause); 537 } 538 539 if (!p_psDBRunQuery(config->dbh, query)) { 540 psError(PS_ERR_UNKNOWN, false, "database error"); 541 psFree(query); 542 if (!psDBRollback(config->dbh)) { 543 psError(PS_ERR_UNKNOWN, false, "database error"); 544 } 545 return false; 546 } 547 psFree(query); 548 549 numUpdated = psDBAffectedRows(config->dbh); 550 } 551 552 psLogMsg("disttool", PS_LOG_INFO, "Updated %d dist runs", numUpdated); 553 554 // Delete product 555 int numDeleted; // Number deleted 556 { 557 psString query = pxDataGet("disttool_revertrun_delete.sql"); 558 if (!query) { 559 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 560 if (!psDBRollback(config->dbh)) { 561 psError(PS_ERR_UNKNOWN, false, "database error"); 562 } 563 return false; 564 } 565 566 if (psListLength(whereComponent->list)) { 567 psString whereClause = psDBGenerateWhereConditionSQL(whereComponent, NULL); 568 psStringAppend(&query, " AND %s", whereClause); 569 psFree(whereClause); 570 } 571 572 if (!p_psDBRunQuery(config->dbh, query)) { 573 psError(PS_ERR_UNKNOWN, false, "database error"); 574 psFree(query); 575 if (!psDBRollback(config->dbh)) { 576 psError(PS_ERR_UNKNOWN, false, "database error"); 577 } 578 return false; 579 } 580 psFree(query); 581 582 numDeleted = psDBAffectedRows(config->dbh); 583 } 551 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 552 return false; 553 } 554 555 psString query = pxDataGet("disttool_revertcomponent.sql"); 556 if (!query) { 557 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 558 psFree(where); 559 return false; 560 } 561 562 if (psListLength(where->list)) { 563 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 564 psStringAppend(&query, " AND %s", whereClause); 565 psFree(whereClause); 566 } 567 psFree(where); 568 569 if (!p_psDBRunQuery(config->dbh, query)) { 570 psError(PS_ERR_UNKNOWN, false, "database error"); 571 psFree(query); 572 return false; 573 } 574 575 int numDeleted = psDBAffectedRows(config->dbh); 584 576 585 577 psLogMsg("disttool", PS_LOG_INFO, "Deleted %d distComponents", numDeleted); 586 578 587 psFree(where);588 psFree(whereComponent);589 590 if (!psDBCommit(config->dbh)) {591 psError(PS_ERR_UNKNOWN, false, "database error");592 return false;593 }594 595 579 return true; 596 580 } … … 600 584 PS_ASSERT_PTR_NON_NULL(config, false); 601 585 586 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false); 587 602 588 psMetadata *where = psMetadataAlloc(); 603 589 PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "=="); 604 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 605 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 590 pxAddLabelSearchArgs (config, where, "-label", "distRun.label", "=="); 606 591 607 592 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 608 593 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 609 594 610 // look for "inputs" that need to processed 611 psString query = pxDataGet("disttool_pendingcomponent.sql"); 595 psString queryFile = NULL; 596 psStringAppend(&queryFile, "disttool_pending_%s.sql", stage); 597 psString query = pxDataGet(queryFile); 612 598 if (!query) { 613 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement ");599 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement from %s", queryFile); 614 600 return false; 615 601 } … … 617 603 if (psListLength(where->list)) { 618 604 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 619 psStringAppend(&query, " WHERE%s", whereClause);605 psStringAppend(&query, " AND %s", whereClause); 620 606 psFree(whereClause); 621 607 } … … 629 615 } 630 616 631 // the query has where hooks for each stage. 632 // right now we aren't using them. 633 // XXX: I think that I want to change the query from a union of selects on the various 634 // stages to separate queries. As it is pending data at the later stages of the pipline 635 // will get blocked by pending earlier stages 636 psString raw_where = ""; 637 psString raw_clean_where = ""; 638 psString chip_where = ""; 639 psString camera_where = ""; 640 psString fake_where = ""; 641 psString warp_where = ""; 642 psString diff_where = ""; 643 psString stack_where = ""; 644 645 if (!p_psDBRunQueryF(config->dbh, 646 query, 647 raw_where, 648 raw_clean_where, 649 chip_where, 650 camera_where, 651 fake_where, 652 warp_where, 653 diff_where, 654 stack_where)) { 617 if (!p_psDBRunQuery(config->dbh, query)) { 655 618 psError(PS_ERR_UNKNOWN, false, "database error"); 656 619 psFree(query); … … 868 831 psMetadata *where = psMetadataAlloc(); 869 832 PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "=="); 833 PXOPT_COPY_STR(config->args, where, "-stage", "distRun.stage", "=="); 870 834 pxAddLabelSearchArgs (config, where, "-label", "distRun.label", "=="); 871 835 … … 939 903 // required values 940 904 PXOPT_LOOKUP_S64(dist_id, config->args, "-dist_id", true, false); 941 PXOPT_LOOKUP_S64( prod_id, config->args, "-prod_id", true, false);905 PXOPT_LOOKUP_S64(dest_id, config->args, "-dest_id", true, false); 942 906 943 907 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); … … 949 913 0, // fs_id 950 914 dist_id, 951 prod_id,915 dest_id, 952 916 name, 953 917 "full", … … 964 928 PXOPT_COPY_S64(config->args, where, "-fs_id", "fs_id", "=="); 965 929 PXOPT_COPY_S64(config->args, where, "-dist_id", "rcDSFileset.dist_id", "=="); 966 PXOPT_COPY_S64(config->args, where, "- prod_id", "prod_id", "==");930 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 967 931 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "==");; 968 932 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); … … 1092 1056 PXOPT_COPY_S64(config->args, where, "-dist_id", "dist_id", "=="); 1093 1057 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1094 PXOPT_COPY_S64(config->args, where, "-prod_id", "prod_id", "==");1095 1058 PXOPT_COPY_S64(config->args, where, "-target_id","target_id", "=="); 1096 1059 PXOPT_COPY_S64(config->args, where, "-fs_id", "fs_id", "=="); … … 1433 1396 } 1434 1397 1435 static bool defined sproductMode(pxConfig *config)1398 static bool definedestinationMode(pxConfig *config) 1436 1399 { 1437 1400 PS_ASSERT_PTR_NON_NULL(config, false); 1438 1401 1439 1402 // required 1440 PXOPT_LOOKUP_STR(name, config->args, "-name", true, false);1441 PXOPT_LOOKUP_STR(dbname, config->args, "-ds_dbname", true, false);1442 PXOPT_LOOKUP_STR(dbhost, config->args, "-ds_dbhost", true, false);1443 1444 // XXX: should we insure that these names do not contatin any whitespace?1445 1446 rcDSProductRow *row = rcDSProductRowAlloc(1447 0, // prod_id1448 name,1449 dbname,1450 dbhost1451 );1452 1453 if (!row) {1454 psError(PS_ERR_UNKNOWN, false, "failed to allocate rcDSProduct object");1455 return false;1456 }1457 if (!rcDSProductInsertObject(config->dbh, row)) {1458 psError(PS_ERR_UNKNOWN, false, "database error");1459 psFree(row);1460 return false;1461 }1462 1463 // get the assigned target_id1464 row->prod_id = psDBLastInsertID(config->dbh);1465 1466 if (!rcDSProductPrintObject(stdout, row, true)) {1467 psError(PS_ERR_UNKNOWN, false, "failed to print object");1468 psFree(row);1469 return false;1470 }1471 1472 psFree(row);1473 1474 return true;1475 }1476 static bool updatedsproductMode(pxConfig *config)1477 {1478 PS_ASSERT_PTR_NON_NULL(config, false);1479 1480 psMetadata *where = psMetadataAlloc();1481 PXOPT_COPY_S64(config->args, where, "-prod_id", "prod_id", "==");1482 1483 PXOPT_LOOKUP_STR(dbname, config->args, "-ds_dbname", false, false);1484 PXOPT_LOOKUP_STR(dbhost, config->args, "-ds_dbhost", false, false);1485 1486 if (!(dbname || dbhost)) {1487 psError(PS_ERR_UNKNOWN, true, "one or more of dbname or dbhost is required");1488 psFree(where);1489 return false;1490 }1491 psString query = psStringCopy("UPDATE rcDSProduct SET");1492 psString sep = "";1493 if (dbname) {1494 psStringAppend(&query, " dbname = '%s'", dbname);1495 sep = ",";1496 }1497 if (dbhost) {1498 psStringAppend(&query, " %s dbhost = '%s'", sep, dbhost);1499 }1500 1501 if (psListLength(where->list)) {1502 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);1503 psStringAppend(&query, " WHERE %s", whereClause);1504 psFree(whereClause);1505 } else {1506 psError(PS_ERR_UNKNOWN, true, "search parameters are required");1507 psFree(where);1508 psFree(query);1509 return false;1510 }1511 psFree(where);1512 1513 if (!p_psDBRunQuery(config->dbh, query)) {1514 psError(PS_ERR_UNKNOWN, false, "database error");1515 psFree(query);1516 return false;1517 }1518 psFree(query);1519 1520 return true;1521 }1522 1523 static bool definedestinationMode(pxConfig *config)1524 {1525 PS_ASSERT_PTR_NON_NULL(config, false);1526 1527 // required1528 PXOPT_LOOKUP_S64(prod_id, config->args, "-prod_id", true, false);1529 1403 PXOPT_LOOKUP_STR(name, config->args, "-name", true, false); 1404 PXOPT_LOOKUP_STR(dbname, config->args, "-ds_dbname", true, false); 1405 PXOPT_LOOKUP_STR(dbhost, config->args, "-ds_dbhost", true, false); 1530 1406 1531 1407 // optional … … 1539 1415 rcDestinationRow *row = rcDestinationRowAlloc( 1540 1416 0, // dest_id 1541 prod_id,1542 1417 name, 1543 1418 status_uri, 1544 1419 comment, 1545 1420 last_fileset, 1421 dbname, 1422 dbhost, 1546 1423 state ? state : "enabled" 1547 1424 ); … … 1577 1454 psMetadata *where = psMetadataAlloc(); 1578 1455 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1579 PXOPT_COPY_S64(config->args, where, "-prod_id", "prod_id", "==");1580 1456 1581 1457 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); … … 1599 1475 // last_fileset normally gets set by updatercrunMode 1600 1476 // Allowing it to be set here might cause problems 1601 // especially since we are allowing selection by prod_id1477 // especially since we are allowing selection by dest_id 1602 1478 if (last_fileset) { 1603 1479 psStringAppend(&query, " %s last_fileset = '%s'", sep, last_fileset); … … 1631 1507 PS_ASSERT_PTR_NON_NULL(config, false); 1632 1508 1633 // required 1634 PXOPT_LOOKUP_S64(dest_id, config->args, "-dest_id", true, false); 1635 PXOPT_LOOKUP_S64(target_id, config->args, "-target_id", true, false); 1509 // one of these is required 1510 PXOPT_LOOKUP_S64(dest_id, config->args, "-dest_id", false, false); 1511 PXOPT_LOOKUP_STR(dest_name, config->args, "-dest_name", false, false); 1512 if (!dest_id && !dest_name) { 1513 psError(PS_ERR_UNKNOWN, true, "either dest_id or dest_name is required"); 1514 return false; 1515 } 1516 1517 // either target_id or stage and label are required 1518 PXOPT_LOOKUP_S64(target_id, config->args, "-target_id", false, false); 1519 PXOPT_LOOKUP_STR(stage, config->args, "-stage", false, false); 1520 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 1521 PXOPT_LOOKUP_STR(filter, config->args, "-filter", false, false); 1522 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 1523 1524 if (!target_id) { 1525 bool error = false; 1526 if (!stage) { 1527 psError(PS_ERR_UNKNOWN, true, "stage is required if target_id is not supplied"); 1528 error = true; 1529 } 1530 if (!label) { 1531 psError(PS_ERR_UNKNOWN, !error, "label is required if target_id is not supplied"); 1532 error = true; 1533 } 1534 if (error) { 1535 return false; 1536 } 1537 } 1636 1538 1637 1539 // optional 1540 PXOPT_LOOKUP_S64(limit, config->args, "-limit", false, false); 1638 1541 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 1639 1640 // XXX: should we insure that these names do not contatin any whitespace? 1641 1642 rcInterestRow *row = rcInterestRowAlloc( 1643 0, // int_id 1644 dest_id, 1645 target_id, 1646 state ? state : "enabled" 1647 ); 1648 1649 if (!row) { 1650 psError(PS_ERR_UNKNOWN, false, "failed to allocate rcInterest object"); 1651 return false; 1652 } 1653 if (!rcInterestInsertObject(config->dbh, row)) { 1654 psError(PS_ERR_UNKNOWN, false, "database error"); 1655 psFree(row); 1656 return false; 1657 } 1658 1659 // get the assigned target_id 1660 row->int_id = psDBLastInsertID(config->dbh); 1661 1662 if (!rcInterestPrintObject(stdout, row, true)) { 1663 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 1664 psFree(row); 1665 return false; 1666 } 1667 1668 psFree(row); 1542 if (state) { 1543 if (strcmp(state, "enabled") && strcmp(state, "disabled")) { 1544 psError(PS_ERR_PROGRAMMING, true, "state must be enabled or disabled"); 1545 return false; 1546 } 1547 } else { 1548 // default state 1549 state = "enabled"; 1550 } 1551 1552 // now that we've done all of our argument checking, copy the values to where 1553 psMetadata *where = psMetadataAlloc(); 1554 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1555 PXOPT_COPY_STR(config->args, where, "-dest_name", "rcDestination.name", "=="); 1556 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1557 PXOPT_COPY_STR(config->args, where, "-label", "label", "LIKE"); 1558 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1559 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1560 1561 psString query = pxDataGet("disttool_defineinterest.sql"); 1562 1563 if (!psListLength(where->list)) { 1564 // can't get here 1565 psError(PS_ERR_PROGRAMMING, true, "search parameters are required"); 1566 psFree(where); 1567 psFree(query); 1568 return false; 1569 } 1570 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1571 psStringAppend(&query, " AND %s", whereClause); 1572 psFree(whereClause); 1573 psFree(where); 1574 if (clean) { 1575 psStringAppend(&query, " AND (distTarget.clean)"); 1576 } else { 1577 psStringAppend(&query, " AND (!distTarget.clean)"); 1578 } 1579 if (limit) { 1580 psString limitString = psDBGenerateLimitSQL(limit); 1581 psStringAppend(&query, " %s", limitString); 1582 psFree(limitString); 1583 } 1584 { 1585 // psStringSubstitute fails unless the input is a psString which it determines by 1586 // comparing the memory blocks free function to an expected value. 1587 // pxDataGet uses psSlurp which leaves a different free function on the memory block. 1588 // To work around this make a copy of the query before doing the substitution. 1589 psString queryCopy = psStringCopy(query); 1590 psFree(query); 1591 query = queryCopy; 1592 } 1593 // change the @STATE@ in the sql file to our state 1594 if (!psStringSubstitute(&query, state, "@STATE@")) { 1595 psError(PS_ERR_UNKNOWN, false, "failed to substitute state string"); 1596 return false; 1597 } 1598 1599 if (!p_psDBRunQuery(config->dbh, query)) { 1600 psError(PS_ERR_UNKNOWN, false, "database error"); 1601 psFree(query); 1602 return false; 1603 } 1604 psFree(query); 1605 int numInserted = psDBAffectedRows(config->dbh); 1606 printf("inserted %d rows into rcInterest\n", numInserted); 1669 1607 1670 1608 return true; … … 1710 1648 return true; 1711 1649 } 1712 1650 static bool listinterestsMode(pxConfig *config) 1651 { 1652 PS_ASSERT_PTR_NON_NULL(config, false); 1653 1654 psMetadata *where = psMetadataAlloc(); 1655 PXOPT_COPY_S64(config->args, where, "-int_id", "int_id", "=="); 1656 PXOPT_COPY_S64(config->args, where, "-dest_id", "dest_id", "=="); 1657 PXOPT_COPY_STR(config->args, where, "-dest_name", "name", "=="); 1658 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1659 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1660 PXOPT_COPY_STR(config->args, where, "-label", "label", "LIKE"); 1661 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1662 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 1663 1664 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); 1665 PXOPT_LOOKUP_BOOL(full, config->args, "-full", false); 1666 1667 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1668 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1669 1670 if (clean && full) { 1671 psError(PS_ERR_UNKNOWN, false, "can't select both -clean and -full"); 1672 return false; 1673 } 1674 1675 psString query = pxDataGet("disttool_listinterests.sql"); 1676 1677 if (psListLength(where->list)) { 1678 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1679 psStringAppend(&query, " WHERE %s", whereClause); 1680 psFree(whereClause); 1681 if (clean) { 1682 psStringAppend(&query, " AND (clean)"); 1683 } else if (full) { 1684 psStringAppend(&query, " AND (!clean)"); 1685 } 1686 } else if (clean) { 1687 psStringAppend(&query, " WHERE clean"); 1688 } else if (full) { 1689 psStringAppend(&query, " WHERE !clean"); 1690 } 1691 psFree(where); 1692 1693 // treat limit == 0 as "no limit" 1694 if (limit) { 1695 psString limitString = psDBGenerateLimitSQL(limit); 1696 psStringAppend(&query, " %s", limitString); 1697 psFree(limitString); 1698 } 1699 1700 if (!p_psDBRunQuery(config->dbh, query)) { 1701 psError(PS_ERR_UNKNOWN, false, "database error"); 1702 psFree(query); 1703 if (!psDBRollback(config->dbh)) { 1704 psError(PS_ERR_UNKNOWN, false, "database error"); 1705 } 1706 return false; 1707 } 1708 psFree(query); 1709 1710 psArray *output = p_psDBFetchResult(config->dbh); 1711 if (!output) { 1712 psError(PS_ERR_UNKNOWN, false, "database error"); 1713 return false; 1714 } 1715 if (!psArrayLength(output)) { 1716 psTrace("disttool", PS_LOG_INFO, "no rows found"); 1717 psFree(output); 1718 return true; 1719 } 1720 1721 if (!ippdbPrintMetadatas(stdout, output, "rcInterest", !simple)) { 1722 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1723 psFree(output); 1724 return false; 1725 } 1726 1727 psFree(output); 1728 1729 return true; 1730 } -
branches/eam_branches/20090820/ippTools/src/disttool.h
r24001 r25766 31 31 DISTTOOL_MODE_PENDINGCOMPONENT, 32 32 DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, 33 DISTTOOL_MODE_REVERTCOMPONENT, 33 34 DISTTOOL_MODE_PROCESSEDCOMPONENT, 34 35 DISTTOOL_MODE_TOADVANCE, … … 42 43 DISTTOOL_MODE_DEFINEDESTINATION, 43 44 DISTTOOL_MODE_UPDATEDESTINATION, 44 DISTTOOL_MODE_DEFINEDSPRODUCT,45 DISTTOOL_MODE_UPDATEDSPRODUCT,46 45 DISTTOOL_MODE_DEFINETARGET, 47 46 DISTTOOL_MODE_UPDATETARGET, … … 49 48 DISTTOOL_MODE_DEFINEINTEREST, 50 49 DISTTOOL_MODE_UPDATEINTEREST, 50 DISTTOOL_MODE_LISTINTERESTS, 51 51 } disttoolMode; 52 52 -
branches/eam_branches/20090820/ippTools/src/disttoolConfig.c
r24871 r25766 95 95 // -pendingcomponent 96 96 psMetadata *pendingcomponentArgs = psMetadataAlloc(); 97 psMetadataAddStr(pendingcomponentArgs, PS_LIST_TAIL, "-stage", 0, "limit results to runs for stage (required)", NULL); 97 98 psMetadataAddS64(pendingcomponentArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 98 psMetadataAddStr(pendingcomponentArgs, PS_LIST_TAIL, "-stage", 0, "limit results to runs for stage", NULL);99 99 psMetadataAddStr(pendingcomponentArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "limit results to label", NULL); 100 100 psMetadataAddU64(pendingcomponentArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); … … 111 111 psMetadataAddS32(addprocessedcomponentArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 112 112 113 // -revertcomponent 114 psMetadata *revertcomponentArgs = psMetadataAlloc(); 115 psMetadataAddS64(revertcomponentArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 116 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-component", 0, "define component", NULL); 117 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 118 psMetadataAddS64(revertcomponentArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage_id", 0); 119 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-state", 0, "define state", NULL); 120 psMetadataAddStr(revertcomponentArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 121 psMetadataAddS16(revertcomponentArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 122 psMetadataAddBool(revertcomponentArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted runs", NULL); 123 113 124 // -processedcomponent 114 125 psMetadata *processedcomponentArgs = psMetadataAlloc(); … … 135 146 psMetadata *addfilesetArgs = psMetadataAlloc(); 136 147 psMetadataAddS64(addfilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 137 psMetadataAddS64(addfilesetArgs, PS_LIST_TAIL, "- prod_id", 0, "define prod_id", 0);148 psMetadataAddS64(addfilesetArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0); 138 149 psMetadataAddStr(addfilesetArgs, PS_LIST_TAIL, "-name", 0, "define file name", NULL); 139 150 psMetadataAddS32(addfilesetArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); … … 150 161 psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-fs_id", 0, "define fs_id", 0); 151 162 psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 152 psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "- prod_id", 0, "define dist_id", 0);163 psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-dest_id", 0, "define dist_id", 0); 153 164 psMetadataAddStr(revertfilesetArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 154 165 psMetadataAddS64(revertfilesetArgs, PS_LIST_TAIL, "-stage_id",0, "define stage_id", 0); … … 162 173 psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 163 174 psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0); 164 psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-prod_id", 0, "define prod_id", 0);165 175 psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0); 166 176 psMetadataAddS64(queuercrunArgs, PS_LIST_TAIL, "-fs_id", 0, "define fs_id", 0); … … 189 199 psMetadataAddBool(revertrcrunArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted runs", NULL); 190 200 191 // -definedsproduct192 psMetadata *definedsproductArgs = psMetadataAlloc();193 psMetadataAddStr(definedsproductArgs, PS_LIST_TAIL, "-name", 0, "define product name", NULL);194 psMetadataAddStr(definedsproductArgs, PS_LIST_TAIL, "-ds_dbname",0, "define data store database name", NULL);195 psMetadataAddStr(definedsproductArgs, PS_LIST_TAIL, "-ds_dbhost",0, "define data store database host", NULL);196 197 // -updatedsproduct198 // does this mode make sense?199 psMetadata *updatedsproductArgs = psMetadataAlloc();200 psMetadataAddS64(updatedsproductArgs, PS_LIST_TAIL, "-prod_id", 0, "select by prod_id", 0);201 // can't select by name because it isn't necssarily unique202 psMetadataAddStr(updatedsproductArgs, PS_LIST_TAIL, "-ds_dbname",0, "define data store database name", NULL);203 psMetadataAddStr(updatedsproductArgs, PS_LIST_TAIL, "-ds_dbhost",0, "define data store database host", NULL);204 205 201 // -definedestination 206 202 psMetadata *definedestinationArgs = psMetadataAlloc(); 207 psMetadataAddS64(definedestinationArgs, PS_LIST_TAIL, "-prod_id", 0, "define prod_id (required)", 0);208 203 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-name", 0, "define destination name (required)", NULL); 204 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-ds_dbname",0, "define data store database name (required)", NULL); 205 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-ds_dbhost",0, "define data store database host (required)", NULL); 209 206 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-status_uri", 0, "define status_uri", NULL); 210 207 psMetadataAddStr(definedestinationArgs, PS_LIST_TAIL, "-comment", 0, "define comment", NULL); … … 215 212 psMetadata *updatedestinationArgs = psMetadataAlloc(); 216 213 psMetadataAddS64(updatedestinationArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0); 217 psMetadataAddS64(updatedestinationArgs, PS_LIST_TAIL, "-prod_id", 0, "define prod_id", 0);218 214 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-name", 0, "define destination name", NULL); 219 215 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-status_uri", 0, "define status_uri", NULL); 220 216 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-comment", 0, "define comment", NULL); 221 // last_fileset gets updated by -updatercrun222 // psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-set_last_fileset",0, "define last_fileset", NULL);223 217 psMetadataAddStr(updatedestinationArgs, PS_LIST_TAIL, "-set_state", 0, "define state", NULL); 224 218 … … 254 248 // -defineinterest 255 249 psMetadata *defineinterestArgs = psMetadataAlloc(); 256 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id (required)", 0); 257 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id (required)", 0); 250 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-dest_id", 0, "define dest_id", 0); 251 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-dest_name", 0, "define destination name (LIKE comparison)", NULL); 252 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0); 253 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 254 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 255 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-filter", 0, "define filter (LIKE comparison)", NULL); 256 psMetadataAddBool(defineinterestArgs, PS_LIST_TAIL,"-clean", 0, "list clean targets", false); 258 257 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-set_state", 0, "define state", NULL); 258 psMetadataAddU64(defineinterestArgs, PS_LIST_TAIL, "-limit", 0, "limit number of targets listed to N", 0); 259 259 260 260 // -updateinterest … … 265 265 psMetadataAddStr(updateinterestArgs, PS_LIST_TAIL, "-set_state", 0, "define state (required)", NULL); 266 266 267 // -listinterests 268 psMetadata *listinterestsArgs = psMetadataAlloc(); 269 psMetadataAddS64(listinterestsArgs, PS_LIST_TAIL, "-target_id", 0, "list interests with target_id", 0); 270 psMetadataAddS64(listinterestsArgs, PS_LIST_TAIL, "-dest_id", 0, "list interests with dest_id", 0); 271 psMetadataAddS64(listinterestsArgs, PS_LIST_TAIL, "-int_id", 0, "list interests with int_id", 0); 272 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-dest_name", 0, "list interests for destinationn name)", NULL); 273 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-label", 0, "list interests for label (LIKE comparison)", NULL); 274 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-filter", 0, "list interests by filter (LIKE comparison)", NULL); 275 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-stage", 0, "list interests for stage", NULL); 276 psMetadataAddBool(listinterestsArgs, PS_LIST_TAIL,"-clean", 0, "list clean interests", false); 277 psMetadataAddBool(listinterestsArgs, PS_LIST_TAIL,"-full", 0, "list full interests", false); 278 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-state", 0, "list interests in state", NULL); 279 psMetadataAddU64(listinterestsArgs, PS_LIST_TAIL, "-limit", 0, "limit number of interests listed to N", 0); 280 psMetadataAddBool(listinterestsArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 281 267 282 psMetadata *argSets = psMetadataAlloc(); 268 283 psMetadata *modes = psMetadataAlloc(); … … 272 287 PXOPT_ADD_MODE("-updaterun", "", DISTTOOL_MODE_UPDATERUN, updaterunArgs); 273 288 PXOPT_ADD_MODE("-revertrun", "", DISTTOOL_MODE_REVERTRUN, revertrunArgs); 274 PXOPT_ADD_MODE("-pendingcomponent", "", DISTTOOL_MODE_PENDINGCOMPONENT, pendingcomponentArgs); 275 PXOPT_ADD_MODE("-addprocessedcomponent", "", DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentArgs); 289 PXOPT_ADD_MODE("-pendingcomponent", "", DISTTOOL_MODE_PENDINGCOMPONENT, pendingcomponentArgs); 290 PXOPT_ADD_MODE("-addprocessedcomponent", "", DISTTOOL_MODE_ADDPROCESSEDCOMPONENT, addprocessedcomponentArgs); 291 PXOPT_ADD_MODE("-revertcomponent", "", DISTTOOL_MODE_REVERTCOMPONENT, revertcomponentArgs); 276 292 PXOPT_ADD_MODE("-processedcomponent", "", DISTTOOL_MODE_PROCESSEDCOMPONENT, processedcomponentArgs); 277 293 PXOPT_ADD_MODE("-toadvance", "", DISTTOOL_MODE_TOADVANCE, toadvanceArgs); … … 284 300 PXOPT_ADD_MODE("-pendingdest", "", DISTTOOL_MODE_PENDINGDEST, pendingdestArgs); 285 301 286 PXOPT_ADD_MODE("-definedsproduct", "", DISTTOOL_MODE_DEFINEDSPRODUCT, definedsproductArgs);287 PXOPT_ADD_MODE("-updatedsproduct", "", DISTTOOL_MODE_UPDATEDSPRODUCT, updatedsproductArgs);288 // PXOPT_ADD_MODE("-listdsproduct", "", DISTTOOL_MODE_LISTDSPRODUCT, updatedsproductArgs);289 290 302 PXOPT_ADD_MODE("-definedestination", "", DISTTOOL_MODE_DEFINEDESTINATION, definedestinationArgs); 291 303 PXOPT_ADD_MODE("-updatedestination", "", DISTTOOL_MODE_UPDATEDESTINATION, updatedestinationArgs); … … 298 310 PXOPT_ADD_MODE("-defineinterest", "", DISTTOOL_MODE_DEFINEINTEREST, defineinterestArgs); 299 311 PXOPT_ADD_MODE("-updateinterest", "", DISTTOOL_MODE_UPDATEINTEREST, updateinterestArgs); 300 // PXOPT_ADD_MODE("-listinterest", "", DISTTOOL_MODE_LISTINTEREST, listinterestArgs);312 PXOPT_ADD_MODE("-listinterests", "", DISTTOOL_MODE_LISTINTERESTS, listinterestsArgs); 301 313 302 314 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
branches/eam_branches/20090820/ippTools/src/faketool.c
r24866 r25766 52 52 static bool tofullimfileMode(pxConfig *config); 53 53 static bool topurgedimfileMode(pxConfig *config); 54 static bool toscrubbedimfileMode(pxConfig *config); 54 55 static bool exportrunMode(pxConfig *config); 55 56 static bool importrunMode(pxConfig *config); … … 91 92 MODECASE(FAKETOOL_MODE_TOFULLIMFILE, tofullimfileMode); 92 93 MODECASE(FAKETOOL_MODE_TOPURGEDIMFILE, topurgedimfileMode); 94 MODECASE(FAKETOOL_MODE_TOSCRUBBEDIMFILE, toscrubbedimfileMode); 93 95 MODECASE(FAKETOOL_MODE_EXPORTRUN, exportrunMode); 94 96 MODECASE(FAKETOOL_MODE_IMPORTRUN, importrunMode); … … 1251 1253 return change_imfile_data_state(config, "purged", "goto_purged"); 1252 1254 } 1255 static bool toscrubbedimfileMode(pxConfig *config) 1256 { 1257 return change_imfile_data_state(config, "scrubbed", "goto_scrubbed"); 1258 } 1253 1259 1254 1260 bool exportrunMode(pxConfig *config) -
branches/eam_branches/20090820/ippTools/src/faketool.h
r23339 r25766 45 45 FAKETOOL_MODE_TOFULLIMFILE, 46 46 FAKETOOL_MODE_TOPURGEDIMFILE, 47 FAKETOOL_MODE_TOSCRUBBEDIMFILE, 47 48 FAKETOOL_MODE_EXPORTRUN, 48 49 FAKETOOL_MODE_IMPORTRUN -
branches/eam_branches/20090820/ippTools/src/faketoolConfig.c
r24866 r25766 301 301 psMetadataAddStr(topurgedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "class ID to update", NULL); 302 302 303 // -toscrubbedimfile 304 psMetadata *toscrubbedimfileArgs = psMetadataAlloc(); 305 psMetadataAddS64(toscrubbedimfileArgs, PS_LIST_TAIL, "-fake_id", 0, "fake ID to update", 0); 306 psMetadataAddStr(toscrubbedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "class ID to update", NULL); 307 303 308 // -exportrun 304 309 psMetadata *exportrunArgs = psMetadataAlloc(); … … 337 342 PXOPT_ADD_MODE("-tofullimfile", "set imfile state to full", FAKETOOL_MODE_TOFULLIMFILE, tofullimfileArgs); 338 343 PXOPT_ADD_MODE("-topurgedimfile", "set imfile state to purged", FAKETOOL_MODE_TOPURGEDIMFILE, topurgedimfileArgs); 344 PXOPT_ADD_MODE("-toscrubbedimfile", "set imfile state to scrubbed", FAKETOOL_MODE_TOSCRUBBEDIMFILE, toscrubbedimfileArgs); 339 345 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", FAKETOOL_MODE_EXPORTRUN, exportrunArgs); 340 346 PXOPT_ADD_MODE("-importrun", "import run from metadata file", FAKETOOL_MODE_IMPORTRUN, importrunArgs); -
branches/eam_branches/20090820/ippTools/src/magicdstool.c
r25015 r25766 37 37 static bool todestreakMode(pxConfig *config); 38 38 static bool adddestreakedfileMode(pxConfig *config); 39 static bool advancerunMode(pxConfig *config); 39 40 static bool revertdestreakedfileMode(pxConfig *config); 40 41 static bool getskycellsMode(pxConfig *config); 41 42 static bool toremoveMode(pxConfig *config); 42 static bool torestoreMode(pxConfig *config);43 43 static bool torevertMode(pxConfig *config); 44 static bool completedrevertMode(pxConfig *config); 44 45 45 46 static bool setmagicDSRunState(pxConfig *config, psS64 magic_id, const char *state); 46 static bool magicDSRunComplete(pxConfig *config, bool setmagicked);47 47 static bool magicDSGetIDs(pxConfig *config, psString stage, psS64 magic_id, psS64 *stage_id, psS64 *cam_id); 48 48 … … 70 70 MODECASE(MAGICDSTOOL_MODE_TODESTREAK, todestreakMode); 71 71 MODECASE(MAGICDSTOOL_MODE_ADDDESTREAKEDFILE, adddestreakedfileMode); 72 MODECASE(MAGICDSTOOL_MODE_ADVANCERUN, advancerunMode); 72 73 MODECASE(MAGICDSTOOL_MODE_REVERTDESTREAKEDFILE,revertdestreakedfileMode); 73 74 MODECASE(MAGICDSTOOL_MODE_GETSKYCELLS, getskycellsMode); 74 75 MODECASE(MAGICDSTOOL_MODE_TOREMOVE, toremoveMode); 75 MODECASE(MAGICDSTOOL_MODE_TORESTORE, torestoreMode);76 76 MODECASE(MAGICDSTOOL_MODE_TOREVERT, torevertMode); 77 MODECASE(MAGICDSTOOL_MODE_COMPLETEDREVERT, completedrevertMode); 77 78 default: 78 79 psAbort("invalid option (this should not happen)"); … … 105 106 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false); 106 107 PXOPT_LOOKUP_STR(recoveryroot, config->args, "-recoveryroot", false, false); 107 PXOPT_LOOKUP_BOOL( re_place, config->args, "-replace", false);108 PXOPT_LOOKUP_BOOL(noreplace, config->args, "-noreplace", false); 108 109 PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false); 109 110 PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false); … … 119 120 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 120 121 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 121 PXOPT_COPY_S64(config->args, where, "-magic_id","magic _id", "==");122 PXOPT_COPY_S64(config->args, where, "-magic_id","magicRun.magic_id", "=="); 122 123 PXOPT_COPY_S32(config->args, where, "-streaks_max","streaks", "<="); 123 124 … … 268 269 outroot, 269 270 recoveryroot, 270 re_place,271 noreplace ? 0 :1, // re_place 271 272 0); // remove 272 273 … … 396 397 PS_ASSERT_PTR_NON_NULL(config, false); 397 398 399 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false); 400 398 401 psMetadata *where = psMetadataAlloc(); 399 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magic _ds_id", "==");402 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magicDSRun.magic_ds_id", "=="); 400 403 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "=="); 401 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 402 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 404 pxAddLabelSearchArgs (config, where, "-label", "magicDSRun.label", "=="); 403 405 404 406 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 405 407 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 406 408 407 // look for "inputs" that need to processed 408 psString query = pxDataGet("magicdstool_todestreak.sql"); 409 psString sql_file = NULL; 410 psStringAppend(&sql_file, "magicdstool_todestreak_%s.sql", stage); 411 412 psString query = pxDataGet(sql_file); 409 413 if (!query) { 410 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 411 return false; 412 } 414 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement from %s", sql_file); 415 psFree(sql_file); 416 return false; 417 } 418 psFree(sql_file); 413 419 414 420 if (psListLength(where->list)) { 415 421 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 416 psStringAppend(&query, " WHERE%s", whereClause);422 psStringAppend(&query, " AND %s", whereClause); 417 423 psFree(whereClause); 418 424 } … … 656 662 } 657 663 658 if (!magicDSRunComplete(config, setmagicked)) {659 // rollback660 if (!psDBRollback(config->dbh)) {661 psError(PS_ERR_UNKNOWN, false, "database error");662 }663 psError(PS_ERR_UNKNOWN, false, "database error");664 return false;665 }666 667 664 if (!psDBCommit(config->dbh)) { 668 665 psError(PS_ERR_UNKNOWN, false, "database error"); … … 738 735 } 739 736 740 static bool magicDSRunComplete(pxConfig *config, bool setmagicked)737 static bool advancerunMode(pxConfig *config) 741 738 { 742 739 PS_ASSERT_PTR_NON_NULL(config, false); 740 741 psMetadata *where = psMetadataAlloc(); 742 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magicDSRun.magic_ds_id", "=="); 743 pxAddLabelSearchArgs (config, where, "-label", "magicDSRun.label", "=="); 744 745 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 743 746 744 747 // look for completed magicDSRuns … … 749 752 } 750 753 754 if (psListLength(where->list)) { 755 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 756 psStringAppend(&query, " WHERE %s", whereClause); 757 psFree(whereClause); 758 } 759 751 760 if (!p_psDBRunQuery(config->dbh, query)) { 752 761 psError(PS_ERR_UNKNOWN, false, "database error"); … … 766 775 return true; 767 776 } 777 if (!psDBTransaction(config->dbh)) { 778 psError(PS_ERR_UNKNOWN, false, "database error"); 779 return false; 780 } 768 781 for (long i = 0; i < psArrayLength(output); i++) { 769 782 psMetadata *row = output->data[i]; … … 771 784 psS64 magic_ds_id = psMetadataLookupS64(NULL, row, "magic_ds_id"); 772 785 773 // if requested, set stageRun.magicked 786 // if re_place, set stageRun.magicked 787 bool setmagicked = psMetadataLookupBool(NULL, row, "re_place"); 774 788 if (setmagicked && !setRunMagicked(config, magic_ds_id)) { 775 789 psError(PS_ERR_UNKNOWN, false, "failed to change stageRun.magicked for magic_ds_id: %" PRId64, 776 790 magic_ds_id); 791 if (!psDBRollback(config->dbh)) { 792 psError(PS_ERR_UNKNOWN, false, "database error"); 793 } 777 794 return false; 778 795 } … … 783 800 magic_ds_id); 784 801 psFree(output); 802 if (!psDBRollback(config->dbh)) { 803 psError(PS_ERR_UNKNOWN, false, "database error"); 804 } 785 805 return false; 786 806 } 787 807 } 788 808 if (!psDBCommit(config->dbh)) { 809 psError(PS_ERR_UNKNOWN, false, "database error"); 810 return false; 811 } 789 812 790 813 return true; … … 795 818 { 796 819 PS_ASSERT_PTR_NON_NULL(config, false); 820 821 PXOPT_LOOKUP_BOOL(i_am_sure, config->args, "-i_am_sure", true); 822 if (!i_am_sure) { 823 psError(PS_ERR_UNKNOWN, true, "Reverting destreaked files must be done carefully. -i_am_sure is required."); 824 return false; 825 } 797 826 798 827 psMetadata *where = psMetadataAlloc(); … … 802 831 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 803 832 804 psString query = p sStringCopy("DELETE FROM magicDSFile USING magicDSFile, magicDSRun WHERE (magicDSRun.magic_ds_id = magicDSFile.magic_ds_id) AND magicDSFile.fault != 0");833 psString query = pxDataGet("magicdstool_revertdestreakedfile.sql"); 805 834 806 835 if (psListLength(where->list)) { … … 808 837 psStringAppend(&query, " AND %s", whereClause); 809 838 psFree(whereClause); 839 } else { 840 psError(PS_ERR_UNKNOWN, true, "search arguments are required"); 841 return false; 810 842 } 811 843 psFree(where); … … 813 845 if (!p_psDBRunQuery(config->dbh, query)) { 814 846 psError(PS_ERR_UNKNOWN, false, "failed to revert"); 815 return false; 816 } 817 return true; 818 } 819 820 static bool getskycellsMode(pxConfig *config) 821 { 822 // required 823 PXOPT_LOOKUP_S64(magic_ds_id, config->args, "-magic_ds_id", true, false); 847 psFree(query); 848 return false; 849 } 850 psFree(query); 851 return true; 852 } 853 854 static bool completedrevertMode(pxConfig *config) 855 { 856 PS_ASSERT_PTR_NON_NULL(config, false); 824 857 825 858 psMetadata *where = psMetadataAlloc(); 826 PXOPT_COPY_STR(config->args, where, "-class_id", "warpSkyCellMap.class_id", "=="); 827 PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpSkyCellMap.skycell_id", "=="); 828 829 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 830 831 psString query = pxDataGet("magicdstool_getskycells.sql"); 832 if (!query) { 833 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 834 return false; 835 } 836 859 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magicDSRun.magic_ds_id", "=="); 860 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 861 862 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 863 864 psString query = pxDataGet("magicdstool_completedrevert.sql"); 865 // treat limit == 0 as "no limit" 866 if (limit) { 867 psString limitString = psDBGenerateLimitSQL(limit); 868 psStringAppend(&query, " %s", limitString); 869 psFree(limitString); 870 } 871 872 psString whereString = NULL; 837 873 if (psListLength(where->list)) { 838 874 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 839 psStringAppend(& query, "AND %s", whereClause);875 psStringAppend(&whereString, "\nAND %s", whereClause); 840 876 psFree(whereClause); 841 877 } 842 878 psFree(where); 843 879 844 if (!p_psDBRunQueryF(config->dbh, query, magic_ds_id)) { 845 psError(PS_ERR_UNKNOWN, false, "database error"); 846 psFree(query); 847 return false; 848 } 880 if (!p_psDBRunQueryF(config->dbh, query, whereString ? whereString : "")) { 881 psFree(whereString); 882 psError(PS_ERR_UNKNOWN, false, "failed to revert"); 883 return false; 884 } 885 psFree(whereString); 849 886 psFree(query); 850 851 887 psArray *output = p_psDBFetchResult(config->dbh); 852 888 if (!output) { … … 868 904 return true; 869 905 } 870 871 if (psArrayLength(output)) { 872 // negative simple so the default is true 873 if (!ippdbPrintMetadatas(stdout, output, "magicDiffSkyfile", !simple)) { 874 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 906 for (int i=0; i<psArrayLength(output); i++) { 907 psMetadata *row = output->data[i]; 908 psS64 magic_ds_id = psMetadataLookupS64(NULL, row, "magic_ds_id"); 909 psString old_state = psMetadataLookupStr(NULL, row, "state"); 910 psString new_state; 911 if (!strcmp(old_state, "goto_censored")) { 912 new_state = "censored"; 913 } else if (!strcmp(old_state, "goto_restored")) { 914 new_state = "restored"; 915 } else { 916 psError(PXTOOLS_ERR_PROG, true, "unexpected state found: %s", old_state); 875 917 psFree(output); 876 918 return false; 877 919 } 878 } 879 920 char *query2 = "UPDATE magicDSRun SET state = '%s' WHERE magic_ds_id = %" PRId64; 921 if (!p_psDBRunQueryF(config->dbh, query2, new_state, magic_ds_id)) { 922 psError(PS_ERR_UNKNOWN, false, "failed to set run magicDSRun.state to %s", new_state); 923 return false; 924 } 925 } 880 926 psFree(output); 881 927 … … 883 929 } 884 930 885 static bool setmagicDSRunState(pxConfig *config, psS64 magic_ds_id, const char *state) 886 { 887 PS_ASSERT_PTR_NON_NULL(state, false); 888 889 // check that state is a valid string value 890 if (!( 891 (strncmp(state, "new", 4) == 0) 892 || (strncmp(state, "full", 5) == 0) 893 ) 894 ) { 895 psError(PS_ERR_UNKNOWN, false, 896 "invalid magicDSRun state: %s", state); 897 return false; 898 } 899 900 char *query = "UPDATE magicDSRun SET state = '%s' WHERE magic_ds_id = %" PRId64; 901 if (!p_psDBRunQueryF(config->dbh, query, state, magic_ds_id)) { 902 psError(PS_ERR_UNKNOWN, false, 903 "failed to change state for magic_id %" PRId64, magic_ds_id); 904 return false; 905 } 906 907 return true; 908 } 909 910 static bool toremoveMode(pxConfig *config) 911 { 912 PS_ASSERT_PTR_NON_NULL(config, false); 931 static bool getskycellsMode(pxConfig *config) 932 { 933 // required 934 PXOPT_LOOKUP_S64(magic_ds_id, config->args, "-magic_ds_id", true, false); 913 935 914 936 psMetadata *where = psMetadataAlloc(); 915 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magic_ds_id", "=="); 916 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "=="); 917 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 918 919 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 937 PXOPT_COPY_STR(config->args, where, "-class_id", "warpSkyCellMap.class_id", "=="); 938 PXOPT_COPY_STR(config->args, where, "-skycell_id", "warpSkyCellMap.skycell_id", "=="); 939 920 940 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 921 941 922 // look for "inputs" that need to processed 923 psString query = pxDataGet("magicdstool_toremove.sql"); 942 psString query = pxDataGet("magicdstool_getskycells.sql"); 924 943 if (!query) { 925 944 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); … … 929 948 if (psListLength(where->list)) { 930 949 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 931 psStringAppend(&query, " WHERE%s", whereClause);950 psStringAppend(&query, " AND %s", whereClause); 932 951 psFree(whereClause); 933 952 } 934 953 psFree(where); 935 954 936 // treat limit == 0 as "no limit" 937 if (limit) { 938 psString limitString = psDBGenerateLimitSQL(limit); 939 psStringAppend(&query, " %s", limitString); 940 psFree(limitString); 941 } 942 943 if (!p_psDBRunQuery(config->dbh, query)) { 955 if (!p_psDBRunQueryF(config->dbh, query, magic_ds_id)) { 944 956 psError(PS_ERR_UNKNOWN, false, "database error"); 945 957 psFree(query); … … 970 982 if (psArrayLength(output)) { 971 983 // negative simple so the default is true 972 if (!ippdbPrintMetadatas(stdout, output, " toremove", !simple)) {984 if (!ippdbPrintMetadatas(stdout, output, "magicDiffSkyfile", !simple)) { 973 985 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 974 986 psFree(output); … … 981 993 return true; 982 994 } 983 static bool torestoreMode(pxConfig *config) 995 996 static bool setmagicDSRunState(pxConfig *config, psS64 magic_ds_id, const char *state) 997 { 998 PS_ASSERT_PTR_NON_NULL(state, false); 999 1000 // check that state is a valid string value 1001 if (!((strcmp(state, "new") == 0) || 1002 (strcmp(state, "full") == 0) || 1003 (strcmp(state, "restored") == 0) || 1004 (strcmp(state, "censored") == 0) || 1005 (strcmp(state, "purged") == 0) || 1006 (strcmp(state, "goto_restored") == 0) || 1007 (strcmp(state, "goto_censored") == 0) || 1008 (strcmp(state, "goto_purged") == 0)) 1009 ) { 1010 psError(PS_ERR_UNKNOWN, false, 1011 "invalid magicDSRun state: %s", state); 1012 return false; 1013 } 1014 1015 char *query = "UPDATE magicDSRun SET state = '%s' WHERE magic_ds_id = %" PRId64; 1016 if (!p_psDBRunQueryF(config->dbh, query, state, magic_ds_id)) { 1017 psError(PS_ERR_UNKNOWN, false, 1018 "failed to change state for magic_id %" PRId64, magic_ds_id); 1019 return false; 1020 } 1021 1022 return true; 1023 } 1024 1025 static bool toremoveMode(pxConfig *config) 984 1026 { 985 1027 PS_ASSERT_PTR_NON_NULL(config, false); … … 994 1036 995 1037 // look for "inputs" that need to processed 996 psString query = pxDataGet("magicdstool_tore store.sql");1038 psString query = pxDataGet("magicdstool_toremove.sql"); 997 1039 if (!query) { 998 1040 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); … … 1043 1085 if (psArrayLength(output)) { 1044 1086 // negative simple so the default is true 1045 if (!ippdbPrintMetadatas(stdout, output, "tore store", !simple)) {1087 if (!ippdbPrintMetadatas(stdout, output, "toremove", !simple)) { 1046 1088 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1047 1089 psFree(output); … … 1054 1096 return true; 1055 1097 } 1056 1057 1098 1058 1099 static bool torevertMode(pxConfig *config) -
branches/eam_branches/20090820/ippTools/src/magicdstool.h
r24683 r25766 30 30 MAGICDSTOOL_MODE_TODESTREAK, 31 31 MAGICDSTOOL_MODE_ADDDESTREAKEDFILE, 32 MAGICDSTOOL_MODE_ADVANCERUN, 32 33 MAGICDSTOOL_MODE_REVERTDESTREAKEDFILE, 33 34 MAGICDSTOOL_MODE_GETSKYCELLS, 34 35 MAGICDSTOOL_MODE_TOREMOVE, 35 MAGICDSTOOL_MODE_TORESTORE,36 36 MAGICDSTOOL_MODE_TOREVERT, 37 MAGICDSTOOL_MODE_COMPLETEDREVERT, 37 38 } MAGICDStoolMode; 38 39 -
branches/eam_branches/20090820/ippTools/src/magicdstoolConfig.c
r24937 r25766 52 52 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir", NULL); 53 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-recoveryroot", 0, "define recovery directory", NULL); 54 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "- replace", 0, "replace input files with the destreaked versions", false);54 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-noreplace", 0, "do not replace input files with the destreaked versions", false); 55 55 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 56 56 … … 75 75 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-outroot", 0, "define output directory (required)", NULL); 76 76 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-recoveryroot", 0, "define recovery directory", NULL); 77 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "- replace", 0, "use the simple output format", false);78 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-remove", 0, "use the simple output format", false);77 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-noreplace", 0, "do not replace the input wit with the destreaked versions", false); 78 // psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-remove", 0, "use the simple output format", false); 79 79 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 80 80 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 93 93 // -todestreak 94 94 psMetadata *todestreakArgs = psMetadataAlloc(); 95 psMetadataAddStr(todestreakArgs, PS_LIST_TAIL, "-stage", 0, "limit query to stage (required)", NULL); 95 96 psMetadataAddS64(todestreakArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magic Destreak ID", 0); 96 97 psMetadataAddS64(todestreakArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magic ID", 0); 97 98 psMetadataAddStr(todestreakArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 98 psMetadataAddStr(todestreakArgs, PS_LIST_TAIL, "-stage", 0, "limit query to stage", NULL);99 99 psMetadataAddU64(todestreakArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 100 100 psMetadataAddBool(todestreakArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 114 114 psMetadataAddStr(revertdestreakedfileArgs, PS_LIST_TAIL, "-component", 0, "search by component", NULL); 115 115 psMetadataAddS16(revertdestreakedfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 116 psMetadataAddBool(revertdestreakedfileArgs, PS_LIST_TAIL, "-i_am_sure", 0, "confirm that you know what you are doing", false); 116 117 psMetadataAddStr(revertdestreakedfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 117 118 118 119 // -getskycells 119 120 psMetadata *getskycellsArgs = psMetadataAlloc(); 120 psMetadataAddS64(getskycellsArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "define magic de-streak ID (required)", 0);121 psMetadataAddS64(getskycellsArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "define magic de-streak ID", 0); 121 122 psMetadataAddStr(getskycellsArgs, PS_LIST_TAIL, "-class_id", 0, "define class identifier", NULL); 122 123 psMetadataAddStr(getskycellsArgs, PS_LIST_TAIL, "-skycell_id", 0, "define skycell identifier", NULL); … … 130 131 psMetadataAddU64(toremoveArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 131 132 psMetadataAddBool(toremoveArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 132 133 // -torestore134 psMetadata *torestoreArgs = psMetadataAlloc();135 psMetadataAddS64(torestoreArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magic Destreak ID", 0);136 psMetadataAddS64(torestoreArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magic ID", 0);137 psMetadataAddStr(torestoreArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL);138 psMetadataAddU64(torestoreArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);139 psMetadataAddBool(torestoreArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);140 133 141 134 // -torevert … … 147 140 psMetadataAddU64(torevertArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 148 141 psMetadataAddBool(torevertArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 142 143 // -completedrevert 144 psMetadata *completedrevertArgs = psMetadataAlloc(); 145 psMetadataAddS64(completedrevertArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magic Destreak ID", 0); 146 psMetadataAddStr(completedrevertArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 147 psMetadataAddU64(completedrevertArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 148 149 // -advancerun 150 psMetadata *advancerunArgs = psMetadataAlloc(); 151 psMetadataAddS64(advancerunArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magic Destreak ID", 0); 152 psMetadataAddStr(advancerunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 153 psMetadataAddU64(advancerunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 149 154 150 155 psFree(now); … … 163 168 PXOPT_ADD_MODE("-adddestreakedfile", "add a de-streaked file", 164 169 MAGICDSTOOL_MODE_ADDDESTREAKEDFILE, adddestreakedfileArgs); 170 PXOPT_ADD_MODE("-advancerun", "change state for runs that have finished destrreaking", 171 MAGICDSTOOL_MODE_ADVANCERUN, advancerunArgs); 165 172 PXOPT_ADD_MODE("-revertdestreakedfile", " revert a faulted de-streaked file", 166 173 MAGICDSTOOL_MODE_REVERTDESTREAKEDFILE, revertdestreakedfileArgs); … … 169 176 PXOPT_ADD_MODE("-toremove", "backup images pending removal", 170 177 MAGICDSTOOL_MODE_TOREMOVE, toremoveArgs); 171 PXOPT_ADD_MODE("-torestore", "images pending restore of exicsed streak pixels", 172 MAGICDSTOOL_MODE_TORESTORE, torestoreArgs); 173 PXOPT_ADD_MODE("-torevert", "faulted images to revert", 178 PXOPT_ADD_MODE("-torevert", "images to restore or revert", 174 179 MAGICDSTOOL_MODE_TOREVERT, torevertArgs); 180 181 PXOPT_ADD_MODE("-completedrevert", "change state for runs that have finished reverting", 182 MAGICDSTOOL_MODE_COMPLETEDREVERT, completedrevertArgs); 183 175 184 176 185 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
branches/eam_branches/20090820/ippTools/src/magictool.c
r24949 r25766 1393 1393 } 1394 1394 1395 static bool censorStage(pxConfig *config, psString stage, psString whereClause)1396 {1397 psString queryFile = NULL;1398 psStringAppend(&queryFile, "magictool_censor_%s.sql", stage);1399 psString query = pxDataGet(queryFile);1400 if (!query) {1401 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement from %s", queryFile);1402 psFree(queryFile);1403 if (!psDBRollback(config->dbh)) {1404 psError(PS_ERR_UNKNOWN, false, "database error");1405 }1406 return false;1407 }1408 psFree(queryFile);1409 1410 psStringAppend(&query, " WHERE %s", whereClause);1411 1412 if (!p_psDBRunQuery(config->dbh, query)) {1413 psError(PS_ERR_UNKNOWN, false, "database error");1414 psFree(query);1415 if (!psDBRollback(config->dbh)) {1416 psError(PS_ERR_UNKNOWN, false, "database error");1417 }1418 return false;1419 }1420 psFree(query);1421 1422 return true;1423 }1424 1425 1395 static bool censorrunMode(pxConfig *config) 1426 1396 { 1427 1397 PS_ASSERT_PTR_NON_NULL(config, false); 1428 1398 1429 psError(PS_ERR_PROGRAMMING, true, "-censorrun mode not ready yet");1430 return false;1431 1432 1399 psMetadata *where = psMetadataAlloc(); 1400 1401 PXOPT_LOOKUP_S64(magic_id, config->args, "-magic_id", false, false); 1402 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", false, false); 1403 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 1404 1405 if (!magic_id) { 1406 if (!exp_id && !label) { 1407 psError(PS_ERR_UNKNOWN, true, "either -magic_id or exp_id and label is required"); 1408 return false; 1409 } 1410 } 1433 1411 1434 1412 // at least one of these required 1435 1413 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "=="); 1436 1414 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1415 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1437 1416 1438 1417 if (!psListLength(where->list)) { … … 1470 1449 // Now queue any destreaked files to be re-verted 1471 1450 1472 // note: on failure censorStage issues the rollback1473 if (! censorStage(config, "raw", whereClause)) {1451 // note: on failure magicRestoreStage issues the rollback 1452 if (!magicRestoreStage(config, "raw", whereClause, "goto_censored")) { 1474 1453 psFree(whereClause); 1475 1454 return false; 1476 1455 } 1477 if (! censorStage(config, "chip", whereClause)) {1456 if (!magicRestoreStage(config, "chip", whereClause, "goto_censored")) { 1478 1457 psFree(whereClause); 1479 1458 return false; 1480 1459 } 1481 if (! censorStage(config, "camera", whereClause)) {1460 if (!magicRestoreStage(config, "camera", whereClause, "goto_censored")) { 1482 1461 psFree(whereClause); 1483 1462 return false; 1484 1463 } 1485 if (! censorStage(config, "warp", whereClause)) {1464 if (!magicRestoreStage(config, "warp", whereClause, "goto_censored")) { 1486 1465 psFree(whereClause); 1487 1466 return false; 1488 1467 } 1489 if (! censorStage(config, "diff", whereClause)) {1468 if (!magicRestoreStage(config, "diff", whereClause, "goto_censored")) { 1490 1469 psFree(whereClause); 1491 1470 return false; -
branches/eam_branches/20090820/ippTools/src/magictoolConfig.c
r24946 r25766 165 165 psMetadataAddS64(censorrunArgs, PS_LIST_TAIL, "-magic_id", 0, "define magictool ID", 0); 166 166 psMetadataAddS64(censorrunArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure ID", 0); 167 psMetadataAddStr(censorrunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 167 168 168 169 psFree(now); -
branches/eam_branches/20090820/ippTools/src/pstamptool.c
r25109 r25766 44 44 static bool pendingjobMode(pxConfig *config); 45 45 static bool updatejobMode(pxConfig *config); 46 static bool revertjobMode(pxConfig *config); 46 47 static bool addprojectMode(pxConfig *config); 47 48 static bool projectMode(pxConfig *config); … … 80 81 MODECASE(PSTAMPTOOL_MODE_PENDINGJOB, pendingjobMode); 81 82 MODECASE(PSTAMPTOOL_MODE_UPDATEJOB, updatejobMode); 83 MODECASE(PSTAMPTOOL_MODE_REVERTJOB, revertjobMode); 82 84 MODECASE(PSTAMPTOOL_MODE_ADDPROJECT, addprojectMode); 83 85 MODECASE(PSTAMPTOOL_MODE_MODPROJECT, modprojectMode); … … 224 226 PS_ASSERT_PTR_NON_NULL(config, false); 225 227 226 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false);227 // PXOPT_LOOKUP_STR(outFileset, config->args, "-out_fileset", true, false);228 PXOPT_LOOKUP_S 64(ds_id, config->args, "-ds_id",false, false);229 230 char *query ="INSERT INTO pstampRequest" 231 " (state, uri, ds_id, fault)"232 " VALUES( 'new', '%s', %" PRId64 ", 0 )";233 if (!p_psDBRunQueryF(config->dbh, query, uri, ds_id)) {234 psError(PS_ERR_UNKNOWN, false, "database error");235 return false;236 }237 238 psU64 affected = psDBAffectedRows(config->dbh);239 if (affected != 1) {240 psError(PS_ERR_UNKNOWN, false,241 "should have affected one row but %" PRIu64 " rows were modified",242 affected);228 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 229 PXOPT_LOOKUP_STR(name, config->args, "-name", false, false); 230 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 231 PXOPT_LOOKUP_S64(ds_id, config->args, "-ds_id", false, false); 232 233 if (!pstampRequestInsert(config->dbh, 234 0, // req_id 235 ds_id, 236 "new", //state 237 name, 238 NULL, // reqType 239 label, 240 NULL, // outProduct 241 uri, 242 0 // fault 243 )) { 244 psError(PS_ERR_UNKNOWN, false, "failed to insert request"); 243 245 return false; 244 246 } … … 317 319 psMetadata *where = psMetadataAlloc(); 318 320 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 321 PXOPT_COPY_S64(config->args, where, "-not_req_id", "req_id", "!="); 319 322 PXOPT_COPY_STR(config->args, where, "-name", "name", "=="); 320 323 … … 381 384 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 382 385 383 psString query = 384 "SELECT * FROM pstampRequest WHERE state = 'run' AND " 385 "(SELECT count(*) FROM pstampJob WHERE pstampJob.req_id = pstampRequest.req_id " 386 " AND pstampJob.state != 'stop') = 0" ; 386 psString query = pxDataGet("pstamptool_completedreq.sql"); 387 387 388 388 // treat limit == 0 as "no limit" … … 491 491 PS_ASSERT_PTR_NON_NULL(config, false); 492 492 493 PXOPT_LOOKUP_S64(req_id, config->args, "-req_id", true, false); 494 495 // printf("Revert request %" PRId64 "\n", req_id); 493 psMetadata *where = psMetadataAlloc(); 494 495 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 496 PXOPT_COPY_S64(config->args, where, "-fault", "req_id", "=="); 497 PXOPT_COPY_STR(config->args, where, "-state", "pstampRequest.state", "=="); 498 499 if (!psListLength(where->list)) { 500 psFree(where); 501 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 502 return false; 503 } 504 505 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 506 psFree(where); 507 508 // delete any jobs that were queued by requests that didn't complete parsing (pstampRequest.state = 'new' 509 // If state = 'run' was supplied this will be a no-op 510 psString query = pxDataGet("pstamptool_revertreq_deletejobs.sql"); 511 psStringAppend(&query, " AND %s", whereClause); 512 if (!p_psDBRunQuery(config->dbh, query)) { 513 psError(PS_ERR_UNKNOWN, false, "database error"); 514 return false; 515 } 516 psFree(query); 517 518 // clear fault for requests 519 query = pxDataGet("pstamptool_revertreq.sql"); 520 psStringAppend(&query, " AND %s", whereClause); 496 521 497 if (!p_psDBRunQueryF(config->dbh, "DELETE FROM pstampJob where req_id = %" PRId64, req_id)) { 498 psError(PS_ERR_UNKNOWN, false, "database error"); 499 return false; 500 } 501 if (!p_psDBRunQueryF(config->dbh, 502 "UPDATE pstampRequest set state ='new', name=NULL, reqType=NULL, fault=0 where req_id = %" PRId64, req_id)) { 503 psError(PS_ERR_UNKNOWN, false, "database error"); 504 return false; 505 } 522 psFree(whereClause); 523 524 if (!p_psDBRunQuery(config->dbh, query)) { 525 psError(PS_ERR_UNKNOWN, false, "database error"); 526 return false; 527 } 528 psFree(query); 506 529 507 530 return true; … … 521 544 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 522 545 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", false, false); 546 PXOPT_LOOKUP_S64(options, config->args, "-options", false, false); 523 547 524 548 // unless the job is being inserted with stop state require outputBase … … 545 569 fault, 546 570 exp_id, 547 outputBase 571 outputBase, 572 options 548 573 )) { 549 574 psError(PS_ERR_UNKNOWN, false, "database error"); … … 569 594 PS_ASSERT_PTR_NON_NULL(config, false); 570 595 571 PXOPT_LOOKUP_S64(req_id, config->args, "-req_id", false, false); 572 PXOPT_LOOKUP_S64(job_id, config->args, "-job_id", false, false); 596 psMetadata *where = psMetadataAlloc(); 597 PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "=="); 598 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 599 PXOPT_COPY_S64(config->args, where, "-fault", "fault", "=="); 573 600 574 601 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 575 602 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 576 603 577 psString query = NULL; 578 579 if (!req_id && !job_id) { 580 fprintf(stderr, "either req_id or job_id must be specified\n"); 604 if (!psListLength(where->list)) { 605 fprintf(stderr, "search arguments are required\n"); 581 606 exit (1); 582 607 } 583 608 584 if (req_id) { 585 psStringAppend(&query, 586 "SELECT" 587 " pstampJob.*, pstampRequest.name, pstampRequest.outProduct" 588 " FROM pstampJob" 589 " JOIN pstampRequest USING(req_id)" 590 " WHERE req_id = %" PRId64, req_id 591 ); 592 } else { 593 psStringAppend(&query, 594 "SELECT" 595 " pstampJob.*, pstampRequest.name, pstampRequest.outProduct" 596 " FROM pstampJob" 597 " JOIN pstampRequest USING(req_id)" 598 " WHERE job_id = %" PRId64, job_id 599 ); 600 } 609 psString query = pxDataGet("pstamptool_listjob.sql"); 610 if (!query) { 611 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 612 return false; 613 } 614 615 // use psDBGenerateWhereSQL because the SQL yields an intermediate table 616 if (psListLength(where->list)) { 617 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampJob"); 618 psStringAppend(&query, " WHERE %s", whereClause); 619 psFree(whereClause); 620 } 621 psFree(where); 601 622 602 623 // treat limit == 0 as "no limit" … … 729 750 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 730 751 PRIu64 " rows were modified", affected); 752 return false; 753 } 754 755 return true; 756 } 757 758 static bool revertjobMode(pxConfig *config) 759 { 760 PS_ASSERT_PTR_NON_NULL(config, false); 761 762 psMetadata *where = psMetadataAlloc(); 763 764 PXOPT_COPY_S64(config->args, where, "-job_id", "job_id", "=="); 765 PXOPT_COPY_S64(config->args, where, "-req_id", "req_id", "=="); 766 PXOPT_COPY_S64(config->args, where, "-fault", "fault", "=="); 767 PXOPT_COPY_S64(config->args, where, "-req_id_min", "req_id", ">="); 768 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 769 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 770 771 psString query = pxDataGet("pstamptool_revertjob.sql"); 772 if (!psListLength(where->list) && !all) { 773 psFree(where); 774 psError(PXTOOLS_ERR_DATA, false, "search parameters or -all are required"); 775 return false; 776 } 777 if (psListLength(where->list)) { 778 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampJob"); 779 psStringAppend(&query, " AND %s", whereClause); 780 psFree(whereClause); 781 } 782 psFree(where); 783 784 if (!p_psDBRunQuery(config->dbh, query)) { 785 psError(PS_ERR_UNKNOWN, false, "database error"); 731 786 return false; 732 787 } -
branches/eam_branches/20090820/ippTools/src/pstamptool.h
r19760 r25766 39 39 PSTAMPTOOL_MODE_JOBRESULT, 40 40 PSTAMPTOOL_MODE_UPDATEJOB, 41 PSTAMPTOOL_MODE_REVERTJOB, 41 42 PSTAMPTOOL_MODE_ADDPROJECT, 42 43 PSTAMPTOOL_MODE_MODPROJECT, -
branches/eam_branches/20090820/ippTools/src/pstamptoolConfig.c
r25075 r25766 63 63 // -addreq 64 64 psMetadata *addreqArgs = psMetadataAlloc(); 65 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0, "define request file uri (required)", NULL); 66 psMetadataAddS64(addreqArgs, PS_LIST_TAIL, "-ds_id", 0, "define request ds_id", 0); 67 // psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-out_fileset", 0, "define request output_fileset", NULL); 65 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0, "define request file uri (required)", NULL); 66 psMetadataAddS64(addreqArgs, PS_LIST_TAIL, "-ds_id", 0, "define request ds_id", 0); 67 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-name", 0, "define request name", NULL); 68 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-label", 0, "define request label", NULL); 68 69 69 70 // -pendingreq … … 77 78 psMetadataAddS64(listreqArgs, PS_LIST_TAIL, "-req_id", 0, "list by req_id", 0); 78 79 psMetadataAddStr(listreqArgs, PS_LIST_TAIL, "-name", 0, "list by name", NULL); 80 psMetadataAddS64(listreqArgs, PS_LIST_TAIL, "-not_req_id", 0, "req_id to not list", 0); 79 81 psMetadataAddU64(listreqArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 80 psMetadataAddBool(listreqArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);82 psMetadataAddBool(listreqArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 81 83 82 84 // -completedreq … … 97 99 // -revertreq 98 100 psMetadata *revertreqArgs = psMetadataAlloc(); 99 psMetadataAddS64(revertreqArgs, PS_LIST_TAIL, "-req_id", 0, "req_id for which to revert", 0); 101 psMetadataAddS64(revertreqArgs, PS_LIST_TAIL, "-req_id", 0, "req_id to revert", 0); 102 psMetadataAddS16(revertreqArgs, PS_LIST_TAIL, "-fault", 0, "fault to revert", 0); 103 psMetadataAddStr(revertreqArgs, PS_LIST_TAIL, "-state", 0, "state to revert", NULL); 100 104 101 105 // -addjob 102 106 psMetadata *addjobArgs = psMetadataAlloc(); 103 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-req_id", 0, "define job req_id", 0); 104 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-rownum", 0, "define job rownum", NULL); 105 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-job_type", 0, "define job job_type", "stamp"); 106 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-outputBase", 0, "define job outputBase", NULL); 107 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-state", 0, "new state", "run"); 108 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-exp_id", 0, "exposure id", 0); 109 psMetadataAddS16(addjobArgs, PS_LIST_TAIL, "-fault", 0, "new result", 0); 107 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-req_id", 0, "define job req_id", 0); 108 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-rownum", 0, "define job rownum", NULL); 109 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-job_type", 0, "define job job_type", "stamp"); 110 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-outputBase", 0, "define job outputBase", NULL); 111 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-state", 0, "define state", "run"); 112 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure id", 0); 113 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-options", 0, "define options", 0); 114 psMetadataAddS16(addjobArgs, PS_LIST_TAIL, "-fault", 0, "define job result", 0); 110 115 111 116 // -listjob 112 117 psMetadata *listjobArgs = psMetadataAlloc(); 113 psMetadataAddS64(listjobArgs, PS_LIST_TAIL, "-req_id", 0, "define request", 0); 114 psMetadataAddS64(listjobArgs, PS_LIST_TAIL, "-job_id", 0, "define job", 0); 115 psMetadataAddU64(listjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 116 psMetadataAddBool(listjobArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 118 psMetadataAddS64(listjobArgs, PS_LIST_TAIL, "-req_id", 0, "select by request ID", 0); 119 psMetadataAddS64(listjobArgs, PS_LIST_TAIL, "-job_id", 0, "select by job ID", 0); 120 psMetadataAddS16(listjobArgs, PS_LIST_TAIL, "-fault", 0, "select by fault", 0); 121 psMetadataAddU64(listjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 122 psMetadataAddBool(listjobArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 117 123 118 124 // -pendingjob … … 128 134 psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-state", 0, "new state", NULL); 129 135 psMetadataAddStr(updatejobArgs, PS_LIST_TAIL, "-fault", 0, "new result", NULL); 136 137 // -revertjob 138 psMetadata *revertjobArgs = psMetadataAlloc(); 139 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-req_id", 0, "req_id to revert", 0); 140 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-req_id_min", 0, "minimum req_id to revert", 0); 141 psMetadataAddS64(revertjobArgs, PS_LIST_TAIL, "-job_id", 0, "job_id to revert", 0); 142 psMetadataAddS16(revertjobArgs, PS_LIST_TAIL, "-fault", 0, "fault to revert", 0); 143 psMetadataAddBool(revertjobArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted jobs", false); 144 psMetadataAddU64(revertjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 130 145 131 146 // -addproject … … 159 174 PXOPT_ADD_MODE("-addreq", "", PSTAMPTOOL_MODE_ADDREQ, addreqArgs); 160 175 PXOPT_ADD_MODE("-pendingreq", "", PSTAMPTOOL_MODE_PENDINGREQ, pendingreqArgs); 161 PXOPT_ADD_MODE("-updatereq", "", PSTAMPTOOL_MODE_UPDATEREQ, updatereqArgs);176 PXOPT_ADD_MODE("-updatereq", "", PSTAMPTOOL_MODE_UPDATEREQ, updatereqArgs); 162 177 PXOPT_ADD_MODE("-listreq", "", PSTAMPTOOL_MODE_LISTREQ, listreqArgs); 163 178 PXOPT_ADD_MODE("-completedreq", "", PSTAMPTOOL_MODE_COMPLETEDREQ, completedreqArgs); … … 167 182 PXOPT_ADD_MODE("-listjob", "", PSTAMPTOOL_MODE_LISTJOB, listjobArgs); 168 183 PXOPT_ADD_MODE("-pendingjob", "", PSTAMPTOOL_MODE_PENDINGJOB, pendingjobArgs); 169 PXOPT_ADD_MODE("-updatejob", "", PSTAMPTOOL_MODE_UPDATEJOB, updatejobArgs); 184 PXOPT_ADD_MODE("-updatejob", "", PSTAMPTOOL_MODE_UPDATEJOB, updatejobArgs); 185 PXOPT_ADD_MODE("-revertjob", "", PSTAMPTOOL_MODE_REVERTJOB, revertjobArgs); 170 186 171 187 PXOPT_ADD_MODE("-adddatastore", "", PSTAMPTOOL_MODE_ADDDATASTORE, adddatastoreArgs); -
branches/eam_branches/20090820/ippTools/src/pubtool.c
r25098 r25766 259 259 // required 260 260 PXOPT_LOOKUP_S64(pub_id, config->args, "-pub_id", true, false); 261 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", true, false);261 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", true, false); 262 262 263 263 // optional 264 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 265 PXOPT_LOOKUP_F32(dtime_script, config->args, "-dtime_script", false, false); 264 266 PXOPT_LOOKUP_S32(fault, config->args, "-fault", false, false); 265 267 … … 269 271 } 270 272 271 if (!publishDoneInsert(config->dbh, pub_id, path_base, fault)) {273 if (!publishDoneInsert(config->dbh, pub_id, path_base, hostname, dtime_script, fault)) { 272 274 psError(PS_ERR_UNKNOWN, false, "Unable to add file"); 273 275 if (!psDBRollback(config->dbh)) { -
branches/eam_branches/20090820/ippTools/src/pubtoolConfig.c
r24512 r25766 68 68 psMetadataAddS64(addArgs, PS_LIST_TAIL, "-pub_id", 0, "define pub_id (required)", 0); 69 69 psMetadataAddStr(addArgs, PS_LIST_TAIL, "-path_base", 0, "define path_base (required)", NULL); 70 psMetadataAddStr(addArgs, PS_LIST_TAIL, "-hostname", 0, "define hostname", NULL); 71 psMetadataAddF32(addArgs, PS_LIST_TAIL, "-dtime_script", 0, "define time for script", NAN); 70 72 psMetadataAddS32(addArgs, PS_LIST_TAIL, "-fault", 0, "define fault code", 0); 71 73 -
branches/eam_branches/20090820/ippTools/src/pxinject.c
r18336 r25766 137 137 PXOPT_LOOKUP_STR(tmp_class_id, config->args, "-tmp_class_id", true, false); 138 138 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 139 PXOPT_LOOKUP_S32(bytes, config->args, "-bytes", false, false); 140 PXOPT_LOOKUP_STR(md5sum, config->args, "-md5sum", false, false); 139 141 140 142 // insert with error flag state set to 0 (no errors) 141 if (!newImfileInsert(config->dbh, exp_id, tmp_class_id, uri, NULL )) {143 if (!newImfileInsert(config->dbh, exp_id, tmp_class_id, uri, NULL, bytes, md5sum)) { 142 144 psError(PS_ERR_UNKNOWN, false, "database error"); 143 145 return false; -
branches/eam_branches/20090820/ippTools/src/pxinjectConfig.c
r18561 r25766 61 61 psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-tmp_class_id", 0, "define the class ID (required)", NULL); 62 62 psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-uri", 0, "define the URI (required)", NULL); 63 psMetadataAddS32(newImfileArgs, PS_LIST_TAIL, "-bytes", 0, "define the size of the file", 0); 64 psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-md5sum", 0, "define the size of the file", NULL); 63 65 64 66 // -updatenewExp -
branches/eam_branches/20090820/ippTools/src/pxtools.c
r23918 r25766 37 37 if (!strcmp(state, "goto_cleaned")) return true; 38 38 if (!strcmp(state, "error_cleaned")) return true; 39 if (!strcmp(state, "goto_purged")) return true; 40 if (!strcmp(state, "error_purged")) return true; 39 41 if (!strcmp(state, "goto_scrubbed")) return true; 40 42 if (!strcmp(state, "error_scrubbed")) return true; … … 42 44 if (!strcmp(state, "update")) return true; 43 45 if (!strcmp(state, "purged")) return true; 44 if (!strcmp(state, "goto_purged")) return true; 45 if (!strcmp(state, "error_purged")) return true; 46 46 if (!strcmp(state, "scrubbed")) return true; 47 47 return false; 48 48 } 49 49 50 // 'scrubbed' is a virtual state equivalent to cleaned, but allows files to be removed 51 // even if the config files is missing 50 // 'scrubbed' is no longer a virtual state equivalent to cleaned, but allows files to be removed 51 // even if the config files is missing. This change was prompted as files that are cleaned can 52 // be regenerated, but that is not certain after being scrubbed. 52 53 53 54 -
branches/eam_branches/20090820/ippTools/src/pxtools.h
r24733 r25766 37 37 #include "pxtoolsErrorCodes.h" 38 38 39 #include "pxadd.h" 39 40 #include "pxcam.h" 40 41 #include "pxchip.h" … … 45 46 #include "pxtag.h" 46 47 #include "pxtree.h" 48 #include "pxmagic.h" 47 49 48 50 # define MAX_ROWS 10e9 -
branches/eam_branches/20090820/ippTools/src/pztool.c
r23688 r25766 401 401 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 402 402 PXOPT_LOOKUP_BOOL(row_lock, config->args, "-row_lock", false); 403 PXOPT_LOOKUP_S32(bytes, config->args, "-bytes", false, false); 404 PXOPT_LOOKUP_STR(md5sum, config->args, "-md5sum", false, false); 403 405 404 406 // default values … … 457 459 fault, 458 460 NULL, // epoch 459 hostname 461 hostname, 462 bytes, 463 md5sum 460 464 )) { 461 465 psError(PS_ERR_UNKNOWN, false, "database error"); … … 595 599 " pzDownloadImfile.class_id," // tmp_class_id 596 600 " pzDownloadImfile.uri," // uri 597 " NULL" // epoch 601 " NULL," // epoch 602 " pzDownloadImfile.bytes," // bytes 603 " pzDownloadImfile.md5sum" // md5sum 598 604 " FROM pzDownloadImfile" 599 605 " WHERE" -
branches/eam_branches/20090820/ippTools/src/pztoolConfig.c
r23688 r25766 95 95 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-label", 0, "define the label for the chip stage", NULL); 96 96 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-hostname", 0, "define the host that copied the image", NULL); 97 psMetadataAddS32(copydoneArgs, PS_LIST_TAIL, "-bytes", 0, "define the size in bytes for the copied image", 0); 98 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-md5sum", 0, "define the md5 sum for the copied image", NULL); 97 99 psMetadataAddS16(copydoneArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 98 100 psMetadataAddBool(copydoneArgs, PS_LIST_TAIL, "-row_lock", 0, "lock pzDownImfile rows while advancing an exposure", false); -
branches/eam_branches/20090820/ippTools/src/regtool.c
r24866 r25766 224 224 PXOPT_LOOKUP_F32(teltemp_extra, config->args, "-teltemp_extra", false, false); 225 225 PXOPT_LOOKUP_F32(pon_time, config->args, "-pon_time", false, false); 226 PXOPT_LOOKUP_S16(burntool_state, config->args, "-burntool_state", false, false); 226 227 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); 227 228 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false); … … 238 239 PXOPT_LOOKUP_TIME(dateobs, config->args, "-dateobs", false, false); 239 240 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 241 PXOPT_LOOKUP_S32(bytes, config->args, "-bytes", false, false); 242 PXOPT_LOOKUP_STR(md5sum, config->args, "-md5sum", false, false); 240 243 241 244 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); … … 307 310 quality, 308 311 NULL, 309 0 312 0, 313 bytes, 314 md5sum, 315 0 // burntool_state 310 316 )) { 311 317 psError(PS_ERR_UNKNOWN, false, "database error"); … … 327 333 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs", ">="); 328 334 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 335 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 336 PXOPT_COPY_S64(config->args, where, "-magicked", "magicked", "=="); 337 338 PXOPT_LOOKUP_S64(magicked, config->args, "-magicked", false, false); 339 PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false); 340 PXOPT_LOOKUP_BOOL(not_destreaked, config->args, "-not_destreaked", false); 329 341 330 342 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 331 343 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 332 344 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 345 PXOPT_LOOKUP_BOOL(ordered_by_date, config->args, "-ordered_by_date", false); 333 346 334 347 psString query = pxDataGet("regtool_processedimfile.sql"); … … 352 365 // don't list faulted rows 353 366 psStringAppend(&query, " %s", "AND rawImfile.fault = 0"); 367 } 368 369 if (not_destreaked) { 370 if (destreaked) { 371 psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -destreaked makes no sense"); 372 return false; 373 } 374 if (magicked) { 375 psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -magicked makes no sense"); 376 return false; 377 } 378 psStringAppend(&query, " AND rawImfile.magicked = 0"); 379 } 380 if (destreaked) { 381 psStringAppend(&query, " AND rawImfile.magicked != 0"); 382 } 383 384 385 // add the ORDER BY statement if desired 386 if (ordered_by_date) { 387 psStringAppend(&query, " ORDER BY dateobs"); 354 388 } 355 389 … … 456 490 457 491 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 458 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); 459 460 if ((fault == INT16_MAX) && !isfinite(user_1)) { 461 psError(PS_ERR_UNKNOWN, false, "one of -fault or -user_1 must be selected"); 462 return false; 463 } 464 if ((fault != INT16_MAX) && isfinite(user_1)) { 465 psError(PS_ERR_UNKNOWN, false, "only one of -fault or -user_1 must be selected"); 492 /* PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); */ 493 PXOPT_LOOKUP_S16(burntool_state, config->args, "-burntool_state", false, false); 494 495 if ((fault == INT16_MAX) && !isfinite(burntool_state)) { 496 psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state must be selected"); 497 return false; 498 } 499 if ((fault != INT16_MAX) && isfinite(burntool_state)) { 500 psError(PS_ERR_UNKNOWN, false, "only one of -fault or -burntool_state must be selected"); 466 501 return false; 467 502 } … … 480 515 } 481 516 482 if (isfinite( user_1)) {517 if (isfinite(burntool_state)) { 483 518 psString query = pxDataGet("regtool_updateprocessedimfile.sql"); 484 519 if (!query) { … … 487 522 } 488 523 489 if (!p_psDBRunQueryF(config->dbh, query, user_1, exp_id, class_id)) {524 if (!p_psDBRunQueryF(config->dbh, query, burntool_state, exp_id, class_id)) { 490 525 psError(PS_ERR_UNKNOWN, false, "database error"); 491 526 psFree(query); -
branches/eam_branches/20090820/ippTools/src/regtoolConfig.c
r24922 r25766 125 125 ADD_OPT(Time, addprocessedimfileArgs, "-dateobs", "define observation time", NULL); 126 126 ADD_OPT(Str, addprocessedimfileArgs, "-hostname", "define host name", NULL); 127 ADD_OPT(Str, addprocessedimfileArgs, "-md5sum", "define md5sum", NULL); 128 ADD_OPT(S32, addprocessedimfileArgs, "-bytes", "define bytes", 0); 129 ADD_OPT(S16, addprocessedimfileArgs, "-burntool_state", "set burntool state", 0); 127 130 ADD_OPT(S16, addprocessedimfileArgs, "-fault", "set fault code", 0); 128 131 ADD_OPT(S16, addprocessedimfileArgs, "-quality", "set quality flag", 0); … … 133 136 ADD_OPT(Str, processedimfileArgs, "-exp_name", "search by exposure name", NULL); 134 137 ADD_OPT(Str, processedimfileArgs, "-class_id", "search by class ID", NULL); 138 ADD_OPT(Str, processedimfileArgs, "-filter", "search by filter", NULL); 135 139 ADD_OPT(Time, processedimfileArgs, "-dateobs_begin", "search for exposures by time (>=)", NULL); 136 140 ADD_OPT(Time, processedimfileArgs, "-dateobs_end", "search for exposures by time (<)", NULL); 141 ADD_OPT(S64, processedimfileArgs, "-magicked", "search by magicked value", 0); 142 ADD_OPT(Bool, processedimfileArgs, "-destreaked", "only return imfiles that have been destreaked", false); 143 ADD_OPT(Bool, processedimfileArgs, "-not_destreaked", "only return imfiles that have not been destreaked", false); 137 144 ADD_OPT(U64, processedimfileArgs, "-limit", "limit result set to N items", 0); 138 145 ADD_OPT(Bool, processedimfileArgs, "-faulted", "only return imfiles with a fault status set", false); … … 153 160 ADD_OPT(S64, updateprocessedimfileArgs, "-exp_id", "search by exposure ID", 0); 154 161 ADD_OPT(Str, updateprocessedimfileArgs, "-class_id", "search by class ID", NULL); 155 ADD_OPT( F64, updateprocessedimfileArgs, "-user_1", "set user stat (1)", NAN);162 ADD_OPT(S16, updateprocessedimfileArgs, "-burntool_state", "set burntool state", 0); 156 163 ADD_OPT(S16, updateprocessedimfileArgs, "-fault", "set fault code", INT16_MAX); 157 164 -
branches/eam_branches/20090820/ippTools/src/stacktool.c
r24954 r25766 139 139 PXOPT_COPY_F32(config->args, where, "-select_fwhm_minor_min", "camProcessedExp.fwhm_minor", ">="); 140 140 PXOPT_COPY_F32(config->args, where, "-select_fwhm_minor_max", "camProcessedExp.fwhm_minor", "<="); 141 PXOPT_COPY_F32(config->args, where, "-select_iq_m2_max", "camProcessedExp.iq_m2", "<="); 142 PXOPT_COPY_F32(config->args, where, "-select_iq_m2_min", "camProcessedExp.iq_m2", ">="); 143 PXOPT_COPY_F32(config->args, where, "-select_iq_m3_max", "camProcessedExp.iq_m3", "<="); 144 PXOPT_COPY_F32(config->args, where, "-select_iq_m4_min", "camProcessedExp.iq_m4", ">="); 145 PXOPT_COPY_F32(config->args, where, "-select_iq_m4_max", "camProcessedExp.iq_m4", "<="); 146 141 147 PXOPT_COPY_STR(config->args, where, "-select_exp_type", "rawExp.exp_type", "=="); 142 148 PXOPT_COPY_F32(config->args, where, "-select_good_frac_min", "warpSkyfile.good_frac", ">="); … … 853 859 854 860 psMetadata *where = psMetadataAlloc(); 855 PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "==");856 861 PXOPT_COPY_S64(config->args, where, "-stack_id", "stackSumSkyfile.stack_id", "=="); 857 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "==");858 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "==");859 862 PXOPT_COPY_STR(config->args, where, "-tess_id", "stackRun.tess_id", "=="); 860 863 PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "=="); 864 PXOPT_COPY_STR(config->args, where, "-filter", "stackRun.filter", "LIKE"); 865 PXOPT_COPY_STR(config->args, where, "-label", "stackRun.label", "=="); 866 PXOPT_COPY_S16(config->args, where, "-fault", "stackSumSkyfile.fault", "=="); 867 868 // The following three selectors are incompatible with the sql so omit them 869 // PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 870 // PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 871 // PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 872 873 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 861 874 862 875 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 873 886 psStringAppend(&query, " WHERE %s", whereClause); 874 887 psFree(whereClause); 875 } 888 } else if (!all) { 889 psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required"); 890 return false; 891 } 892 876 893 psFree(where); 877 894 -
branches/eam_branches/20090820/ippTools/src/stacktoolConfig.c
r24954 r25766 77 77 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_fwhm_minor_min", 0, "define min fwhm (minor axis)", NAN); 78 78 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_fwhm_minor_max", 0, "define max fwhm (minor axis)", NAN); 79 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m2_min", 0, "define min iq_m2", NAN); 80 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m2_max", 0, "define max iq_m2", NAN); 81 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m3_min", 0, "define min iq_m3", NAN); 82 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m3_max", 0, "define max iq_m3", NAN); 83 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m4_min", 0, "define min iq_m4", NAN); 84 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m4_max", 0, "define max iq_m4", NAN); 79 85 psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-random", 0, "use this number of random elements", 0); 80 86 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); … … 158 164 psMetadata *sumskyfileArgs= psMetadataAlloc(); 159 165 psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, "search by stack ID", 0); 160 psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0);161 166 psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", 0); 162 167 psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", 0); 168 #ifdef notdef 169 // These don't work so omit (for now) We probably should create a different mode for this type of search. 170 psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0); 163 171 psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 164 172 psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exposure name", NULL); 173 #endif 174 psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-label", 0, "search by stackRun.label", NULL); 175 psMetadataAddStr(sumskyfileArgs, PS_LIST_TAIL, "-filter", 0, "search by filter (LIKE comparison)", NULL); 176 psMetadataAddS16(sumskyfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 165 177 psMetadataAddU64(sumskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 166 178 psMetadataAddBool(sumskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 179 psMetadataAddBool(sumskyfileArgs, PS_LIST_TAIL, "-all", 0, "enable search without arguments", false); 167 180 168 181 // -revertsumskyfile -
branches/eam_branches/20090820/ippTools/src/warptool.c
r24956 r25766 53 53 static bool tocleanedskyfileMode(pxConfig *config); 54 54 static bool topurgedskyfileMode(pxConfig *config); 55 static bool toscrubbedskyfileMode(pxConfig *config); 55 56 static bool tofullskyfileMode(pxConfig *config); 56 57 static bool updateskyfileMode(pxConfig *config); … … 102 103 MODECASE(WARPTOOL_MODE_TOCLEANEDSKYFILE, tocleanedskyfileMode); 103 104 MODECASE(WARPTOOL_MODE_TOPURGEDSKYFILE, topurgedskyfileMode); 105 MODECASE(WARPTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileMode); 104 106 MODECASE(WARPTOOL_MODE_TOFULLSKYFILE, tofullskyfileMode); 105 107 MODECASE(WARPTOOL_MODE_UPDATESKYFILE, updateskyfileMode); … … 1196 1198 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 1197 1199 PXOPT_COPY_S64(config->args, where, "-fake_id", "fakeRun.fake_id", "=="); 1200 PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); 1201 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); 1202 PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "=="); 1203 PXOPT_COPY_S64(config->args, where, "-magicked", "warpSkyfile.magicked", "=="); 1204 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "LIKE"); 1205 1206 PXOPT_LOOKUP_U64(magicked, config->args, "-magicked", false, false); 1207 PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false); 1208 PXOPT_LOOKUP_BOOL(not_destreaked, config->args, "-not_destreaked", false); 1209 1210 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 1198 1211 1199 1212 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 1211 1224 psStringAppend(&query, " AND %s", whereClause); 1212 1225 psFree(whereClause); 1226 } else if (!all) { 1227 psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required"); 1228 return false; 1213 1229 } 1214 1230 psFree(where); 1231 1232 if (not_destreaked) { 1233 if (destreaked) { 1234 psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -destreaked makes no sense"); 1235 return false; 1236 } 1237 if (magicked) { 1238 psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -magicked makes no sense"); 1239 return false; 1240 } 1241 psStringAppend(&query, " AND warpSkyfile.magicked = 0"); 1242 } 1243 if (destreaked) { 1244 psStringAppend(&query, " AND warpSkyfile.magicked != 0"); 1245 } 1215 1246 1216 1247 // treat limit == 0 as "no limit" … … 1668 1699 return change_skyfile_data_state(config, "purged", "goto_purged"); 1669 1700 } 1701 static bool toscrubbedskyfileMode(pxConfig *config) 1702 { 1703 return change_skyfile_data_state(config, "scrubbed", "goto_scrubbed"); 1704 } 1670 1705 1671 1706 static bool updateskyfileMode(pxConfig *config) -
branches/eam_branches/20090820/ippTools/src/warptool.h
r24426 r25766 49 49 WARPTOOL_MODE_TOCLEANEDSKYFILE, 50 50 WARPTOOL_MODE_TOPURGEDSKYFILE, 51 WARPTOOL_MODE_TOSCRUBBEDSKYFILE, 51 52 WARPTOOL_MODE_TOFULLSKYFILE, 52 53 WARPTOOL_MODE_UPDATESKYFILE, -
branches/eam_branches/20090820/ippTools/src/warptoolConfig.c
r24956 r25766 215 215 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exposure tag", 0); 216 216 psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-fake_id", 0, "search by phase 3 version of exposure tag", 0); 217 psMetadataAddTime(warpedArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 218 psMetadataAddTime(warpedArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL); 219 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-filter", 0, "search for exposures by filter", NULL); 220 psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-destreaked", 0, "search for destreaked images", false); 221 psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-not_destreaked", 0, "search for images that have not been destreaked", false); 222 psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-magicked", 0, "search by magicked value", 0); 223 psMetadataAddS16(warpedArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 224 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by warpRun label", NULL); 225 226 psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); 217 227 psMetadataAddU64(warpedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 218 228 psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 278 288 psMetadataAddS64(topurgedskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "warptool ID to update", 0); 279 289 psMetadataAddStr(topurgedskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 290 291 // -toscrubbedskyfile 292 psMetadata *toscrubbedskyfileArgs = psMetadataAlloc(); 293 psMetadataAddS64(toscrubbedskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "warptool ID to update", 0); 294 psMetadataAddStr(toscrubbedskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 280 295 281 296 // -tofullskyfile … … 328 343 PXOPT_ADD_MODE("-tocleanedskyfile", "set skyfile as cleaned", WARPTOOL_MODE_TOCLEANEDSKYFILE, tocleanedskyfileArgs); 329 344 PXOPT_ADD_MODE("-topurgedskyfile", "set skyfile as purged", WARPTOOL_MODE_TOPURGEDSKYFILE, topurgedskyfileArgs); 345 PXOPT_ADD_MODE("-toscrubbedskyfile", "set skyfile as scrubbed", WARPTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileArgs); 330 346 PXOPT_ADD_MODE("-tofullskyfile", "set skyfile as full (updated)", WARPTOOL_MODE_TOFULLSKYFILE, tofullskyfileArgs); 331 347 PXOPT_ADD_MODE("-updateskyfile", "update fault code for skyfile", WARPTOOL_MODE_UPDATESKYFILE, updateskyfileArgs);
Note:
See TracChangeset
for help on using the changeset viewer.
