Changeset 25870 for branches/eam_branches/20090820/ippTools/src
- Timestamp:
- Oct 18, 2009, 10:23:28 AM (17 years ago)
- Location:
- branches/eam_branches/20090820
- Files:
-
- 49 edited
- 2 copied
-
. (modified) (1 prop)
-
ippTools/src/Makefile.am (modified) (2 diffs)
-
ippTools/src/addtool.c (modified) (23 diffs)
-
ippTools/src/addtoolConfig.c (modified) (5 diffs)
-
ippTools/src/camtool.c (modified) (8 diffs)
-
ippTools/src/camtoolConfig.c (modified) (2 diffs)
-
ippTools/src/chiptool.c (modified) (16 diffs)
-
ippTools/src/chiptool.h (modified) (1 diff)
-
ippTools/src/chiptoolConfig.c (modified) (7 diffs)
-
ippTools/src/difftool.c (modified) (26 diffs)
-
ippTools/src/difftool.h (modified) (1 diff)
-
ippTools/src/difftoolConfig.c (modified) (6 diffs)
-
ippTools/src/disttool.c (modified) (24 diffs)
-
ippTools/src/disttool.h (modified) (1 diff)
-
ippTools/src/disttoolConfig.c (modified) (8 diffs)
-
ippTools/src/faketool.c (modified) (7 diffs)
-
ippTools/src/faketoolConfig.c (modified) (2 diffs)
-
ippTools/src/flatcorr.c (modified) (18 diffs)
-
ippTools/src/flatcorr.h (modified) (2 diffs)
-
ippTools/src/flatcorrConfig.c (modified) (4 diffs)
-
ippTools/src/magicdstool.c (modified) (13 diffs)
-
ippTools/src/magicdstool.h (modified) (2 diffs)
-
ippTools/src/magicdstoolConfig.c (modified) (5 diffs)
-
ippTools/src/magictool.c (modified) (4 diffs)
-
ippTools/src/pstamptool.c (modified) (5 diffs)
-
ippTools/src/pstamptool.h (modified) (1 diff)
-
ippTools/src/pstamptoolConfig.c (modified) (3 diffs)
-
ippTools/src/pxadd.c (modified) (4 diffs)
-
ippTools/src/pxadd.h (modified) (1 diff)
-
ippTools/src/pxadmin.c (modified) (5 diffs)
-
ippTools/src/pxcam.c (modified) (3 diffs)
-
ippTools/src/pxcam.h (modified) (2 diffs)
-
ippTools/src/pxchip.c (modified) (6 diffs)
-
ippTools/src/pxchip.h (modified) (2 diffs)
-
ippTools/src/pxfake.c (modified) (3 diffs)
-
ippTools/src/pxfake.h (modified) (2 diffs)
-
ippTools/src/pxmagic.c (modified) (2 diffs)
-
ippTools/src/pxmagic.h (modified) (1 diff)
-
ippTools/src/pxspace.c (copied) (copied from trunk/ippTools/src/pxspace.c )
-
ippTools/src/pxspace.h (copied) (copied from trunk/ippTools/src/pxspace.h )
-
ippTools/src/pxtools.c (modified) (1 diff)
-
ippTools/src/pxtools.h (modified) (3 diffs)
-
ippTools/src/pxwarp.c (modified) (2 diffs)
-
ippTools/src/pxwarp.h (modified) (1 diff)
-
ippTools/src/regtool.c (modified) (4 diffs)
-
ippTools/src/regtoolConfig.c (modified) (1 diff)
-
ippTools/src/stacktool.c (modified) (12 diffs)
-
ippTools/src/stacktoolConfig.c (modified) (4 diffs)
-
ippTools/src/warptool.c (modified) (15 diffs)
-
ippTools/src/warptool.h (modified) (1 diff)
-
ippTools/src/warptoolConfig.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20090820
-
branches/eam_branches/20090820/ippTools/src/Makefile.am
r25766 r25870 34 34 pxmagic.h \ 35 35 pxregister.h \ 36 pxspace.h \ 36 37 pxtag.h \ 37 38 pxtools.h \ … … 78 79 pxmagic.c \ 79 80 pxregister.c \ 81 pxspace.c \ 80 82 pxtag.c \ 81 83 pxtools.c \ -
branches/eam_branches/20090820/ippTools/src/addtool.c
r25766 r25870 40 40 static bool maskedMode(pxConfig *config); 41 41 static bool unblockMode(pxConfig *config); 42 static bool pendingcleanuprunMode(pxConfig *config);43 static bool pendingcleanupexpMode(pxConfig *config);44 static bool donecleanupMode(pxConfig *config);45 static bool exportrunMode(pxConfig *config);46 static bool importrunMode(pxConfig *config);47 42 48 43 # define MODECASE(caseName, func) \ … … 74 69 MODECASE(ADDTOOL_MODE_MASKED, maskedMode); 75 70 MODECASE(ADDTOOL_MODE_UNBLOCK, unblockMode); 76 MODECASE(ADDTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode);77 MODECASE(ADDTOOL_MODE_PENDINGCLEANUPEXP, pendingcleanupexpMode);78 MODECASE(ADDTOOL_MODE_DONECLEANUP, donecleanupMode);79 MODECASE(ADDTOOL_MODE_EXPORTRUN, exportrunMode);80 MODECASE(ADDTOOL_MODE_IMPORTRUN, importrunMode);81 71 default: 82 72 psAbort("invalid option (this should not happen)"); … … 106 96 107 97 psMetadata *where = psMetadataAlloc(); 108 pxaddGetSearchArgs (config, where); 109 pxAddLabelSearchArgs (config, where, "-label", "addRun.label", "=="); 110 PXOPT_COPY_STR(config->args, where, "-reduction", "addRun.reduction", "=="); 98 pxcamGetSearchArgs (config, where); 99 PXOPT_COPY_S64(config->args, where, "-cam_id", "camRun.cam_id", "=="); 100 pxAddLabelSearchArgs (config, where, "-label", "camRun.label", "=="); 101 PXOPT_COPY_STR(config->args, where, "-reduction", "camRun.reduction", "=="); 111 102 112 103 if (!psListLength(where->list) && … … 117 108 } 118 109 119 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", false, false); 120 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 121 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 122 PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false); 110 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", false, false); 111 PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false); 112 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 113 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 114 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 115 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 116 PXOPT_LOOKUP_BOOL(image_only, config->args, "-image_only", false); 117 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 118 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 123 119 124 120 // find the cam_id of all the exposures that we want to queue up. … … 130 126 } 131 127 132 // use psDBGenerateWhere SQL because the SQL yields an intermediate table128 // use psDBGenerateWhereConditionSQL because the SQL ends in a WHERE 133 129 if (where && psListLength(where->list)) { 134 130 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); … … 136 132 psFree(whereClause); 137 133 } 138 139 134 psFree(where); 140 135 … … 155 150 psFree(output); 156 151 return true; 152 } 153 154 if (pretend) { 155 // negative simple so the default is true 156 if (!ippdbPrintMetadatas(stdout, output, "addRun", !simple)) { 157 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 158 psFree(output); 159 return false; 160 } 161 psFree(output); 162 return true; 163 } 164 165 // loop over our list of camRun rows to check the supplied and selected dvodb and workdir values: 166 for (long i = 0; i < psArrayLength(output); i++) { 167 psMetadata *md = output->data[i]; 168 169 camRunRow *row = camRunObjectFromMetadata(md); 170 if (!row) { 171 psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into camRun"); 172 psFree(output); 173 return false; 174 } 175 176 if (!dvodb && !row->dvodb) { 177 psError(PS_ERR_UNKNOWN, false, "cannot queue addstar run without a defined dvodb: label: %s, cam_id %" PRId64, row->label, row->cam_id); 178 psFree(output); 179 return false; 180 } 181 if (!workdir && !row->workdir) { 182 psError(PS_ERR_UNKNOWN, false, "cannot queue addstar run without a defined workdir: label: %s, cam_id %" PRId64, row->label, row->cam_id); 183 psFree(output); 184 return false; 185 } 186 187 psFree(row); 157 188 } 158 189 … … 170 201 // old values in place (i.e., passing the values through). 171 202 172 173 // loop over our list of addRun rows 203 // loop over our list of camRun rows 174 204 for (long i = 0; i < psArrayLength(output); i++) { 175 205 psMetadata *md = output->data[i]; 176 206 177 addRunRow *row = addRunObjectFromMetadata(md);207 camRunRow *row = camRunObjectFromMetadata(md); 178 208 if (!row) { 179 psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into addRun");209 psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into camRun"); 180 210 psFree(output); 181 211 return false; … … 186 216 row->cam_id, 187 217 workdir ? workdir : row->workdir, 218 reduction ? reduction : row->reduction, 188 219 label ? label : row->label, 189 "RECIPE", 190 dvodb ? dvodb : row->dvodb 191 220 data_group ? data_group : (label ? label : row->label), 221 dvodb ? dvodb : row->dvodb, 222 note ? note : NULL, 223 image_only 192 224 )) { 193 225 if (!psDBRollback(config->dbh)) { … … 218 250 219 251 psMetadata *where = psMetadataAlloc(); 220 pxaddGetSearchArgs (config, where);221 252 PXOPT_COPY_S64(config->args, where, "-add_id", "addRun.add_id", "=="); 253 PXOPT_COPY_S64(config->args, where, "-cam_id", "camRun.cam_id", "=="); 254 pxcamGetSearchArgs (config, where); // most search arguments based on camera 222 255 PXOPT_COPY_STR(config->args, where, "-label", "addRun.label", "=="); 223 256 PXOPT_COPY_STR(config->args, where, "-state", "addRun.state", "=="); 224 257 PXOPT_COPY_STR(config->args, where, "-reduction", "addRun.reduction", "=="); 225 258 226 if (!psListLength(where->list) 227 && !psMetadataLookupBool(NULL, config->args, "-all")) { 259 if (!psListLength(where->list)) { 228 260 psFree(where); 229 261 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); … … 231 263 } 232 264 265 psString query = psStringCopy("UPDATE addRun JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id)"); 266 267 // pxUpdateRun gets parameters from config->args and runs the update query 268 bool result = pxUpdateRun(config, where, &query, "addRun", false); 269 270 psFree(query); 271 psFree(where); 272 273 return result; 274 275 276 #ifdef notdef 233 277 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 234 278 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); … … 259 303 260 304 return true; 305 #endif 261 306 } 262 307 … … 267 312 268 313 psMetadata *where = psMetadataAlloc(); 269 pxaddGetSearchArgs (config, where);270 314 PXOPT_COPY_S64(config->args, where, "-add_id", "addRun.add_id", "=="); 315 PXOPT_COPY_S64(config->args, where, "-cam_id", "camRun.cam_id", "=="); 316 pxcamGetSearchArgs (config, where); 271 317 pxAddLabelSearchArgs (config, where, "-label", "addRun.label", "=="); 272 318 PXOPT_COPY_STR(config->args, where, "-reduction", "addRun.reduction", "=="); 273 274 319 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 275 320 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 325 370 } 326 371 327 /* static bool pendingimfileMode(pxConfig *config) */328 /* { */329 /* PS_ASSERT_PTR_NON_NULL(config, false); */330 331 /* psMetadata *where = psMetadataAlloc(); */332 /* pxaddGetSearchArgs (config, where); */333 /* PXOPT_COPY_S64(config->args, where, "-add_id", "addRun.add_id", "=="); */334 /* pxAddLabelSearchArgs (config, where, "-label", "addRun.label", "=="); */335 /* PXOPT_COPY_STR(config->args, where, "-reduction", "addRun.reduction", "=="); */336 /* PXOPT_COPY_S64(config->args, where, "-chip_id", "addRun.chip_id", "=="); */337 /* PXOPT_COPY_STR(config->args, where, "-class_id", "addProcessedExp.class_id", "=="); */338 339 /* PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); */340 341 /* psString query = pxDataGet("addtool_find_pendingimfile.sql"); */342 /* if (!query) { */343 /* psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); */344 /* return false; */345 /* } */346 347 /* // use psDBGenerateWhereSQL because the SQL yields an intermediate table */348 /* if (psListLength(where->list)) { */349 /* psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); */350 /* psStringAppend(&query, " AND %s", whereClause); */351 /* psFree(whereClause); */352 /* } */353 /* psFree(where); */354 355 /* if (!p_psDBRunQuery(config->dbh, query)) { */356 /* psError(PS_ERR_UNKNOWN, false, "database error"); */357 /* psFree(query); */358 /* return false; */359 /* } */360 /* psFree(query); */361 362 /* psArray *output = p_psDBFetchResult(config->dbh); */363 /* if (!output) { */364 /* psError(PS_ERR_UNKNOWN, false, "database error"); */365 /* return false; */366 /* } */367 /* if (!psArrayLength(output)) { */368 /* psTrace("addtool", PS_LOG_INFO, "no rows found"); */369 /* psFree(output); */370 /* return true; */371 /* } */372 373 /* // negate simple so the default is true */374 /* if (!ippdbPrintMetadatas(stdout, output, "addProcessedExp", !simple)) { */375 /* psError(PS_ERR_UNKNOWN, false, "failed to print array"); */376 /* psFree(output); */377 /* return false; */378 /* } */379 380 /* psFree(output); */381 382 /* return true; */383 /* } */384 385 372 static bool addprocessedexpMode(pxConfig *config) 386 373 { … … 391 378 392 379 // optional 393 PXOPT_LOOKUP_F32(dtime_addstar, config->args, "-dtime_addstar", false, false); 394 395 PXOPT_LOOKUP_S32(n_stars, config->args, "-n_stars", false, false); 396 397 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 398 399 PXOPT_LOOKUP_S64(magicked, config->args, "-magicked", false, false); 380 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 381 PXOPT_LOOKUP_F32(dtime_addstar, config->args, "-dtime_addstar", false, false); 382 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 400 383 401 384 // generate restrictions … … 446 429 pendingRow->add_id, 447 430 dtime_addstar, 448 n_stars,449 431 path_base, 450 0432 fault 451 433 ); 452 434 … … 463 445 464 446 // since there is only one exp per 'new' set addRun.state = 'full' 465 if (!pxaddRunSetState(config, row->add_id, "full" , magicked)) {447 if (!pxaddRunSetState(config, row->add_id, "full")) { 466 448 psError(PS_ERR_UNKNOWN, false, "failed to change addRun.state for add_id: %" PRId64, row->add_id); 467 449 psFree(row); … … 469 451 return false; 470 452 } 471 472 // NULL for end_stage means go as far as possible473 // EAM : skip here if fault != 0474 // Also, we can run fake even if tess_id is not defined475 /* if (fault || (pendingRow->end_stage && psStrcasestr(pendingRow->end_stage, "add"))) { */476 /* psFree(row); */477 /* psFree(pendingRow); */478 /* if (!psDBCommit(config->dbh)) { */479 /* psError(PS_ERR_UNKNOWN, false, "database error"); */480 /* return false; */481 /* } */482 /* return true; */483 /* } */484 453 psFree(row); 485 // else continue on...486 487 /* if (!pxfakeQueueByAddID(config, */488 /* pendingRow->add_id, */489 /* pendingRow->workdir, */490 /* pendingRow->label, */491 /* pendingRow->reduction, */492 /* pendingRow->expgroup, */493 /* pendingRow->dvodb, */494 /* pendingRow->tess_id, */495 /* pendingRow->end_stage */496 /* )) { */497 /* // rollback */498 /* if (!psDBRollback(config->dbh)) { */499 /* psError(PS_ERR_UNKNOWN, false, "database error"); */500 /* } */501 /* psError(PS_ERR_UNKNOWN, false, "failed to queue new fakeRun"); */502 /* psFree(pendingRow); */503 /* return false; */504 /* } */505 454 psFree(pendingRow); 506 455 … … 517 466 { 518 467 PS_ASSERT_PTR_NON_NULL(config, false); 468 469 // generate restrictions 470 psMetadata *where = psMetadataAlloc(); 471 PXOPT_COPY_S64(config->args, where, "-add_id", "addRun.add_id", "=="); 472 PXOPT_COPY_S64(config->args, where, "-cam_id", "camRun.cam_id", "=="); 473 pxcamGetSearchArgs (config, where); 474 pxAddLabelSearchArgs (config, where, "-label", "addRun.label", "=="); 475 PXOPT_COPY_STR(config->args, where, "-reduction", "addRun.reduction", "=="); 519 476 520 477 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 521 478 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 522 479 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 523 524 // generate restrictions525 psMetadata *where = psMetadataAlloc();526 pxaddGetSearchArgs (config, where);527 PXOPT_COPY_S64(config->args, where, "-add_id", "addRun.add_id", "==");528 pxAddLabelSearchArgs (config, where, "-label", "addRun.label", "==");529 PXOPT_COPY_STR(config->args, where, "-reduction", "addRun.reduction", "==");530 480 531 481 if (!psListLength(where->list) && … … 613 563 614 564 psMetadata *where = psMetadataAlloc(); 615 pxaddGetSearchArgs (config, where);616 565 PXOPT_COPY_S64(config->args, where, "-add_id", "addRun.add_id", "=="); 566 PXOPT_COPY_S64(config->args, where, "-cam_id", "camRun.cam_id", "=="); 567 pxcamGetSearchArgs (config, where); 617 568 pxAddLabelSearchArgs (config, where, "-label", "addRun.label", "=="); 618 569 PXOPT_COPY_STR(config->args, where, "-reduction", "addRun.reduction", "=="); 619 /* PXOPT_COPY_S16(config->args, where, "-fault", "addProcessedExp.fault", "=="); */620 570 621 571 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { … … 705 655 PS_ASSERT_PTR_NON_NULL(config, false); 706 656 707 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);708 709 657 psMetadata *where = psMetadataAlloc(); 710 658 PXOPT_COPY_S64(config->args, where, "-add_id", "add_id", "=="); 711 659 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); 712 /* PXOPT_COPY_STR(config->args, where, "-class", "class", "=="); */ 713 /* PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); */ 660 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false); 714 661 715 662 if (!pxSetFaultCode(config->dbh, "addProcessedExp", where, fault)) { … … 777 724 } 778 725 779 780 726 static bool unblockMode(pxConfig *config) 781 727 { … … 793 739 return true; 794 740 } 795 796 static bool pendingcleanuprunMode(pxConfig *config)797 {798 PS_ASSERT_PTR_NON_NULL(config, NULL);799 800 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);801 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);802 803 psMetadata *where = psMetadataAlloc();804 pxAddLabelSearchArgs (config, where, "-label", "addRun.label", "==");805 806 psString query = pxDataGet("addtool_pendingcleanuprun.sql");807 if (!query) {808 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");809 return false;810 }811 812 if (where && psListLength(where->list)) {813 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);814 psStringAppend(&query, " AND %s", whereClause);815 psFree(whereClause);816 }817 psFree(where);818 819 // treat limit == 0 as "no limit"820 if (limit) {821 psString limitString = psDBGenerateLimitSQL(limit);822 psStringAppend(&query, " %s", limitString);823 psFree(limitString);824 }825 826 if (!p_psDBRunQuery(config->dbh, query)) {827 psError(PS_ERR_UNKNOWN, false, "database error");828 psFree(query);829 return false;830 }831 psFree(query);832 833 psArray *output = p_psDBFetchResult(config->dbh);834 if (!output) {835 psError(PS_ERR_UNKNOWN, false, "database error");836 return false;837 }838 if (!psArrayLength(output)) {839 psTrace("addtool", PS_LOG_INFO, "no rows found");840 psFree(output);841 return true;842 }843 844 // negative simple so the default is true845 if (!ippdbPrintMetadatas(stdout, output, "addPendingCleanupRun", !simple)) {846 psError(PS_ERR_UNKNOWN, false, "failed to print array");847 psFree(output);848 return false;849 }850 851 psFree(output);852 853 return true;854 }855 856 857 static bool pendingcleanupexpMode(pxConfig *config)858 {859 PS_ASSERT_PTR_NON_NULL(config, NULL);860 861 PXOPT_LOOKUP_S64(add_id, config->args, "-add_id", false, false);862 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);863 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);864 865 psMetadata *where = psMetadataAlloc();866 if (add_id) {867 PXOPT_COPY_S64(config->args, where, "-add_id", "add_id", "==");868 }869 pxAddLabelSearchArgs (config, where, "-label", "label", "==");870 871 psString query = pxDataGet("addtool_pendingcleanupexp.sql");872 if (!query) {873 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");874 return false;875 }876 877 if (where && psListLength(where->list)) {878 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);879 psStringAppend(&query, " AND %s", whereClause);880 psFree(whereClause);881 }882 psFree(where);883 884 // treat limit == 0 as "no limit"885 if (limit) {886 psString limitString = psDBGenerateLimitSQL(limit);887 psStringAppend(&query, " %s", limitString);888 psFree(limitString);889 }890 891 if (!p_psDBRunQuery(config->dbh, query)) {892 psError(PS_ERR_UNKNOWN, false, "database error");893 psFree(query);894 return false;895 }896 psFree(query);897 898 psArray *output = p_psDBFetchResult(config->dbh);899 if (!output) {900 psError(PS_ERR_UNKNOWN, false, "database error");901 return false;902 }903 if (!psArrayLength(output)) {904 psTrace("chiptool", PS_LOG_INFO, "no rows found");905 psFree(output);906 return true;907 }908 909 // negative simple so the default is true910 if (!ippdbPrintMetadatas(stdout, output, "addPendingCleanupExp", !simple)) {911 psError(PS_ERR_UNKNOWN, false, "failed to print array");912 psFree(output);913 return false;914 }915 916 psFree(output);917 918 return true;919 }920 921 922 static bool donecleanupMode(pxConfig *config)923 {924 PS_ASSERT_PTR_NON_NULL(config, NULL);925 926 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);927 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);928 929 psMetadata *where = psMetadataAlloc();930 PXOPT_COPY_STR(config->args, where, "-label", "label", "==");931 932 psString query = pxDataGet("addtool_donecleanup.sql");933 if (!query) {934 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");935 return false;936 }937 938 if (where && psListLength(where->list)) {939 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);940 psStringAppend(&query, " AND %s", whereClause);941 psFree(whereClause);942 }943 psFree(where);944 945 // treat limit == 0 as "no limit"946 if (limit) {947 psString limitString = psDBGenerateLimitSQL(limit);948 psStringAppend(&query, " %s", limitString);949 psFree(limitString);950 }951 952 if (!p_psDBRunQuery(config->dbh, query)) {953 psError(PS_ERR_UNKNOWN, false, "database error");954 psFree(query);955 return false;956 }957 psFree(query);958 959 psArray *output = p_psDBFetchResult(config->dbh);960 if (!output) {961 psError(PS_ERR_UNKNOWN, false, "database error");962 return false;963 }964 if (!psArrayLength(output)) {965 psTrace("addtool", PS_LOG_INFO, "no rows found");966 psFree(output);967 return true;968 }969 970 // negative simple so the default is true971 if (!ippdbPrintMetadatas(stdout, output, "addDoneCleanup", !simple)) {972 psError(PS_ERR_UNKNOWN, false, "failed to print array");973 psFree(output);974 return false;975 }976 977 psFree(output);978 979 return true;980 }981 982 bool exportrunMode(pxConfig *config)983 {984 typedef struct ExportTable {985 char tableName[80];986 char sqlFilename[80];987 } ExportTable;988 989 int numExportTables = 2;990 991 PS_ASSERT_PTR_NON_NULL(config, NULL);992 993 PXOPT_LOOKUP_S64(det_id, config->args, "-add_id", true, false);994 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false);995 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);996 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false);997 998 FILE *f = fopen (outfile, "w");999 if (f == NULL) {1000 psError(PS_ERR_UNKNOWN, false, "failed to open output file");1001 return false;1002 }1003 1004 psMetadata *where = psMetadataAlloc();1005 PXOPT_COPY_S64(config->args, where, "-add_id", "add_id", "==");1006 1007 ExportTable tables [] = {1008 {"addRun", "addtool_export_run.sql"},1009 {"addProcessedExp", "addtool_export_processed_exp.sql"},1010 };1011 1012 for (int i=0; i < numExportTables; i++) {1013 psString query = pxDataGet(tables[i].sqlFilename);1014 if (!query) {1015 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");1016 return false;1017 }1018 1019 if (where && psListLength(where->list)) {1020 psString whereClause = psDBGenerateWhereSQL(where, NULL);1021 psStringAppend(&query, " %s", whereClause);1022 psFree(whereClause);1023 }1024 1025 // treat limit == 0 as "no limit"1026 if (limit) {1027 psString limitString = psDBGenerateLimitSQL(limit);1028 psStringAppend(&query, " %s", limitString);1029 psFree(limitString);1030 }1031 1032 if (!p_psDBRunQuery(config->dbh, query)) {1033 psError(PS_ERR_UNKNOWN, false, "database error");1034 psFree(query);1035 return false;1036 }1037 psFree(query);1038 1039 psArray *output = p_psDBFetchResult(config->dbh);1040 if (!output) {1041 psError(PS_ERR_UNKNOWN, false, "database error");1042 return false;1043 }1044 if (!psArrayLength(output)) {1045 psError(PS_ERR_UNKNOWN, true, "no rows found");1046 psFree(output);1047 return false;1048 }1049 1050 if (clean) {1051 if (!strcmp(tables[i].tableName, "addRun")) {1052 if (!pxSetStateCleaned("addRun", "state", output)) {1053 psFree(output);1054 psError(PS_ERR_UNKNOWN, false, "pxSetStateClean failed for table %s", tables[i].tableName);1055 return false;1056 }1057 }1058 }1059 1060 // we must write the export table in non-simple (true) format1061 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) {1062 psError(PS_ERR_UNKNOWN, false, "failed to print array");1063 psFree(output);1064 return false;1065 }1066 psFree(output);1067 }1068 1069 fclose (f);1070 1071 return true;1072 }1073 1074 bool importrunMode(pxConfig *config)1075 {1076 unsigned int nFail;1077 1078 PS_ASSERT_PTR_NON_NULL(config, NULL);1079 1080 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false);1081 1082 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false);1083 1084 fprintf (stdout, "---- input ----\n");1085 psMetadataPrint (stderr, input, 1);1086 1087 psMetadataItem *item = psMetadataLookup (input, "addRun");1088 psAssert (item, "entry not in input?");1089 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?");1090 1091 psMetadataItem *entry = psListGet (item->data.list, 0);1092 assert (entry);1093 assert (entry->type == PS_DATA_METADATA);1094 addRunRow *addRun = addRunObjectFromMetadata (entry->data.md);1095 addRunInsertObject (config->dbh, addRun);1096 1097 // fprintf (stdout, "---- add run ----\n");1098 // psMetadataPrint (stderr, entry->data.md, 1);1099 1100 item = psMetadataLookup (input, "addProcessedExp");1101 psAssert (item, "entry not in input?");1102 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?");1103 1104 for (int i = 0; i < item->data.list->n; i++) {1105 psMetadataItem *entry = psListGet (item->data.list, i);1106 assert (entry);1107 assert (entry->type == PS_DATA_METADATA);1108 addProcessedExpRow *addProcessedExp = addProcessedExpObjectFromMetadata (entry->data.md);1109 addProcessedExpInsertObject (config->dbh, addProcessedExp);1110 1111 // fprintf (stdout, "---- row %d ----\n", i);1112 // psMetadataPrint (stderr, entry->data.md, 1);1113 }1114 1115 return true;1116 } -
branches/eam_branches/20090820/ippTools/src/addtoolConfig.c
r25766 r25870 48 48 49 49 // -definebyquery 50 // XXX need to allow multiple chip_ids51 // XXX need to allow multiple exp_ids52 50 psMetadata *definebyqueryArgs = psMetadataAlloc(); 51 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 53 52 pxcamSetSearchArgs(definebyqueryArgs); 54 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by c hipRun label", NULL);55 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-reduction", 0, "search by c hipRun reduction class", NULL);53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by camRun label", NULL); 54 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-reduction", 0, "search by camRun reduction class", NULL); 56 55 57 56 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir", NULL); … … 59 58 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL); 60 59 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dvodb", 0, "define DVO db", NULL); 60 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-image_only", 0, "addstar image metadata but not detections", false); 61 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "do not actually modify the database", false); 62 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 63 64 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 65 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 66 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 61 67 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 62 68 63 69 // -updaterun 64 // XXX need to allow multiple add_ids65 // XXX need to allow multiple chip_ids66 // XXX need to allow multiple exp_ids67 70 psMetadata *updaterunArgs = psMetadataAlloc(); 71 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-add_id", 0, "search by add_id", 0); 72 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 68 73 pxcamSetSearchArgs(updaterunArgs); 69 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-add_id", 0, "search by add_id", 0); 70 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by camRun label", NULL); 71 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by camRun state", NULL); 72 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, "search by camRun reduction class", NULL); 73 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 74 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 75 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 76 74 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by addRun label", NULL); 75 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by addRun state", NULL); 76 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, "search by addRun reduction class", NULL); 77 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 78 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 79 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 80 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 81 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 82 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 77 83 // -pendingexp 78 84 psMetadata *pendingexpArgs = psMetadataAlloc(); 79 pxcamSetSearchArgs(pendingexpArgs);80 85 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-add_id", 0, "search by add_id", 0); 81 86 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 82 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by camRun label", NULL); 83 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-reduction", 0, "search by camRun reduction class", NULL); 87 pxcamSetSearchArgs(pendingexpArgs); 88 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by addRun label", NULL); 89 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-reduction", 0, "search by addRun reduction class", NULL); 84 90 psMetadataAddU64(pendingexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 85 91 psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 86 87 // XXX is this used? psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class", 0, "search by class", NULL);88 92 89 93 // -addprocessedexp 90 94 psMetadata *addprocessedexpArgs = psMetadataAlloc(); 91 95 psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-add_id", 0, "define addtool ID (required)", 0); 96 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 97 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_addstar", 0, "define elapsed time for DVO insertion (seconds)", NAN); 98 psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 92 99 93 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_addstar", 0, "define elapsed time for DVO insertion (seconds)", NAN);94 psMetadataAddS32(addprocessedexpArgs, PS_LIST_TAIL, "-n_stars", 0, "define number of stars", 0);95 96 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL);97 psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-magicked", 0, "set magicked", 0);98 100 // -processedexp 99 101 psMetadata *processedexpArgs = psMetadataAlloc(); 102 psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-add_id", 0, "search by add_id", 0); 103 psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 100 104 pxcamSetSearchArgs(processedexpArgs); 101 psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-add_id", 0, "search by add_id", 0);102 105 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by addRun label", NULL); 103 106 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-reduction",0, "search by addRun reduction class", NULL); 104 107 105 108 psMetadataAddU64(processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 109 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 110 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 106 111 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-all", 0, "list everything without restriction", false); 107 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);108 /* psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); */109 112 110 113 // -revertprocessedexp 111 // XXX need to allow multiple add_ids112 // XXX need to allow multiple chip_ids113 // XXX need to allow multiple exp_ids114 114 psMetadata *revertprocessedexpArgs = psMetadataAlloc(); 115 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-add_id", 0, "search by add_id", 0); 116 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 115 117 pxcamSetSearchArgs(revertprocessedexpArgs); 116 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-add_id", 0, "search by add_id", 0);117 118 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by addRun label", NULL); 118 119 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-reduction",0, "search by addRun reduction class", NULL); … … 121 122 122 123 // -updateprocessedexp 123 // XXX allow full search options?124 124 psMetadata *updateprocessedexpArgs = psMetadataAlloc(); 125 125 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-add_id", 0, "search by addtool ID", 0); 126 126 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by camtool ID", 0); 127 psMetadataAddS16(updateprocessedexpArgs, PS_LIST_TAIL, "-fault", 0, "set fault code", 0); 127 128 128 129 // -block … … 137 138 psMetadata *unblockArgs = psMetadataAlloc(); 138 139 psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label", 0, "name of a label to unmask (required)", NULL); 139 140 // -pendingcleanuprun141 // XXX allow full search options?142 psMetadata *pendingcleanuprunArgs = psMetadataAlloc();143 psMetadataAddStr(pendingcleanuprunArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "list blocks for specified label", NULL);144 psMetadataAddBool(pendingcleanuprunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);145 psMetadataAddU64(pendingcleanuprunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);146 147 // -pendingcleanupexp148 // XXX allow full search options?149 psMetadata *pendingcleanupexpArgs = psMetadataAlloc();150 psMetadataAddStr(pendingcleanupexpArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "list blocks for specified label", NULL);151 psMetadataAddS64(pendingcleanupexpArgs, PS_LIST_TAIL, "-add_id", 0, "search by addstar ID", 0);152 psMetadataAddBool(pendingcleanupexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);153 psMetadataAddU64(pendingcleanupexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);154 155 // -donecleanup156 psMetadata *donecleanupArgs = psMetadataAlloc();157 psMetadataAddStr(donecleanupArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL);158 psMetadataAddBool(donecleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);159 psMetadataAddU64(donecleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);160 161 // -exportrun162 psMetadata *exportrunArgs = psMetadataAlloc();163 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-add_id", 0, "export this addstar ID (required)", 0);164 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL);165 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);166 psMetadataAddBool(exportrunArgs, PS_LIST_TAIL, "-clean", 0, "export tables as cleaned", false);167 168 // -importrun169 psMetadata *importrunArgs = psMetadataAlloc();170 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL);171 172 140 173 141 psMetadata *argSets = psMetadataAlloc(); … … 184 152 PXOPT_ADD_MODE("-masked", "show blocked labels", ADDTOOL_MODE_MASKED, maskedArgs); 185 153 PXOPT_ADD_MODE("-unblock", "remove a label block", ADDTOOL_MODE_UNBLOCK, unblockArgs); 186 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", ADDTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs);187 PXOPT_ADD_MODE("-pendingcleanupexp", "show exps for cleanup runs", ADDTOOL_MODE_PENDINGCLEANUPEXP, pendingcleanupexpArgs);188 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", ADDTOOL_MODE_DONECLEANUP, donecleanupArgs);189 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", ADDTOOL_MODE_EXPORTRUN, exportrunArgs);190 PXOPT_ADD_MODE("-importrun", "import run from metadata file", ADDTOOL_MODE_IMPORTRUN, importrunArgs);191 154 192 155 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
branches/eam_branches/20090820/ippTools/src/camtool.c
r25766 r25870 121 121 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", false, false); 122 122 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 123 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 124 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 123 125 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 124 126 PXOPT_LOOKUP_STR(expgroup, config->args, "-set_expgroup", false, false); … … 126 128 PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false); 127 129 PXOPT_LOOKUP_STR(end_stage, config->args, "-set_end_stage", false, false); 130 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 128 131 129 132 // find the exp_id of all the exposures that we want to queue up. … … 212 215 workdir ? workdir : row->workdir, 213 216 label ? label : row->label, 217 data_group ? data_group: row->data_group, 218 dist_group ? dist_group: row->dist_group, 214 219 reduction ? reduction : row->reduction, 215 220 expgroup ? expgroup : row->expgroup, 216 221 dvodb ? dvodb : row->dvodb, 217 222 tess_id ? tess_id : row->tess_id, 218 end_stage ? end_stage : row->end_stage 223 end_stage ? end_stage : row->end_stage, 224 note 219 225 )) { 220 226 if (!psDBRollback(config->dbh)) { … … 251 257 PXOPT_COPY_STR(config->args, where, "-reduction", "camRun.reduction", "=="); 252 258 253 if (!psListLength(where->list) 254 && !psMetadataLookupBool(NULL, config->args, "-all")) { 259 if (!psListLength(where->list)) { 255 260 psFree(where); 256 261 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 257 262 return false; 258 263 } 259 260 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 261 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 262 263 if ((!state) && (!label)) { 264 psError(PXTOOLS_ERR_DATA, false, "parameters are required"); 265 psFree(where); 266 return false; 267 } 268 269 if (state) { 270 // set camRun.state to state 271 if (!pxcamRunSetStateByQuery(config, where, state)) { 272 psFree(where); 273 return false; 274 } 275 } 276 277 if (label) { 278 // set camRun.label to label 279 if (!pxcamRunSetLabelByQuery(config, where, label)) { 280 psFree(where); 281 return false; 282 } 283 } 284 264 psString query = psStringCopy("UPDATE camRun JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id)"); 265 266 // pxUpdateRun gets parameters from config->args and updates 267 bool result = pxUpdateRun(config, where, &query, "camRun", true); 268 if (!result) { 269 psError(PXTOOLS_ERR_DATA, false, "pxUpdateRun failed"); 270 } 271 272 psFree(query); 285 273 psFree(where); 286 274 287 return true;275 return result; 288 276 } 289 277 … … 642 630 pendingRow->workdir, 643 631 pendingRow->label, 632 pendingRow->data_group, 633 pendingRow->dist_group, 644 634 pendingRow->reduction, 645 635 pendingRow->expgroup, 646 636 pendingRow->dvodb, 647 637 pendingRow->tess_id, 648 pendingRow->end_stage 638 pendingRow->end_stage, 639 NULL // note does not propagate 649 640 )) { 650 641 // rollback … … 656 647 return false; 657 648 } 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 649 675 650 psFree(pendingRow); … … 1172 1147 } 1173 1148 1149 if (!pxExportVersion(config, f)) { 1150 psError(PS_ERR_UNKNOWN, false, "failed to write dbversion output file"); 1151 return false; 1152 } 1153 1174 1154 psMetadata *where = psMetadataAlloc(); 1175 1155 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); … … 1252 1232 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1253 1233 1254 fprintf (stdout, "---- input ----\n"); 1234 #ifdef notdef 1235 fprintf (stderr, "---- input ----\n"); 1255 1236 psMetadataPrint (stderr, input, 1); 1237 #endif 1238 1239 if (!pxCheckImportVersion(config, input)) { 1240 psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed"); 1241 return false; 1242 } 1256 1243 1257 1244 psMetadataItem *item = psMetadataLookup (input, "camRun"); -
branches/eam_branches/20090820/ippTools/src/camtoolConfig.c
r24681 r25870 62 62 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_tess_id", 0, "define tess ID", NULL); 63 63 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_end_stage", 0, "define end stage", NULL); 64 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 64 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 65 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 66 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 65 67 66 68 // -updaterun … … 77 79 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 78 80 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 79 81 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 82 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 83 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 80 84 // -pendingexp 81 85 psMetadata *pendingexpArgs = psMetadataAlloc(); -
branches/eam_branches/20090820/ippTools/src/chiptool.c
r25766 r25870 57 57 static bool exportrunMode(pxConfig *config); 58 58 static bool importrunMode(pxConfig *config); 59 static bool runstateMode(pxConfig *config); 59 60 60 61 # define MODECASE(caseName, func) \ … … 97 98 MODECASE(CHIPTOOL_MODE_EXPORTRUN, exportrunMode); 98 99 MODECASE(CHIPTOOL_MODE_IMPORTRUN, importrunMode); 100 MODECASE(CHIPTOOL_MODE_RUNSTATE, runstateMode); 99 101 default: 100 102 psAbort("invalid option (this should not happen)"); … … 144 146 PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false); 145 147 PXOPT_LOOKUP_STR(end_stage, config->args, "-set_end_stage", false, false); 148 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 149 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 150 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 146 151 147 152 // default … … 263 268 workdir ? workdir : raw_workdir, 264 269 label ? label : raw_label, 270 data_group ? data_group : (label ? label : raw_label), 271 dist_group, 265 272 reduction ? reduction : raw_reduction, 266 273 // expgroup ? expgroup : raw_expgroup, … … 269 276 dvodb ? dvodb : raw_dvodb, 270 277 tess_id ? tess_id : raw_tess_id, 271 end_stage ? end_stage : raw_end_stage 278 end_stage ? end_stage : raw_end_stage, 279 note 272 280 )) { 273 281 if (!psDBRollback(config->dbh)) { … … 301 309 PXOPT_COPY_STR(config->args, where, "-label", "chipRun.label", "=="); 302 310 PXOPT_COPY_STR(config->args, where, "-state", "chipRun.state", "=="); 303 304 if (!psListLength(where->list) && 305 !psMetadataLookupBool(NULL, config->args, "-all")) { 311 PXOPT_COPY_STR(config->args, where, "-data_group", "chipRun.data_group", "=="); 312 PXOPT_COPY_STR(config->args, where, "-dist_group", "chipRun.dist_group", "=="); 313 314 if (!psListLength(where->list)) { 306 315 psFree(where); 307 where = NULL;308 316 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 309 317 return false; 310 318 } 311 312 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 313 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 314 315 if ((!state) && (!label)) { 316 psError(PXTOOLS_ERR_DATA, false, "parameters are required"); 317 psFree(where); 318 return false; 319 } 320 321 if (state) { 322 // set chipRun.state to state 323 if (!pxchipRunSetStateByQuery(config, where, state)) { 324 psFree(where); 325 return false; 326 } 327 } 328 329 if (label) { 330 // set chipRun.label to label 331 if (!pxchipRunSetLabelByQuery(config, where, label)) { 332 psFree(where); 333 return false; 334 } 335 } 336 319 psString query = psStringCopy("UPDATE chipRun JOIN rawExp USING(exp_id)"); 320 321 // pxUpdateRun gets parameters from config->args and updates 322 bool result = pxUpdateRun(config, where, &query, "chipRun", true); 323 if (!result) { 324 psError(PXTOOLS_ERR_DATA, false, "pxUpdateRun failed"); 325 } 326 327 psFree(query); 337 328 psFree(where); 338 329 339 return true;330 return result; 340 331 } 341 332 … … 605 596 PXOPT_COPY_S64(config->args, where, "-magicked", "chipProcessedImfile.magicked", "=="); 606 597 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); 610 611 if (!psListLength(where->list) && 612 !psMetadataLookupBool(NULL, config->args, "-all")) { 613 psFree(where); 614 psError(PXTOOLS_ERR_DATA, false, "search parameters (or -all) are required"); 598 psString where2 = NULL; 599 pxmagicAddWhere(config, &where2, "chipProcessedImfile"); 600 // add cuts on ra and decl if supplied 601 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 602 psError(PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed"); 615 603 return false; 616 604 } … … 622 610 } 623 611 624 if ( where &&psListLength(where->list)) {612 if (psListLength(where->list)) { 625 613 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 626 614 psStringAppend(&query, " WHERE %s", whereClause); 627 615 psFree(whereClause); 616 } else if (psMetadataLookupBool(NULL, config->args, "-all") || (faulted || where2)) { 617 psStringAppend(&query, " WHERE chipRun.chip_id IS NOT NULL %s", where2 ? where2 : ""); 618 } else { 619 psFree(where); 620 psError(PXTOOLS_ERR_DATA, false, "search parameters (or -all) are required"); 621 return false; 628 622 } 629 623 psFree(where); … … 635 629 // don't list faulted rows 636 630 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");651 631 } 652 632 … … 739 719 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 740 720 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 741 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false); 742 743 if (!pxSetFaultCode(config->dbh, "chipProcessedImfile", where, fault)) { 721 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, NULL); 722 723 if (!state) { 724 PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false); 725 726 if (!pxSetFaultCode(config->dbh, "chipProcessedImfile", where, fault)) { 744 727 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 745 728 return false; 746 } 747 psFree(where); 748 729 } 730 psFree(where); 731 } 732 else { 733 if (!pxchipProcessedImfileSetStateByQuery(config,where,state)) { 734 psError(PS_ERR_UNKNOWN, false, "failed to set chipProcessedImfile state"); 735 return(false); 736 } 737 } 738 739 749 740 return true; 750 741 } … … 1114 1105 1115 1106 psMetadata *where = psMetadataAlloc(); 1107 pxchipGetSearchArgs (config, where); // chipRun, chipProcessedImfile, rawExp 1108 PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "=="); 1109 PXOPT_COPY_STR(config->args, where, "-reduction", "chipRun.reduction", "=="); 1116 1110 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 1117 1111 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); … … 1253 1247 chipRun->workdir, 1254 1248 chipRun->label, 1249 chipRun->data_group, 1250 chipRun->dist_group, 1255 1251 chipRun->reduction, 1256 1252 chipRun->expgroup, 1257 1253 chipRun->dvodb, 1258 1254 chipRun->tess_id, 1259 chipRun->end_stage 1255 chipRun->end_stage, 1256 NULL // note does not propagate 1260 1257 )) { 1261 1258 if (!psDBRollback(config->dbh)) { … … 1380 1377 } 1381 1378 1379 if (!pxExportVersion(config, f)) { 1380 psError(PS_ERR_UNKNOWN, false, "failed to write dbversion output file"); 1381 return false; 1382 } 1383 1382 1384 psMetadata *where = psMetadataAlloc(); 1383 1385 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); … … 1471 1473 psVector *identifiers = psVectorAllocEmpty(16, PS_TYPE_U64); // Identifiers inserted 1472 1474 1475 psMetadataIterator *iter = psMetadataIteratorAlloc(input, PS_LIST_HEAD, NULL); // Iterator 1476 1477 if (!pxCheckImportVersion(config, input)) { 1478 psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed"); 1479 return false; 1480 } 1481 // first item is the dbversion, skip it 1482 psMetadataItem *dbversion = psMetadataGetAndIncrement(iter); 1483 (void) dbversion; 1484 1473 1485 if (!psDBTransaction(config->dbh)) { 1474 1486 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1476 1488 } 1477 1489 1478 psMetadataIterator *iter = psMetadataIteratorAlloc(input, PS_LIST_HEAD, NULL); // Iterator1479 1490 psMetadataItem *item; // Item from iteration 1480 1491 while ((item = psMetadataGetAndIncrement(iter))) { … … 1505 1516 return true; 1506 1517 } 1518 1519 static bool runstateMode(pxConfig *config) 1520 { 1521 PS_ASSERT_PTR_NON_NULL(config, false); 1522 1523 psMetadata *where = psMetadataAlloc(); 1524 PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "=="); 1525 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 1526 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 1527 pxAddLabelSearchArgs (config, where, "-label", "chipRun.label", "LIKE"); 1528 1529 // PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 1530 PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false); 1531 1532 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1533 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1534 1535 psString query = pxDataGet("chiptool_runstate.sql"); 1536 if (!query) { 1537 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1538 return false; 1539 } 1540 1541 if (psListLength(where->list)) { 1542 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1543 psStringAppend(&query, " WHERE %s", whereClause); 1544 psFree(whereClause); 1545 } else { 1546 psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required"); 1547 return false; 1548 } 1549 psFree(where); 1550 1551 // treat limit == 0 as "no limit" 1552 if (limit) { 1553 psString limitString = psDBGenerateLimitSQL(limit); 1554 psStringAppend(&query, " %s", limitString); 1555 psFree(limitString); 1556 } 1557 1558 if (!p_psDBRunQuery(config->dbh, query)) { 1559 psError(PS_ERR_UNKNOWN, false, "database error"); 1560 psFree(query); 1561 return false; 1562 } 1563 psFree(query); 1564 1565 psArray *output = p_psDBFetchResult(config->dbh); 1566 if (!output) { 1567 psErrorCode err = psErrorCodeLast(); 1568 switch (err) { 1569 case PS_ERR_DB_CLIENT: 1570 psError(PXTOOLS_ERR_SYS, false, "database error"); 1571 case PS_ERR_DB_SERVER: 1572 psError(PXTOOLS_ERR_PROG, false, "database error"); 1573 default: 1574 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1575 } 1576 1577 return false; 1578 } 1579 if (!psArrayLength(output)) { 1580 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 1581 psFree(output); 1582 return true; 1583 } 1584 1585 if (psArrayLength(output)) { 1586 // negative simple so the default is true 1587 if (!ippdbPrintMetadatas(stdout, output, "chipRunState", !simple)) { 1588 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1589 psFree(output); 1590 return false; 1591 } 1592 } 1593 1594 psFree(output); 1595 1596 return true; 1597 } -
branches/eam_branches/20090820/ippTools/src/chiptool.h
r25766 r25870 47 47 CHIPTOOL_MODE_TOSCRUBBEDIMFILE, 48 48 CHIPTOOL_MODE_EXPORTRUN, 49 CHIPTOOL_MODE_IMPORTRUN 49 CHIPTOOL_MODE_IMPORTRUN, 50 CHIPTOOL_MODE_RUNSTATE 50 51 } chiptoolMode; 51 52 -
branches/eam_branches/20090820/ippTools/src/chiptoolConfig.c
r25766 r25870 58 58 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_tess_id", 0, "define tessellation identifier", NULL); 59 59 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_end_stage", 0, "define end stage", NULL); 60 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 61 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define distribution group", NULL); 62 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 60 63 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "do not actually modify the database", false); 61 64 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 62 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false);63 65 64 66 // -updaterun … … 67 69 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip ID", 0); 68 70 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL); 69 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by label", NULL); 71 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by label", NULL); 72 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0, "search by data_group", NULL); 73 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-dist_group", 0, "search by dist_group", NULL); 70 74 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 71 75 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 72 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 76 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "set data group", NULL); 77 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "set dist group", NULL); 78 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "set note", NULL); 73 79 74 80 // -pendingimfile … … 158 164 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 159 165 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by chipRun label (LIKE comparison)", NULL); 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); 166 pxmagicAddArguments(processedimfileArgs); 167 164 168 psMetadataAddU64(processedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 165 169 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-all", 0, "list everything without search terms", false); 166 170 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 167 171 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 172 173 pxspaceAddArguments(processedimfileArgs); 168 174 169 175 // -revertprocessedimfile … … 182 188 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 183 189 psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-fault", 0, "set fault code (required)", 0); 184 190 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 185 191 // -block 186 192 psMetadata *blockArgs = psMetadataAlloc(); … … 229 235 psMetadataAddU64(runArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 230 236 psMetadataAddStr(runArgs, PS_LIST_TAIL, "-state", 0, "search by state (required)", NULL); 237 pxchipSetSearchArgs(runArgs); 238 psMetadataAddS64(runArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip ID", 0); 239 psMetadataAddStr(runArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 231 240 232 241 // -advanceexp … … 268 277 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 269 278 279 // -runstate 280 psMetadata *runstateArgs = psMetadataAlloc(); 281 psMetadataAddS64(runstateArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip ID", 0); 282 psMetadataAddS64(runstateArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure tag", 0); 283 psMetadataAddStr(runstateArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exposure tag", 0); 284 psMetadataAddStr(runstateArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by warpRun label", NULL); 285 psMetadataAddBool(runstateArgs, PS_LIST_TAIL, "-no_magic", 0, "magic is not necessary for result", false); 286 287 psMetadataAddU64(runstateArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 288 psMetadataAddBool(runstateArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 289 270 290 psMetadata *argSets = psMetadataAlloc(); 271 291 psMetadata *modes = psMetadataAlloc(); … … 278 298 PXOPT_ADD_MODE("-updateprocessedimfile","change procesed imfile properties", CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,updateprocessedimfileArgs); 279 299 PXOPT_ADD_MODE("-revertprocessedimfile","undo a processed imfile", CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,revertprocessedimfileArgs); 300 PXOPT_ADD_MODE("-runstate", "list the states of chip run", CHIPTOOL_MODE_RUNSTATE, runstateArgs); 280 301 PXOPT_ADD_MODE("-advanceexp", "advance completed exposures", CHIPTOOL_MODE_ADVANCEEXP, advanceexpArgs); 281 302 PXOPT_ADD_MODE("-block", "set a label block", CHIPTOOL_MODE_BLOCK, blockArgs); -
branches/eam_branches/20090820/ippTools/src/difftool.c
r25766 r25870 51 51 52 52 static bool setdiffRunState(pxConfig *config, psS64 diff_id, const char *state, psS64 magicked); 53 static bool change_skyfile_data_state(pxConfig *config, psString data_state, psString run_state); 54 static bool tocleanedskyfileMode(pxConfig *config); 55 static bool topurgedskyfileMode(pxConfig *config); 56 static bool toscrubbedskyfileMode(pxConfig *config); 57 58 53 59 54 60 # define MODECASE(caseName, func) \ … … 88 94 MODECASE(DIFFTOOL_MODE_EXPORTRUN, exportrunMode); 89 95 MODECASE(DIFFTOOL_MODE_IMPORTRUN, importrunMode); 96 MODECASE(DIFFTOOL_MODE_TOCLEANEDSKYFILE, tocleanedskyfileMode); 97 MODECASE(DIFFTOOL_MODE_TOPURGEDSKYFILE, topurgedskyfileMode); 98 MODECASE(DIFFTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileMode); 99 90 100 default: 91 101 psAbort("invalid option (this should not happen)"); … … 115 125 116 126 // required options 117 PXOPT_LOOKUP_STR(workdir, config->args, "- workdir", true, false);127 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false); 118 128 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false); 119 129 PXOPT_LOOKUP_BOOL(bothways, config->args, "-bothways", false); 120 130 PXOPT_LOOKUP_BOOL(exposure, config->args, "-exposure", false); 121 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 122 PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false); 131 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 132 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 133 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 134 PXOPT_LOOKUP_STR(reduction, config->args, "-rset_eduction", false, false); 135 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 123 136 124 137 // default … … 131 144 workdir, 132 145 label, 146 data_group ? data_group : label, 147 dist_group, 133 148 reduction, 134 149 NULL, // dvodb … … 137 152 bothways, 138 153 exposure, 139 false 154 false, 155 note 140 156 ); 141 157 if (!run) { … … 168 184 PS_ASSERT_PTR_NON_NULL(config, false); 169 185 186 psMetadata *where = psMetadataAlloc(); 187 188 PXOPT_COPY_S64(config->args, where, "-diff_id", "stack_id", "=="); 189 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 190 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 191 if (!psListLength(where->list)) { 192 psFree(where); 193 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 194 return false; 195 } 196 197 psString query = psStringCopy("UPDATE diffRun"); 198 199 // pxUpdateRun gets parameters from config->args and updates 200 bool result = pxUpdateRun(config, where, &query, "diffRun", true); 201 202 psFree(query); 203 psFree(where); 204 205 return result; 206 207 #ifdef notdef 170 208 // required options 171 PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", true, false);209 PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", false, false); 172 210 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 173 174 if (state) { 211 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 212 213 // Copy of my hacky work around from stacktool.c 214 if ((state)&&(diff_id)) { 175 215 // set detRun.state to state 176 216 return setdiffRunState(config, diff_id, state, false); 177 217 } 178 218 179 return true; 219 if ((state)&&(label)) { 220 return setdiffRunStateByLabel(config, label, state); 221 } 222 223 psError(PS_ERR_UNKNOWN, false, "Required options not found."); 224 225 return false; 226 #endif 180 227 } 181 228 … … 692 739 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 693 740 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);697 741 742 psString where2 = NULL; 743 pxmagicAddWhere(config, &where2, "diffSkyfile"); 744 pxspaceAddWhere(config, &where2, template ? "rawTemplate" : "rawInput"); 698 745 psString query = pxDataGet("difftool_skyfile.sql"); 699 746 if (!query) { … … 706 753 psStringAppend(&query, " WHERE %s", whereClause); 707 754 psFree(whereClause); 755 } else if (where2) { 756 psStringAppend(&query, " WHERE diffRun.diff_id is not null %s", where2); 708 757 } else if (!all) { 709 758 psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required"); 759 return false; 710 760 } 711 761 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 728 762 729 763 // treat limit == 0 as "no limit" … … 878 912 } 879 913 880 char *query = "UPDATE diffRun SET state = '%s', magicked = %" PRId64 " WHERE diff_id = %"PRId64; 881 882 if (!p_psDBRunQueryF(config->dbh, query, state, magicked, diff_id)) { 914 if (magicked) { 915 char *query = "UPDATE diffRun SET state = '%s', magicked = %" PRId64 " WHERE diff_id = %"PRId64; 916 917 if (!p_psDBRunQueryF(config->dbh, query, state, magicked, diff_id)) { 883 918 psError(PS_ERR_UNKNOWN, false, 884 919 "failed to change state for diff_id %"PRId64, diff_id); 885 920 return false; 886 } 887 921 } 922 } 923 else { 924 char *query = "UPDATE diffRun SET state = '%s' WHERE diff_id = %"PRId64; 925 926 if (!p_psDBRunQueryF(config->dbh, query, state, diff_id)) { 927 psError(PS_ERR_UNKNOWN, false, 928 "failed to change state for diff_id %"PRId64, diff_id); 929 return false; 930 } 931 } 932 888 933 return true; 889 934 } 935 936 937 #ifdef notdef 938 static bool setdiffRunStateByLabel(pxConfig *config, const char *label, const char *state) { 939 PS_ASSERT_PTR_NON_NULL(state,false); 940 941 // check that state is a valid string value 942 if (!pxIsValidState(state)) { 943 psError(PS_ERR_UNKNOWN, false, "invalid diffRun state: %s", state); 944 return false; 945 } 946 947 char *query = "UPDATE diffRun SET state = '%s' WHERE label = '%s'"; 948 if (!p_psDBRunQueryF(config->dbh,query,state,label)) { 949 psError(PS_ERR_UNKNOWN, false, 950 "failed to change state for label %s", label); 951 return(false); 952 } 953 954 return true; 955 } 956 #endif 890 957 891 958 // Generate a single populated run … … 895 962 const char *tess_id, // Tessellation identifier 896 963 const char *label, // label 964 const char *data_group, // data_group 965 const char *dist_group, // dist_group 897 966 const char *reduction, // reduction 967 const char *note, // note 898 968 psS64 input_warp_id, // Warp identifier for input image, PS_MAX_S64 for none 899 969 psS64 input_stack_id, // Stack identifier for input image, PS_MAX_S64 for none … … 926 996 workdir, 927 997 label, 998 data_group ? data_group : label, 999 dist_group, 928 1000 reduction, 929 1001 NULL, // dvodb … … 932 1004 false, 933 1005 false, 934 0 // magicked 1006 0, // magicked 1007 note 935 1008 ); 936 1009 … … 1006 1079 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false); // required options 1007 1080 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 1081 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 1082 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 1008 1083 PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false); 1009 1084 PXOPT_LOOKUP_S64(template_warp_id, config->args, "-template_warp_id", false, false); … … 1012 1087 PXOPT_LOOKUP_S64(input_stack_id, config->args, "-input_stack_id", false, false); 1013 1088 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1089 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 1014 1090 1015 1091 if (template_stack_id && template_warp_id) { … … 1035 1111 psArray *list = psArrayAllocEmpty(16); // List of runs, to print 1036 1112 1037 if (!populatedrun(list, workdir, skycell_id, tess_id, label, reduction,1113 if (!populatedrun(list, workdir, skycell_id, tess_id, label, data_group ? data_group : label, dist_group, reduction, note, 1038 1114 input_warp_id ? input_warp_id : PS_MAX_S64, 1039 1115 input_stack_id ? input_stack_id : PS_MAX_S64, … … 1074 1150 PXOPT_COPY_STR(config->args, stackWhere, "-stack_label", "stackRun.label", "=="); 1075 1151 1076 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required options 1077 PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false); // option 1078 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); // option 1079 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 1152 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false); // required option 1153 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); // option 1154 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); // option 1155 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 1156 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 1157 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 1158 PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false); 1159 1080 1160 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1081 1161 PXOPT_LOOKUP_BOOL(newTemplates, config->args, "-new-templates", false); … … 1313 1393 workdir, 1314 1394 label, 1395 data_group ? data_group : label, 1396 dist_group, 1315 1397 reduction, 1316 1398 NULL, // dvodb … … 1319 1401 false, // bothways 1320 1402 true, // exposure 1321 0 // magicked 1403 0, // magicked 1404 note 1322 1405 ); 1323 1406 … … 1388 1471 } 1389 1472 1390 if ( !diffRunPrintObjects(stdout, list, !simple)) {1473 if (numGood && !diffRunPrintObjects(stdout, list, !simple)) { 1391 1474 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 1392 1475 psFree(list); … … 1469 1552 1470 1553 // Settings to apply to defined run 1471 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required options 1472 PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false); // option 1473 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); // option 1474 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 1554 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false); // required options 1555 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); // option 1556 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); // option 1557 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); // option 1558 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); // option 1559 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); // option 1560 PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false); 1561 1475 1562 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1476 1563 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); … … 1656 1743 } 1657 1744 1658 diffRunRow *run = diffRunRowAlloc(0, "reg", workdir, label, reduction, NULL, registered,1659 tess_id, true, true, false ); // Run to insert1745 diffRunRow *run = diffRunRowAlloc(0, "reg", workdir, label, data_group ? data_group : label, dist_group, reduction, NULL, registered, 1746 tess_id, true, true, false, note); // Run to insert 1660 1747 if (!diffRunInsertObject(config->dbh, run)) { 1661 1748 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1738 1825 1739 1826 psMetadata *where = psMetadataAlloc(); 1740 pxAddLabelSearchArgs (config, where, "-label", " diffRun.label", "==");1827 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 1741 1828 1742 1829 psString query = pxDataGet("difftool_pendingcleanuprun.sql"); … … 1760 1847 } 1761 1848 1849 // fprintf(stderr,"%s",query); 1762 1850 if (!p_psDBRunQuery(config->dbh, query)) { 1763 1851 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1931 2019 1932 2020 return true; 2021 } 2022 2023 static bool change_skyfile_data_state(pxConfig *config, psString data_state, psString run_state) { 2024 PS_ASSERT_PTR_NON_NULL(config, false); 2025 2026 // diff_id, skycell_id are required 2027 PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", true, false); 2028 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false); 2029 2030 psString query = pxDataGet("difftool_change_skyfile_data_state.sql"); 2031 2032 if (!psDBTransaction(config->dbh)) { 2033 psError(PS_ERR_UNKNOWN, false, "database error"); 2034 return(false); 2035 } 2036 2037 // Uses the unconstrained (diffRun.state [NEED NOT EQUAL] run_state) version from warptool.c 2038 2039 if (!p_psDBRunQueryF(config->dbh, query, data_state, diff_id, skycell_id)) { 2040 psError(PS_ERR_UNKNOWN, false, "database error"); 2041 // rollback 2042 if (!psDBRollback(config->dbh)) { 2043 psError(PS_ERR_UNKNOWN, false, "database error"); 2044 } 2045 psError(PS_ERR_UNKNOWN, false, "database error"); 2046 return(false); 2047 } 2048 psFree(query); 2049 2050 query = pxDataGet("difftool_change_run_state.sql"); 2051 if (!p_psDBRunQueryF(config->dbh, query, data_state, diff_id, data_state)) { 2052 // rollback 2053 if (!psDBRollback(config->dbh)) { 2054 psError(PS_ERR_UNKNOWN, false, "database error"); 2055 } 2056 psError(PS_ERR_UNKNOWN, false, "database error"); 2057 return(false); 2058 } 2059 2060 if (!psDBCommit(config->dbh)) { 2061 psError(PS_ERR_UNKNOWN, false, "database error"); 2062 return(false); 2063 } 2064 2065 return(true); 2066 } 2067 2068 static bool tocleanedskyfileMode(pxConfig *config) { 2069 return change_skyfile_data_state(config, "cleaned","goto_cleaned"); 2070 } 2071 static bool topurgedskyfileMode(pxConfig *config) { 2072 return change_skyfile_data_state(config, "purged", "goto_purged"); 2073 } 2074 static bool toscrubbedskyfileMode(pxConfig *config) { 2075 return change_skyfile_data_state(config, "scrubbed", "goto_scrubbed"); 1933 2076 } 1934 2077 … … 1956 2099 } 1957 2100 2101 if (!pxExportVersion(config, f)) { 2102 psError(PS_ERR_UNKNOWN, false, "failed to write dbversion output file"); 2103 return false; 2104 } 1958 2105 psMetadata *where = psMetadataAlloc(); 1959 2106 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); … … 2047 2194 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 2048 2195 2049 fprintf (stdout, "---- input ----\n"); 2196 #ifdef notdef 2197 fprintf (stderr, "---- input ----\n"); 2050 2198 psMetadataPrint (stderr, input, 1); 2051 2199 #endif 2200 2201 if (!pxCheckImportVersion(config, input)) { 2202 psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed"); 2203 return false; 2204 } 2052 2205 psMetadataItem *item = psMetadataLookup (input, "diffRun"); 2053 2206 psAssert (item, "entry not in input?"); -
branches/eam_branches/20090820/ippTools/src/difftool.h
r25766 r25870 42 42 DIFFTOOL_MODE_UPDATEDIFFSKYFILE, 43 43 DIFFTOOL_MODE_EXPORTRUN, 44 DIFFTOOL_MODE_IMPORTRUN 44 DIFFTOOL_MODE_IMPORTRUN, 45 DIFFTOOL_MODE_TOCLEANEDSKYFILE, 46 DIFFTOOL_MODE_TOPURGEDSKYFILE, 47 DIFFTOOL_MODE_TOSCRUBBEDSKYFILE 48 45 49 } difftoolMode; 46 50 -
branches/eam_branches/20090820/ippTools/src/difftoolConfig.c
r25766 r25870 47 47 // -definerun 48 48 psMetadata *definerunArgs = psMetadataAlloc(); 49 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "- workdir", 0,"define workdir (required)", NULL);49 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL); 50 50 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id", 0, "define tessellation ID (required)", NULL); 51 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-bothways", 0, "do the subtraction both ways?", false); 52 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-exposure", 0, "subtraction for entire exposure?", false); 53 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 54 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class", NULL); 55 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 51 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-bothways", 0, "do the subtraction both ways?", false); 52 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-exposure", 0, "subtraction for entire exposure?", false); 53 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 54 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL); 55 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-set_registered", 0, "time detrend run was registered", now); 56 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 57 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 58 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 56 59 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 57 60 58 61 // -updaterun 59 62 psMetadata *updaterunArgs = psMetadataAlloc(); 60 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-diff_id", 0, "define diff ID (required)", 0); 61 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state (required)", NULL); 63 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-diff_id", 0, "define diff ID", 0); 64 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state", NULL); 65 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "define by label instead of diff ID", 0); 66 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "define new value for label", 0); 67 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL); 68 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 69 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 70 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 62 71 63 72 // -addinputskyfile … … 134 143 psMetadataAddTime(diffskyfileArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL); 135 144 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 145 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by diffRun label (LIKE comparison)", NULL); 140 146 psMetadataAddS16(diffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 147 pxmagicAddArguments(diffskyfileArgs); 148 pxspaceAddArguments(diffskyfileArgs); 141 149 142 150 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); … … 175 183 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-warp_label", 0, "search by warp label", NULL); 176 184 psMetadataAddF32(definewarpstackArgs, PS_LIST_TAIL, "-good_frac", 0, "minimum good fraction of skycell", NAN); 177 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 178 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 179 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class", NULL); 180 psMetadataAddTime(definewarpstackArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 185 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL); 186 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 187 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL); 188 psMetadataAddTime(definewarpstackArgs, PS_LIST_TAIL, "-set_registered", 0, "time detrend run was registered", now); 189 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 190 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 191 psMetadataAddStr(definewarpstackArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 181 192 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-new-templates", 0, "also search for diffs with new template", false); 182 193 psMetadataAddBool(definewarpstackArgs, PS_LIST_TAIL, "-rerun", 0, "define new run even if one exists", false); … … 198 209 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-template_label", 0, "search by warp label for template", NULL); 199 210 psMetadataAddF32(definewarpwarpArgs, PS_LIST_TAIL, "-good_frac", 0, "minimum good fraction of skycell", NAN); 200 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 201 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 202 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class", NULL); 203 psMetadataAddTime(definewarpwarpArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 211 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL); 212 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 213 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL); 214 psMetadataAddTime(definewarpwarpArgs, PS_LIST_TAIL, "-set_registered", 0, "time detrend run was registered", now); 215 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 216 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 217 psMetadataAddStr(definewarpwarpArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 204 218 psMetadataAddBool(definewarpwarpArgs, PS_LIST_TAIL, "-rerun", 0, "define new run even if one exists", false); 205 219 psMetadataAddBool(definewarpwarpArgs, PS_LIST_TAIL, "-available", 0, "define new run even if warpRun has some faults", false); … … 259 273 psMetadataAddS16(updatediffskyfileArgs, PS_LIST_TAIL, "-fault", 0, "set fault code (required)", 0); 260 274 275 // -tocleanedskyfile 276 psMetadata *tocleanedskyfileArgs = psMetadataAlloc(); 277 psMetadataAddS64(tocleanedskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "difftool ID to update", 0); 278 psMetadataAddStr(tocleanedskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 279 280 // -topurgedskyfile 281 psMetadata *topurgedskyfileArgs = psMetadataAlloc(); 282 psMetadataAddS64(topurgedskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "difftool ID to update", 0); 283 psMetadataAddStr(topurgedskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 284 285 // -toscrubbedskyfile 286 psMetadata *toscrubbedskyfileArgs = psMetadataAlloc(); 287 psMetadataAddS64(toscrubbedskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "difftool ID to update", 0); 288 psMetadataAddStr(toscrubbedskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 289 261 290 // -exportrun 262 291 psMetadata *exportrunArgs = psMetadataAlloc(); … … 296 325 PXOPT_ADD_MODE("-importrun", "import run from metadata file", DIFFTOOL_MODE_IMPORTRUN, importrunArgs); 297 326 327 PXOPT_ADD_MODE("-tocleanedskyfile", "set skyfile as cleaned", DIFFTOOL_MODE_TOCLEANEDSKYFILE, tocleanedskyfileArgs); 328 PXOPT_ADD_MODE("-topurgedskyfile", "set skyfile as purged", DIFFTOOL_MODE_TOPURGEDSKYFILE, topurgedskyfileArgs); 329 PXOPT_ADD_MODE("-toscrubbedskyfile", "set skyfile as scrubbed", DIFFTOOL_MODE_TOSCRUBBEDSKYFILE, toscrubbedskyfileArgs); 330 298 331 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { 299 332 psError(PS_ERR_UNKNOWN, true, "option parsing failed"); -
branches/eam_branches/20090820/ippTools/src/disttool.c
r25766 r25870 32 32 33 33 static bool definebyqueryMode(pxConfig *config); 34 static bool definerunMode(pxConfig *config);35 34 static bool updaterunMode(pxConfig *config); 36 35 static bool revertrunMode(pxConfig *config); … … 79 78 switch (config->mode) { 80 79 MODECASE(DISTTOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 81 MODECASE(DISTTOOL_MODE_DEFINERUN, definerunMode);82 80 MODECASE(DISTTOOL_MODE_UPDATERUN, updaterunMode); 83 81 MODECASE(DISTTOOL_MODE_REVERTRUN, revertrunMode); … … 123 121 } 124 122 125 static bool definerunMode(pxConfig *config)126 {127 PS_ASSERT_PTR_NON_NULL(config, false);128 129 // required130 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false);131 PXOPT_LOOKUP_S64(stage_id, config->args, "-stage_id", true, false);132 PXOPT_LOOKUP_STR(outroot, config->args, "-outroot", true, false);133 PXOPT_LOOKUP_S64(target_id, config->args, "-target_id", true, false);134 135 // optional136 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false);137 PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false);138 PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false);139 140 // TODO: check that stage has an expected value141 // XXX: all of the following concerns will be managed properly by definebyquery142 143 // TODO: should we check that stage_id actually exists for stage144 // in magicdstool we queue off of a magic_id so the stage_id, exp_id, and cam_id get looked up145 // when the run is queued146 147 if (!distRunInsert(config->dbh,148 0, // dist_id149 target_id,150 stage,151 stage_id,152 0,153 set_label,154 outroot,155 clean,156 no_magic,157 "new",158 NULL, // time_stamp159 0 // fault160 )) {161 psError(PS_ERR_UNKNOWN, false, "database error");162 return false;163 }164 165 return true;166 }167 123 168 124 static bool definebyqueryMode(pxConfig *config) … … 178 134 PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false); 179 135 PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false); 136 PXOPT_LOOKUP_STR(set_note, config->args, "-set_note", false, false); 137 180 138 PXOPT_LOOKUP_S64(limit, config->args, "-limit", false, false); 181 139 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 191 149 192 150 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 151 PXOPT_LOOKUP_STR(dist_group, config->args, "-dist_group", false, false); 193 152 194 153 psString query = NULL; … … 209 168 psStringAppend(&query, " AND (chipRun.label = '%s')", label); 210 169 } 170 if (dist_group) { 171 psStringAppend(&query, " AND (chipRun.dist_group = '%s')", dist_group); 172 } 211 173 } else if (!strcmp(stage, "chip")) { 212 174 magicRunType = "chipRun"; … … 222 184 psStringAppend(&query, " AND (chipRun.label = '%s')", label); 223 185 } 186 if (dist_group) { 187 psStringAppend(&query, " AND (chipRun.dist_group = '%s')", dist_group); 188 } 224 189 } else if (!strcmp(stage, "camera")) { 225 190 magicRunType = "camRun"; // This is used below to set the magicked business … … 235 200 psStringAppend(&query, " AND (camRun.label = '%s')", label); 236 201 } 202 if (dist_group) { 203 psStringAppend(&query, " AND (camRun.dist_group = '%s')", dist_group); 204 } 237 205 } else if (!strcmp(stage, "fake")) { 238 206 magicRunType = "fakeRun"; … … 246 214 if (label) { 247 215 psStringAppend(&query, " AND (fakeRun.label = '%s')", label); 216 } 217 if (dist_group) { 218 psStringAppend(&query, " AND (fakeRun.dist_group = '%s')", dist_group); 248 219 } 249 220 // fake stage doesn't require magic … … 262 233 psStringAppend(&query, " AND (warpRun.label = '%s')", label); 263 234 } 235 if (dist_group) { 236 psStringAppend(&query, " AND (warpRun.dist_group = '%s')", dist_group); 237 } 264 238 265 239 } else if (!strcmp(stage, "diff")) { … … 276 250 psStringAppend(&query, " AND (diffRun.label = '%s')", label); 277 251 } 252 if (dist_group) { 253 psStringAppend(&query, " AND (diffRun.dist_group = '%s')", dist_group); 254 } 278 255 279 256 } else if (!strcmp(stage, "stack")) { … … 288 265 if (label) { 289 266 psStringAppend(&query, " AND (stackRun.label = '%s')", label); 267 } 268 if (dist_group) { 269 psStringAppend(&query, " AND (stackRun.dist_group = '%s')", dist_group); 290 270 } 291 271 // stack stage doesn't require magic … … 371 351 psS64 magic_ds_id = psMetadataLookupS64(NULL, md, "magicked"); 372 352 psS64 target_id = psMetadataLookupS64(NULL, md, "target_id"); 373 psString target_label = psMetadataLookupStr(NULL, md, "label");353 psString stage_label = psMetadataLookupStr(NULL, md, "label"); 374 354 bool clean = psMetadataLookupBool(NULL, md, "clean"); 375 355 … … 381 361 new_label = set_label; 382 362 } else { 383 new_label = target_label;363 new_label = stage_label; 384 364 } 385 365 distRunRow *row = distRunRowAlloc( … … 395 375 "new", 396 376 NULL, // time_stamp 397 0 // fault 377 0, // fault 378 set_note // note does not propagate 398 379 ); 399 380 … … 1239 1220 1240 1221 // required 1241 PXOPT_LOOKUP_STR( label, config->args, "-label", true, false);1222 PXOPT_LOOKUP_STR(dist_group, config->args, "-dist_group", true, false); 1242 1223 PXOPT_LOOKUP_STR(filter, config->args, "-filter", true, false); 1243 1224 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false); … … 1250 1231 distTargetRow *row = distTargetRowAlloc( 1251 1232 0, // target_id 1252 label,1233 dist_group, 1253 1234 filter, 1254 1235 stage, … … 1287 1268 psMetadata *where = psMetadataAlloc(); 1288 1269 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1289 PXOPT_COPY_STR(config->args, where, "- label", "label", "==");1270 PXOPT_COPY_STR(config->args, where, "-dist_group", "dist_group", "=="); 1290 1271 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 1291 1272 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); … … 1323 1304 psMetadata *where = psMetadataAlloc(); 1324 1305 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1325 PXOPT_COPY_STR(config->args, where, "- label", "label", "==");1306 PXOPT_COPY_STR(config->args, where, "-dist_group", "dist_group", "LIKE"); 1326 1307 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 1327 1308 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); … … 1518 1499 PXOPT_LOOKUP_S64(target_id, config->args, "-target_id", false, false); 1519 1500 PXOPT_LOOKUP_STR(stage, config->args, "-stage", false, false); 1520 PXOPT_LOOKUP_STR( label, config->args, "-label", false, false);1501 PXOPT_LOOKUP_STR(dist_group, config->args, "-dist_group", false, false); 1521 1502 PXOPT_LOOKUP_STR(filter, config->args, "-filter", false, false); 1522 1503 PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false); … … 1528 1509 error = true; 1529 1510 } 1530 if (! label) {1531 psError(PS_ERR_UNKNOWN, !error, " labelis required if target_id is not supplied");1511 if (!dist_group) { 1512 psError(PS_ERR_UNKNOWN, !error, "dist_group is required if target_id is not supplied"); 1532 1513 error = true; 1533 1514 } … … 1539 1520 // optional 1540 1521 PXOPT_LOOKUP_S64(limit, config->args, "-limit", false, false); 1541 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);1522 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 1542 1523 if (state) { 1543 1524 if (strcmp(state, "enabled") && strcmp(state, "disabled")) { … … 1555 1536 PXOPT_COPY_STR(config->args, where, "-dest_name", "rcDestination.name", "=="); 1556 1537 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1557 PXOPT_COPY_STR(config->args, where, "- label", "label", "LIKE");1538 PXOPT_COPY_STR(config->args, where, "-dist_group", "dist_group", "LIKE"); 1558 1539 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1559 1540 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); … … 1658 1639 PXOPT_COPY_S64(config->args, where, "-target_id", "target_id", "=="); 1659 1640 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 1660 PXOPT_COPY_STR(config->args, where, "- label", "label", "LIKE");1641 PXOPT_COPY_STR(config->args, where, "-dist_group", "dist_group", "LIKE"); 1661 1642 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "LIKE"); 1662 1643 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); -
branches/eam_branches/20090820/ippTools/src/disttool.h
r25766 r25870 26 26 DISTTOOL_MODE_NONE = 0x0, 27 27 DISTTOOL_MODE_DEFINEBYQUERY, 28 DISTTOOL_MODE_DEFINERUN,29 28 DISTTOOL_MODE_UPDATERUN, 30 29 DISTTOOL_MODE_REVERTRUN, -
branches/eam_branches/20090820/ippTools/src/disttoolConfig.c
r25766 r25870 50 50 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-no_magic", 0, "magic is not needed", false); 51 51 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_label", 0, "define label for run", NULL); 52 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "select by dist_group", NULL); 52 53 53 54 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-dry_run", 0, "don't queue runs just display what would be selected", false); … … 58 59 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-chip_id", 0, "define chip_id", 0); 59 60 psMetadataAddS64(definebyqueryArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "define chip_id", 0); 60 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", 0, "select by label", NULL); 61 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", 0, "select by run label", NULL); 62 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-dist_group", 0, "select by dist_group", NULL); 61 63 62 64 psMetadataAddU64(definebyqueryArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 63 65 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 64 65 // -definerun66 psMetadata *definerunArgs = psMetadataAlloc();67 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-stage", 0, "define stage for bundle (required)", NULL);68 psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage_id (required)", 0);69 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-outroot", 0, "define output destination (required)", NULL);70 psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id (required)", 0);71 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-clean", 0, "build clean distribution bundle", false);72 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-no_magic", 0, "magic is not needed", false);73 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_label", 0, "define label for run", NULL);74 66 75 67 // -updaterun … … 139 131 psMetadataAddS64(pendingfilesetArgs, PS_LIST_TAIL, "-dist_id", 0, "define dist_id", 0); 140 132 psMetadataAddStr(pendingfilesetArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "limit results to label", NULL); 133 psMetadataAddStr(pendingfilesetArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "limit results to dist_group", NULL); 141 134 psMetadataAddStr(pendingfilesetArgs, PS_LIST_TAIL, "-stage", 0, "limit results to runs for stage", NULL); 142 135 psMetadataAddU64(pendingfilesetArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); … … 219 212 // -definetarget 220 213 psMetadata *definetargetArgs = psMetadataAlloc(); 221 psMetadataAddStr(definetargetArgs, PS_LIST_TAIL, "- label", 0, "define label(required)", NULL);214 psMetadataAddStr(definetargetArgs, PS_LIST_TAIL, "-dist_group", 0, "define dist_group (required)", NULL); 222 215 psMetadataAddStr(definetargetArgs, PS_LIST_TAIL, "-filter", 0, "define filter (required)", NULL); 223 216 psMetadataAddStr(definetargetArgs, PS_LIST_TAIL, "-stage", 0, "define stage (required)", NULL); … … 230 223 psMetadataAddS64(updatetargetArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0); 231 224 psMetadataAddStr(updatetargetArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 232 psMetadataAddStr(updatetargetArgs, PS_LIST_TAIL, "-set_state", 0, "define state", NULL); 233 psMetadataAddStr(updatetargetArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 225 psMetadataAddStr(updatetargetArgs, PS_LIST_TAIL, "-dist_group", 0, "define dist_group", NULL); 234 226 psMetadataAddStr(updatetargetArgs, PS_LIST_TAIL, "-filter", 0, "define filter", NULL); 227 228 psMetadataAddStr(updatetargetArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL); 235 229 236 230 // -listtarget 237 231 psMetadata *listtargetArgs = psMetadataAlloc(); 238 232 psMetadataAddS64(listtargetArgs, PS_LIST_TAIL, "-target_id", 0, "list target with target_id", 0); 239 psMetadataAddStr(listtargetArgs, PS_LIST_TAIL, "- label", 0, "list targets for label", NULL);233 psMetadataAddStr(listtargetArgs, PS_LIST_TAIL, "-dist_group", 0, "list targets for dist_group", NULL); 240 234 psMetadataAddStr(listtargetArgs, PS_LIST_TAIL, "-filter", 0, "define filter", NULL); 241 235 psMetadataAddStr(listtargetArgs, PS_LIST_TAIL, "-stage", 0, "list targets for stage", NULL); … … 252 246 psMetadataAddS64(defineinterestArgs, PS_LIST_TAIL, "-target_id", 0, "define target_id", 0); 253 247 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 254 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "- label", 0, "define label", NULL);248 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-dist_group", 0, "define dist_group", NULL); 255 249 psMetadataAddStr(defineinterestArgs, PS_LIST_TAIL, "-filter", 0, "define filter (LIKE comparison)", NULL); 256 250 psMetadataAddBool(defineinterestArgs, PS_LIST_TAIL,"-clean", 0, "list clean targets", false); … … 271 265 psMetadataAddS64(listinterestsArgs, PS_LIST_TAIL, "-int_id", 0, "list interests with int_id", 0); 272 266 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);267 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-dist_group", 0, "list interests for dist_group (LIKE comparison)", NULL); 274 268 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-filter", 0, "list interests by filter (LIKE comparison)", NULL); 275 269 psMetadataAddStr(listinterestsArgs, PS_LIST_TAIL, "-stage", 0, "list interests for stage", NULL); … … 284 278 285 279 PXOPT_ADD_MODE("-definebyquery", "", DISTTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs); 286 PXOPT_ADD_MODE("-definerun", "", DISTTOOL_MODE_DEFINERUN, definerunArgs);287 280 PXOPT_ADD_MODE("-updaterun", "", DISTTOOL_MODE_UPDATERUN, updaterunArgs); 288 281 PXOPT_ADD_MODE("-revertrun", "", DISTTOOL_MODE_REVERTRUN, revertrunArgs); -
branches/eam_branches/20090820/ippTools/src/faketool.c
r25766 r25870 177 177 PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false); 178 178 PXOPT_LOOKUP_STR(end_stage, config->args, "-set_end_stage", false, false); 179 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 180 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 181 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 179 182 180 183 // default … … 265 268 266 269 // queue the exp 267 if (!pxfakeQueueByCamID(config, cam_id, workdir, label, reduction, expgroup, dvodb, tess_id, end_stage)) {270 if (!pxfakeQueueByCamID(config, cam_id, workdir, label, data_group ? data_group : label, dist_group, reduction, expgroup, dvodb, tess_id, end_stage, note)) { 268 271 if (!psDBRollback(config->dbh)) { 269 272 psError(PS_ERR_UNKNOWN, false, "database error"); … … 330 333 PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "sun_angle", "<"); 331 334 PXOPT_COPY_STR(config->args, where, "-label", "fakeRun.label", "=="); 332 333 if (!psListLength(where->list) 334 && !psMetadataLookupBool(NULL, config->args, "-all")) { 335 PXOPT_COPY_STR(config->args, where, "-data_group", "fakeRun.data_group", "=="); 336 PXOPT_COPY_STR(config->args, where, "-dist_group", "fakeRun.dist_group", "=="); 337 338 if (!psListLength(where->list)) { 335 339 psFree(where); 336 340 where = NULL; … … 339 343 } 340 344 341 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 342 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 343 344 if ((!state) && (!label)) { 345 psError(PXTOOLS_ERR_DATA, false, "parameters are required"); 346 psFree(where); 347 return false; 348 } 349 350 if (state) { 351 // set fakeRun.state to state 352 if (!pxfakeRunSetStateByQuery(config, where, state)) { 353 psFree(where); 354 return false; 355 } 356 } 357 358 if (label) { 359 // set fakeRun.label to label 360 if (!pxfakeRunSetLabelByQuery(config, where, label)) { 361 psFree(where); 362 return false; 363 } 364 } 365 345 psString query = psStringCopy("UPDATE fakeRun JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id)"); 346 347 // pxUpdateRun gets parameters from config->args and updates 348 bool result = pxUpdateRun(config, where, &query, "fakeRun", true); 349 if (!result) { 350 psError(PXTOOLS_ERR_DATA, false, "pxUpdateRun failed"); 351 } 352 353 psFree(query); 366 354 psFree(where); 367 355 368 return true;356 return result; 369 357 } 370 358 … … 1162 1150 fakeRun->workdir, 1163 1151 fakeRun->label, 1152 fakeRun->data_group, 1153 fakeRun->dist_group, 1164 1154 fakeRun->dvodb, 1165 1155 fakeRun->tess_id, 1166 1156 fakeRun->reduction, 1167 fakeRun->end_stage 1157 fakeRun->end_stage, 1158 NULL // note does not propagate 1168 1159 )) { 1169 1160 psError(PS_ERR_UNKNOWN, false, "failed to queue warpRun"); … … 1279 1270 return false; 1280 1271 } 1281 1272 if (!pxExportVersion(config, f)) { 1273 psError(PS_ERR_UNKNOWN, false, "failed to write dbversion output file"); 1274 return false; 1275 } 1282 1276 psMetadata *where = psMetadataAlloc(); 1283 1277 PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "=="); … … 1360 1354 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1361 1355 1362 fprintf (stdout, "---- input ----\n"); 1356 #ifdef notdef 1357 fprintf (stderr, "---- input ----\n"); 1363 1358 psMetadataPrint (stderr, input, 1); 1364 1359 #endif 1360 1361 if (!pxCheckImportVersion(config, input)) { 1362 psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed"); 1363 return false; 1364 } 1365 1365 psMetadataItem *item = psMetadataLookup (input, "fakeRun"); 1366 1366 psAssert (item, "entry not in input?"); -
branches/eam_branches/20090820/ippTools/src/faketoolConfig.c
r25766 r25870 93 93 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_tess_id", 0, "define tessellation identifier", NULL); 94 94 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_end_stage", 0, "define end stage", NULL); 95 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 96 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 97 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 95 98 psMetadataAddBool(queueArgs, PS_LIST_TAIL, "-pretend", 0, "do not actually modify the database", false); 96 99 psMetadataAddBool(queueArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); … … 139 142 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sun_angle_min", 0, "define min solar angle", NAN); 140 143 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sun_angle_max", 0, "define max solar angle", NAN); 144 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL); 141 145 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by label", NULL); 146 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0, "search by data_group", NULL); 147 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-dist_group", 0, "search by data_group", NULL); 142 148 143 149 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 144 150 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 145 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 151 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 152 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 153 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 146 154 147 155 // -pendingexp -
branches/eam_branches/20090820/ippTools/src/flatcorr.c
r24140 r25870 33 33 #include "pxtools.h" 34 34 #include "pxchip.h" 35 #include "pxcam.h" 36 #include "pxadd.h" 35 37 #include "flatcorr.h" 36 38 … … 38 40 static bool definerunMode(pxConfig *config); 39 41 static bool addchipMode(pxConfig *config); 42 static bool dropchipMode(pxConfig *config); 40 43 static bool addcameraMode(pxConfig *config); 41 static bool dropchipMode(pxConfig *config);42 44 static bool dropcameraMode(pxConfig *config); 45 static bool advancecameraMode(pxConfig *config); 46 static bool advanceaddstarMode(pxConfig *config); 43 47 static bool pendingprocessMode(pxConfig *config); 44 48 static bool addprocessMode(pxConfig *config); … … 46 50 static bool inputexpMode(pxConfig *config); 47 51 static bool inputimfileMode(pxConfig *config); 48 static bool exportrunMode(pxConfig *config);49 static bool importrunMode(pxConfig *config);50 52 51 53 static bool setflatcorrRunState(pxConfig *config, psS64 corr_id, const char *state); … … 72 74 MODECASE(FLATCORR_MODE_DEFINERUN, definerunMode); 73 75 MODECASE(FLATCORR_MODE_ADDCHIP, addchipMode); 76 MODECASE(FLATCORR_MODE_DROPCHIP, dropchipMode); 74 77 MODECASE(FLATCORR_MODE_ADDCAMERA, addcameraMode); 75 MODECASE(FLATCORR_MODE_DROPCHIP, dropchipMode);76 78 MODECASE(FLATCORR_MODE_DROPCAMERA, dropcameraMode); 79 MODECASE(FLATCORR_MODE_ADVANCECAMERA, advancecameraMode); 80 MODECASE(FLATCORR_MODE_ADVANCEADDSTAR, advanceaddstarMode); 77 81 MODECASE(FLATCORR_MODE_PENDINGPROCESS, pendingprocessMode); 78 82 MODECASE(FLATCORR_MODE_ADDPROCESS, addprocessMode); … … 80 84 MODECASE(FLATCORR_MODE_INPUTEXP, inputexpMode); 81 85 MODECASE(FLATCORR_MODE_INPUTIMFILE, inputimfileMode); 82 MODECASE(FLATCORR_MODE_EXPORTRUN, exportrunMode);83 MODECASE(FLATCORR_MODE_IMPORTRUN, importrunMode);84 86 default: 85 87 psAbort("invalid option (this should not happen)"); … … 131 133 PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false); 132 134 PXOPT_LOOKUP_STR(region, config->args, "-set_region", false, false); 135 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 133 136 134 137 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); … … 233 236 234 237 // queue the exp : force this to stop at the chip stage 235 psS64 chip_id = pxchipQueueByExpTag(config, exp_id, workdir, label, reduction, expgroup, dvodb, tess_id, "chip");238 psS64 chip_id = pxchipQueueByExpTag(config, exp_id, workdir, label, label, NULL, reduction, expgroup, dvodb, tess_id, "chip", note); 236 239 if (!chip_id) { 237 240 if (!psDBRollback(config->dbh)) { … … 297 300 // start a transaction so we don't end up with an exp without any associted 298 301 // imfiles 299 if (!psDBTransaction(config->dbh)) {300 psError(PS_ERR_UNKNOWN, false, "database error");301 return false;302 }302 // if (!psDBTransaction(config->dbh)) { 303 // psError(PS_ERR_UNKNOWN, false, "database error"); 304 // return false; 305 // } 303 306 304 307 // create a new flatcorrRun … … 333 336 row->corr_id = corr_id; 334 337 338 // if (!psDBCommit(config->dbh)) { 339 // psError(PS_ERR_UNKNOWN, false, "database error"); 340 // return false; 341 // } 342 335 343 flatcorrRunPrintObject (stdout, row, !simple); 336 344 return true; … … 378 386 } 379 387 388 static bool addcameraMode(pxConfig *config) 389 { 390 PS_ASSERT_PTR_NON_NULL(config, false); 391 392 // required 393 PXOPT_LOOKUP_S64(corr_id, config->args, "-corr_id", true, false); 394 PXOPT_LOOKUP_S64(chip_id, config->args, "-chip_id", true, false); 395 PXOPT_LOOKUP_S64(cam_id, config->args, "-cam_id", true, false); 396 397 // add a flatcorrCamLink (initial state has include = TRUE) 398 // XXX should add checks that the chip_id and corr_id are in ChipLink 399 if (!flatcorrCamLinkInsert(config->dbh, corr_id, chip_id, cam_id, 1)) { 400 psError(PS_ERR_UNKNOWN, false, "database error"); 401 return false; 402 } 403 404 return true; 405 } 406 407 static bool dropcameraMode(pxConfig *config) 408 { 409 PS_ASSERT_PTR_NON_NULL(config, false); 410 411 // required 412 PXOPT_LOOKUP_S64(corr_id, config->args, "-corr_id", true, false); 413 PXOPT_LOOKUP_S64(cam_id, config->args, "-cam_id", true, false); 414 415 // UPDATE flatcorrCamLink set include = 0 where corr_id = %lld AND cam_id = %lld 416 psString query = pxDataGet("flatcorr_dropcamera.sql"); 417 if (!query) { 418 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 419 return false; 420 } 421 422 if (!p_psDBRunQueryF(config->dbh, query, (long long) corr_id, (long long) cam_id)) { 423 psError(PS_ERR_UNKNOWN, false, "database error"); 424 psFree(query); 425 return false; 426 } 427 428 return true; 429 } 430 380 431 // select the flatcorr chip runs that have completed and for which there is no camera entry 381 432 // queue a new camera run for them 382 static bool ad dcameraMode(pxConfig *config)433 static bool advancecameraMode(pxConfig *config) 383 434 { 384 435 PS_ASSERT_PTR_NON_NULL(config, false); … … 387 438 PXOPT_LOOKUP_BOOL(limit, config->args, "-limit", false); 388 439 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 440 441 psMetadata *where = psMetadataAlloc(); 442 pxAddLabelSearchArgs (config, where, "-label", "flatcorrRun.label", "=="); 389 443 390 444 psString query = pxDataGet("flatcorr_chiprundone.sql"); … … 393 447 return false; 394 448 } 449 450 if (where && psListLength(where->list)) { 451 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 452 psStringAppend(&query, " AND %s", whereClause); 453 psFree(whereClause); 454 } 455 psFree(where); 395 456 396 457 // treat limit == 0 as "no limit" … … 463 524 row->workdir, 464 525 row->label, 526 row->data_group, 527 row->dist_group, 465 528 row->reduction, 466 529 row->expgroup, 467 530 row->dvodb, 468 531 row->tess_id, 469 "camera")) { 532 "camera", 533 NULL // note does not propragate 534 )) { 470 535 if (!psDBRollback(config->dbh)) { 471 536 psError(PS_ERR_UNKNOWN, false, "database error"); … … 502 567 } 503 568 504 static bool dropcameraMode(pxConfig *config) 505 { 506 PS_ASSERT_PTR_NON_NULL(config, false); 507 508 // required 509 PXOPT_LOOKUP_S64(corr_id, config->args, "-corr_id", true, false); 510 PXOPT_LOOKUP_S64(cam_id, config->args, "-cam_id", true, false); 511 512 // UPDATE flatcorrCamLink set include = 0 where corr_id = %lld AND cam_id = %lld 513 psString query = pxDataGet("flatcorr_dropcamera.sql"); 514 if (!query) { 515 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 516 return false; 517 } 518 519 if (!p_psDBRunQueryF(config->dbh, query, (long long) corr_id, (long long) cam_id)) { 520 psError(PS_ERR_UNKNOWN, false, "database error"); 521 psFree(query); 522 return false; 523 } 524 525 return true; 526 } 527 528 // select the flatcorr chip runs that have completed and for which there is no camera entry 529 // queue a new camera run for them 530 static bool pendingprocessMode(pxConfig *config) 569 // Select the flatcorr camera runs that have completed and for which there is no addstar 570 // entry. Queue a new addstar run for them 571 static bool advanceaddstarMode(pxConfig *config) 531 572 { 532 573 PS_ASSERT_PTR_NON_NULL(config, false); … … 534 575 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 535 576 PXOPT_LOOKUP_BOOL(limit, config->args, "-limit", false); 577 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 536 578 537 579 psMetadata *where = psMetadataAlloc(); 538 pxAddLabelSearchArgs (config, where, "-label", " label", "==");539 540 psString query = pxDataGet("flatcorr_ pendingprocess.sql");580 pxAddLabelSearchArgs (config, where, "-label", "flatcorrRun.label", "=="); 581 582 psString query = pxDataGet("flatcorr_camerarundone.sql"); 541 583 if (!query) { 542 584 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); … … 575 617 } 576 618 619 if (pretend) { 620 // negative simple so the default is true 621 if (!ippdbPrintMetadatas(stdout, output, "flatcorr_addcamera", !simple)) { 622 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 623 psFree(output); 624 return false; 625 } 626 } 627 628 // start a transaction so we don't end up with an exp without any associted 629 // imfiles 630 if (!psDBTransaction(config->dbh)) { 631 psError(PS_ERR_UNKNOWN, false, "database error"); 632 psFree(output); 633 return false; 634 } 635 636 // loop over our list of chipRun rows 637 for (long i = 0; i < psArrayLength(output); i++) { 638 psMetadata *md = output->data[i]; 639 640 bool status; 641 psS64 corr_id = psMetadataLookupS64(&status, md, "corr_id"); 642 if (!status) { 643 if (!psDBRollback(config->dbh)) { 644 psError(PS_ERR_UNKNOWN, false, "database error"); 645 } 646 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for corr_id"); 647 psFree(output); 648 return false; 649 } 650 651 camRunRow *row = camRunObjectFromMetadata(md); 652 if (!row) { 653 psError(PS_ERR_UNKNOWN, false, "failed to convert metadata into chipRun"); 654 psFree(output); 655 return false; 656 } 657 658 // queue the exp : force image_only to be false (flatcorr is meaningless with just image info) 659 if (!pxaddQueueByCamID( 660 config, 661 row->cam_id, 662 row->workdir, 663 row->reduction, 664 row->label, 665 row->data_group, 666 row->dvodb, 667 NULL, // note is not propagated 668 0)) { 669 if (!psDBRollback(config->dbh)) { 670 psError(PS_ERR_UNKNOWN, false, "database error"); 671 } 672 psError(PS_ERR_UNKNOWN, false, 673 "failed to trying to queue cam_id: %" PRId64, row->cam_id); 674 psFree(row); 675 psFree(output); 676 return false; 677 } 678 679 // figure out the ID of the flatcorrRun we just created 680 psS64 add_id = psDBLastInsertID(config->dbh); 681 682 // add the addRun entry to the flatcorrAddstarLink table (include is TRUE) 683 if (!flatcorrAddstarLinkInsert(config->dbh, corr_id, row->cam_id, add_id, 1)) { 684 if (!psDBRollback(config->dbh)) { 685 psError(PS_ERR_UNKNOWN, false, "database error"); 686 } 687 psError(PS_ERR_UNKNOWN, false, "database error"); 688 return false; 689 } 690 psFree(row); 691 } 692 psFree(output); 693 694 if (!psDBCommit(config->dbh)) { 695 psError(PS_ERR_UNKNOWN, false, "database error"); 696 return false; 697 } 698 699 return false; 700 } 701 702 // select the flatcorr chip runs that have completed and for which there is no camera entry 703 // queue a new camera run for them 704 static bool pendingprocessMode(pxConfig *config) 705 { 706 PS_ASSERT_PTR_NON_NULL(config, false); 707 708 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 709 PXOPT_LOOKUP_BOOL(limit, config->args, "-limit", false); 710 711 psMetadata *where = psMetadataAlloc(); 712 pxAddLabelSearchArgs (config, where, "-label", "label", "=="); 713 714 psString query = pxDataGet("flatcorr_pendingprocess.sql"); 715 if (!query) { 716 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 717 return false; 718 } 719 720 if (where && psListLength(where->list)) { 721 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 722 psStringAppend(&query, " AND %s", whereClause); 723 psFree(whereClause); 724 } 725 psFree(where); 726 727 // treat limit == 0 as "no limit" 728 if (limit) { 729 psString limitString = psDBGenerateLimitSQL(limit); 730 psStringAppend(&query, " %s", limitString); 731 psFree(limitString); 732 } 733 734 if (!p_psDBRunQuery(config->dbh, query)) { 735 psError(PS_ERR_UNKNOWN, false, "database error"); 736 psFree(query); 737 return false; 738 } 739 740 psArray *output = p_psDBFetchResult(config->dbh); 741 if (!output) { 742 psError(PS_ERR_UNKNOWN, false, "database error"); 743 return false; 744 } 745 if (!psArrayLength(output)) { 746 psTrace("flatcorr", PS_LOG_INFO, "no rows found"); 747 psFree(output); 748 return true; 749 } 750 577 751 if (!ippdbPrintMetadatas(stdout, output, "flatcorrPending", !simple)) { 578 752 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 579 753 psFree(output); 580 754 return false; 755 } 756 757 return true; 758 } 759 760 // XXX need a fault state 761 static bool addprocessMode(pxConfig *config) 762 { 763 PS_ASSERT_PTR_NON_NULL(config, false); 764 765 PXOPT_LOOKUP_S64(corr_id, config->args, "-corr_id", true, false); 766 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 767 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 768 769 char *query = "UPDATE flatcorrRun SET state = 'full', hostname = '%s', fault = '%hd' WHERE corr_id = %" PRId64; 770 771 if (!p_psDBRunQueryF(config->dbh, query, hostname, code, corr_id)) { 772 psError(PS_ERR_UNKNOWN, false, "failed to change state for corr_id %" PRId64, corr_id); 773 return false; 774 } 775 776 return true; 777 } 778 779 static bool updaterunMode(pxConfig *config) 780 { 781 PS_ASSERT_PTR_NON_NULL(config, false); 782 783 PXOPT_LOOKUP_S64(corr_id, config->args, "-corr_id", true, false); 784 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 785 786 if (!setflatcorrRunState(config, corr_id, state)) { 787 if (!psDBRollback(config->dbh)) { 788 psError(PS_ERR_UNKNOWN, false, "database error"); 789 } 790 psError(PS_ERR_UNKNOWN, false, "failed to set run state"); 791 return false; 581 792 } 582 793 … … 688 899 } 689 900 690 // XXX need a fault state691 static bool addprocessMode(pxConfig *config)692 {693 PS_ASSERT_PTR_NON_NULL(config, false);694 695 PXOPT_LOOKUP_S64(corr_id, config->args, "-corr_id", true, false);696 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false);697 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);698 699 char *query = "UPDATE flatcorrRun SET state = 'full', hostname = '%s', fault = '%hd' WHERE corr_id = %" PRId64;700 701 if (!p_psDBRunQueryF(config->dbh, query, hostname, code, corr_id)) {702 psError(PS_ERR_UNKNOWN, false, "failed to change state for corr_id %" PRId64, corr_id);703 return false;704 }705 706 return true;707 }708 709 static bool updaterunMode(pxConfig *config)710 {711 PS_ASSERT_PTR_NON_NULL(config, false);712 713 PXOPT_LOOKUP_S64(corr_id, config->args, "-corr_id", true, false);714 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false);715 716 if (!setflatcorrRunState(config, corr_id, state)) {717 if (!psDBRollback(config->dbh)) {718 psError(PS_ERR_UNKNOWN, false, "database error");719 }720 psError(PS_ERR_UNKNOWN, false, "failed to set run state");721 return false;722 }723 724 return true;725 }726 727 901 static bool setflatcorrRunState(pxConfig *config, psS64 corr_id, const char *state) 728 902 { … … 748 922 return true; 749 923 } 750 751 bool exportrunMode(pxConfig *config)752 {753 typedef struct ExportTable {754 char tableName[80];755 char sqlFilename[80];756 } ExportTable;757 758 int numExportTables = 3;759 760 PS_ASSERT_PTR_NON_NULL(config, NULL);761 762 PXOPT_LOOKUP_S64(det_id, config->args, "-corr_id", true, false);763 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false);764 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);765 766 FILE *f = fopen (outfile, "w");767 if (f == NULL) {768 psError(PS_ERR_UNKNOWN, false, "failed to open output file");769 return false;770 }771 772 psMetadata *where = psMetadataAlloc();773 PXOPT_COPY_S64(config->args, where, "-corr_id", "corr_id", "==");774 775 ExportTable tables [] = {776 {"flatcorrRun", "flatcorr_export_run.sql"},777 {"flatcorrCamLink", "flatcorr_export_cam_link.sql"},778 {"flatcorrChipLink", "flatcorr_export_chip_link.sql"},779 };780 781 for (int i=0; i < numExportTables; i++) {782 psString query = pxDataGet(tables[i].sqlFilename);783 if (!query) {784 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");785 return false;786 }787 788 if (where && psListLength(where->list)) {789 psString whereClause = psDBGenerateWhereSQL(where, NULL);790 psStringAppend(&query, " %s", whereClause);791 psFree(whereClause);792 }793 794 // treat limit == 0 as "no limit"795 if (limit) {796 psString limitString = psDBGenerateLimitSQL(limit);797 psStringAppend(&query, " %s", limitString);798 psFree(limitString);799 }800 801 if (!p_psDBRunQuery(config->dbh, query)) {802 psError(PS_ERR_UNKNOWN, false, "database error");803 psFree(query);804 return false;805 }806 psFree(query);807 808 psArray *output = p_psDBFetchResult(config->dbh);809 if (!output) {810 psError(PS_ERR_UNKNOWN, false, "database error");811 return false;812 }813 if (!psArrayLength(output)) {814 psTrace("regtool", PS_LOG_INFO, "no rows found");815 psFree(output);816 return true;817 }818 819 // we must write the export table in non-simple (true) format820 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) {821 psError(PS_ERR_UNKNOWN, false, "failed to print array");822 psFree(output);823 return false;824 }825 psFree(output);826 }827 828 fclose (f);829 830 return true;831 }832 833 bool importrunMode(pxConfig *config)834 {835 unsigned int nFail;836 psMetadataItem *item, *entry;837 838 int numImportTables = 3;839 840 char tables[3] [80] = {"flatcorrRun", "flatcorrCamLink", "flatcorrChipLink"};841 842 PS_ASSERT_PTR_NON_NULL(config, NULL);843 844 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false);845 846 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false);847 848 fprintf (stdout, "---- input ----\n");849 psMetadataPrint (stderr, input, 1);850 851 for (int i = 0; i < numImportTables; i++) {852 item = psMetadataLookup (input, tables[i]);853 psAssert (item, "entry not in input?");854 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?");855 856 entry = psListGet (item->data.list, 0);857 assert (entry);858 assert (entry->type == PS_DATA_METADATA);859 860 switch (i) {861 case 0:862 {863 flatcorrRunRow *flatcorrRun = flatcorrRunObjectFromMetadata (entry->data.md);864 flatcorrRunInsertObject (config->dbh, flatcorrRun);865 866 // fprintf (stdout, "---- flatcorr run ----\n");867 // psMetadataPrint (stderr, entry->data.md, 1);868 break;869 }870 case 1:871 {872 flatcorrCamLinkRow *flatcorrCamLink = flatcorrCamLinkObjectFromMetadata (entry->data.md);873 flatcorrCamLinkInsertObject (config->dbh, flatcorrCamLink);874 875 // fprintf (stdout, "---- flatcorr cam link ----\n");876 // psMetadataPrint (stderr, entry->data.md, 1);877 break;878 }879 case 2:880 {881 flatcorrChipLinkRow *flatcorrChipLink = flatcorrChipLinkObjectFromMetadata (entry->data.md);882 flatcorrChipLinkInsertObject (config->dbh, flatcorrChipLink);883 884 // fprintf (stdout, "---- flatcorr chip link ----\n");885 // psMetadataPrint (stderr, entry->data.md, 1);886 break;887 }888 }889 }890 return true;891 } -
branches/eam_branches/20090820/ippTools/src/flatcorr.h
r23310 r25870 28 28 FLATCORR_MODE_DEFINERUN, 29 29 FLATCORR_MODE_ADDCHIP, 30 FLATCORR_MODE_DROPCHIP, 30 31 FLATCORR_MODE_ADDCAMERA, 31 FLATCORR_MODE_DROPCHIP,32 32 FLATCORR_MODE_DROPCAMERA, 33 FLATCORR_MODE_ADVANCECAMERA, 34 FLATCORR_MODE_ADVANCEADDSTAR, 33 35 FLATCORR_MODE_PENDINGPROCESS, 34 36 FLATCORR_MODE_ADDPROCESS, … … 36 38 FLATCORR_MODE_INPUTEXP, 37 39 FLATCORR_MODE_INPUTIMFILE, 38 FLATCORR_MODE_EXPORTRUN,39 FLATCORR_MODE_IMPORTRUN40 40 } flatcorrMode; 41 41 -
branches/eam_branches/20090820/ippTools/src/flatcorrConfig.c
r24140 r25870 65 65 // -definerun 66 66 psMetadata *definerunArgs = psMetadataAlloc(); 67 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-inst", 0, "define camera", NULL); 68 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope", NULL); 67 69 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-det_type", 0, "define detrend type to be generated", NULL); 68 70 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir", NULL); … … 88 90 // -addcamera 89 91 psMetadata *addcameraArgs = psMetadataAlloc(); 90 psMetadataAdd U64 (addcameraArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);91 psMetadataAdd Bool(addcameraArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);92 psMetadataAdd Bool(addcameraArgs, PS_LIST_TAIL, "-pretend", 0, "use the simple output format", false);92 psMetadataAddS64(addcameraArgs, PS_LIST_TAIL, "-corr_id", 0, "define Flat Correction ID (required)", 0); 93 psMetadataAddS64(addcameraArgs, PS_LIST_TAIL, "-chip_id", 0, "define Chip ID (required)", 0); 94 psMetadataAddS64(addcameraArgs, PS_LIST_TAIL, "-cam_id", 0, "define Camera ID (required)", 0); 93 95 94 96 // -dropcamera … … 96 98 psMetadataAddS64(dropcameraArgs, PS_LIST_TAIL, "-corr_id", 0, "define Flat Correction ID (required)", 0); 97 99 psMetadataAddS64(dropcameraArgs, PS_LIST_TAIL, "-cam_id", 0, "define Camera ID (required)", 0); 100 101 // -advancecamera 102 psMetadata *advancecameraArgs = psMetadataAlloc(); 103 psMetadataAddU64 (advancecameraArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 104 psMetadataAddBool(advancecameraArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 105 psMetadataAddBool(advancecameraArgs, PS_LIST_TAIL, "-pretend", 0, "use the simple output format", false); 106 psMetadataAddStr(advancecameraArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", NULL); 107 108 // -advanceaddstar 109 psMetadata *advanceaddstarArgs = psMetadataAlloc(); 110 psMetadataAddU64 (advanceaddstarArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 111 psMetadataAddBool(advanceaddstarArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 112 psMetadataAddBool(advanceaddstarArgs, PS_LIST_TAIL, "-pretend", 0, "use the simple output format", false); 113 psMetadataAddStr(advanceaddstarArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by label", NULL); 98 114 99 115 // -pendingprocess … … 142 158 psMetadata *modes = psMetadataAlloc(); 143 159 144 PXOPT_ADD_MODE("-definebyquery", "create a new, populated flat correction run", FLATCORR_MODE_DEFINEBYQUERY, definebyqueryArgs);145 PXOPT_ADD_MODE("-definerun", "create a new, empty flat correction run", FLATCORR_MODE_DEFINERUN, definerunArgs);146 PXOPT_ADD_MODE("-addchip", "add a chip to a flat correction run",FLATCORR_MODE_ADDCHIP, addchipArgs);147 PXOPT_ADD_MODE("-addcamera", " migrate completed chips to camera stage analysis",FLATCORR_MODE_ADDCAMERA, addcameraArgs);148 PXOPT_ADD_MODE("- dropchip", "drop a chip from a flat correction run", FLATCORR_MODE_DROPCHIP, dropchipArgs);149 PXOPT_ADD_MODE("- dropcamera", "drop an exposure (camera stage analysis)", FLATCORR_MODE_DROPCAMERA, dropcameraArgs);150 PXOPT_ADD_MODE("- pendingprocess", "show flat correction runs needing to be processed", FLATCORR_MODE_PENDINGPROCESS, pendingprocessArgs);151 PXOPT_ADD_MODE("- addprocess", "report completed flat correction analysis", FLATCORR_MODE_ADDPROCESS, addprocessArgs);152 PXOPT_ADD_MODE("- updaterun", "change a flat calibration run's state", FLATCORR_MODE_UPDATERUN, updaterunArgs);153 PXOPT_ADD_MODE("- inputexp", "list exposures for a correction run", FLATCORR_MODE_INPUTEXP, inputexpArgs);154 PXOPT_ADD_MODE("- inputimfile", "list imfiles for a chip run", FLATCORR_MODE_INPUTIMFILE, inputimfileArgs);155 PXOPT_ADD_MODE("- exportrun", "export run for import on other database", FLATCORR_MODE_EXPORTRUN, exportrunArgs);156 PXOPT_ADD_MODE("-i mportrun", "import run from metadata file", FLATCORR_MODE_IMPORTRUN, importrunArgs);160 PXOPT_ADD_MODE("-definebyquery", "create a new, populated flat correction run", FLATCORR_MODE_DEFINEBYQUERY, definebyqueryArgs); 161 PXOPT_ADD_MODE("-definerun", "create a new, empty flat correction run", FLATCORR_MODE_DEFINERUN, definerunArgs); 162 PXOPT_ADD_MODE("-addchip", "add an existing chip run to a flat correction run", FLATCORR_MODE_ADDCHIP, addchipArgs); 163 PXOPT_ADD_MODE("-addcamera", "add an existing camera run to a flat correction run", FLATCORR_MODE_ADDCAMERA, addcameraArgs); 164 PXOPT_ADD_MODE("-advancecamera", "migrate completed chips to camera stage analysis", FLATCORR_MODE_ADVANCECAMERA, advancecameraArgs); 165 PXOPT_ADD_MODE("-advanceaddstar", "migrate completed exposures to addstar processing", FLATCORR_MODE_ADVANCEADDSTAR, advanceaddstarArgs); 166 PXOPT_ADD_MODE("-dropchip", "drop a chip from a flat correction run", FLATCORR_MODE_DROPCHIP, dropchipArgs); 167 PXOPT_ADD_MODE("-dropcamera", "drop an exposure (camera stage analysis)", FLATCORR_MODE_DROPCAMERA, dropcameraArgs); 168 PXOPT_ADD_MODE("-pendingprocess", "show flat correction runs needing to be processed", FLATCORR_MODE_PENDINGPROCESS, pendingprocessArgs); 169 PXOPT_ADD_MODE("-addprocess", "report completed flat correction analysis", FLATCORR_MODE_ADDPROCESS, addprocessArgs); 170 PXOPT_ADD_MODE("-updaterun", "change a flat calibration run's state", FLATCORR_MODE_UPDATERUN, updaterunArgs); 171 PXOPT_ADD_MODE("-inputexp", "list exposures for a correction run", FLATCORR_MODE_INPUTEXP, inputexpArgs); 172 PXOPT_ADD_MODE("-inputimfile", "list imfiles for a chip run", FLATCORR_MODE_INPUTIMFILE, inputimfileArgs); 157 173 158 174 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
branches/eam_branches/20090820/ippTools/src/magicdstool.c
r25766 r25870 33 33 34 34 static bool definebyqueryMode(pxConfig *config); 35 static psS64 definerunMode(pxConfig *config);36 35 static bool updaterunMode(pxConfig *config); 37 36 static bool todestreakMode(pxConfig *config); … … 43 42 static bool torevertMode(pxConfig *config); 44 43 static bool completedrevertMode(pxConfig *config); 45 46 static bool setmagicDSRunState(pxConfig *config, psS64 magic_id, const char *state); 47 static bool magicDSGetIDs(pxConfig *config, psString stage, psS64 magic_id, psS64 *stage_id, psS64 *cam_id);44 static bool tocleanupMode(pxConfig *config); 45 46 static bool setmagicDSRunState(pxConfig *config, psS64 magic_id, psMetadata *where, const char *state); 48 47 49 48 # define MODECASE(caseName, func) \ … … 66 65 switch (config->mode) { 67 66 MODECASE(MAGICDSTOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 68 MODECASE(MAGICDSTOOL_MODE_DEFINERUN, definerunMode);69 67 MODECASE(MAGICDSTOOL_MODE_UPDATERUN, updaterunMode); 70 68 MODECASE(MAGICDSTOOL_MODE_TODESTREAK, todestreakMode); … … 76 74 MODECASE(MAGICDSTOOL_MODE_TOREVERT, torevertMode); 77 75 MODECASE(MAGICDSTOOL_MODE_COMPLETEDREVERT, completedrevertMode); 76 MODECASE(MAGICDSTOOL_MODE_TOCLEANUP, tocleanupMode); 78 77 default: 79 78 psAbort("invalid option (this should not happen)"); … … 108 107 PXOPT_LOOKUP_BOOL(noreplace, config->args, "-noreplace", false); 109 108 PXOPT_LOOKUP_STR(set_label, config->args, "-set_label", false, false); 109 PXOPT_LOOKUP_STR(set_data_group, config->args, "-set_data_group", false, false); 110 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 110 111 PXOPT_LOOKUP_BOOL(rerun, config->args, "-rerun", false); 111 112 PXOPT_LOOKUP_BOOL(dry_run, config->args, "-dry_run", false); … … 246 247 psS64 cam_id = psMetadataLookupS64(NULL, row, "cam_id"); 247 248 psString magicRunLabel = psMetadataLookupStr(NULL, row, "label"); 249 psString magicRunDataGroup = psMetadataLookupStr(NULL, row, "data_group"); 248 250 psString magicRunWorkdir = psMetadataLookupStr(NULL, row, "workdir"); 249 251 … … 267 269 cam_id, 268 270 set_label ? set_label : magicRunLabel, 271 set_data_group ? set_data_group : magicRunDataGroup, 269 272 outroot, 270 273 recoveryroot, 271 274 noreplace ? 0 :1, // re_place 272 0); // remove 275 0, // remove 276 0, // fault 277 note); // remove 273 278 274 279 psFree(outroot); … … 313 318 } 314 319 315 static psS64 definerunMode(pxConfig *config) 320 321 static bool updaterunMode(pxConfig *config) 316 322 { 317 323 PS_ASSERT_PTR_NON_NULL(config, false); 318 324 319 325 // required 320 PXOPT_LOOKUP_S64(magic_id, config->args, "-magic_id", true, false); 321 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false); 322 PXOPT_LOOKUP_STR(outroot, config->args, "-outroot", true, false); 323 324 // optional 325 PXOPT_LOOKUP_STR(recoveryroot, config->args, "-recoveryroot", false, false); 326 PXOPT_LOOKUP_BOOL(re_place, config->args, "-replace", false); 327 PXOPT_LOOKUP_BOOL(remove, config->args, "-remove", false); 328 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 329 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 330 331 psS64 stage_id = 0, cam_id = 0; 332 333 if (!magicDSGetIDs(config, stage, magic_id, &stage_id, &cam_id)) { 334 psError(PS_ERR_UNKNOWN, false, "failed to get ids"); 335 return false; 336 } 337 338 magicDSRunRow *run = magicDSRunRowAlloc( 339 0, // ID 340 magic_id, 341 0, // inv_magic_id 342 "new", // state 343 stage, 344 stage_id, 345 cam_id, 346 label, 347 outroot, 348 recoveryroot, 349 re_place, 350 remove 351 ); 352 353 if (!run) { 354 psError(PS_ERR_UNKNOWN, false, "failed to alloc magicRun object"); 355 return false; 356 } 357 if (!magicDSRunInsertObject(config->dbh, run)) { 358 psError(PS_ERR_UNKNOWN, false, "database error"); 359 psFree(run); 360 return false; 361 } 362 363 psS64 magic_ds_id = psDBLastInsertID(config->dbh); 364 run->magic_ds_id = magic_ds_id; 365 366 if (!magicDSRunPrintObject(stdout, run, !simple)) { 367 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 368 psFree(run); 369 return false; 370 } 371 372 psFree(run); 373 374 return magic_id; 375 } 376 377 378 static bool updaterunMode(pxConfig *config) 379 { 380 PS_ASSERT_PTR_NON_NULL(config, false); 381 382 // required 383 PXOPT_LOOKUP_S64(magic_ds_id, config->args, "-magic_ds_id", true, false); 384 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 385 386 if (state) { 387 // set detRun.state to state 388 return setmagicDSRunState(config, magic_ds_id, state); 389 } 390 391 return true; 326 PXOPT_LOOKUP_STR(state, config->args, "-set_state", true, false); 327 328 PXOPT_LOOKUP_S64(magic_ds_id, config->args, "-magic_ds_id", false, false); 329 if (magic_ds_id) { 330 331 return setmagicDSRunState(config, magic_ds_id, NULL, state); 332 333 } else if (!strcmp(state, "full")) { 334 psError(PS_ERR_UNKNOWN, true, "magic_ds_id is required to update run state to full"); 335 return false; 336 } 337 // we can transition by query as well 338 339 psMetadata *where = psMetadataAlloc(); 340 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 341 PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "=="); 342 PXOPT_COPY_STR(config->args, where, "-stage", "stage", "=="); 343 344 345 if (psListLength(where->list) < 2) { 346 psError(PS_ERR_UNKNOWN, true, "at least 2 search arguments are required"); 347 return false; 348 } 349 350 351 PXOPT_LOOKUP_BOOL(noreplace, config->args, "-noreplace", false); 352 if (!noreplace) { 353 psMetadataAddS32(where, PS_LIST_TAIL, "re_place", 0, ">", 0); 354 } 355 bool result = setmagicDSRunState(config, magic_ds_id, where, state); 356 psFree(where); 357 358 return result; 392 359 } 393 360 … … 670 637 } 671 638 672 static bool magicDSGetIDs(pxConfig *config, psString stage, psS64 magic_id, psS64 *stage_id, psS64 *cam_id)673 {674 PS_ASSERT_PTR_NON_NULL(config, false);675 PS_ASSERT_PTR_NON_NULL(stage, false);676 PS_ASSERT_PTR_NON_NULL(stage_id, false);677 PS_ASSERT_PTR_NON_NULL(cam_id, false);678 679 int stageNum = ippStringToStage(stage);;680 if (stageNum == IPP_STAGE_NONE) {681 psError(PXTOOLS_ERR_DATA, false, "%s is not a valid value for stage", stage);682 return false;683 }684 685 psString query = pxDataGet("magicdstool_getrunids.sql");686 if (!query) {687 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");688 return false;689 }690 691 if (!p_psDBRunQueryF(config->dbh, query, magic_id)) {692 psError(PS_ERR_UNKNOWN, false, "database error");693 psFree(query);694 return false;695 }696 psFree(query);697 698 psArray *output = p_psDBFetchResult(config->dbh);699 if (!output) {700 psError(PS_ERR_UNKNOWN, false, "database error");701 return false;702 }703 if (!psArrayLength(output)) {704 psTrace("magicdstool", PS_LOG_INFO, "no rows found");705 psFree(output);706 return true;707 }708 if (psArrayLength(output) > 1) {709 psError(PS_ERR_UNKNOWN, true, "unexpected number of rows found %ld for magic_id %" PRId64,710 psArrayLength(output), magic_id);711 return false;712 }713 psMetadata *row = output->data[0];714 715 *cam_id = psMetadataLookupS64(NULL, row, "cam_id");716 switch (stageNum) {717 case IPP_STAGE_RAW:718 *stage_id = psMetadataLookupS64(NULL, row, "exp_id");719 break;720 case IPP_STAGE_CHIP:721 *stage_id = psMetadataLookupS64(NULL, row, "chip_id");722 break;723 case IPP_STAGE_CAMERA:724 *stage_id = *cam_id;725 return true;726 case IPP_STAGE_WARP:727 *stage_id = psMetadataLookupS64(NULL, row, "warp_id");728 break;729 case IPP_STAGE_DIFF:730 *stage_id = psMetadataLookupS64(NULL, row, "diff_id");731 break;732 }733 734 return true;735 }736 639 737 640 static bool advancerunMode(pxConfig *config) … … 796 699 797 700 // set magicDSRun.state to 'full' 798 if (!setmagicDSRunState(config, magic_ds_id, "full")) {701 if (!setmagicDSRunState(config, magic_ds_id, NULL, "full")) { 799 702 psError(PS_ERR_UNKNOWN, false, "failed to change magicDSRun.state for magic_ds_id: %" PRId64, 800 703 magic_ds_id); … … 994 897 } 995 898 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 899 static bool validDSRunState(const char *state) 900 { 1001 901 if (!((strcmp(state, "new") == 0) || 1002 902 (strcmp(state, "full") == 0) || 1003 903 (strcmp(state, "restored") == 0) || 1004 904 (strcmp(state, "censored") == 0) || 1005 (strcmp(state, " purged") == 0) ||905 (strcmp(state, "cleaned") == 0) || 1006 906 (strcmp(state, "goto_restored") == 0) || 1007 907 (strcmp(state, "goto_censored") == 0) || 1008 (strcmp(state, "goto_ purged") == 0))908 (strcmp(state, "goto_cleaned") == 0)) 1009 909 ) { 910 return false; 911 } else { 912 return true; 913 } 914 } 915 916 static bool setmagicDSRunState(pxConfig *config, psS64 magic_ds_id, psMetadata *where, const char *state) 917 { 918 PS_ASSERT_PTR_NON_NULL(state, false); 919 920 if (!validDSRunState(state)) { 1010 921 psError(PS_ERR_UNKNOWN, false, 1011 922 "invalid magicDSRun state: %s", state); … … 1013 924 } 1014 925 1015 char *query = "UPDATE magicDSRun SET state = '%s' WHERE magic_ds_id = %" PRId64; 1016 if (!p_psDBRunQueryF(config->dbh, query, state, magic_ds_id)) { 926 psString query = psStringCopy("UPDATE magicDSRun SET state = '%s'"); 927 if (magic_ds_id) { 928 psStringAppend(&query, " WHERE magic_ds_id = %" PRId64, magic_ds_id); 929 } else if (where && psListLength(where->list)) { 930 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 931 psStringAppend(&query, " WHERE %s", whereClause); 932 psFree(whereClause); 933 } else { 934 psError(PS_ERR_UNKNOWN, true, "search arugments are required"); 935 return false; 936 } 937 938 if (!p_psDBRunQueryF(config->dbh, query, state)) { 1017 939 psError(PS_ERR_UNKNOWN, false, 1018 940 "failed to change state for magic_id %" PRId64, magic_ds_id); … … 1178 1100 1179 1101 1102 static bool tocleanupMode(pxConfig *config) 1103 { 1104 PS_ASSERT_PTR_NON_NULL(config, false); 1105 1106 psMetadata *where = psMetadataAlloc(); 1107 1108 PXOPT_COPY_S64(config->args, where, "-stage", "stage", "=="); 1109 PXOPT_COPY_S64(config->args, where, "-magic_ds_id", "magic_ds_id", "=="); 1110 PXOPT_COPY_S64(config->args, where, "-magic_id", "magic_id", "=="); 1111 pxAddLabelSearchArgs (config, where, "-label", "magicDSRun.label", "=="); 1112 1113 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1114 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1115 1116 psString query = pxDataGet("magicdstool_tocleanup.sql"); 1117 if (!query) { 1118 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1119 return false; 1120 } 1121 1122 if (psListLength(where->list)) { 1123 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1124 psStringAppend(&query, " AND %s", whereClause); 1125 psFree(whereClause); 1126 } 1127 psFree(where); 1128 1129 // treat limit == 0 as "no limit" 1130 if (limit) { 1131 psString limitString = psDBGenerateLimitSQL(limit); 1132 psStringAppend(&query, " %s", limitString); 1133 psFree(limitString); 1134 } 1135 1136 if (!p_psDBRunQuery(config->dbh, query)) { 1137 psError(PS_ERR_UNKNOWN, false, "database error"); 1138 psFree(query); 1139 return false; 1140 } 1141 psFree(query); 1142 1143 psArray *output = p_psDBFetchResult(config->dbh); 1144 if (!output) { 1145 psErrorCode err = psErrorCodeLast(); 1146 switch (err) { 1147 case PS_ERR_DB_CLIENT: 1148 psError(PXTOOLS_ERR_SYS, false, "database error"); 1149 case PS_ERR_DB_SERVER: 1150 psError(PXTOOLS_ERR_PROG, false, "database error"); 1151 default: 1152 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1153 } 1154 1155 return false; 1156 } 1157 if (!psArrayLength(output)) { 1158 psTrace("magicdstool", PS_LOG_INFO, "no rows found"); 1159 psFree(output); 1160 return true; 1161 } 1162 1163 if (psArrayLength(output)) { 1164 // negative simple so the default is true 1165 if (!ippdbPrintMetadatas(stdout, output, "tocleanup", !simple)) { 1166 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1167 psFree(output); 1168 return false; 1169 } 1170 } 1171 1172 psFree(output); 1173 1174 return true; 1175 } -
branches/eam_branches/20090820/ippTools/src/magicdstool.h
r25766 r25870 26 26 MAGICDSTOOL_MODE_NONE = 0x0, 27 27 MAGICDSTOOL_MODE_DEFINEBYQUERY, 28 MAGICDSTOOL_MODE_DEFINERUN,29 28 MAGICDSTOOL_MODE_UPDATERUN, 30 29 MAGICDSTOOL_MODE_TODESTREAK, … … 36 35 MAGICDSTOOL_MODE_TOREVERT, 37 36 MAGICDSTOOL_MODE_COMPLETEDREVERT, 37 MAGICDSTOOL_MODE_TOCLEANUP, 38 38 } MAGICDStoolMode; 39 39 -
branches/eam_branches/20090820/ippTools/src/magicdstoolConfig.c
r25766 r25870 54 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 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data_group", NULL); 57 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 56 58 57 59 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by magicRun.label", NULL); … … 69 71 psMetadataAddU64(definebyqueryArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 70 72 71 // -definerun72 psMetadata *definerunArgs = psMetadataAlloc();73 psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-magic_id", 0, "define magic_id (required)", 0);74 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-stage", 0, "define stage for run (required)", NULL);75 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-outroot", 0, "define output directory (required)", NULL);76 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-recoveryroot", 0, "define recovery directory", NULL);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 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL);80 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);81 82 73 // -updaterun 83 74 psMetadata *updaterunArgs = psMetadataAlloc(); 84 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "define magictool ID (required)", 0); 85 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state (required)", NULL); 75 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state (required)", NULL); 76 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "define magictool ID", 0); 77 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-stage", 0, "define stage", NULL); 78 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-stage_id", 0, "define stage_id", 0); 79 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 80 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-noreplace", 0, "only update runs with replace not set", false); 86 81 87 82 // -addinputskyfile … … 153 148 psMetadataAddU64(advancerunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 154 149 150 // -tocleanup 151 psMetadata *tocleanupArgs = psMetadataAlloc(); 152 psMetadataAddS64(tocleanupArgs, PS_LIST_TAIL, "-magic_ds_id", 0, "search by magic Destreak ID", 0); 153 psMetadataAddS64(tocleanupArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magic ID", 0); 154 psMetadataAddStr(tocleanupArgs, PS_LIST_TAIL, "-stage", 0, "define output directory", NULL); 155 psMetadataAddStr(tocleanupArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "define label", NULL); 156 psMetadataAddU64(tocleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 157 psMetadataAddBool(tocleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 155 158 psFree(now); 156 159 … … 160 163 PXOPT_ADD_MODE("-definebyquery", "create magic de-streak runs from magic runs", 161 164 MAGICDSTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs); 162 PXOPT_ADD_MODE("-definerun", "create one magic de-streak run for one magic run",163 MAGICDSTOOL_MODE_DEFINERUN, definerunArgs);164 165 PXOPT_ADD_MODE("-updaterun", "update state of magic de-streak run", 165 166 MAGICDSTOOL_MODE_UPDATERUN, updaterunArgs); … … 181 182 PXOPT_ADD_MODE("-completedrevert", "change state for runs that have finished reverting", 182 183 MAGICDSTOOL_MODE_COMPLETEDREVERT, completedrevertArgs); 184 PXOPT_ADD_MODE("-tocleanup", "destreak runs to clean up", 185 MAGICDSTOOL_MODE_TOCLEANUP, tocleanupArgs); 183 186 184 187 -
branches/eam_branches/20090820/ippTools/src/magictool.c
r25766 r25870 117 117 // Optional 118 118 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 119 PXOPT_LOOKUP_STR(data_group, config->args, "-data_group", false, false); 120 PXOPT_LOOKUP_STR(note, config->args, "-note", false, false); 119 121 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 120 122 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); … … 236 238 237 239 // create a new magicRun for this group 238 magicRunRow *run = magicRunRowAlloc(0, exp_id, diff_id, inverse, "new", workdir, "dirty", label, 239 dvodb, registered, 0); 240 magicRunRow *run = magicRunRowAlloc(0, 241 exp_id, 242 diff_id, 243 inverse, 244 "new", // state 245 workdir, 246 "dirty", // workdir_state 247 label, 248 data_group ? data_group : label, 249 dvodb, 250 registered, 251 0, // fault 252 note); 240 253 if (!run) { 241 254 psAbort("failed to alloc magicRun object"); … … 331 344 "dirty", // workdir_state 332 345 label, 346 NULL, // data_group 333 347 dvodb, 334 348 registered, 335 0 349 0, // fault 350 NULL 336 351 ); 337 352 … … 1449 1464 // Now queue any destreaked files to be re-verted 1450 1465 1451 // note: on failure magicRestoreStage issues the rollback1452 if (! magicRestoreStage(config, "raw", whereClause, "goto_censored")) {1466 // note: on failure pxmagicRestoreStage issues the rollback 1467 if (!pxmagicRestoreStage(config, "raw", whereClause, "goto_censored")) { 1453 1468 psFree(whereClause); 1454 1469 return false; 1455 1470 } 1456 if (! magicRestoreStage(config, "chip", whereClause, "goto_censored")) {1471 if (!pxmagicRestoreStage(config, "chip", whereClause, "goto_censored")) { 1457 1472 psFree(whereClause); 1458 1473 return false; 1459 1474 } 1460 if (! magicRestoreStage(config, "camera", whereClause, "goto_censored")) {1475 if (!pxmagicRestoreStage(config, "camera", whereClause, "goto_censored")) { 1461 1476 psFree(whereClause); 1462 1477 return false; 1463 1478 } 1464 if (! magicRestoreStage(config, "warp", whereClause, "goto_censored")) {1479 if (!pxmagicRestoreStage(config, "warp", whereClause, "goto_censored")) { 1465 1480 psFree(whereClause); 1466 1481 return false; 1467 1482 } 1468 if (! magicRestoreStage(config, "diff", whereClause, "goto_censored")) {1483 if (!pxmagicRestoreStage(config, "diff", whereClause, "goto_censored")) { 1469 1484 psFree(whereClause); 1470 1485 return false; -
branches/eam_branches/20090820/ippTools/src/pstamptool.c
r25766 r25870 48 48 static bool projectMode(pxConfig *config); 49 49 static bool modprojectMode(pxConfig *config); 50 static bool getdependentMode(pxConfig *config); 51 static bool pendingdependentMode(pxConfig *config); 52 static bool updatedependentMode(pxConfig *config); 50 53 51 54 # define MODECASE(caseName, func) \ … … 85 88 MODECASE(PSTAMPTOOL_MODE_MODPROJECT, modprojectMode); 86 89 MODECASE(PSTAMPTOOL_MODE_PROJECT, projectMode); 90 MODECASE(PSTAMPTOOL_MODE_GETDEPENDENT, getdependentMode); 91 MODECASE(PSTAMPTOOL_MODE_PENDINGDEPENDENT, pendingdependentMode); 92 MODECASE(PSTAMPTOOL_MODE_UPDATEDEPENDENT, updatedependentMode); 87 93 default: 88 94 psAbort("invalid option (this should not happen)"); … … 545 551 PXOPT_LOOKUP_S64(exp_id, config->args, "-exp_id", false, false); 546 552 PXOPT_LOOKUP_S64(options, config->args, "-options", false, false); 553 PXOPT_LOOKUP_S64(dep_id, config->args, "-dep_id", false, false); 547 554 548 555 // unless the job is being inserted with stop state require outputBase … … 570 577 exp_id, 571 578 outputBase, 572 options 579 options, 580 dep_id 573 581 )) { 574 582 psError(PS_ERR_UNKNOWN, false, "database error"); … … 896 904 } 897 905 906 static bool getdependentMode(pxConfig *config) 907 { 908 PS_ASSERT_PTR_NON_NULL(config, false); 909 910 PXOPT_LOOKUP_STR(stage, config->args, "-stage", true, false); 911 PXOPT_LOOKUP_S64(stage_id, config->args, "-stage_id", true, false); 912 PXOPT_LOOKUP_STR(imagedb, config->args, "-imagedb", true, false); 913 PXOPT_LOOKUP_STR(rlabel, config->args, "-rlabel", false, false); 914 PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false); 915 PXOPT_LOOKUP_BOOL(no_create, config->args, "-no_create", false); 916 917 psString query = pxDataGet("pstamptool_pendingdependent.sql"); 918 if (!query) { 919 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 920 return false; 921 } 922 if (!p_psDBRunQuery(config->dbh, query)) { 923 psError(PS_ERR_UNKNOWN, false, "database error"); 924 psFree(query); 925 return false; 926 } 927 psFree(query); 928 929 psArray *output = p_psDBFetchResult(config->dbh); 930 if (!output) { 931 psError(PS_ERR_UNKNOWN, false, "database error"); 932 return false; 933 } 934 if (psArrayLength(output)) { 935 psMetadata *dep = output->data[0]; 936 psS64 dep_id = psMetadataLookupS64(NULL, dep, "dep_id"); 937 if (!dep_id) { 938 psError(PS_ERR_UNKNOWN, false, "database error"); 939 return false; 940 } 941 printf("%" PRId64 "\n", dep_id); 942 return true; 943 } 944 if (no_create) { 945 return true; 946 } 947 // no existing dependent that matches, insert one 948 949 if (!pstampDependentInsert( 950 config->dbh, 951 0, // dep_id 952 "new", // state 953 stage, 954 stage_id, 955 imagedb, 956 rlabel, 957 no_magic 958 )) { 959 psError(PS_ERR_UNKNOWN, false, "failed to insert pstampDependent"); 960 return false; 961 } 962 963 psS64 dep_id = psDBLastInsertID(config->dbh); 964 965 printf("%" PRId64 "\n", dep_id); 966 967 return true; 968 } 969 970 static bool pendingdependentMode(pxConfig *config) 971 { 972 PS_ASSERT_PTR_NON_NULL(config, false); 973 974 psMetadata *where = psMetadataAlloc(); 975 976 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 977 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 978 979 psString query = pxDataGet("pstamptool_pendingdependent.sql"); 980 if (!query) { 981 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 982 return false; 983 } 984 985 if (psListLength(where->list)) { 986 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampDependent"); 987 psStringAppend(&query, " AND %s", whereClause); 988 psFree(whereClause); 989 } 990 psFree(where); 991 992 // treat limit == 0 as "no limit" 993 if (limit) { 994 psString limitString = psDBGenerateLimitSQL(limit); 995 psStringAppend(&query, " %s", limitString); 996 psFree(limitString); 997 } 998 999 if (!p_psDBRunQuery(config->dbh, query)) { 1000 psError(PS_ERR_UNKNOWN, false, "database error"); 1001 psFree(query); 1002 return false; 1003 } 1004 psFree(query); 1005 1006 psArray *output = p_psDBFetchResult(config->dbh); 1007 if (!output) { 1008 psError(PS_ERR_UNKNOWN, false, "database error"); 1009 return false; 1010 } 1011 if (!psArrayLength(output)) { 1012 psTrace("pstamptool", PS_LOG_INFO, "no rows found"); 1013 psFree(output); 1014 return true; 1015 } 1016 1017 // negative simple so the default is true 1018 if (!ippdbPrintMetadatas(stdout, output, "pstampDependent", !simple)) { 1019 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1020 psFree(output); 1021 return false; 1022 } 1023 1024 psFree(output); 1025 1026 return true; 1027 } 1028 static bool updatedependentMode(pxConfig *config) 1029 { 1030 PS_ASSERT_PTR_NON_NULL(config, false); 1031 1032 PXOPT_LOOKUP_S64(dep_id, config->args, "-dep_id", true, false); 1033 PXOPT_LOOKUP_STR(state, config->args, "-set_state", true, false); 1034 1035 char *query ="UPDATE pstampDependent" 1036 " SET state = '%s'" 1037 " WHERE dep_id = %" PRId64; 1038 1039 if (!p_psDBRunQueryF(config->dbh, query, state, dep_id)) { 1040 psError(PS_ERR_UNKNOWN, false, "database error"); 1041 psFree(query); 1042 return false; 1043 } 1044 1045 psU64 affected = psDBAffectedRows(config->dbh); 1046 if (affected != 1) { 1047 psError(PS_ERR_UNKNOWN, false, "should have affected one row but %" 1048 PRIu64 " rows were modified", affected); 1049 return false; 1050 } 1051 1052 return true; 1053 } -
branches/eam_branches/20090820/ippTools/src/pstamptool.h
r25766 r25870 43 43 PSTAMPTOOL_MODE_MODPROJECT, 44 44 PSTAMPTOOL_MODE_PROJECT, 45 PSTAMPTOOL_MODE_GETDEPENDENT, 46 PSTAMPTOOL_MODE_PENDINGDEPENDENT, 47 PSTAMPTOOL_MODE_UPDATEDEPENDENT, 45 48 } pstamptoolMode; 46 49 -
branches/eam_branches/20090820/ippTools/src/pstamptoolConfig.c
r25766 r25870 112 112 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure id", 0); 113 113 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-options", 0, "define options", 0); 114 psMetadataAddS64(addjobArgs, PS_LIST_TAIL, "-dep_id", 0, "define job dep_id", 0); 114 115 psMetadataAddS16(addjobArgs, PS_LIST_TAIL, "-fault", 0, "define job result", 0); 115 116 … … 143 144 psMetadataAddBool(revertjobArgs, PS_LIST_TAIL, "-all", 0, "revert all faulted jobs", false); 144 145 psMetadataAddU64(revertjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 146 147 // -getdependent 148 psMetadata *getdependentArgs = psMetadataAlloc(); 149 psMetadataAddS64(getdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define id for dependent run (required)", 0); 150 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-stage", 0, "define stage for dependent run (required)", NULL); 151 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-imagedb", 0, "define imagedb for depenent run (required)", NULL); 152 psMetadataAddStr(getdependentArgs, PS_LIST_TAIL, "-rlabel", 0, "define label for dependent run", NULL); 153 psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-no_magic", 0, "define no_magic", false); 154 psMetadataAddBool(getdependentArgs,PS_LIST_TAIL, "-no_create", 0, "if no run exists do not create one", false); 155 156 // -updatedependent 157 psMetadata *updatedependentArgs = psMetadataAlloc(); 158 psMetadataAddS64(updatedependentArgs, PS_LIST_TAIL, "-dep_id", 0, "define id for dependent run (required)", 0); 159 psMetadataAddStr(updatedependentArgs, PS_LIST_TAIL, "-set_state", 0, "new value for state (required)", NULL); 160 161 // -pendingdependent 162 psMetadata *pendingdependentArgs = psMetadataAlloc(); 163 psMetadataAddS64(pendingdependentArgs, PS_LIST_TAIL, "-stage_id", 0, "define id for dependent run", 0); 164 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-stage", 0, "define stage for dependent run", NULL); 165 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-imagedb", 0, "define imagedb for depenent run", NULL); 166 psMetadataAddStr(pendingdependentArgs, PS_LIST_TAIL, "-rlabel", 0, "define label for dependent run", NULL); 167 psMetadataAddBool(pendingdependentArgs,PS_LIST_TAIL, "-no_magic", 0, "define no_magic", false); 168 psMetadataAddBool(pendingdependentArgs,PS_LIST_TAIL, "-no_create", 0, "if no run exists do not create one", false); 169 psMetadataAddU64(pendingdependentArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 170 psMetadataAddBool(pendingdependentArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 145 171 146 172 // -addproject … … 189 215 PXOPT_ADD_MODE("-moddatastore", "", PSTAMPTOOL_MODE_MODDATASTORE, moddatastoreArgs); 190 216 217 PXOPT_ADD_MODE("-getdependent", "", PSTAMPTOOL_MODE_GETDEPENDENT, getdependentArgs); 218 PXOPT_ADD_MODE("-updatedependent", "", PSTAMPTOOL_MODE_UPDATEDEPENDENT, updatedependentArgs); 219 PXOPT_ADD_MODE("-pendingdependent","", PSTAMPTOOL_MODE_PENDINGDEPENDENT, pendingdependentArgs); 220 191 221 PXOPT_ADD_MODE("-addproject", "", PSTAMPTOOL_MODE_ADDPROJECT, addprojectArgs); 192 222 PXOPT_ADD_MODE("-modproject", "", PSTAMPTOOL_MODE_MODPROJECT, modprojectArgs); -
branches/eam_branches/20090820/ippTools/src/pxadd.c
r25766 r25870 29 29 #include "pxadd.h" 30 30 31 bool pxaddSetSearchArgs (psMetadata *md) { 32 33 psMetadataAddS64(md, PS_LIST_TAIL, "-add_id", 0, "search by add_id", 0); 34 psMetadataAddS64(md, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 35 36 /* psMetadataAddStr(md, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); */ 37 /* psMetadataAddStr(md, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); */ 38 /* psMetadataAddStr(md, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); */ 39 /* psMetadataAddTime(md, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); */ 40 /* psMetadataAddTime(md, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); */ 41 /* psMetadataAddStr(md, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); */ 42 /* psMetadataAddStr(md, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", NULL); */ 43 /* psMetadataAddStr(md, PS_LIST_TAIL, "-comment", 0, "search by comment", NULL); */ 44 /* psMetadataAddStr(md, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); */ 45 /* psMetadataAddStr(md, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); */ 46 /* psMetadataAddF64(md, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); */ 47 /* psMetadataAddF64(md, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); */ 48 /* psMetadataAddF64(md, PS_LIST_TAIL, "-ra_min", 0, "define min RA (degrees) ", NAN); */ 49 /* psMetadataAddF64(md, PS_LIST_TAIL, "-ra_max", 0, "define max RA (degrees) ", NAN); */ 50 /* psMetadataAddF64(md, PS_LIST_TAIL, "-decl_min", 0, "define min DEC (degrees)", NAN); */ 51 /* psMetadataAddF64(md, PS_LIST_TAIL, "-decl_max", 0, "define max DEC (degrees)", NAN); */ 52 /* psMetadataAddF32(md, PS_LIST_TAIL, "-exp_time_min", 0, "define min exposure time", NAN); */ 53 /* psMetadataAddF32(md, PS_LIST_TAIL, "-exp_time_max", 0, "define max exposure time", NAN); */ 54 /* psMetadataAddF32(md, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "define max fraction of saturated pixels", NAN); */ 55 /* psMetadataAddF32(md, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "define max fraction of saturated pixels", NAN); */ 56 /* psMetadataAddF64(md, PS_LIST_TAIL, "-bg_min", 0, "define min background", NAN); */ 57 /* psMetadataAddF64(md, PS_LIST_TAIL, "-bg_max", 0, "define max background", NAN); */ 58 /* psMetadataAddF64(md, PS_LIST_TAIL, "-bg_stdev_min", 0, "define min background standard deviation", NAN); */ 59 /* psMetadataAddF64(md, PS_LIST_TAIL, "-bg_stdev_max", 0, "define max background standard deviation", NAN); */ 60 /* psMetadataAddF64(md, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "define min background mean standard deviation (across imfiles)", NAN); */ 61 /* psMetadataAddF64(md, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "define max background mean standard deviation (across imfiles)", NAN); */ 62 /* psMetadataAddF64(md, PS_LIST_TAIL, "-alt_min", 0, "define min altitude", NAN); */ 63 /* psMetadataAddF64(md, PS_LIST_TAIL, "-alt_max", 0, "define max altitude", NAN); */ 64 /* psMetadataAddF64(md, PS_LIST_TAIL, "-az_min", 0, "define min azimuth ", NAN); */ 65 /* psMetadataAddF64(md, PS_LIST_TAIL, "-az_max", 0, "define max azimuth ", NAN); */ 66 /* psMetadataAddF32(md, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); */ 67 /* psMetadataAddF32(md, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); */ 68 /* psMetadataAddF64(md, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); */ 69 /* psMetadataAddF64(md, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); */ 70 /* psMetadataAddStr(md, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); */ 71 /* psMetadataAddF32(md, PS_LIST_TAIL, "-sun_angle_min", 0, "define min solar angle", NAN); */ 72 /* psMetadataAddF32(md, PS_LIST_TAIL, "-sun_angle_max", 0, "define max solar angle", NAN); */ 73 74 return true; 75 } 76 77 bool pxaddGetSearchArgs (pxConfig *config, psMetadata *where) { 78 79 PXOPT_COPY_S64(config->args, where, "-add_id", "addRun.add_id", "=="); 80 /* PXOPT_COPY_S64(config->args, where, "-cam_id", "camRun.cam_id", "=="); */ 81 /* PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "=="); */ 82 /* PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); */ 83 /* PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); */ 84 /* PXOPT_COPY_STR(config->args, where, "-inst", "rawExp.camera", "=="); */ 85 /* PXOPT_COPY_STR(config->args, where, "-telescope", "rawExp.telescope", "=="); */ 86 /* PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "rawExp.dateobs", ">="); */ 87 /* PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "rawExp.dateobs", "<="); */ 88 /* PXOPT_COPY_STR(config->args, where, "-exp_tag", "rawExp.exp_tag", "=="); */ 89 /* PXOPT_COPY_STR(config->args, where, "-exp_type", "rawExp.exp_type", "=="); */ 90 /* PXOPT_COPY_STR(config->args, where, "-comment", "rawExp.comment", "LIKE"); */ 91 /* PXOPT_COPY_STR(config->args, where, "-filelevel", "rawExp.filelevel", "=="); */ 92 /* PXOPT_COPY_STR(config->args, where, "-filter", "rawExp.filter", "=="); */ 93 /* PXOPT_COPY_F64(config->args, where, "-airmass_min", "rawExp.airmass", ">="); */ 94 /* PXOPT_COPY_F64(config->args, where, "-airmass_max", "rawExp.airmass", "<"); */ 95 /* PXOPT_COPY_RADEC(config->args, where, "-ra_min", "rawExp.ra", ">="); */ 96 /* PXOPT_COPY_RADEC(config->args, where, "-ra_max", "rawExp.ra", "<"); */ 97 /* PXOPT_COPY_RADEC(config->args, where, "-decl_min", "rawExp.decl", ">="); */ 98 /* PXOPT_COPY_RADEC(config->args, where, "-decl_max", "rawExp.decl", "<"); */ 99 /* PXOPT_COPY_F32(config->args, where, "-exp_time_min", "rawExp.exp_time", ">="); */ 100 /* PXOPT_COPY_F32(config->args, where, "-exp_time_max", "rawExp.exp_time", "<"); */ 101 /* PXOPT_COPY_F32(config->args, where, "-sat_pixel_frac_min", "rawExp.sat_pixel_frac", ">="); */ 102 /* PXOPT_COPY_F32(config->args, where, "-sat_pixel_frac_max", "rawExp.sat_pixel_frac", "<"); */ 103 /* PXOPT_COPY_F64(config->args, where, "-bg_min", "rawExp.bg", ">="); */ 104 /* PXOPT_COPY_F64(config->args, where, "-bg_max", "rawExp.bg", "<"); */ 105 /* PXOPT_COPY_F64(config->args, where, "-bg_stdev_min", "rawExp.bg_stdev", ">="); */ 106 /* PXOPT_COPY_F64(config->args, where, "-bg_stdev_max", "rawExp.bg_stdev", "<"); */ 107 /* PXOPT_COPY_F64(config->args, where, "-bg_mean_stdev_min", "rawExp.bg_mean_stdev", ">="); */ 108 /* PXOPT_COPY_F64(config->args, where, "-bg_mean_stdev_max", "rawExp.bg_mean_stdev", "<"); */ 109 /* PXOPT_COPY_F64(config->args, where, "-alt_min", "rawExp.alt", ">="); */ 110 /* PXOPT_COPY_F64(config->args, where, "-alt_max", "rawExp.alt", "<"); */ 111 /* PXOPT_COPY_F64(config->args, where, "-az_min", "rawExp.az", ">="); */ 112 /* PXOPT_COPY_F64(config->args, where, "-az_max", "rawExp.az", "<"); */ 113 /* PXOPT_COPY_F32(config->args, where, "-ccd_temp_min", "rawExp.ccd_temp", ">="); */ 114 /* PXOPT_COPY_F32(config->args, where, "-ccd_temp_max", "rawExp.ccd_temp", "<"); */ 115 /* PXOPT_COPY_F64(config->args, where, "-posang_min", "rawExp.posang", ">="); */ 116 /* PXOPT_COPY_F64(config->args, where, "-posang_max", "rawExp.posang", "<"); */ 117 /* PXOPT_COPY_STR(config->args, where, "-object", "rawExp.object", "=="); */ 118 /* PXOPT_COPY_F32(config->args, where, "-sun_angle_min", "rawExp.sun_angle", ">="); */ 119 /* PXOPT_COPY_F32(config->args, where, "-sun_angle_max", "rawExp.sun_angle", "<"); */ 120 121 return true; 122 } 123 124 bool pxaddRunSetState(pxConfig *config, psS64 add_id, const char *state, psS64 magicked) 31 bool pxaddRunSetState(pxConfig *config, psS64 add_id, const char *state) 125 32 { 126 33 PS_ASSERT_PTR_NON_NULL(config, false); … … 134 41 } 135 42 136 char *query = "UPDATE addRun SET state = '%s', magicked = %" PRId64 " WHERE add_id = %" PRId64; 137 if (!p_psDBRunQueryF(config->dbh, query, state, magicked, add_id)) { 138 psError(PS_ERR_UNKNOWN, false, 139 "failed to change state for add_id %" PRId64, add_id); 43 char *query = "UPDATE addRun SET state = '%s' WHERE add_id = %" PRId64; 44 if (!p_psDBRunQueryF(config->dbh, query, state, add_id)) { 45 psError(PS_ERR_UNKNOWN, false, "failed to change state for add_id %" PRId64, add_id); 140 46 return false; 141 47 } … … 216 122 } 217 123 218 // Need to think more about this to see what we want it to do. BROKEN219 124 bool pxaddQueueByCamID(pxConfig *config, 220 125 psS64 cam_id, 221 126 char *workdir, 127 char *reduction, 222 128 char *label, 223 char *recipe, 224 char *dvodb) 129 char *data_group, 130 char *dvodb, 131 char *note, 132 bool image_only) 225 133 { 226 134 PS_ASSERT_PTR_NON_NULL(config, false); … … 236 144 } 237 145 } 238 // fprintf(stderr,"%s",query); 146 239 147 // queue the exp 240 // XXX chip_id is being cast here work around psS64 have a different type241 // differenton 32/64148 // Note: cam_id is being cast here work around psS64 have a different type different 149 // on 32/64 242 150 if (!p_psDBRunQueryF(config->dbh, query, 243 151 "new", // state 244 workdir ? workdir : "NULL",152 workdir ? workdir : "NULL", 245 153 "dirty", //workdir_state 246 label ? label : "NULL", 247 dvodb ? dvodb : "NULL", 248 (long long)cam_id 154 reduction? reduction : "NULL", 155 label ? label : "NULL", 156 data_group ? data_group : "NULL", 157 dvodb ? dvodb : "NULL", 158 note ? note : "NULL", 159 image_only, 160 (long long) cam_id 249 161 )) { 250 162 psError(PS_ERR_UNKNOWN, false, "database error"); -
branches/eam_branches/20090820/ippTools/src/pxadd.h
r25766 r25870 25 25 #include "pxtools.h" 26 26 27 bool pxaddRunSetState(pxConfig *config, psS64 add_id, const char *state , psS64 magicked);27 bool pxaddRunSetState(pxConfig *config, psS64 add_id, const char *state); 28 28 bool pxaddRunSetStateByQuery(pxConfig *config, psMetadata *where, const char *state); 29 29 bool pxaddRunSetLabel(pxConfig *config, psS64 add_id, const char *label); 30 30 bool pxaddRunSetLabelByQuery(pxConfig *config, psMetadata *where, const char *label); 31 31 32 bool pxaddSetSearchArgs (psMetadata *md);33 bool pxaddGetSearchArgs (pxConfig *config, psMetadata *where);34 35 // Likely BROKEN36 32 bool pxaddQueueByCamID(pxConfig *config, 37 psS64 cam_id, 38 char *workdir, 39 char *label, 40 char *recipe, 41 char *dvodb); 42 33 psS64 cam_id, 34 char *workdir, 35 char *reduction, 36 char *label, 37 char *data_group, 38 char *dvodb, 39 char *note, 40 bool image_only); 43 41 44 42 #endif // PXADD_H -
branches/eam_branches/20090820/ippTools/src/pxadmin.c
r23310 r25870 2 2 * pxadmin.c 3 3 * 4 * Copyright (C) 2006-200 8Joshua Hoblitt4 * Copyright (C) 2006-2009 Joshua Hoblitt 5 5 * 6 6 * This program is free software; you can redistribute it and/or modify it … … 31 31 bool createMirrorMode(pxConfig *config); 32 32 bool deleteMode(pxConfig *config); 33 static bool insert_dbversion(pxConfig * config, const char *versionString); 33 34 static bool runMultipleStatments(pxConfig *config, const char *query); 34 35 … … 113 114 psFree(query); 114 115 116 if (!insert_dbversion(config, PACKAGE_VERSION)) { 117 psError(PS_ERR_UNKNOWN, false, "failed to set database version"); 118 return false; 119 } 120 115 121 // COMMIT 116 122 if (!psDBCommit(config->dbh)) { … … 148 154 } 149 155 psFree(query); 156 157 if (!insert_dbversion(config, PACKAGE_VERSION)) { 158 psError(PS_ERR_UNKNOWN, false, "failed to set database version"); 159 return false; 160 } 150 161 151 162 // COMMIT … … 262 273 return true; 263 274 } 275 276 #ifdef notdef 277 static bool update_dbversion(pxConfig * config, const char *versionString) 278 { 279 psString query = pxDataGet("pxadmin_update_version.sql"); 280 if (!query) { 281 psError(PS_ERR_UNKNOWN, false, "failed to retrieve SQL statement"); 282 psFree(query); 283 return false; 284 } 285 if (!p_psDBRunQueryF(config->dbh, query, versionString)) { 286 psError(PS_ERR_UNKNOWN, false, "database error"); 287 psFree(query); 288 return false; 289 } 290 return true; 291 } 292 #endif 293 static bool insert_dbversion(pxConfig * config, const char *versionString) 294 { 295 psString query = "INSERT INTO dbversion VALUES('%s', CURRENT_TIMESTAMP())"; 296 if (!query) { 297 psError(PS_ERR_UNKNOWN, false, "failed to retrieve SQL statement"); 298 psFree(query); 299 return false; 300 } 301 if (!p_psDBRunQueryF(config->dbh, query, versionString)) { 302 psError(PS_ERR_UNKNOWN, false, "database error"); 303 psFree(query); 304 return false; 305 } 306 return true; 307 } -
branches/eam_branches/20090820/ippTools/src/pxcam.c
r24866 r25870 141 141 } 142 142 143 144 bool pxcamRunSetStateByQuery(pxConfig *config, psMetadata *where, const char *state)145 {146 PS_ASSERT_PTR_NON_NULL(config, false);147 PS_ASSERT_PTR_NON_NULL(state, false);148 149 // check that state is a valid string value150 if (!pxIsValidState(state)) {151 psError(PS_ERR_UNKNOWN, false,152 "invalid chipRun state: %s", state);153 return false;154 }155 156 psString query = psStringCopy("UPDATE camRun JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) SET camRun.state = '%s'");157 158 if (where) {159 psString whereClause = psDBGenerateWhereSQL(where, NULL);160 psStringAppend(&query, " %s", whereClause);161 psFree(whereClause);162 }163 164 if (!p_psDBRunQueryF(config->dbh, query, state)) {165 psFree(query);166 psError(PS_ERR_UNKNOWN, false, "database error");167 return false;168 }169 170 psFree(query);171 172 return true;173 }174 175 176 bool pxcamRunSetLabel(pxConfig *config, psS64 cam_id, const char *label)177 {178 PS_ASSERT_PTR_NON_NULL(config, false);179 // note label == NULL should be explicitly allowed180 181 char *query = "UPDATE camRun SET camRun.label = '%s' WHERE cam_id = %" PRId64;182 if (!p_psDBRunQueryF(config->dbh, query, label, cam_id)) {183 psError(PS_ERR_UNKNOWN, false,184 "failed to change state for cam_id %" PRId64, cam_id);185 return false;186 }187 188 return true;189 }190 191 bool pxcamRunSetLabelByQuery(pxConfig *config, psMetadata *where, const char *label)192 {193 PS_ASSERT_PTR_NON_NULL(config, false);194 // note label == NULL should be explicitly allowed195 196 psString query = psStringCopy("UPDATE camRun JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) SET camRun.label = '%s'");197 198 if (where) {199 psString whereClause = psDBGenerateWhereSQL(where, NULL);200 psStringAppend(&query, " %s", whereClause);201 psFree(whereClause);202 }203 204 if (!p_psDBRunQueryF(config->dbh, query, label)) {205 psFree(query);206 psError(PS_ERR_UNKNOWN, false, "database error");207 return false;208 }209 210 psFree(query);211 212 return true;213 }214 215 216 143 bool pxcamQueueByChipID(pxConfig *config, 217 144 psS64 chip_id, 218 145 char *workdir, 219 146 char *label, 147 char *data_group, 148 char *dist_group, 220 149 char *recipe, 221 150 char *expgroup, 222 151 char *dvodb, 223 152 char *tess_id, 224 char *end_stage) 153 char *end_stage, 154 char *note) 225 155 { 226 156 PS_ASSERT_PTR_NON_NULL(config, false); … … 245 175 "dirty", //workdir_state 246 176 label ? label : "NULL", 177 data_group ? data_group : "NULL", 178 dist_group ? dist_group : "NULL", 247 179 recipe ? recipe : "NULL", 248 180 expgroup ? expgroup : "NULL", … … 250 182 tess_id ? tess_id : "NULL", 251 183 end_stage ? end_stage : "NULL", 184 note ? note : "NULL", 252 185 (long long)chip_id 253 186 )) { -
branches/eam_branches/20090820/ippTools/src/pxcam.h
r24681 r25870 26 26 27 27 bool pxcamRunSetState(pxConfig *config, psS64 cam_id, const char *state, psS64 magicked); 28 bool pxcamRunSetStateByQuery(pxConfig *config, psMetadata *where, const char *state);29 bool pxcamRunSetLabel(pxConfig *config, psS64 cam_id, const char *label);30 bool pxcamRunSetLabelByQuery(pxConfig *config, psMetadata *where, const char *label);31 32 28 bool pxcamSetSearchArgs (psMetadata *md); 33 29 bool pxcamGetSearchArgs (pxConfig *config, psMetadata *where); … … 37 33 char *workdir, 38 34 char *label, 35 char *data_group, 36 char *dist_group, 39 37 char *recipe, 40 38 char *expgroup, 41 39 char *dvodb, 42 40 char *tess_id, 43 char *end_stage); 41 char *end_stage, 42 char *note); 44 43 45 44 #endif // PXCAM_H -
branches/eam_branches/20090820/ippTools/src/pxchip.c
r24866 r25870 192 192 } 193 193 194 195 bool pxchipRunSetLabel(pxConfig *config, psS64 chip_id, const char *label) 194 bool pxchipProcessedImfileSetStateByQuery(pxConfig *config, psMetadata *where, const char *state) 196 195 { 197 196 PS_ASSERT_PTR_NON_NULL(config, false); 198 // note label == NULL should be explicitly allowed199 200 char *query = "UPDATE chipRun SET label = '%s' WHERE chip_id = %" PRId64;201 if (!p _psDBRunQueryF(config->dbh, query, label, chip_id)) {202 psError(PS_ERR_UNKNOWN, false, 203 "failed to change state for chip_id %" PRId64, chip_id);204 return false;205 } 206 207 return true; 208 } 209 210 211 bool pxchipRunSetLabelByQuery(pxConfig *config, psMetadata *where, const char *label) 212 { 213 PS_ASSERT_PTR_NON_NULL(config, false); 214 // note label == NULL should be explicitly allowed 215 216 psString query = psStringCopy("UPDATE chip Run JOIN rawExp USING(exp_id) SET label= '%s'");197 PS_ASSERT_PTR_NON_NULL(state, false); 198 199 // check that state is a valid string value 200 if (!pxIsValidState(state)) { 201 psError(PS_ERR_UNKNOWN, false, "invalid chipProcessedImfile state: %s", state); 202 return false; 203 } 204 205 /* if (!strcmp(state, "full")) { */ 206 /* // There are states that need to be met for a run to be set to full that we don't */ 207 /* // check here. */ 208 /* // for example all of the run's Imfiles must have chipProcessedImfile.data_state == "full" */ 209 /* // chipRun.magicked = (SUM(!chipProcessedImfile.magicked) = 0) */ 210 /* // so don't do allow setting the state to full */ 211 /* psError(PS_ERR_UNKNOWN, true, "cannot use -updaterun so set chipRun state to full"); */ 212 /* return false; */ 213 /* } */ 214 215 psString query = psStringCopy("UPDATE chipProcessedImfile JOIN chipRun USING(chip_id) JOIN rawExp ON chipRun.exp_id = rawExp.exp_id SET state = '%s'"); 217 216 218 217 if (where && psListLength(where->list) > 0) { … … 222 221 } 223 222 224 if (!p_psDBRunQueryF(config->dbh, query, label)) {223 if (!p_psDBRunQueryF(config->dbh, query, state)) { 225 224 psFree(query); 226 225 psError(PS_ERR_UNKNOWN, false, "database error"); … … 232 231 return true; 233 232 } 234 235 233 236 234 psS64 pxchipQueueByExpTag(pxConfig *config, … … 238 236 const char *workdir, 239 237 const char *label, 238 const char *data_group, 239 const char *dist_group, 240 240 const char *reduction, 241 241 const char *expgroup, 242 242 const char *dvodb, 243 243 const char *tess_id, 244 const char *end_stage) 244 const char *end_stage, 245 const char *note) 245 246 { 246 247 PS_ASSERT_PTR_NON_NULL(config, false); … … 260 261 "dirty", // workdir_state 261 262 label, 263 data_group, 264 dist_group, 262 265 reduction, 263 266 expgroup, … … 265 268 tess_id, 266 269 end_stage, 267 0 // magicked 270 0, // magicked 271 note 268 272 ) 269 273 ) { -
branches/eam_branches/20090820/ippTools/src/pxchip.h
r23381 r25870 25 25 #include "pxtools.h" 26 26 27 28 27 29 bool pxchipRunSetState(pxConfig *config, psS64 chip_id, const char *state, const bool magicked); 28 bool pxchipRunSetStateByQuery(pxConfig *config, psMetadata *where, const char *state); 29 bool pxchipRunSetLabel(pxConfig *config, psS64 chip_id, const char *label); 30 bool pxchipRunSetLabelByQuery(pxConfig *config, psMetadata *where, const char *label); 30 bool pxchipProcessedImfileSetStateByQuery(pxConfig *config, psMetadata *where, const char *state); 31 31 32 32 psS64 pxchipQueueByExpTag(pxConfig *config, … … 34 34 const char *workdir, 35 35 const char *label, 36 const char *data_group, 37 const char *dist_group, 36 38 const char *reduction, 37 39 const char *expgroup, 38 40 const char *dvodb, 39 41 const char *tess_id, 40 const char *end_stage); 42 const char *end_stage, 43 const char *note); 41 44 42 45 -
branches/eam_branches/20090820/ippTools/src/pxfake.c
r21402 r25870 51 51 } 52 52 53 54 bool pxfakeRunSetStateByQuery(pxConfig *config, psMetadata *where, const char *state)55 {56 PS_ASSERT_PTR_NON_NULL(config, false);57 PS_ASSERT_PTR_NON_NULL(state, false);58 59 // check that state is a valid string value60 if (!pxIsValidState(state)) {61 psError(PS_ERR_UNKNOWN, false,62 "invalid fakeRun state: %s", state);63 return false;64 }65 66 psString query = psStringCopy("UPDATE fakeRun JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) SET fakeRun.state = '%s'");67 68 if (where) {69 psString whereClause = psDBGenerateWhereSQL(where, NULL);70 psStringAppend(&query, " %s", whereClause);71 psFree(whereClause);72 }73 74 if (!p_psDBRunQueryF(config->dbh, query, state)) {75 psFree(query);76 psError(PS_ERR_UNKNOWN, false, "database error");77 return false;78 }79 80 psFree(query);81 82 return true;83 }84 85 86 bool pxfakeRunSetLabel(pxConfig *config, psS64 fake_id, const char *label)87 {88 PS_ASSERT_PTR_NON_NULL(config, false);89 // note label == NULL should be explicitly allowed90 91 char *query = "UPDATE fakeRun SET fakeRun.label = '%s' WHERE fake_id = %" PRId64;92 if (!p_psDBRunQueryF(config->dbh, query, label, fake_id)) {93 psError(PS_ERR_UNKNOWN, false,94 "failed to change state for fake_id %" PRId64, fake_id);95 return false;96 }97 98 return true;99 }100 101 102 bool pxfakeRunSetLabelByQuery(pxConfig *config, psMetadata *where, const char *label)103 {104 PS_ASSERT_PTR_NON_NULL(config, false);105 // note label == NULL should be explicitly allowed106 107 psString query = psStringCopy("UPDATE fakeRun JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) SET fakeRun.label = '%s'");108 109 if (where) {110 psString whereClause = psDBGenerateWhereSQL(where, NULL);111 psStringAppend(&query, " %s", whereClause);112 psFree(whereClause);113 }114 115 if (!p_psDBRunQueryF(config->dbh, query, label)) {116 psFree(query);117 psError(PS_ERR_UNKNOWN, false, "database error");118 return false;119 }120 121 psFree(query);122 123 return true;124 }125 126 127 53 psS64 pxfakeQueueByCamID(pxConfig *config, 128 54 psS64 cam_id, 129 55 char *workdir, 130 56 char *label, 57 char *data_group, 58 char *dist_group, 131 59 char *reduction, 132 60 char *expgroup, 133 61 char *dvodb, 134 62 char *tess_id, 135 char *end_stage) 63 char *end_stage, 64 char *note) 136 65 { 137 66 PS_ASSERT_PTR_NON_NULL(config, false); … … 157 86 workdir ? workdir : "NULL", 158 87 label ? label : "NULL", 88 data_group ? data_group : "NULL", 89 dist_group ? dist_group : "NULL", 159 90 reduction? reduction: "NULL", 160 91 expgroup ? expgroup : "NULL", … … 162 93 tess_id ? tess_id : "NULL", 163 94 end_stage ? end_stage : "NULL", 95 note ? note : "NULL", 164 96 (long long)cam_id 165 97 )) { -
branches/eam_branches/20090820/ippTools/src/pxfake.h
r17938 r25870 26 26 27 27 bool pxfakeRunSetState(pxConfig *config, psS64 fake_id, const char *state); 28 bool pxfakeRunSetStateByQuery(pxConfig *config, psMetadata *where, const char *state);29 bool pxfakeRunSetLabel(pxConfig *config, psS64 fake_id, const char *label);30 bool pxfakeRunSetLabelByQuery(pxConfig *config, psMetadata *where, const char *label);31 32 28 33 29 psS64 pxfakeQueueByCamID(pxConfig *config, … … 35 31 char *workdir, 36 32 char *label, 33 char *data_group, 34 char *dist_group, 37 35 char *reduction, 38 36 char *expgroup, 39 37 char *dvodb, 40 38 char *tess_id, 41 char *end_stage); 39 char *end_stage, 40 char *note); 42 41 43 42 -
branches/eam_branches/20090820/ippTools/src/pxmagic.c
r25766 r25870 29 29 #include "pxmagic.h" 30 30 31 bool magicRestoreStage(pxConfig *config, psString stage, psString whereClause, psString newState)31 bool pxmagicRestoreStage(pxConfig *config, psString stage, psString whereClause, psString newState) 32 32 { 33 33 psString queryFile = NULL; … … 66 66 return true; 67 67 } 68 69 bool pxmagicAddWhere(pxConfig *config, psString *out, psString table) 70 { 71 PXOPT_LOOKUP_U64(magicked, config->args, "-magicked", false, false); 72 PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false); 73 PXOPT_LOOKUP_BOOL(not_destreaked, config->args, "-not_destreaked", false); 74 75 if (not_destreaked) { 76 if (destreaked) { 77 psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -destreaked makes no sense"); 78 return false; 79 } 80 if (magicked) { 81 psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -magicked makes no sense"); 82 return false; 83 } 84 psStringAppend(out, " AND %s.magicked = 0", table); 85 } 86 if (destreaked) { 87 psStringAppend(out, " AND %s.magicked != 0", table); 88 } 89 return true; 90 } 91 92 void pxmagicAddArguments(psMetadata *md) 93 { 94 psMetadataAddBool(md, PS_LIST_TAIL, "-destreaked", 0, "search for destreaked images", false); 95 psMetadataAddBool(md, PS_LIST_TAIL, "-not_destreaked", 0, "search for images that have not been destreaked", false); 96 psMetadataAddS64(md, PS_LIST_TAIL, "-magicked", 0, "search by magicked value", 0); 97 } -
branches/eam_branches/20090820/ippTools/src/pxmagic.h
r25766 r25870 25 25 #include "pxtools.h" 26 26 27 extern bool magicRestoreStage(pxConfig *config, psString stage, psString whereClause, psString newState); 27 extern bool pxmagicRestoreStage(pxConfig *config, psString stage, psString whereClause, psString newState); 28 29 extern bool pxmagicAddWhere(pxConfig *config, psString *string, psString table); 30 extern void pxmagicAddArguments(psMetadata *md); 28 31 29 32 #endif // PXMAGIC_H -
branches/eam_branches/20090820/ippTools/src/pxtools.c
r25766 r25870 108 108 return true; 109 109 } 110 111 // shared code for updating the various strings for a Run 112 bool pxUpdateRun(pxConfig *config, psMetadata *where, psString *pQuery, psString table, bool has_dist_group) 113 { 114 PS_ASSERT_PTR_NON_NULL(config, false); 115 PS_ASSERT_PTR_NON_NULL(where, false); 116 PS_ASSERT_PTR_NON_NULL(pQuery, false); 117 PS_ASSERT_PTR_NON_NULL(*pQuery, false); 118 119 // make sure that -state is not the only selection parameter 120 PXOPT_LOOKUP_STR(where_state, config->args, "-state", false, false); 121 if (where_state && (psListLength(where->list) < 2)) { 122 psError(PXTOOLS_ERR_DATA, true, "selection by -state alone is not allowed"); 123 return false; 124 } 125 126 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 127 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 128 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 129 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 130 131 psString dist_group = NULL; 132 if (has_dist_group) { 133 PXOPT_LOOKUP_STR(tmp_dist_group, config->args, "-set_dist_group", false, false); 134 dist_group = tmp_dist_group; 135 } 136 137 if ((!state) && (!label) && (!data_group) && (has_dist_group && !dist_group) && !(note)) { 138 psError(PXTOOLS_ERR_DATA, false, "parameters are required"); 139 return false; 140 } 141 142 if (state && ! pxIsValidState(state)) { 143 psError(PXTOOLS_ERR_DATA, false, "pxIsValidState failed"); 144 return false; 145 } 146 147 // first paramter is added with "SET param = 'value'" 148 // subseqent ones with ", param = 'value'" 149 char *separator = " SET "; 150 char *comma = ","; 151 152 # define addColumn(_tab, _val) \ 153 do { \ 154 if (_val) { \ 155 psStringAppend(pQuery, "%s %s.%s = '%s'", separator, _tab, #_val, _val); \ 156 separator = comma; \ 157 } \ 158 } while (0) 159 160 addColumn(table, state); 161 addColumn(table, data_group); 162 if (has_dist_group) { 163 addColumn(table, dist_group); 164 } 165 addColumn(table, note); 166 addColumn(table, label); 167 168 psString whereClause = psDBGenerateWhereSQL(where, NULL); 169 psStringAppend(pQuery, " %s", whereClause); 170 psFree(whereClause); 171 172 if (!p_psDBRunQuery(config->dbh, *pQuery)) { 173 psError(PS_ERR_UNKNOWN, false, "database error"); 174 return false; 175 } 176 177 return true; 178 } 179 180 bool pxLookupVersion(pxConfig *config, psArray **pArray) 181 { 182 const char *query = "SELECT * FROM dbversion"; 183 184 if (!p_psDBRunQuery(config->dbh, query)) { 185 psError(PS_ERR_UNKNOWN, false, "database error"); 186 return false; 187 } 188 189 psArray *output = p_psDBFetchResult(config->dbh); 190 if (!output) { 191 psError(PS_ERR_UNKNOWN, false, "database error"); 192 return false; 193 } 194 if (!psArrayLength(output)) { 195 psFree(output); 196 psError(PS_ERR_UNKNOWN, true, "no rows in dbversion"); 197 return false; 198 } 199 if (psArrayLength(output) > 1) { 200 psError(PS_ERR_UNKNOWN, true, "unexpected number of rows found in dbversion: %" PRId64, 201 psArrayLength(output)); 202 return false; 203 } 204 *pArray = output; 205 206 return true; 207 } 208 209 psString pxGetDBVersion(pxConfig *config) 210 { 211 PS_ASSERT_PTR_NON_NULL(config, NULL); 212 213 psArray *array = NULL; 214 if (!pxLookupVersion(config, &array)) { 215 psError(PS_ERR_UNKNOWN, false, "pxLookupVersion failed"); 216 return NULL; 217 } 218 psMetadata *md = array->data[0]; 219 if (!md) { 220 psError(PS_ERR_UNKNOWN, true, "output of pxLookupVersion is null"); 221 return NULL; 222 } 223 224 psString version = psMetadataLookupStr(NULL, md, "schema_version"); 225 226 return version; 227 } 228 229 bool pxExportVersion(pxConfig *config, FILE *file) 230 { 231 PS_ASSERT_PTR_NON_NULL(config, NULL); 232 PS_ASSERT_PTR_NON_NULL(file, NULL); 233 234 psArray *array = NULL; 235 if (!pxLookupVersion(config, &array) || !array) { 236 psError(PS_ERR_UNKNOWN, false, "pxLookupVersion failed"); 237 return false; 238 } 239 if (!ippdbPrintMetadatas(file, array, "dbversion", true)) { 240 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 241 psFree(array); 242 return false; 243 } 244 return true; 245 } 246 247 bool pxCheckImportVersion(pxConfig *config, psMetadata *input) 248 { 249 PS_ASSERT_PTR_NON_NULL(config, NULL); 250 PS_ASSERT_PTR_NON_NULL(input, NULL); 251 252 // This code was adapted from the way camtool parses the structures. 253 // Is this really the way to do it? 254 psMetadataItem *multi_item = psMetadataLookup(input, "dbversion"); 255 if (!multi_item || (multi_item->type != PS_DATA_METADATA_MULTI)) { 256 psError(PS_ERR_UNKNOWN, true, "dbversion multi not found in input"); 257 return false; 258 } 259 260 psMetadataItem *dbversion = psListGet(multi_item->data.list, 0); 261 if (!dbversion) { 262 psError(PS_ERR_UNKNOWN, true, "dbversion not found in input"); 263 return false; 264 } 265 266 if (!strcmp(dbversion->name, "dbversion")) { 267 // horray 268 psMetadata *md = dbversion->data.md; 269 psString schema_version = pxGetDBVersion(config); 270 if (!schema_version) { 271 psError(PS_ERR_UNKNOWN, false, "pxGetDBVersion failed"); 272 return false; 273 } 274 275 psString import_version = psMetadataLookupStr(NULL, md, "schema_version"); 276 if (import_version && strcmp(import_version, schema_version)) { 277 psError(PS_ERR_UNKNOWN, true, "input file schema_version: %s does not match data base: %s", 278 import_version, schema_version); 279 return false; 280 } else if (!import_version) { 281 psError(PS_ERR_UNKNOWN, true, "input file schema_version is NULL"); 282 return false; 283 } else { 284 // YIPPEE this file is the same version 285 } 286 } else { 287 psError(PS_ERR_UNKNOWN, true, "Unexpected config dump format"); 288 return false; 289 } 290 291 return true; 292 } -
branches/eam_branches/20090820/ippTools/src/pxtools.h
r25766 r25870 47 47 #include "pxtree.h" 48 48 #include "pxmagic.h" 49 #include "pxspace.h" 49 50 50 51 # define MAX_ROWS 10e9 … … 56 57 57 58 bool pxSetFaultCode(psDB *dbh, const char *tableName, psMetadata *where, psS16 code); 59 bool pxExportVersion(pxConfig *config, FILE *f); 60 bool pxCheckImportVersion(pxConfig *config, psMetadata *md); 58 61 59 62 psExit pxerrorGetExitStatus(void); … … 61 64 void pxUsage(FILE *stream, int argc, char **argv, const char *modeName, psMetadata *argSet); 62 65 bool pxGetOptions(FILE *stream, int argc, char **argv, pxConfig *config, psMetadata *modes, psMetadata *argSets); 66 67 bool pxUpdateRun(pxConfig *config, psMetadata *where, psString *pQuery, psString table, bool has_dist_group); 63 68 64 69 #define PXOPT_ADD_MODE(option, comment, modeval, argset) \ -
branches/eam_branches/20090820/ippTools/src/pxwarp.c
r24487 r25870 29 29 #include "pxwarp.h" 30 30 31 bool pxwarpRunSetState(pxConfig *config, psS64 warp_id, const char *state)32 {33 PS_ASSERT_PTR_NON_NULL(config, false);34 PS_ASSERT_PTR_NON_NULL(state, false);35 36 // check that state is a valid string value37 if (!pxIsValidState(state)) {38 psError(PS_ERR_UNKNOWN, false, "invalid warpRun state: %s", state);39 return false;40 }41 42 char *query = "UPDATE warpRun SET state = '%s' WHERE warp_id = %" PRId64;43 if (!p_psDBRunQueryF(config->dbh, query, state, warp_id)) {44 psError(PS_ERR_UNKNOWN, false,45 "failed to change state for warp_id %" PRId64, warp_id);46 return false;47 }48 49 return true;50 }51 52 53 bool pxwarpRunSetStateByQuery(pxConfig *config, psMetadata *where, const char *state)54 {55 PS_ASSERT_PTR_NON_NULL(config, false);56 PS_ASSERT_PTR_NON_NULL(state, false);57 58 // check that state is a valid string value59 if (!pxIsValidState(state)) {60 psError(PS_ERR_UNKNOWN, false, "invalid warpRun state: %s", state);61 return false;62 }63 64 psString query = psStringCopy("UPDATE warpRun JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) SET warpRun.state = '%s'");65 66 if (where) {67 psString whereClause = psDBGenerateWhereSQL(where, NULL);68 if (whereClause && strlen(whereClause) > 0) {69 psStringAppend(&query, " %s", whereClause);70 }71 psFree(whereClause);72 }73 74 if (!p_psDBRunQueryF(config->dbh, query, state)) {75 psFree(query);76 psError(PS_ERR_UNKNOWN, false, "database error");77 return false;78 }79 80 psFree(query);81 82 return true;83 }84 85 86 bool pxwarpRunSetLabel(pxConfig *config, psS64 warp_id, const char *label)87 {88 PS_ASSERT_PTR_NON_NULL(config, false);89 // note label == NULL should be explicitly allowed90 91 char *query = "UPDATE warpRun SET warpRun.label = '%s' WHERE warp_id = %" PRId64;92 if (!p_psDBRunQueryF(config->dbh, query, label, warp_id)) {93 psError(PS_ERR_UNKNOWN, false,94 "failed to change label for warp_id %" PRId64, warp_id);95 return false;96 }97 98 return true;99 }100 101 102 bool pxwarpRunSetLabelByQuery(pxConfig *config, psMetadata *where, const char *label)103 {104 PS_ASSERT_PTR_NON_NULL(config, false);105 // note label == NULL should be explicitly allowed106 107 psString query = psStringCopy("UPDATE warpRun JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) SET warpRun.label = '%s'");108 109 if (where) {110 psString whereClause = psDBGenerateWhereSQL(where, NULL);111 psStringAppend(&query, " %s", whereClause);112 psFree(whereClause);113 }114 115 if (!p_psDBRunQueryF(config->dbh, query, label)) {116 psFree(query);117 psError(PS_ERR_UNKNOWN, false, "database error");118 return false;119 }120 121 psFree(query);122 123 return true;124 }125 126 127 31 bool pxwarpQueueByFakeID(pxConfig *config, 128 32 psS64 fake_id, 129 33 const char *workdir, 130 34 const char *label, 35 const char *data_group, 36 const char *dist_group, 131 37 const char *dvodb, 132 38 const char *tess_id, 133 39 const char *reduction, 134 const char *end_stage) 40 const char *end_stage, 41 const char *note) 135 42 { 136 43 PS_ASSERT_PTR_NON_NULL(config, false); … … 145 52 "dirty", // workdir_state 146 53 label, 54 data_group, 55 dist_group, 147 56 dvodb, 148 57 tess_id, 149 reduction,58 reduction, 150 59 end_stage, 151 60 NULL, // registered 152 0 // magicked zero when created will get updated when warpRun goes to 'full' 61 0, // magicked set to zero when created may get updated when warpRun goes to 'full' 62 NULL // note 153 63 )) { 154 64 psError(PS_ERR_UNKNOWN, false, "database error"); -
branches/eam_branches/20090820/ippTools/src/pxwarp.h
r24487 r25870 25 25 #include "pxtools.h" 26 26 27 bool pxwarpRunSetState(pxConfig *config, psS64 warp_id, const char *state);28 bool pxwarpRunSetStateByQuery(pxConfig *config, psMetadata *where, const char *state);29 bool pxwarpRunSetLabel(pxConfig *config, psS64 warp_id, const char *label);30 bool pxwarpRunSetLabelByQuery(pxConfig *config, psMetadata *where, const char *label);31 32 27 bool pxwarpQueueByFakeID(pxConfig *config, 33 28 psS64 fake_id, 34 29 const char *workdir, 35 30 const char *label, 31 const char *data_group, 32 const char *dist_group, 36 33 const char *dvodb, 37 34 const char *tess_id, 38 35 const char *reduction, 39 const char *end_stage); 36 const char *end_stage, 37 const char *note); 40 38 41 39 #endif // PXWARP_H -
branches/eam_branches/20090820/ippTools/src/regtool.c
r25766 r25870 334 334 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 335 335 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 336 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 337 PXOPT_COPY_STR(config->args, where, "-obs_mode", "obs_mode", "=="); 336 338 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);341 339 342 340 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 343 341 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 344 342 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 343 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 345 344 PXOPT_LOOKUP_BOOL(ordered_by_date, config->args, "-ordered_by_date", false); 345 346 // build where string for some parameters that don't fit PXOPT_COPY* 347 psString where2 = NULL; 348 if (!pxmagicAddWhere(config, &where2, "rawImfile")) { 349 psError(PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed"); 350 return false; 351 } 352 if (!pxspaceAddWhere(config, &where2, "rawImfile")) { 353 psError(PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed"); 354 return false; 355 } 346 356 347 357 psString query = pxDataGet("regtool_processedimfile.sql"); … … 356 366 psStringAppend(&query, " AND %s", whereClause); 357 367 psFree(whereClause); 368 } else if (!all && !where2) { 369 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 370 return false; 358 371 } 359 372 psFree(where); 373 if (where2) { 374 psStringAppend(&query, " %s", where2); 375 psFree(where2); 376 } 360 377 361 378 if (faulted) { … … 366 383 psStringAppend(&query, " %s", "AND rawImfile.fault = 0"); 367 384 } 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 385 386 // add the ORDER BY statement if desired … … 884 885 workdir, 885 886 label, 887 NULL, // data_group 888 NULL, // dist_group 886 889 reduction, 887 NULL, // expgroup890 NULL, // expgroup 888 891 dvodb, 889 892 tess_id, 890 end_stage 893 end_stage, 894 NULL // note 891 895 )) { 892 896 // rollback -
branches/eam_branches/20090820/ippTools/src/regtoolConfig.c
r25766 r25870 137 137 ADD_OPT(Str, processedimfileArgs, "-class_id", "search by class ID", NULL); 138 138 ADD_OPT(Str, processedimfileArgs, "-filter", "search by filter", NULL); 139 ADD_OPT(Str, processedimfileArgs, "-obs_mode", "search by obs_mod", NULL); 140 ADD_OPT(Str, processedimfileArgs, "-exp_type", "search by exposure type", NULL); 139 141 ADD_OPT(Time, processedimfileArgs, "-dateobs_begin", "search for exposures by time (>=)", NULL); 140 142 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);144 143 ADD_OPT(U64, processedimfileArgs, "-limit", "limit result set to N items", 0); 145 144 ADD_OPT(Bool, processedimfileArgs, "-faulted", "only return imfiles with a fault status set", false); 145 ADD_OPT(Bool, processedimfileArgs, "-all", "list without search arguments", false); 146 146 ADD_OPT(Bool, processedimfileArgs, "-simple", "use the simple output format", false); 147 147 ADD_OPT(Bool, processedimfileArgs, "-ordered_by_date", "force output to be in DATE order", false); 148 pxspaceAddArguments(processedimfileArgs); 149 pxmagicAddArguments(processedimfileArgs); 148 150 149 151 // -revertprocessedimfile -
branches/eam_branches/20090820/ippTools/src/stacktool.c
r25766 r25870 109 109 110 110 // required options 111 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); 112 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 113 PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false); 114 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 111 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false); 112 113 // optional 114 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 115 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 116 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 117 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 118 PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false); 119 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 120 PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false); 115 121 116 122 psMetadata *where = psMetadataAlloc(); … … 160 166 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 161 167 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 162 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 163 164 if (!psListLength(where->list) && 165 !psMetadataLookupBool(NULL, config->args, "-all")) { 168 169 if (!psListLength(where->list)) { 166 170 psFree(where); 167 171 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); … … 345 349 workdir, 346 350 label, 351 data_group ? data_group : label, 352 dist_group, 347 353 reduction, 348 354 dvodb, … … 350 356 skycell_id, 351 357 tess_id, 352 filter); 358 filter, 359 note); 353 360 354 361 if (!stackRunInsertObject(config->dbh, run)) { … … 468 475 469 476 // required options 470 PXOPT_LOOKUP_STR(workdir, config->args, "- workdir", true, false);477 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", true, false); 471 478 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false); 472 479 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false); … … 475 482 // default 476 483 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 477 PXOPT_LOOKUP_TIME(registered, config->args, "- registered", false, false);484 PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false); 478 485 479 486 // options 480 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 481 PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false); 482 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 487 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 488 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 489 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 490 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 491 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 492 PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false); 483 493 484 494 // we have to support multipe exp_ids … … 495 505 workdir, 496 506 label, 507 data_group ? data_group : label, 508 dist_group, 497 509 reduction, 498 510 dvodb, … … 500 512 skycell_id, 501 513 tess_id, 502 filter); 514 filter, 515 note); 503 516 504 517 if (!run) { … … 569 582 PS_ASSERT_PTR_NON_NULL(config, false); 570 583 571 PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", true, false); 584 #ifdef notdef 585 PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", false, false); 572 586 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 573 574 if (state) { 587 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 588 #endif 589 psMetadata *where = psMetadataAlloc(); 590 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); 591 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 592 PXOPT_COPY_STR(config->args, where, "-state", "state", "=="); 593 if (!psListLength(where->list)) { 594 psFree(where); 595 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 596 return false; 597 } 598 599 psString query = psStringCopy("UPDATE stackRun"); 600 601 // pxUpdateRun gets parameters from config->args and updates 602 bool result = pxUpdateRun(config, where, &query, "stackRun", true); 603 604 psFree(query); 605 psFree(where); 606 607 return result; 608 609 #ifdef notdef 610 // Hack-y work around to make stacktool more like the other tools, without breaking other stuff (hopefully). 611 612 if ((state)&&(stack_id)) { 575 613 // set detRun.state to state 576 614 return setstackRunState(config, stack_id, state); 577 615 } 578 616 579 return true; 617 if ((state)&&(label)) { 618 return setstackRunStateByLabel(config, label, state); 619 } 620 621 psError(PS_ERR_UNKNOWN, false, "Required options not found."); 622 return false; 623 #endif 580 624 } 581 625 … … 1006 1050 } 1007 1051 1052 #ifdef notdef 1053 static bool setstackRunStateByLabel(pxConfig *config, const char *label, const char *state) 1054 { 1055 PS_ASSERT_PTR_NON_NULL(state, false); 1056 1057 // check that state is a valid string value 1058 if (!pxIsValidState(state)) { 1059 psError(PS_ERR_UNKNOWN, false, "invalid stackRun state: %s", state); 1060 return false; 1061 } 1062 1063 char *query = "UPDATE stackRun SET state = '%s' WHERE label = '%s'"; 1064 if (!p_psDBRunQueryF(config->dbh, query, state, label)) { 1065 psError(PS_ERR_UNKNOWN, false, 1066 "failed to change state for label %s", label); 1067 return false; 1068 } 1069 1070 return true; 1071 } 1072 #endif 1073 1008 1074 static bool pendingcleanuprunMode(pxConfig *config) 1009 1075 { … … 1231 1297 } 1232 1298 1299 if (!pxExportVersion(config, f)) { 1300 psError(PS_ERR_UNKNOWN, false, "failed to write dbversion output file"); 1301 return false; 1302 } 1233 1303 psMetadata *where = psMetadataAlloc(); 1234 1304 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); … … 1317 1387 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1318 1388 1319 fprintf (stdout, "---- input ----\n"); 1389 #ifdef notdef 1390 fprintf (stderr, "---- input ----\n"); 1320 1391 psMetadataPrint (stderr, input, 1); 1321 1392 #endif 1393 1394 if (!pxCheckImportVersion(config, input)) { 1395 psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed"); 1396 return false; 1397 } 1322 1398 psMetadataItem *item = psMetadataLookup (input, "stackRun"); 1323 1399 psAssert (item, "entry not in input?"); -
branches/eam_branches/20090820/ippTools/src/stacktoolConfig.c
r25766 r25870 47 47 // -definebyquery 48 48 psMetadata *definebyqueryArgs = psMetadataAlloc(); 49 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 50 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 51 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction", NULL); 52 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-dvodb", 0, "define dvodb", NULL); 53 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 49 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL); 50 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 51 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 52 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 54 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction", NULL); 55 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dvodb", 0, "define dvodb", NULL); 56 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-set_registered", 0, "time detrend run was registered", now); 54 57 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_skycell_id", 0, "search for skycell_id", NULL); 55 58 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_good_frac_min", 0, "define min good_frac", 0.0); … … 84 87 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_iq_m4_max", 0, "define max iq_m4", NAN); 85 88 psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-random", 0, "use this number of random elements", 0); 86 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false);87 89 psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-min_num", 0, "minimum number of inputs", 0); 88 90 psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-min_new", 0, "minimum number of new inputs", 0); … … 93 95 // -definerun 94 96 psMetadata *definerunArgs = psMetadataAlloc(); 95 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "- workdir", 0, "define workdir (required)", NULL);96 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "- label", 0, "define label", NULL);97 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "- reduction", 0, "define reduction", NULL);98 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "- dvodb", 0, "define dvodb", NULL);99 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "- registered", 0, "time detrend run was registered", now);97 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir (required)", NULL); 98 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 99 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction", NULL); 100 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_dvodb", 0, "define dvodb", NULL); 101 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-set_registered", 0, "time detrend run was registered", now); 100 102 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-skycell_id", 0, "define skycell ID (required)", NULL); 101 103 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id", 0, "define tessellation ID (required)", NULL); … … 106 108 // -updaterun 107 109 psMetadata *updaterunArgs = psMetadataAlloc(); 108 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-stack_id", 0, "define stack ID (required)", 0); 109 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state (required)", NULL); 110 110 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-stack_id", 0, "search by stack ID", 0); 111 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by state", NULL); 112 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by label", 0); 113 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "define new value for label", 0); 114 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL); 115 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 116 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 117 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 118 111 119 // -addinputskyfile 112 120 psMetadata *addinputskyfileArgs = psMetadataAlloc(); -
branches/eam_branches/20090820/ippTools/src/warptool.c
r25766 r25870 58 58 static bool exportrunMode(pxConfig *config); 59 59 static bool importrunMode(pxConfig *config); 60 static bool runstateMode(pxConfig *config); 60 61 61 62 static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile); … … 108 109 MODECASE(WARPTOOL_MODE_EXPORTRUN, exportrunMode); 109 110 MODECASE(WARPTOOL_MODE_IMPORTRUN, importrunMode); 111 MODECASE(WARPTOOL_MODE_RUNSTATE, runstateMode); 110 112 111 113 default: … … 139 141 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required 140 142 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 143 PXOPT_LOOKUP_STR(data_group, config->args, "-data_group", false, false); 144 PXOPT_LOOKUP_STR(dist_group, config->args, "-dist_group", false, false); 145 PXOPT_LOOKUP_STR(note, config->args, "-note", false, false); 141 146 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 142 147 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false); // required (no default TESS) … … 160 165 "dirty", // workdir_state 161 166 label, 167 data_group ? data_group : label, 168 dist_group, 162 169 dvodb, 163 170 tess_id, … … 165 172 end_stage, 166 173 registered, 167 0 // magicked 174 0, // magicked 175 note 168 176 ); 169 177 if (!warpRun) { … … 251 259 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", false, false); 252 260 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 261 PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false); 262 PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false); 253 263 PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false); 254 264 PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false); 255 265 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 256 266 PXOPT_LOOKUP_STR(end_stage, config->args, "-set_end_stage", false, false); 267 PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false); 257 268 258 269 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); … … 340 351 workdir ? workdir : row->workdir, 341 352 label ? label : row->label, 353 data_group ? data_group: row->data_group, 354 dist_group ? dist_group: row->dist_group, 342 355 dvodb ? dvodb : row->dvodb, 343 356 tess_id ? tess_id : row->tess_id, 344 357 reduction ? reduction : row->reduction, 345 end_stage ? end_stage : row->end_stage)) 358 end_stage ? end_stage : row->end_stage, 359 note)) 346 360 { 347 361 psError(PS_ERR_UNKNOWN, false, "failed to trying to queue fake_id: %" PRId64, row->fake_id); … … 371 385 PXOPT_COPY_STR(config->args, where, "-label", "warpRun.label", "=="); 372 386 PXOPT_COPY_STR(config->args, where, "-state", "warpRun.state", "=="); 373 374 if (!psListLength(where->list) 375 && !psMetadataLookupBool(NULL, config->args, "-all")) { 387 PXOPT_COPY_STR(config->args, where, "-data_group","warpRun.data_group", "=="); 388 PXOPT_COPY_STR(config->args, where, "-dist_group","warpRun.dist_group", "=="); 389 390 if (!psListLength(where->list)) { 376 391 psFree(where); 377 where = NULL;378 392 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); 379 393 return false; 380 394 } 381 382 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 383 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 384 385 if ((!state) && (!label)) { 386 psError(PXTOOLS_ERR_DATA, false, "parameters (-state or -label) are required"); 387 psFree(where); 388 return false; 389 } 390 391 if (state) { 392 // set warpRun.state to state 393 if (!pxwarpRunSetStateByQuery(config, where, state)) { 394 psFree(where); 395 return false; 396 } 397 } 398 399 if (label) { 400 // set chipRun.label to label 401 if (!pxwarpRunSetLabelByQuery(config, where, label)) { 402 psFree(where); 403 return false; 404 } 405 } 406 395 396 psString query = psStringCopy("UPDATE warpRun JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id)"); 397 398 // pxUpdateRun gets parameters from config->args and updates 399 bool result = pxUpdateRun(config, where, &query, "warpRun", true); 400 401 psFree(query); 407 402 psFree(where); 408 403 409 return true; 410 } 411 404 return result; 405 } 412 406 413 407 static bool expMode(pxConfig *config) … … 1204 1198 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "LIKE"); 1205 1199 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 1200 PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 1211 1201 … … 1220 1210 } 1221 1211 1212 // generate where strings for arguments that require extra processing 1213 // beyond PXOPT_COPY* 1214 psString where2 = NULL; 1215 if (!pxmagicAddWhere(config, &where2, "warpSkyfile")) { 1216 psError(PXTOOLS_ERR_DATA, false, "pxMagicAddWhere failed"); 1217 return false; 1218 } 1219 if (!pxspaceAddWhere(config, &where2, "rawExp")) { 1220 psError(PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed"); 1221 return false; 1222 } 1223 1222 1224 if (psListLength(where->list)) { 1223 1225 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1224 1226 psStringAppend(&query, " AND %s", whereClause); 1225 1227 psFree(whereClause); 1226 } else if (!all ) {1228 } else if (!all && !where2) { 1227 1229 psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required"); 1228 1230 return false; … … 1230 1232 psFree(where); 1231 1233 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"); 1234 if (where2) { 1235 psStringAppend(&query, " %s", where2); 1245 1236 } 1246 1237 … … 1712 1703 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false); 1713 1704 PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false); 1714 1715 psString query = pxDataGet("warptool_updateskyfile.sql"); 1716 1717 if (!p_psDBRunQueryF(config->dbh, query, fault, warp_id, skycell_id)) { 1718 psError(PS_ERR_UNKNOWN, false, "database error"); 1719 return false; 1720 } 1721 psFree(query); 1705 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 1706 1707 if (!state) { 1708 psString query = pxDataGet("warptool_updateskyfile.sql"); 1709 1710 if (!p_psDBRunQueryF(config->dbh, query, fault, warp_id, skycell_id)) { 1711 psError(PS_ERR_UNKNOWN, false, "database error"); 1712 return false; 1713 } 1714 psFree(query); 1715 } 1716 else { 1717 if (strcmp(state,"error_cleaned") == 0) { 1718 change_skyfile_data_state(config,"error_cleaned","goto_cleaned"); 1719 } 1720 else if (strcmp(state, "error_scrubbed") == 0) { 1721 change_skyfile_data_state(config,"error_scrubbed","goto_scrubbed"); 1722 } 1723 else if (strcmp(state, "error_purged") == 0) { 1724 change_skyfile_data_state(config,"error_purged","goto_purged"); 1725 } 1726 else { 1727 psError(PS_ERR_UNKNOWN, false, "unhandled state given"); 1728 return(false); 1729 } 1730 } 1722 1731 1723 1732 return true; … … 1744 1753 } 1745 1754 1755 if (!pxExportVersion(config, f)) { 1756 psError(PS_ERR_UNKNOWN, false, "failed to write dbversion output file"); 1757 return false; 1758 } 1746 1759 psMetadata *where = psMetadataAlloc(); 1747 1760 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); … … 1836 1849 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1837 1850 1838 fprintf (stdout, "---- input ----\n"); 1851 #ifdef notdef 1852 fprintf (stderr, "---- input ----\n"); 1839 1853 psMetadataPrint (stderr, input, 1); 1854 #endif 1855 1856 if (!pxCheckImportVersion(config, input)) { 1857 psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed"); 1858 return false; 1859 } 1840 1860 1841 1861 psMetadataItem *item = psMetadataLookup (input, "warpRun"); … … 1900 1920 return true; 1901 1921 } 1922 1923 static bool runstateMode(pxConfig *config) 1924 { 1925 PS_ASSERT_PTR_NON_NULL(config, false); 1926 1927 psMetadata *where = psMetadataAlloc(); 1928 PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "=="); 1929 PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "=="); 1930 PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "=="); 1931 pxAddLabelSearchArgs (config, where, "-label", "warpRun.label", "LIKE"); 1932 1933 // PXOPT_LOOKUP_BOOL(all, config->args, "-all", false); 1934 PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false); 1935 1936 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1937 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1938 1939 psString query = pxDataGet("warptool_runstate.sql"); 1940 if (!query) { 1941 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1942 return false; 1943 } 1944 1945 if (psListLength(where->list)) { 1946 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1947 psStringAppend(&query, " WHERE %s", whereClause); 1948 psFree(whereClause); 1949 } else { 1950 psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required"); 1951 return false; 1952 } 1953 psFree(where); 1954 1955 // treat limit == 0 as "no limit" 1956 if (limit) { 1957 psString limitString = psDBGenerateLimitSQL(limit); 1958 psStringAppend(&query, " %s", limitString); 1959 psFree(limitString); 1960 } 1961 1962 if (!p_psDBRunQuery(config->dbh, query)) { 1963 psError(PS_ERR_UNKNOWN, false, "database error"); 1964 psFree(query); 1965 return false; 1966 } 1967 psFree(query); 1968 1969 psArray *output = p_psDBFetchResult(config->dbh); 1970 if (!output) { 1971 psErrorCode err = psErrorCodeLast(); 1972 switch (err) { 1973 case PS_ERR_DB_CLIENT: 1974 psError(PXTOOLS_ERR_SYS, false, "database error"); 1975 case PS_ERR_DB_SERVER: 1976 psError(PXTOOLS_ERR_PROG, false, "database error"); 1977 default: 1978 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 1979 } 1980 1981 return false; 1982 } 1983 if (!psArrayLength(output)) { 1984 psTrace("warptool", PS_LOG_INFO, "no rows found"); 1985 psFree(output); 1986 return true; 1987 } 1988 1989 if (psArrayLength(output)) { 1990 // negative simple so the default is true 1991 if (!ippdbPrintMetadatas(stdout, output, "warpRunState", !simple)) { 1992 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1993 psFree(output); 1994 return false; 1995 } 1996 } 1997 1998 psFree(output); 1999 2000 return true; 2001 } -
branches/eam_branches/20090820/ippTools/src/warptool.h
r25766 r25870 53 53 WARPTOOL_MODE_UPDATESKYFILE, 54 54 WARPTOOL_MODE_EXPORTRUN, 55 WARPTOOL_MODE_IMPORTRUN 55 WARPTOOL_MODE_IMPORTRUN, 56 WARPTOOL_MODE_RUNSTATE, 56 57 } warptoolMode; 57 58 -
branches/eam_branches/20090820/ippTools/src/warptoolConfig.c
r25766 r25870 100 100 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL); 101 101 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_end_stage", 0, "define end stage", NULL); 102 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 102 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 103 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 104 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 103 105 104 106 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); … … 117 119 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 118 120 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 121 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_end_stage", 0, "define end stage", NULL); 122 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define data group", NULL); 123 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define dist group", NULL); 124 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-set_note", 0, "define note", NULL); 119 125 120 126 // -updaterun … … 128 134 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "search by warpRun state", NULL); 129 135 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "search by warpRun label", NULL); 130 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 131 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 132 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "set label", NULL); 133 136 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0, "search by warpRun data_group", NULL); 137 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-dist_group", 0, "search by warpRun dist_group", NULL); 138 139 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_state", 0, "define new state", NULL); 140 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_label", 0, "define new value for label", 0); 141 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_data_group", 0, "define new data_group", NULL); 142 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0, "define new dist_group", NULL); 143 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0, "define new note", NULL); 134 144 // -exp 135 145 psMetadata *expArgs = psMetadataAlloc(); … … 218 228 psMetadataAddTime(warpedArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<=)", NULL); 219 229 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 230 psMetadataAddS16(warpedArgs, PS_LIST_TAIL, "-fault", 0, "search by fault code", 0); 224 231 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by warpRun label", NULL); 232 // add magic related arguments 233 pxmagicAddArguments(warpedArgs); 234 // add arguments for spatial search 235 pxspaceAddArguments(warpedArgs); 225 236 226 237 psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-all", 0, "search without arguments", false); … … 304 315 psMetadataAddStr(updateskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 305 316 psMetadataAddS16(updateskyfileArgs, PS_LIST_TAIL, "-fault", 0, "new fault code", 0); 306 317 psMetadataAddStr(updateskyfileArgs, PS_LIST_TAIL, "-set_state", 0, "set state", 0); 318 307 319 // -exportrun 308 320 psMetadata *exportrunArgs = psMetadataAlloc(); … … 315 327 psMetadata *importrunArgs = psMetadataAlloc(); 316 328 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 329 330 // -runstate 331 psMetadata *runstateArgs = psMetadataAlloc(); 332 psMetadataAddS64(runstateArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID", 0); 333 // psMetadataAddStr(runstateArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tessellation ID", NULL); 334 psMetadataAddS64(runstateArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure tag", 0); 335 psMetadataAddStr(runstateArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exposure tag", 0); 336 psMetadataAddStr(runstateArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by warpRun label", NULL); 337 psMetadataAddBool(runstateArgs, PS_LIST_TAIL, "-no_magic", 0, "magic is not necessary for result", false); 338 339 psMetadataAddU64(runstateArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 340 psMetadataAddBool(runstateArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 317 341 318 342 … … 334 358 PXOPT_ADD_MODE("-advancerun", "", WARPTOOL_MODE_ADVANCERUN, advancerunArgs); 335 359 PXOPT_ADD_MODE("-warped", "", WARPTOOL_MODE_WARPED, warpedArgs); 360 PXOPT_ADD_MODE("-runstate", "", WARPTOOL_MODE_RUNSTATE, runstateArgs); 336 361 PXOPT_ADD_MODE("-revertwarped", "", WARPTOOL_MODE_REVERTWARPED, revertwarpedArgs); 337 362 PXOPT_ADD_MODE("-block", "set a label block", WARPTOOL_MODE_BLOCK, blockArgs);
Note:
See TracChangeset
for help on using the changeset viewer.
