Changeset 18561
- Timestamp:
- Jul 15, 2008, 10:30:59 AM (18 years ago)
- Location:
- trunk/ippTools
- Files:
-
- 19 added
- 41 edited
-
notes.txt (modified) (1 diff)
-
share/Makefile.am (modified) (6 diffs)
-
share/dettool_addprocessedexp.sql (added)
-
share/dettool_childlessrun.sql (added)
-
share/dettool_definebydetrun.sql (added)
-
share/dettool_detrunsummary.sql (added)
-
share/dettool_input.sql (added)
-
share/dettool_normalizedexp.sql (added)
-
share/dettool_normalizedimfile.sql (added)
-
share/dettool_pending.sql (added)
-
share/dettool_processedimfile.sql (added)
-
share/dettool_residexp.sql (added)
-
share/dettool_residimfile.sql (added)
-
share/dettool_stacked.sql (added)
-
share/dettool_tonormalize.sql (added)
-
share/dettool_tonormalizedexp.sql (modified) (1 diff)
-
share/dettool_toresidexp.sql (modified) (1 diff)
-
share/dettool_toresidimfile.sql (modified) (2 diffs)
-
share/difftool_queue.sql (modified) (1 diff)
-
share/magictool_create_tmp_warpcomplete.sql (added)
-
share/pstamptool_addjob_otherjob.sql (added)
-
share/pstamptool_addjob_stampjob.sql (added)
-
share/pstamptool_datastore.sql (added)
-
share/pstamptool_pendingjob.sql (added)
-
share/pstamptool_pendingreq.sql (added)
-
src/caltool.c (modified) (2 diffs)
-
src/caltoolConfig.c (modified) (3 diffs)
-
src/camtool.c (modified) (15 diffs)
-
src/camtoolConfig.c (modified) (2 diffs)
-
src/chiptool.c (modified) (1 diff)
-
src/chiptoolConfig.c (modified) (1 diff)
-
src/detselect.c (modified) (4 diffs)
-
src/detselect.h (modified) (1 diff)
-
src/detselectConfig.c (modified) (2 diffs)
-
src/dettool.c (modified) (99 diffs)
-
src/dettool.h (modified) (1 diff)
-
src/dettoolConfig.c (modified) (4 diffs)
-
src/dettool_correction.c (modified) (10 diffs)
-
src/difftool.c (modified) (15 diffs)
-
src/difftoolConfig.c (modified) (2 diffs)
-
src/flatcorr.c (modified) (8 diffs)
-
src/flatcorrConfig.c (modified) (3 diffs)
-
src/guidetool.c (modified) (2 diffs)
-
src/guidetoolConfig.c (modified) (2 diffs)
-
src/magictool.c (modified) (20 diffs)
-
src/magictoolConfig.c (modified) (3 diffs)
-
src/pstamptool.c (modified) (26 diffs)
-
src/pstamptoolConfig.c (modified) (2 diffs)
-
src/pxconfig.c (modified) (2 diffs)
-
src/pxconfig.h (modified) (1 diff)
-
src/pxinjectConfig.c (modified) (2 diffs)
-
src/pxtools.h (modified) (2 diffs)
-
src/pztool.c (modified) (13 diffs)
-
src/pztoolConfig.c (modified) (3 diffs)
-
src/regtool.c (modified) (13 diffs)
-
src/regtoolConfig.c (modified) (7 diffs)
-
src/stacktool.c (modified) (8 diffs)
-
src/stacktoolConfig.c (modified) (3 diffs)
-
src/warptool.c (modified) (19 diffs)
-
src/warptoolConfig.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/notes.txt
r18448 r18561 1 2 2008.07.11 EAM 3 4 * break dettool.c into files for each detrend stage 5 * require -iteration in more places? (esp -add...) 6 * allow %s, %d arguments in the *.sql files or not? 7 * adddetrunsummary has the ability to set values for multiple detRunSummary entries. why? 1 8 2 9 2008.07.09 EAM -
trunk/ippTools/share/Makefile.am
r18526 r18561 10 10 chiptool_donecleanup.sql \ 11 11 chiptool_find_rawexp.sql \ 12 chiptool_ find_unprocessed_imfile.pl \12 chiptool_pendingcleanupimfile.sql \ 13 13 chiptool_pendingcleanuprun.sql \ 14 chiptool_pendingcleanupimfile.sql \15 14 chiptool_pendingimfile.sql \ 16 15 chiptool_processedimfile.sql \ 16 chiptool_revertprocessedimfile.sql \ 17 17 chiptool_run.sql \ 18 chiptool_revertprocessedimfile.sql \19 18 chiptool_unmasked.sql \ 20 19 detselect_search.sql \ 21 20 detselect_select.sql \ 21 dettool_addprocessedexp.sql \ 22 dettool_childlessrun.sql \ 23 dettool_definebydetrun.sql \ 24 dettool_detrunsummary.sql \ 22 25 dettool_find_completed_runs.sql \ 26 dettool_input.sql \ 27 dettool_normalizedexp.sql \ 28 dettool_normalizedimfile.sql \ 23 29 dettool_normalizedstat.sql \ 30 dettool_pending.sql \ 31 dettool_processedimfile.sql \ 24 32 dettool_raw.sql \ 33 dettool_residexp.sql \ 34 dettool_residimfile.sql \ 25 35 dettool_revertdetrunsummary.sql \ 26 36 dettool_revertnormalizedexp.sql \ … … 33 43 dettool_revertstacked.sql \ 34 44 dettool_runs.sql \ 45 dettool_stacked.sql \ 35 46 dettool_start_new_iteration.sql \ 36 47 dettool_stop_completed_correct_runs.sql \ … … 38 49 dettool_tocorrectimfile.sql \ 39 50 dettool_todetrunsummary.sql \ 51 dettool_tonormalize.sql \ 40 52 dettool_tonormalizedexp.sql \ 41 53 dettool_tonormalizedstat.sql \ … … 62 74 flatcorr_find_completed_floatcorruns.sql \ 63 75 flatcorr_find_processedimfiles.sql \ 76 flatcorr_pending.sql \ 77 magictool_create_tmp_warpcomplete.sql \ 64 78 magictool_find_complete_diffed_exposures.sql \ 65 79 magictool_find_complete_warpruns.sql \ 80 magictool_find_unmagiced.sql \ 66 81 magictool_inputskyfile.sql \ 67 82 magictool_totree.sql \ … … 73 88 magictool_addmask.sql \ 74 89 magictool_mask.sql \ 90 pstamptool_addjob_otherjob.sql \ 91 pstamptool_addjob_stampjob.sql \ 92 pstamptool_datastore.sql \ 93 pstamptool_pendingjob.sql \ 94 pstamptool_pendingreq.sql \ 75 95 pxadmin_create_tables.sql \ 76 96 pxadmin_drop_tables.sql \ 77 97 pztool_find_completed_exp.sql \ 78 98 pztool_pendingimfile.sql \ 79 pztool_revertcopied.sql \80 99 pztool_revert_downloadimfile_faults.sql \ 81 100 pztool_revert_fileset_faults.sql \ 101 pztool_revertcopied.sql \ 82 102 regtool_create_dup_table.sql \ 83 103 regtool_pendingexp.sql \ … … 95 115 warptool_exp.sql \ 96 116 warptool_imfile.sql \ 117 warptool_revertwarped.sql \ 97 118 warptool_scmap.sql \ 98 119 warptool_tooverlap.sql \ 99 warptool_revertwarped.sql \100 120 warptool_towarped.sql \ 101 121 warptool_warped.sql -
trunk/ippTools/share/dettool_tonormalizedexp.sql
r15855 r18561 1 -- this is used by both 'tonormalizedexp' and 'addnormalizedexp' 2 1 3 SELECT 2 4 * -
trunk/ippTools/share/dettool_toresidexp.sql
r15769 r18561 1 -- this is used by both 'toresidexp' and 'addresidexp' 2 1 3 -- which returns a list of exposures for which all component class ids have had 2 4 -- residuals created. This list includes the detrend id, iteration, exposure -
trunk/ippTools/share/dettool_toresidimfile.sql
r18126 r18561 40 40 AND detRun.mode = 'master' 41 41 AND detNormalizedImfile.fault = 0 42 AND detNormalizedExp.fault = 0 42 43 AND detResidImfile.det_id IS NULL 43 44 AND detResidImfile.iteration IS NULL … … 73 74 detRun.state = 'run' 74 75 AND detRun.mode = 'verify' 76 -- AND detNormalizedImfile.fault = 0 77 -- AND detNormalizedExp.fault = 0 75 78 AND detResidImfile.det_id IS NULL 76 79 AND detResidImfile.iteration IS NULL -
trunk/ippTools/share/difftool_queue.sql
r17712 r18561 3 3 stackRun.tess_id, 4 4 stackRun.stack_id, 5 diffInputSkyfile.template, 5 6 warpSkyfile.warp_id 6 7 FROM stackSumSkyfile -
trunk/ippTools/src/caltool.c
r18336 r18561 110 110 111 111 psString query = psStringCopy("SELECT * FROM calDB"); 112 113 if (config->where) {114 psString whereClause = psDBGenerateWhereSQL(config->where, NULL);115 psStringAppend(&query, " %s", whereClause);116 psFree(whereClause);117 }118 112 119 113 // treat limit == 0 as "no limit" … … 195 189 PS_ASSERT_PTR_NON_NULL(config, false); 196 190 191 psMetadata *where = psMetadataAlloc(); 192 PXOPT_COPY_STR(config->args, where, "-cal_id", "cal_id", "=="); 193 197 194 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 198 195 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 196 PXOPT_LOOKUP_BOOL(faulted, config->args, "-simple", false); 199 197 200 198 psString query = psStringCopy("SELECT * FROM calRun"); 201 199 202 if (config->where) { 203 psString whereClause = psDBGenerateWhereSQL(config->where, NULL); 200 if (faulted) { 201 // list only faulted rows 202 psStringAppend(&query, " %s", "WHERE fault != 0"); 203 } else { 204 // don't list faulted rows 205 psStringAppend(&query, " %s", "WHERE fault = 0"); 206 } 207 208 if (psListLength(where->list)) { 209 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 204 210 psStringAppend(&query, " %s", whereClause); 205 211 psFree(whereClause); 206 212 } 213 psFree(where); 207 214 208 215 // treat limit == 0 as "no limit" 209 216 if (limit) { 210 217 psString limitString = psDBGenerateLimitSQL(limit); 211 psStringAppend(&query, " %s", limitString);218 psStringAppend(&query, " AND %s", limitString); 212 219 psFree(limitString); 213 220 } -
trunk/ippTools/src/caltoolConfig.c
r18172 r18561 49 49 // -adddb 50 50 psMetadata *adddbArgs = psMetadataAlloc(); 51 psMetadataAddStr(adddbArgs, PS_LIST_TAIL, "-dvodb", 0, 52 "define DVO db (required)", NULL); 51 psMetadataAddStr(adddbArgs, PS_LIST_TAIL, "-dvodb", 0, "define DVO db (required)", NULL); 53 52 54 53 // -dbs 55 54 psMetadata *dbsArgs = psMetadataAlloc(); 56 psMetadataAddU64(dbsArgs, PS_LIST_TAIL, "-limit", 0, 57 "limit result set to N items", 0); 58 psMetadataAddBool(dbsArgs, PS_LIST_TAIL, "-simple", 0, 59 "use the simple output format", false); 55 psMetadataAddU64(dbsArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 56 psMetadataAddBool(dbsArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 60 57 61 58 // -addrun 62 59 psMetadata *addrunArgs = psMetadataAlloc(); 63 psMetadataAddStr(addrunArgs, PS_LIST_TAIL, "-cal_id", 0, 64 "define calibration DB ID (required)", NULL); 65 psMetadataAddStr(addrunArgs, PS_LIST_TAIL, "-region", 0, 66 "define region (required)", NULL); 67 psMetadataAddStr(addrunArgs, PS_LIST_TAIL, "-last_step", 0, 68 "define last step (required)", NULL); 69 psMetadataAddStr(addrunArgs, PS_LIST_TAIL, "-state", 0, 70 "define state (required)", NULL); 60 psMetadataAddStr(addrunArgs, PS_LIST_TAIL, "-cal_id", 0, "define calibration DB ID (required)", NULL); 61 psMetadataAddStr(addrunArgs, PS_LIST_TAIL, "-region", 0, "define region (required)", NULL); 62 psMetadataAddStr(addrunArgs, PS_LIST_TAIL, "-last_step", 0, "define last step (required)", NULL); 63 psMetadataAddStr(addrunArgs, PS_LIST_TAIL, "-state", 0, "define state (required)", NULL); 71 64 72 65 // -runs 73 66 psMetadata *runsArgs = psMetadataAlloc(); 74 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-cal_id", 0, 75 "search for calibration ID", NULL); 76 psMetadataAddU64(runsArgs, PS_LIST_TAIL, "-limit", 0, 77 "limit result set to N items", 0); 78 psMetadataAddBool(runsArgs, PS_LIST_TAIL, "-faulted", 0, 79 "only return imfiles with a fault status set", false); 80 psMetadataAddBool(runsArgs, PS_LIST_TAIL, "-simple", 0, 81 "use the simple output format", false); 67 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-cal_id", 0, "search for calibration ID", NULL); 68 psMetadataAddU64(runsArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 69 psMetadataAddBool(runsArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 70 psMetadataAddBool(runsArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 82 71 83 72 psFree(now); … … 86 75 psMetadata *modes = psMetadataAlloc(); 87 76 88 PXOPT_ADD_MODE("-adddb", "add a DVO calibration DB", 89 CALTOOL_MODE_ADDDB, adddbArgs); 90 PXOPT_ADD_MODE("-dbs", "list DVO calibration DBs", 91 CALTOOL_MODE_DBS, dbsArgs); 92 PXOPT_ADD_MODE("-addrun", "add the results of a calibration run", 93 CALTOOL_MODE_ADDRUN, addrunArgs); 94 PXOPT_ADD_MODE("-runs", "list the results of calibration runs", 95 CALTOOL_MODE_RUNS, runsArgs); 77 PXOPT_ADD_MODE("-adddb", "add a DVO calibration DB", CALTOOL_MODE_ADDDB, adddbArgs); 78 PXOPT_ADD_MODE("-dbs", "list DVO calibration DBs", CALTOOL_MODE_DBS, dbsArgs); 79 PXOPT_ADD_MODE("-addrun", "add the results of a calibration run", CALTOOL_MODE_ADDRUN, addrunArgs); 80 PXOPT_ADD_MODE("-runs", "list the results of calibration runs", CALTOOL_MODE_RUNS, runsArgs); 96 81 97 82 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { … … 105 90 psFree(argSets); 106 91 psFree(modes); 107 108 // setup search criterion109 #define addWhereStr(name) \110 { \111 psString str = NULL; \112 bool status = false; \113 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \114 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\115 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \116 psFree(config); \117 return NULL; \118 } \119 } \120 }121 122 // generate SQL where clause123 config->where = psMetadataAlloc();124 125 addWhereStr(det_id);126 {127 // XXX this is broke because you can't specify -iteration 0128 psMetadataItem *item = psMetadataLookup(config->args, "-iteration");129 if (item && psStrcasestr(item->comment, "found")) {130 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "iteration", 0, "==", item->data.S32)) {131 psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");132 psFree(config);133 return NULL;134 }135 }136 }137 138 addWhereStr(det_id);139 140 // convert '-code' to 'fault'141 {142 psS16 fault = 0;143 bool status = false;144 if ((fault = psMetadataLookupS16(&status, config->args, "-code"))) {145 if (!psMetadataAddS16(config->where, PS_LIST_TAIL, "fault", 0, "==", fault)) {146 psError(PS_ERR_UNKNOWN, false, "failed to add item fault");147 psFree(config);148 return NULL;149 }150 }151 }152 153 if (config->where->list->n < 1) {154 psFree(config->where);155 config->where = NULL;156 }157 92 158 93 // define Database handle, if used -
trunk/ippTools/src/camtool.c
r18459 r18561 110 110 PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "=="); 111 111 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 112 113 112 PXOPT_COPY_F64(config->args, where, "-airmass_min", "airmass", ">="); 114 113 PXOPT_COPY_F64(config->args, where, "-airmass_max", "airmass", "<"); … … 162 161 } 163 162 163 // use psDBGenerateWhereSQL because the SQL yields an intermediate table 164 164 if (where && psListLength(where->list)) { 165 165 psString whereClause = psDBGenerateWhereSQL(where, NULL); … … 263 263 PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "=="); 264 264 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 265 266 265 PXOPT_COPY_F64(config->args, where, "-airmass_min", "airmass", ">="); 267 266 PXOPT_COPY_F64(config->args, where, "-airmass_max", "airmass", "<"); … … 334 333 PS_ASSERT_PTR_NON_NULL(config, false); 335 334 335 psMetadata *where = psMetadataAlloc(); 336 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); 337 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 338 336 339 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 337 340 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 343 346 } 344 347 345 if (config->where) { 346 psString whereClause = psDBGenerateWhereSQL(config->where, NULL); 347 psStringAppend(&query, " %s", whereClause); 348 // use psDBGenerateWhereSQL because the SQL yields an intermediate table 349 if (psListLength(where->list)) { 350 psString whereClause = psDBGenerateWhereSQL(where, NULL); 351 psStringAppend(&query, "%s", whereClause); 348 352 psFree(whereClause); 349 353 } 354 psFree(where); 350 355 351 356 // treat limit == 0 as "no limit" … … 390 395 PS_ASSERT_PTR_NON_NULL(config, false); 391 396 397 psMetadata *where = psMetadataAlloc(); 398 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); 399 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 400 PXOPT_COPY_STR(config->args, where, "-class", "class", "=="); 401 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 402 392 403 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 393 404 … … 398 409 } 399 410 400 if (config->where) { 401 psString whereClause = psDBGenerateWhereSQL(config->where, NULL); 402 psStringAppend(&query, " %s", whereClause); 411 // use psDBGenerateWhereSQL because the SQL yields an intermediate table 412 if (psListLength(where->list)) { 413 psString whereClause = psDBGenerateWhereSQL(where, NULL); 414 psStringAppend(&query, "%s", whereClause); 403 415 psFree(whereClause); 404 416 } 417 psFree(where); 405 418 406 419 if (!p_psDBRunQuery(config->dbh, query)) { … … 463 476 PXOPT_LOOKUP_F32(dtime_astrom, config->args, "-dtime_astrom", false, false); 464 477 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 465 PXOPT_LOOKUP_F32(n_stars, config->args, "-n_stars", false, false); 466 PXOPT_LOOKUP_F32(n_extended, config->args, "-n_extended", false, false); 467 if (n_extended < 0) { 468 psError(PS_ERR_UNKNOWN, true, "-n_extended is required"); 469 return false; 470 } 471 PXOPT_LOOKUP_F32(n_cr, config->args, "-n_cr", false, false); 472 if (n_cr < 0) { 473 psError(PS_ERR_UNKNOWN, true, "-n_cr is required"); 474 return false; 475 } 476 PXOPT_LOOKUP_F32(n_astrom, config->args, "-n_astrom", false, false); 477 if (n_astrom < 0) { 478 psError(PS_ERR_UNKNOWN, true, "-n_astrom is required"); 479 return false; 480 } 481 478 PXOPT_LOOKUP_S32(n_stars, config->args, "-n_stars", false, false); 479 PXOPT_LOOKUP_S32(n_extended, config->args, "-n_extended", false, false); 480 PXOPT_LOOKUP_S32(n_cr, config->args, "-n_cr", false, false); 481 PXOPT_LOOKUP_S32(n_astrom, config->args, "-n_astrom", false, false); 482 482 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 483 484 // default485 483 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 484 485 // generate restrictions 486 psMetadata *where = psMetadataAlloc(); 487 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); 486 488 487 489 psString query = pxDataGet("camtool_find_pendingexp.sql"); … … 491 493 } 492 494 493 { 494 // build a query to search by cam_id 495 psMetadata *where = psMetadataAlloc(); 496 if (cam_id) { 497 if (!psMetadataAddS64(where, PS_LIST_TAIL, "cam_id", 0, "==", cam_id)) { 498 psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id"); 499 psFree(where); 500 psFree(query); 501 return false; 502 } 503 } 504 495 // use psDBGenerateWhereSQL because the SQL yields an intermediate table 496 if (psListLength(where->list)) { 505 497 psString whereClaus = psDBGenerateWhereSQL(where, NULL); 506 psFree(where); 507 if (whereClaus) { 508 psStringAppend(&query, " %s", whereClaus); 509 psFree(whereClaus); 510 } 511 512 } 498 psStringAppend(&query, "%s", whereClaus); 499 psFree(whereClaus); 500 } 501 psFree(where); 513 502 514 503 if (!p_psDBRunQuery(config->dbh, query)) { … … 640 629 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 641 630 631 // generate restrictions 632 psMetadata *where = psMetadataAlloc(); 633 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); 634 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 635 642 636 psString query = pxDataGet("camtool_find_processedexp.sql"); 643 637 if (!query) { … … 646 640 } 647 641 648 if (config->where) { 649 psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL); 642 // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE 643 if (psListLength(where->list)) { 644 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 650 645 psStringAppend(&query, " AND %s", whereClause); 651 646 psFree(whereClause); 652 647 } 648 psFree(where); 653 649 654 650 if (faulted) { … … 716 712 PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "=="); 717 713 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 718 719 PXOPT_COPY_F64(config->args, where, "-airmass_min", "airmass", ">="); 720 PXOPT_COPY_F64(config->args, where, "-airmass_max", "airmass", "<"); 714 PXOPT_COPY_F32(config->args, where, "-airmass_min", "airmass", ">="); 715 PXOPT_COPY_F32(config->args, where, "-airmass_max", "airmass", "<"); 721 716 PXOPT_COPY_F64(config->args, where, "-ra_min", "ra", ">="); 722 717 PXOPT_COPY_F64(config->args, where, "-ra_max", "ra", "<"); … … 745 740 PXOPT_COPY_F32(config->args, where, "-solang_max", "solang", "<"); 746 741 747 if (!psListLength(where->list) 748 && !psMetadataLookupBool(NULL, config->args, "-all")) { 742 if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) { 749 743 psFree(where); 750 744 psError(PXTOOLS_ERR_DATA, false, "search parameters are required"); … … 758 752 } 759 753 760 { 761 psString query = pxDataGet("camtool_reset_faulted_runs.sql"); 762 if (!query) { 763 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 764 psFree(where); 765 return false; 766 } 767 768 if (where && psListLength(where->list)) { 769 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 770 psStringAppend(&query, " AND %s", whereClause); 771 psFree(whereClause); 772 } 773 774 if (!p_psDBRunQuery(config->dbh, query)) { 775 // rollback 776 if (!psDBRollback(config->dbh)) { 777 psError(PS_ERR_UNKNOWN, false, "database error"); 778 } 779 psError(PS_ERR_UNKNOWN, false, "database error"); 780 psFree(query); 781 psFree(where); 782 return false; 783 } 784 psFree(query); 785 } 786 787 { 788 psString query = pxDataGet("camtool_revertprocessedexp.sql"); 789 if (!query) { 790 // rollback 791 if (!psDBRollback(config->dbh)) { 792 psError(PS_ERR_UNKNOWN, false, "database error"); 793 } 794 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 795 psFree(where); 796 return false; 797 } 798 799 if (where && psListLength(where->list)) { 800 psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL); 801 psStringAppend(&query, " AND %s", whereClause); 802 psFree(whereClause); 803 } 804 805 if (!p_psDBRunQuery(config->dbh, query)) { 806 // rollback 807 if (!psDBRollback(config->dbh)) { 808 psError(PS_ERR_UNKNOWN, false, "database error"); 809 } 810 psError(PS_ERR_UNKNOWN, false, "database error"); 811 psFree(query); 812 psFree(where); 813 return false; 814 } 815 psFree(query); 816 } 754 { 755 psString query = pxDataGet("camtool_reset_faulted_runs.sql"); 756 if (!query) { 757 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 758 psFree(where); 759 return false; 760 } 761 762 // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE 763 if (where && psListLength(where->list)) { 764 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 765 psStringAppend(&query, " AND %s", whereClause); 766 psFree(whereClause); 767 } 768 769 if (!p_psDBRunQuery(config->dbh, query)) { 770 // rollback 771 if (!psDBRollback(config->dbh)) { 772 psError(PS_ERR_UNKNOWN, false, "database error"); 773 } 774 psError(PS_ERR_UNKNOWN, false, "database error"); 775 psFree(query); 776 psFree(where); 777 return false; 778 } 779 psFree(query); 780 } 781 782 { 783 psString query = pxDataGet("camtool_revertprocessedexp.sql"); 784 if (!query) { 785 // rollback 786 if (!psDBRollback(config->dbh)) { 787 psError(PS_ERR_UNKNOWN, false, "database error"); 788 } 789 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 790 psFree(where); 791 return false; 792 } 793 794 // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE 795 if (where && psListLength(where->list)) { 796 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 797 psStringAppend(&query, " AND %s", whereClause); 798 psFree(whereClause); 799 } 800 801 if (!p_psDBRunQuery(config->dbh, query)) { 802 // rollback 803 if (!psDBRollback(config->dbh)) { 804 psError(PS_ERR_UNKNOWN, false, "database error"); 805 } 806 psError(PS_ERR_UNKNOWN, false, "database error"); 807 psFree(query); 808 psFree(where); 809 return false; 810 } 811 psFree(query); 812 } 817 813 psFree(where); 818 814 … … 832 828 PXOPT_LOOKUP_S16(code, config->args, "-code", true, false); 833 829 834 if (!pxSetFaultCode(config->dbh, "camProcessedExp", config->where, code)) { 830 psMetadata *where = psMetadataAlloc(); 831 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); 832 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 833 PXOPT_COPY_STR(config->args, where, "-class", "class", "=="); 834 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 835 836 if (!pxSetFaultCode(config->dbh, "camProcessedExp", where, code)) { 835 837 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 836 return false; 837 } 838 psFree (where); 839 return false; 840 } 841 psFree (where); 838 842 839 843 return true; -
trunk/ippTools/src/camtoolConfig.c
r18453 r18561 47 47 48 48 // -definebyquery 49 // XXX need to allow multiple chip_ids 50 // XXX need to allow multiple exp_ids 49 51 psMetadata *definebydefinebyqueryArgs = psMetadataAlloc(); 52 psMetadataAddS64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip_id", 0); 53 psMetadataAddS64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 54 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); 55 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); 56 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 57 psMetadataAddTime(definebydefinebyqueryArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 58 psMetadataAddTime(definebydefinebyqueryArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 59 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 60 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", NULL); 61 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); 62 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 63 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 64 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 65 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 66 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-ra_min", 0, "define min", NAN); 67 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-ra_max", 0, "define max", NAN); 68 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-decl_min", 0, "define min", NAN); 69 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-decl_max", 0, "define max", NAN); 70 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min", NAN); 71 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max", NAN); 72 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "define max fraction of saturated pixels", NAN); 73 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "define min fraction of saturated pixels", NAN); 74 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_min", 0, "define max", NAN); 75 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_max", 0, "define max", NAN); 76 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, "define max", NAN); 77 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, "define max", NAN); 78 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "define max", NAN); 79 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "define max", NAN); 80 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-alt_min", 0, "define min", NAN); 81 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-alt_max", 0, "define max", NAN); 82 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-az_min", 0, "define min", NAN); 83 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-az_max", 0, "define max", NAN); 84 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 85 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 86 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 87 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 88 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 89 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 90 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 91 92 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir", NULL); 93 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 94 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL); 95 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_expgroup", 0, "define exposure group", NULL); 96 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_dvodb", 0, "define DVO db", NULL); 97 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_tess_id", 0, "define tess ID", NULL); 98 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_end_stage", 0, "define end stage", NULL); 99 psMetadataAddBool(definebydefinebyqueryArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 100 101 // -updaterun 102 // XXX need to allow multiple cam_ids 50 103 // XXX need to allow multiple chip_ids 51 psMetadataAddS64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-chip_id", 0,52 "search by chip_id", 0);53 104 // XXX need to allow multiple exp_ids 54 psMetadataAddS64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_id", 0,55 "search by exp_id", 0);56 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_name", 0,57 "search by exp_name", NULL);58 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-inst", 0,59 "search for camera", NULL);60 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-telescope", 0,61 "search for telescope", NULL);62 psMetadataAddTime(definebydefinebyqueryArgs, PS_LIST_TAIL, "-dateobs_begin", 0,63 "search for exposures by time (>=)", NULL);64 psMetadataAddTime(definebydefinebyqueryArgs, PS_LIST_TAIL, "-dateobs_end", 0,65 "search for exposures by time (<)", NULL);66 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_tag", 0,67 "search by exp_tag", NULL);68 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_type", 0,69 "search by exp_type", NULL);70 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-filelevel", 0,71 "search by filelevel", NULL);72 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-reduction", 0,73 "search by reduction class", NULL);74 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-filter", 0,75 "search for filter", NULL);76 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-airmass_min", 0,77 "define min airmass", NAN);78 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-airmass_max", 0,79 "define max airmass", NAN);80 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-ra_min", 0,81 "define min", NAN);82 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-ra_max", 0,83 "define max", NAN);84 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-decl_min", 0,85 "define min", NAN);86 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-decl_max", 0,87 "define max", NAN);88 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_time_min", 0,89 "define min", NAN);90 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-exp_time_max", 0,91 "define max", NAN);92 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0,93 "define max fraction of saturated pixels", NAN);94 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0,95 "define min fraction of saturated pixels", NAN);96 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_min", 0,97 "define max", NAN);98 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_max", 0,99 "define max", NAN);100 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_stdev_min", 0,101 "define max", NAN);102 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_stdev_max", 0,103 "define max", NAN);104 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0,105 "define max", NAN);106 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0,107 "define max", NAN);108 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-alt_min", 0,109 "define min", NAN);110 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-alt_max", 0,111 "define max", NAN);112 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-az_min", 0,113 "define min", NAN);114 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-az_max", 0,115 "define max", NAN);116 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-ccd_temp_min", 0,117 "define min ccd tempature", NAN);118 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-ccd_temp_max", 0,119 "define max ccd tempature", NAN);120 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-posang_min", 0,121 "define min rotator position angle", NAN);122 psMetadataAddF64(definebydefinebyqueryArgs, PS_LIST_TAIL, "-posang_max", 0,123 "define max rotator position angle", NAN);124 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-object", 0,125 "search by exposure object", NULL);126 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-solang_min", 0,127 "define min solar angle", NAN);128 psMetadataAddF32(definebydefinebyqueryArgs, PS_LIST_TAIL, "-solang_max", 0,129 "define max solar angle", NAN);130 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_workdir", 0,131 "define workdir", NULL);132 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_label", 0,133 "define label", NULL);134 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_reduction", 0,135 "define reduction class", NULL);136 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_expgroup", 0,137 "define exposure group", NULL);138 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_dvodb", 0,139 "define DVO db", NULL);140 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_tess_id", 0,141 "define tess ID", NULL);142 psMetadataAddStr(definebydefinebyqueryArgs, PS_LIST_TAIL, "-set_end_stage", 0,143 "define end stage", NULL);144 psMetadataAddBool(definebydefinebyqueryArgs, PS_LIST_TAIL, "-all", 0,145 "allow everything to be queued without search terms", false);146 147 // -updaterun148 105 psMetadata *updaterunArgs = psMetadataAlloc(); 149 // XXX need to allow multiple cam_ids 150 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-cam_id", 0, 151 "search by cam_id", 0); 152 // XXX need to allow multiple chip_ids 153 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-chip_id", 0, 154 "search by chip_id", 0); 155 // XXX need to allow multiple exp_ids 156 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-exp_id", 0, 157 "search by exp_id", 0); 158 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_name", 0, 159 "search by exp_name", NULL); 160 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-inst", 0, 161 "search for camera", NULL); 162 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-telescope", 0, 163 "search for telescope", NULL); 164 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, 165 "search for exposures by time (>=)", NULL); 166 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_end", 0, 167 "search for exposures by time (<)", NULL); 168 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_tag", 0, 169 "search by exp_tag", NULL); 170 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_type", 0, 171 "search by exp_type", NULL); 172 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filelevel", 0, 173 "search by filelevel", NULL); 174 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, 175 "search by reduction class", NULL); 176 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filter", 0, 177 "search for filter", NULL); 178 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-airmass_min", 0, 179 "define min airmass", NAN); 180 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-airmass_max", 0, 181 "define max airmass", NAN); 182 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_min", 0, 183 "define min", NAN); 184 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_max", 0, 185 "define max", NAN); 186 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_min", 0, 187 "define min", NAN); 188 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_max", 0, 189 "define max", NAN); 190 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_min", 0, 191 "define min", NAN); 192 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_max", 0, 193 "define max", NAN); 194 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, 195 "define max fraction of saturated pixels", NAN); 196 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, 197 "define min fraction of saturated pixels", NAN); 198 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_min", 0, 199 "define max", NAN); 200 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_max", 0, 201 "define max", NAN); 202 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, 203 "define max", NAN); 204 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, 205 "define max", NAN); 206 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, 207 "define max", NAN); 208 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, 209 "define max", NAN); 210 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_min", 0, 211 "define min", NAN); 212 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_max", 0, 213 "define max", NAN); 214 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_min", 0, 215 "define min", NAN); 216 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_max", 0, 217 "define max", NAN); 218 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, 219 "define min ccd tempature", NAN); 220 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, 221 "define max ccd tempature", NAN); 222 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_min", 0, 223 "define min rotator position angle", NAN); 224 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_max", 0, 225 "define max rotator position angle", NAN); 226 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-object", 0, 227 "search by exposure object", NULL); 228 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_min", 0, 229 "define min solar angle", NAN); 230 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_max", 0, 231 "define max solar angle", NAN); 232 233 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, 234 "allow everything to be queued without search terms", false); 235 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, 236 "set state", NULL); 237 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, 238 "set label", NULL); 239 106 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 107 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip_id", 0); 108 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 109 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); 110 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); 111 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 112 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 113 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 114 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 115 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", NULL); 116 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); 117 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 118 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 119 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 120 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 121 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_min", 0, "define min", NAN); 122 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_max", 0, "define max", NAN); 123 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_min", 0, "define min", NAN); 124 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_max", 0, "define max", NAN); 125 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min", NAN); 126 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max", NAN); 127 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "define max fraction of saturated pixels", NAN); 128 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "define min fraction of saturated pixels", NAN); 129 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_min", 0, "define max", NAN); 130 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_max", 0, "define max", NAN); 131 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, "define max", NAN); 132 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, "define max", NAN); 133 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "define max", NAN); 134 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "define max", NAN); 135 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_min", 0, "define min", NAN); 136 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_max", 0, "define max", NAN); 137 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_min", 0, "define min", NAN); 138 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_max", 0, "define max", NAN); 139 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 140 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 141 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 142 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 143 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 144 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 145 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 146 147 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 148 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state", NULL); 149 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "set label", NULL); 240 150 241 151 // -pendingexp 242 152 psMetadata *pendingexpArgs = psMetadataAlloc(); 243 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-cam_id", 0, 244 "search by camtool ID", 0); 245 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-chip_id", 0, 246 "search by chiptool ID", 0); 247 psMetadataAddU64(pendingexpArgs, PS_LIST_TAIL, "-limit", 0, 248 "limit result set to N items", 0); 249 psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-simple", 0, 250 "use the simple output format", false); 251 153 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by camtool ID", 0); 154 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chiptool ID", 0); 155 psMetadataAddU64(pendingexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 156 psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 252 157 253 158 // -pendingimfile 254 159 psMetadata *pendingimfileArgs = psMetadataAlloc(); 255 psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-cam_id", 0, 256 "search by camtool ID", 0); 257 psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-chip_id", 0, 258 "search by chiptool ID", 0); 259 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class", 0, 260 "search by class", NULL); 261 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class_id", 0, 262 "search by class ID", NULL); 263 psMetadataAddBool(pendingimfileArgs, PS_LIST_TAIL, "-simple", 0, 264 "use the simple output format", false); 265 160 psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-cam_id", 0, "search by camtool ID", 0); 161 psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chiptool ID", 0); 162 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class", 0, "search by class", NULL); 163 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 164 psMetadataAddBool(pendingimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 266 165 267 166 // -addprocessedexp 268 167 psMetadata *addprocessedexpArgs = psMetadataAlloc(); 269 psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0, 270 "define camtool ID (required)", 0); 271 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-uri", 0, 272 "define URI (required)", NULL); 273 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg", 0, 274 "define exposure background", NAN); 275 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, 276 "define exposure background stdev", NAN); 277 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 278 "define exposure background mean stdev", NAN); 279 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-bias", 0, 280 "define bias", NAN); 281 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-bias_stdev", 0, 282 "define bias stdev", NAN); 283 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_0", 0, 284 "define fringe term 0", NAN); 285 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_1", 0, 286 "define fringe term 1", NAN); 287 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_2", 0, 288 "define fringe term 2", NAN); 289 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-sigma_ra", 0, 290 "define exposure E ra", NAN); 291 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-sigma_dec", 0, 292 "define exposure E dec", NAN); 293 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-ap_resid", 0, 294 "define aperture residual", NAN); 295 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-ap_resid_stdev", 0, 296 "define aperture residual stdev", NAN); 297 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-zp_mean", 0, 298 "define zero point mean", NAN); 299 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-zp_stdev", 0, 300 "define zero point stdev", NAN); 301 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-fwhm_major", 0, 302 "define FWHM (major axis; arcsec)", NAN); 303 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-fwhm_minor", 0, 304 "define FWHM (minor axis; arcsec)", NAN); 305 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_detrend", 0, 306 "define elapsed detrend processing time (seconds)", NAN); 307 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_photom", 0, 308 "define elapsed photometry processing time (seconds)", NAN); 309 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_astrom", 0, 310 "define elapsed astrometry processing time (seconds)", NAN); 311 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-hostname", 0, 312 "define hostname", NULL); 313 psMetadataAddS32(addprocessedexpArgs, PS_LIST_TAIL, "-n_stars", 0, 314 "define number of stars", 0); 315 psMetadataAddS32(addprocessedexpArgs, PS_LIST_TAIL, "-n_extended", 0, 316 "define number of extended objects", 0); 317 psMetadataAddS32(addprocessedexpArgs, PS_LIST_TAIL, "-n_cr", 0, 318 "define number of cosmic rays", 0); 319 psMetadataAddS32(addprocessedexpArgs, PS_LIST_TAIL, "-n_astrom", 0, 320 "define number of astrometry reference objects", 0); 321 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-path_base", 0, 322 "define base output location", NULL); 323 psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-code", 0, 324 "set fault code", 0); 325 psMetadataAddBool(addprocessedexpArgs, PS_LIST_TAIL, "-faulted", 0, 326 "only return imfiles with a fault status set", false); 168 psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0, "define camtool ID (required)", 0); 169 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-uri", 0, "define URI (required)", NULL); 170 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 171 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 172 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 173 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-bias", 0, "define bias", NAN); 174 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-bias_stdev", 0, "define bias stdev", NAN); 175 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_0", 0, "define fringe term 0", NAN); 176 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_1", 0, "define fringe term 1", NAN); 177 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_2", 0, "define fringe term 2", NAN); 178 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-sigma_ra", 0, "define exposure E ra", NAN); 179 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-sigma_dec", 0, "define exposure E dec", NAN); 180 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-ap_resid", 0, "define aperture residual", NAN); 181 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-ap_resid_stdev", 0, "define aperture residual stdev", NAN); 182 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-zp_mean", 0, "define zero point mean", NAN); 183 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-zp_stdev", 0, "define zero point stdev", NAN); 184 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-fwhm_major", 0, "define FWHM (major axis; arcsec)", NAN); 185 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-fwhm_minor", 0, "define FWHM (minor axis; arcsec)", NAN); 186 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_detrend", 0, "define elapsed detrend processing time (seconds)", NAN); 187 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_photom", 0, "define elapsed photometry processing time (seconds)", NAN); 188 psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_astrom", 0, "define elapsed astrometry processing time (seconds)", NAN); 189 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-hostname", 0, "define hostname", NULL); 190 psMetadataAddS32(addprocessedexpArgs, PS_LIST_TAIL, "-n_stars", 0, "define number of stars", 0); 191 psMetadataAddS32(addprocessedexpArgs, PS_LIST_TAIL, "-n_extended", 0, "define number of extended objects", 0); 192 psMetadataAddS32(addprocessedexpArgs, PS_LIST_TAIL, "-n_cr", 0, "define number of cosmic rays", 0); 193 psMetadataAddS32(addprocessedexpArgs, PS_LIST_TAIL, "-n_astrom", 0, "define number of astrometry reference objects", 0); 194 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 195 psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 196 psMetadataAddBool(addprocessedexpArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 327 197 328 198 // -processedexp 329 199 psMetadata *processedexpArgs = psMetadataAlloc(); 330 psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-cam_id", 0, 331 "search by camtool ID", 0); 332 psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-chip_id", 0, 333 "search by chiptool ID", 0); 334 psMetadataAddU64(processedexpArgs, PS_LIST_TAIL, "-limit", 0, 335 "limit result set to N items", 0); 336 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-simple", 0, 337 "use the simple output format", false); 338 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-faulted", 0, 339 "only return imfiles with a fault status set", false); 200 psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by camtool ID", 0); 201 psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chiptool ID", 0); 202 psMetadataAddU64(processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 203 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 204 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 340 205 341 206 // -revertprocessedexp 207 // XXX need to allow multiple cam_ids 208 // XXX need to allow multiple chip_ids 209 // XXX need to allow multiple exp_ids 342 210 psMetadata *revertprocessedexpArgs = psMetadataAlloc(); 343 // XXX need to allow multiple cam_ids 344 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0, 345 "search by cam_id", 0); 346 // XXX need to allow multiple chip_ids 347 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-chip_id", 0, 348 "search by chip_id", 0); 349 // XXX need to allow multiple exp_ids 350 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, 351 "search by exp_id", 0); 352 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_name", 0, 353 "search by exp_name", NULL); 354 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-inst", 0, 355 "search for camera", NULL); 356 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-telescope", 0, 357 "search for telescope", NULL); 358 psMetadataAddTime(revertprocessedexpArgs, PS_LIST_TAIL, "-dateobs_begin", 0, 359 "search for exposures by time (>=)", NULL); 360 psMetadataAddTime(revertprocessedexpArgs, PS_LIST_TAIL, "-dateobs_end", 0, 361 "search for exposures by time (<)", NULL); 362 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_tag", 0, 363 "search by exp_tag", NULL); 364 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_type", 0, 365 "search by exp_type", NULL); 366 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-filelevel", 0, 367 "search by filelevel", NULL); 368 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-reduction", 0, 369 "search by reduction class", NULL); 370 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-filter", 0, 371 "search for filter", NULL); 372 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-airmass_min", 0, 373 "define min airmass", NAN); 374 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-airmass_max", 0, 375 "define max airmass", NAN); 376 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-ra_min", 0, 377 "define min", NAN); 378 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-ra_max", 0, 379 "define max", NAN); 380 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-decl_min", 0, 381 "define min", NAN); 382 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-decl_max", 0, 383 "define max", NAN); 384 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_time_min", 0, 385 "define min", NAN); 386 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_time_max", 0, 387 "define max", NAN); 388 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, 389 "define max fraction of saturated pixels", NAN); 390 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, 391 "define min fraction of saturated pixels", NAN); 392 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_min", 0, 393 "define max", NAN); 394 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_max", 0, 395 "define max", NAN); 396 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, 397 "define max", NAN); 398 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, 399 "define max", NAN); 400 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, 401 "define max", NAN); 402 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, 403 "define max", NAN); 404 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-alt_min", 0, 405 "define min", NAN); 406 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-alt_max", 0, 407 "define max", NAN); 408 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-az_min", 0, 409 "define min", NAN); 410 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-az_max", 0, 411 "define max", NAN); 412 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, 413 "define min ccd tempature", NAN); 414 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, 415 "define max ccd tempature", NAN); 416 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-posang_min", 0, 417 "define min rotator position angle", NAN); 418 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-posang_max", 0, 419 "define max rotator position angle", NAN); 420 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-object", 0, 421 "search by exposure object", NULL); 422 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-solang_min", 0, 423 "define min solar angle", NAN); 424 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-solang_max", 0, 425 "define max solar angle", NAN); 426 427 psMetadataAddBool(revertprocessedexpArgs, PS_LIST_TAIL, "-all", 0, 428 "allow everything to be queued without search terms", false); 429 psMetadataAddS16(revertprocessedexpArgs, PS_LIST_TAIL, "-code", 0, 430 "search by fault code", 0); 211 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by cam_id", 0); 212 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip_id", 0); 213 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 214 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); 215 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); 216 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 217 psMetadataAddTime(revertprocessedexpArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 218 psMetadataAddTime(revertprocessedexpArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 219 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 220 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", NULL); 221 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); 222 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 223 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 224 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 225 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 226 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-ra_min", 0, "define min", NAN); 227 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-ra_max", 0, "define max", NAN); 228 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-decl_min", 0, "define min", NAN); 229 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-decl_max", 0, "define max", NAN); 230 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min", NAN); 231 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max", NAN); 232 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "define max fraction of saturated pixels", NAN); 233 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "define min fraction of saturated pixels", NAN); 234 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_min", 0, "define max", NAN); 235 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_max", 0, "define max", NAN); 236 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, "define max", NAN); 237 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, "define max", NAN); 238 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "define max", NAN); 239 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "define max", NAN); 240 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-alt_min", 0, "define min", NAN); 241 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-alt_max", 0, "define max", NAN); 242 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-az_min", 0, "define min", NAN); 243 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-az_max", 0, "define max", NAN); 244 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 245 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 246 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 247 psMetadataAddF64(revertprocessedexpArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 248 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 249 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 250 psMetadataAddF32(revertprocessedexpArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 251 252 psMetadataAddBool(revertprocessedexpArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 253 psMetadataAddS16(revertprocessedexpArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 431 254 432 255 433 256 // -updateprocessedexp 434 257 psMetadata *updateprocessedexpArgs = psMetadataAlloc(); 435 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0, 436 "search by camtool ID", 0); 437 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-chip_id", 0, 438 "search by chiptool ID", 0); 439 psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-class", 0, 440 "search by class", NULL); 441 psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-class_id", 0, 442 "search by class ID", NULL); 443 psMetadataAddS16(updateprocessedexpArgs, PS_LIST_TAIL, "-code", 0, 444 "set fault code (required)", INT16_MAX); 258 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by camtool ID", 0); 259 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chiptool ID", 0); 260 psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-class", 0, "search by class", NULL); 261 psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 262 psMetadataAddS16(updateprocessedexpArgs, PS_LIST_TAIL, "-code", 0, "set fault code (required)", INT16_MAX); 445 263 446 264 // -block 447 265 psMetadata *blockArgs = psMetadataAlloc(); 448 psMetadataAddStr(blockArgs, PS_LIST_TAIL, "-label", 0, 449 "name of a label to mask out (required)", NULL); 266 psMetadataAddStr(blockArgs, PS_LIST_TAIL, "-label", 0, "name of a label to mask out (required)", NULL); 450 267 451 268 // -masked 452 269 psMetadata *maskedArgs = psMetadataAlloc(); 453 psMetadataAddBool(maskedArgs, PS_LIST_TAIL, "-simple", 0, 454 "use the simple output format", false); 270 psMetadataAddBool(maskedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 455 271 456 272 // -unblock 457 273 psMetadata *unblockArgs = psMetadataAlloc(); 458 psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label", 0, 459 "name of a label to unmask (required)", NULL); 274 psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label", 0, "name of a label to unmask (required)", NULL); 460 275 461 276 psMetadata *argSets = psMetadataAlloc(); … … 485 300 psFree(modes); 486 301 487 // setup search criterion488 #define addWhereStr(name) \489 { \490 psString str = NULL; \491 bool status = false; \492 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \493 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\494 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \495 psFree(config); \496 return NULL; \497 } \498 } \499 }500 501 // generate SQL where clause502 config->where = psMetadataAlloc();503 504 {505 psS64 cam_id = -1;506 bool status = false;507 if ((cam_id = psMetadataLookupS64(&status, config->args, "-cam_id"))) {508 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, "cam_id", 0, "==", cam_id)) {509 psError(PS_ERR_UNKNOWN, false, "failed to add item cam_id");510 psFree(config);511 return NULL;512 }513 }514 }515 516 {517 psString str = NULL;518 bool status = false;519 if ((str = psMetadataLookupStr(&status, config->args, "-chip_id"))) {520 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, "chip_id", 0, "==", (psS64)atoll(str))) {521 psError(PS_ERR_UNKNOWN, false, "failed to add item chip_id");522 psFree(config);523 return NULL;524 }525 }526 }527 528 // convert '-inst' to 'camera'529 {530 psString str = NULL;531 bool status = false;532 if ((str = psMetadataLookupStr(&status, config->args, "-inst"))) {533 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, "camera", 0, "==", str)) {534 psError(PS_ERR_UNKNOWN, false, "failed to add item camera");535 psFree(config);536 return NULL;537 }538 }539 }540 addWhereStr(telescope);541 addWhereStr(exp_type);542 {543 int imfiles = 0;544 bool status = false;545 if ((imfiles = psMetadataLookupS32(&status, config->args, "-imfiles"))) {546 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "imfiles", 0, "==", imfiles)) {547 psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");548 psFree(config);549 return NULL;550 }551 }552 }553 addWhereStr(class_id);554 addWhereStr(filter);555 556 // convert '-code' to 'fault'557 {558 psS16 fault = 0;559 bool status = false;560 if ((fault = psMetadataLookupS16(&status, config->args, "-code"))) {561 if (!psMetadataAddS16(config->where, PS_LIST_TAIL, "fault", 0, "==", fault)) {562 psError(PS_ERR_UNKNOWN, false, "failed to add item fault");563 psFree(config);564 return NULL;565 }566 }567 }568 569 if (psListLength(config->where->list) < 1) {570 psFree(config->where);571 config->where = NULL;572 }573 574 575 302 // define Database handle, if used 576 303 config->dbh = psMemIncrRefCounter(pmConfigDB(config->modules)); -
trunk/ippTools/src/chiptool.c
r18366 r18561 665 665 PS_ASSERT_PTR_NON_NULL(config, false); 666 666 667 psMetadata *where = psMetadataAlloc(); 668 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 669 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 670 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 671 667 672 PXOPT_LOOKUP_S16(code, config->args, "-code", true, false); 668 673 669 if (!pxSetFaultCode(config->dbh, "chipProcessedImfile", config->where, code)) {674 if (!pxSetFaultCode(config->dbh, "chipProcessedImfile", where, code)) { 670 675 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 671 676 return false; 672 677 } 678 psFree(where); 673 679 674 680 return true; -
trunk/ippTools/src/chiptoolConfig.c
r18366 r18561 304 304 psMetadata *modes = psMetadataAlloc(); 305 305 306 PXOPT_ADD_MODE("-definebyquery", "create runs from raw exposures", 307 CHIPTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs); 308 PXOPT_ADD_MODE("-updaterun", "change chip run properties", 309 CHIPTOOL_MODE_UPDATERUN, updaterunArgs); 310 PXOPT_ADD_MODE("-pendingimfile", "show pending imfiles", 311 CHIPTOOL_MODE_PENDINGIMFILE, pendingimfileArgs); 312 PXOPT_ADD_MODE("-addprocessedimfile", "add a processed imfile", 313 CHIPTOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs); 314 PXOPT_ADD_MODE("-processedimfile", "show processed imfiles", 315 CHIPTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs); 316 PXOPT_ADD_MODE("-updateprocessedimfile","change procesed imfile properties", 317 CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,updateprocessedimfileArgs); 318 PXOPT_ADD_MODE("-revertprocessedimfile","undo a processed imfile", 319 CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,revertprocessedimfileArgs); 320 PXOPT_ADD_MODE("-block", "set a label block", 321 CHIPTOOL_MODE_BLOCK, blockArgs); 322 PXOPT_ADD_MODE("-masked", "show blocked labels", 323 CHIPTOOL_MODE_MASKED, maskedArgs); 324 PXOPT_ADD_MODE("-unmasked", "", 325 CHIPTOOL_MODE_UNMASKED, unmaskedArgs); 326 PXOPT_ADD_MODE("-unblock", "remove a label block", 327 CHIPTOOL_MODE_UNBLOCK, unblockArgs); 328 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", 329 CHIPTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs); 330 PXOPT_ADD_MODE("-pendingcleanupimfile", "show runs that need to be cleaned up", 331 CHIPTOOL_MODE_PENDINGCLEANUPIMFILE, pendingcleanupimfileArgs); 332 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", 333 CHIPTOOL_MODE_DONECLEANUP, donecleanupArgs); 334 PXOPT_ADD_MODE("-run", "show runs", 335 CHIPTOOL_MODE_RUN, runArgs); 306 PXOPT_ADD_MODE("-definebyquery", "create runs from raw exposures", CHIPTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs); 307 PXOPT_ADD_MODE("-updaterun", "change chip run properties", CHIPTOOL_MODE_UPDATERUN, updaterunArgs); 308 PXOPT_ADD_MODE("-pendingimfile", "show pending imfiles", CHIPTOOL_MODE_PENDINGIMFILE, pendingimfileArgs); 309 PXOPT_ADD_MODE("-addprocessedimfile", "add a processed imfile", CHIPTOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs); 310 PXOPT_ADD_MODE("-processedimfile", "show processed imfiles", CHIPTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs); 311 PXOPT_ADD_MODE("-updateprocessedimfile","change procesed imfile properties", CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,updateprocessedimfileArgs); 312 PXOPT_ADD_MODE("-revertprocessedimfile","undo a processed imfile", CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,revertprocessedimfileArgs); 313 PXOPT_ADD_MODE("-block", "set a label block", CHIPTOOL_MODE_BLOCK, blockArgs); 314 PXOPT_ADD_MODE("-masked", "show blocked labels", CHIPTOOL_MODE_MASKED, maskedArgs); 315 PXOPT_ADD_MODE("-unmasked", "", CHIPTOOL_MODE_UNMASKED, unmaskedArgs); 316 PXOPT_ADD_MODE("-unblock", "remove a label block", CHIPTOOL_MODE_UNBLOCK, unblockArgs); 317 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", CHIPTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs); 318 PXOPT_ADD_MODE("-pendingcleanupimfile", "show runs that need to be cleaned up", CHIPTOOL_MODE_PENDINGCLEANUPIMFILE, pendingcleanupimfileArgs); 319 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", CHIPTOOL_MODE_DONECLEANUP, donecleanupArgs); 320 PXOPT_ADD_MODE("-run", "show runs", CHIPTOOL_MODE_RUN, runArgs); 336 321 337 322 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/detselect.c
r16170 r18561 81 81 82 82 psMetadata *where = psMetadataAlloc(); 83 84 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 85 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 86 PXOPT_COPY_STR(config->args, where, "-det_type", "det_type", "=="); 87 PXOPT_COPY_STR(config->args, where, "-type", "det_type", "=="); 88 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 83 89 84 90 // airmass_min < airmass < airmass_max … … 111 117 } 112 118 113 if (config->where) { 114 psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL); 115 psStringAppend(&query, " AND %s", whereClause); 116 psFree(whereClause); 117 } 118 119 { 119 // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE 120 if (where && psListLength(where->list)) { 120 121 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 121 psFree(where); 122 if (whereClause) { 123 psStringAppend(&query, " AND %s", whereClause); 124 psFree(whereClause); 125 } 126 } 122 psStringAppend(&query, " AND %s", whereClause); 123 psFree(whereClause); 124 } 125 psFree(where); 127 126 128 127 // we choose the single detrend image which matches all criteria and has … … 171 170 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 172 171 172 psMetadata *where = psMetadataAlloc(); 173 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 174 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 175 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 176 173 177 psString query = pxDataGet("detselect_select.sql"); 174 178 if (!query) { … … 177 181 } 178 182 179 180 if ( config->where) {181 psString whereClause = psDBGenerateWhereConditionSQL( config->where, NULL);183 // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE 184 if (where && psListLength(where->list)) { 185 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 182 186 psStringAppend(&query, " AND %s", whereClause); 183 187 psFree(whereClause); 184 188 } 189 psFree(where); 185 190 186 191 if (!p_psDBRunQuery(config->dbh, query)) { -
trunk/ippTools/src/detselect.h
r18322 r18561 31 31 pxConfig *detselectConfig(pxConfig *config, int argc, char **argv); 32 32 33 #define addWhereStr(name) \34 { \35 psString str = NULL; \36 bool status = false; \37 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \38 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\39 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \40 psFree(config); \41 return NULL; \42 } \43 } \44 }45 46 #define addWhereStrAlias(name,realname) \47 { \48 psString str = NULL; \49 bool status = false; \50 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \51 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #realname, 0, "==", str)) {\52 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \53 psFree(config); \54 return NULL; \55 } \56 } \57 }58 59 #define addWhereS32(name) \60 { \61 psS32 s32 = 0; \62 bool status = false; \63 if ((s32= psMetadataLookupS32(&status, config->args, "-" #name))) { \64 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, #name, 0, "==", s32)) { \65 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \66 psFree(config); \67 return NULL; \68 } \69 } \70 }71 72 #define addWhereF32(name) \73 { \74 psF32 var = 0; \75 bool status = false; \76 if ((var = psMetadataLookupF32(&status, config->args, "-" #name))) { \77 if (!isnan(var)) { \78 if (!psMetadataAddF32(config->where, PS_LIST_TAIL, #name, 0, "==", var)) { \79 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \80 psFree(config); \81 return NULL; \82 } \83 } \84 } \85 }86 87 #define addWhereF64(name) \88 { \89 psF64 var = 0; \90 bool status = false; \91 if ((var = psMetadataLookupF64(&status, config->args, "-" #name))) { \92 if (!isnan(var)) { \93 if (!psMetadataAddF64(config->where, PS_LIST_TAIL, #name, 0, "==", var)) { \94 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \95 psFree(config); \96 return NULL; \97 } \98 } \99 } \100 }101 102 #define addWhereTimeStr(name) \103 { \104 psString str = NULL; \105 bool status = false; \106 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \107 psTime *time = psTimeFromISO(str, PS_TIME_UTC); \108 if (!time) { \109 psError(PS_ERR_UNKNOWN, false, "failed to convert " #name " into a psTime object"); \110 psFree(config); \111 return NULL; \112 } \113 psMetadataItem *item = psMetadataLookup(config->args, "-" #name); \114 if (item) { \115 str = item->comment; \116 } else { \117 str = NULL; \118 } \119 if (!psMetadataAddTime(config->where, PS_LIST_TAIL, #name, 0, str, time)) {\120 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \121 psFree(config); \122 return NULL; \123 } \124 psFree(time); \125 } \126 }127 128 33 #endif // DETSELECT_H -
trunk/ippTools/src/detselectConfig.c
r18322 r18561 46 46 // -search 47 47 psMetadata *searchArgs = psMetadataAlloc(); 48 psMetadataAddStr(searchArgs, PS_LIST_TAIL, "-inst", 0, 49 "search by camera", NULL); 50 psMetadataAddStr(searchArgs, PS_LIST_TAIL, "-telescope", 0, 51 "search by telescope", NULL); 52 psMetadataAddStr(searchArgs, PS_LIST_TAIL, "-det_type", 0, 53 "search by detrend type", NULL); 54 psMetadataAddStr(searchArgs, PS_LIST_TAIL, "-type", 0, 55 "search by detrend type (alias for -det_type)", NULL); 56 psMetadataAddStr(searchArgs, PS_LIST_TAIL, "-filter", 0, 57 "search by filter", NULL); 58 psMetadataAddF32(searchArgs, PS_LIST_TAIL, "-airmass", 0, 59 "define airmass", NAN); 60 psMetadataAddF32(searchArgs, PS_LIST_TAIL, "-exp_time", 0, 61 "search by exposure time", NAN); 62 psMetadataAddF32(searchArgs, PS_LIST_TAIL, "-ccd_temp", 0, 63 "search by ccd tempature", NAN); 64 psMetadataAddF64(searchArgs, PS_LIST_TAIL, "-posang", 0, 65 "search by rotator position angle", NAN); 66 psMetadataAddTime(searchArgs, PS_LIST_TAIL, "-time", 0, 67 "define time for desired detrend data", NULL); 68 psMetadataAddBool(searchArgs, PS_LIST_TAIL, "-simple", 0, 69 "use the simple output format", false); 70 psMetadataAddBool(searchArgs, PS_LIST_TAIL, "-unlimit", 0, 71 "list all possible detruns, not just the best match", false); 48 psMetadataAddStr(searchArgs, PS_LIST_TAIL, "-inst", 0, "search by camera", NULL); 49 psMetadataAddStr(searchArgs, PS_LIST_TAIL, "-telescope", 0, "search by telescope", NULL); 50 psMetadataAddStr(searchArgs, PS_LIST_TAIL, "-det_type", 0, "search by detrend type", NULL); 51 psMetadataAddStr(searchArgs, PS_LIST_TAIL, "-type", 0, "search by detrend type (alias for -det_type)", NULL); 52 psMetadataAddStr(searchArgs, PS_LIST_TAIL, "-filter", 0, "search by filter", NULL); 53 psMetadataAddF32(searchArgs, PS_LIST_TAIL, "-airmass", 0, "define airmass", NAN); 54 psMetadataAddF32(searchArgs, PS_LIST_TAIL, "-exp_time", 0, "search by exposure time", NAN); 55 psMetadataAddF32(searchArgs, PS_LIST_TAIL, "-ccd_temp", 0, "search by ccd tempature", NAN); 56 psMetadataAddF64(searchArgs, PS_LIST_TAIL, "-posang", 0, "search by rotator position angle", NAN); 57 psMetadataAddTime(searchArgs, PS_LIST_TAIL, "-time", 0, "define time for desired detrend data", NULL); 58 psMetadataAddBool(searchArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 59 psMetadataAddBool(searchArgs, PS_LIST_TAIL, "-unlimit", 0, "list all possible detruns, not just the best match", false); 72 60 73 61 // -select 74 62 psMetadata *selectArgs = psMetadataAlloc(); 75 psMetadataAddStr(selectArgs, PS_LIST_TAIL, "-det_id", 0, 76 "search by detrend ID", NULL); 77 psMetadataAddS32(selectArgs, PS_LIST_TAIL, "-iteration", 0, 78 "search by iteration number", 0); 79 psMetadataAddStr(selectArgs, PS_LIST_TAIL, "-class_id", 0, 80 "search by class ID", NULL); 81 psMetadataAddBool(selectArgs, PS_LIST_TAIL, "-simple", 0, 82 "use the simple output format", false); 63 psMetadataAddStr(selectArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID", NULL); 64 psMetadataAddS32(selectArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 65 psMetadataAddStr(selectArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 66 psMetadataAddBool(selectArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 83 67 84 68 psMetadata *argSets = psMetadataAlloc(); … … 99 83 psFree(modes); 100 84 101 // setup search criterion102 // generate SQL where clause103 config->where = psMetadataAlloc();104 105 addWhereStr(det_id);106 addWhereS32(iteration);107 addWhereStr(exp_id);108 addWhereStrAlias(inst,camera);109 110 addWhereStr(telescope);111 addWhereStr(det_type);112 addWhereStrAlias(type,det_type);113 114 addWhereStr(exp_type);115 addWhereS32(imfiles);116 addWhereStr(class);117 addWhereStr(class_id);118 addWhereStr(filter);119 120 // addWhereF32(exp_time);121 // addWhereF64(ccd_temp);122 // addWhereF32(airmass);123 // addWhereTimeStr(use_begin);124 // addWhereTimeStr(use_end);125 126 if (config->where->list->n < 1) {127 psFree(config->where);128 config->where = NULL;129 }130 131 132 85 // define Database handle, if used 133 86 config->dbh = psMemIncrRefCounter(pmConfigDB(config->modules)); -
trunk/ippTools/src/dettool.c
r18336 r18561 18 18 */ 19 19 20 #ifdef HAVB_CONFIG_H21 #include <config.h>22 #endif23 24 #include <stdio.h>25 #include <string.h>26 #include <stdlib.h>27 #include <stdint.h>28 #include <inttypes.h>29 30 #include <ippdb.h>31 32 #include "pxtools.h"33 20 #include "dettool.h" 34 21 … … 98 85 //static psArray *searchInputImfiles(pxConfig *config, const char *det_id); 99 86 static detInputExpRow *rawDetrenTodetInputExpRow(rawExpRow *rawExp, psS64 det_id, psS32 iteration); 100 static psArray *searchRawImfiles(pxConfig *config , psMetadata *where);87 static psArray *searchRawImfiles(pxConfig *config); 101 88 static bool startNewIteration(pxConfig *config, psS64 det_id); 102 89 static psS32 incrementIteration(pxConfig *config, psS64 det_id); … … 214 201 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 215 202 216 psString query = psStringCopy( 217 "SELECT" 218 " rawExp.*" 219 " FROM rawExp" 220 " LEFT JOIN detInputExp" 221 " ON rawExp.exp_id = detInputExp.exp_id" 222 " WHERE" 223 " detInputExp.exp_id IS NULL" 224 " AND rawExp.object != 'object'" 225 ); 226 227 if (config->where) { 228 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "rawExp"); 203 psString query = pxDataGet("dettool_pending.sql"); 204 if (!query) { 205 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 206 return false; 207 } 208 209 psMetadata *where = psMetadataAlloc(); 210 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 211 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 212 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 213 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 214 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 215 216 if (psListLength(where->list)) { 217 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp"); 229 218 psStringAppend(&query, " AND %s", whereClause); 230 219 psFree(whereClause); 231 220 } 221 psFree(where); 232 222 233 223 if (!p_psDBRunQuery(config->dbh, query)) { … … 315 305 // make sure that -exp_id was parsed correctly 316 306 // XXX this can be removed someday 307 // XXX Special case for a multi : move into a macro? 317 308 if (item->type == PS_DATA_METADATA_MULTI) { 318 309 psListIterator *iter = psListIteratorAlloc(item->data.list, 0, false); … … 472 463 #if 0 473 464 // This function is used to convert the det_id from an int, as it is used 474 // internally, to be a string for external use. The rational being that we may465 // internally, to be a string for external use. The rationale being that we may 475 466 // want to change how det_id is generated in the future and don't want to 476 467 // external programs to become depending on this value being an int. … … 543 534 psMetadata *where = psMetadataAlloc(); 544 535 PXOPT_COPY_STR(config->args, where, "-select_exp_type", "exp_type", "=="); 545 // map -inst -> camera546 536 PXOPT_COPY_STR(config->args, where, "-select_inst", "camera", "=="); 547 537 PXOPT_COPY_STR(config->args, where, "-select_telescope", "telescope", "=="); … … 555 545 PXOPT_COPY_F32(config->args, where, "-select_exp_time_min", "exp_time", ">="); 556 546 PXOPT_COPY_F32(config->args, where, "-select_exp_time_max", "exp_time", "<="); 557 PXOPT_COPY_F 32(config->args, where, "-select_ccd_temp_min", "ccd_temp", ">=");558 PXOPT_COPY_F 32(config->args, where, "-select_ccd_temp_max", "ccd_temp", "<=");559 PXOPT_COPY_F 32(config->args, where, "-select_pon_time_min", "pon_time", ">=");560 PXOPT_COPY_F 32(config->args, where, "-select_pon_time_max", "pon_time", "<=");561 PXOPT_COPY_F 32(config->args, where, "-select_posang_min", "posang", ">=");562 PXOPT_COPY_F 32(config->args, where, "-select_posang_max", "posang", "<=");563 PXOPT_COPY_F 32(config->args, where, "-select_solang_min", "solang", ">=");564 PXOPT_COPY_F 32(config->args, where, "-select_solang_max", "solang", "<=");547 PXOPT_COPY_F64(config->args, where, "-select_ccd_temp_min", "ccd_temp", ">="); 548 PXOPT_COPY_F64(config->args, where, "-select_ccd_temp_max", "ccd_temp", "<="); 549 PXOPT_COPY_F64(config->args, where, "-select_pon_time_min", "pon_time", ">="); 550 PXOPT_COPY_F64(config->args, where, "-select_pon_time_max", "pon_time", "<="); 551 PXOPT_COPY_F64(config->args, where, "-select_posang_min", "posang", ">="); 552 PXOPT_COPY_F64(config->args, where, "-select_posang_max", "posang", "<="); 553 PXOPT_COPY_F64(config->args, where, "-select_solang_min", "solang", ">="); 554 PXOPT_COPY_F64(config->args, where, "-select_solang_max", "solang", "<="); 565 555 566 556 if (!psListLength(where->list)) { … … 571 561 // there is some namespace overlap between the names of the fields we'd 572 562 // like to search by to setup a detrun and the names of the fields we'd 573 // like to assign values to so I've sep erated them but prepending set- to563 // like to assign values to so I've separated them but prepending set- to 574 564 // the assigned values 575 565 … … 731 721 PS_ASSERT_PTR_NON_NULL(config, false); 732 722 733 // required 734 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 735 736 // optional 737 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 738 PXOPT_LOOKUP_STR(det_type, config->args, "-set_det_type", false, false); 739 PXOPT_LOOKUP_STR(mode, config->args, "-set_mode", false, false); 740 // check mode 741 if (mode && !isValidMode(config, mode)) { 742 psError(PS_ERR_UNKNOWN, false, "invalud mode"); 743 return false; 744 } 745 PXOPT_LOOKUP_STR(camera, config->args, "-set_inst", false, false); 746 PXOPT_LOOKUP_STR(telescope, config->args, "-set_telescope", false, false); 723 724 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required 725 PXOPT_LOOKUP_STR(det_type, config->args, "-set_det_type", false, false); // optional 726 PXOPT_LOOKUP_STR(mode, config->args, "-set_mode", false, false); // optional 747 727 PXOPT_LOOKUP_STR(exp_type, config->args, "-set_exp_type", false, false); 748 728 PXOPT_LOOKUP_STR(filelevel, config->args, "-set_filelevel", false, false); 749 729 PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", false, false); 750 730 PXOPT_LOOKUP_STR(filter, config->args, "-set_filter", false, false); 751 752 731 PXOPT_LOOKUP_F32(airmass_min, config->args, "-set_airmass_min", false, false); 753 732 PXOPT_LOOKUP_F32(airmass_max, config->args, "-set_airmass_max", false, false); 754 733 PXOPT_LOOKUP_F32(exp_time_min, config->args, "-set_exp_time_min", false, false); 755 734 PXOPT_LOOKUP_F32(exp_time_max, config->args, "-set_exp_time_max", false, false); 756 PXOPT_LOOKUP_F32(ccd_temp_min, config->args, "-set_ccd_temp_min", false, false); 757 PXOPT_LOOKUP_F32(ccd_temp_max, config->args, "-set_ccd_temp_max", false, false); 758 PXOPT_LOOKUP_F32(posang_min, config->args, "-set_posang_min", false, false); 759 PXOPT_LOOKUP_F32(posang_max, config->args, "-set_posang_max", false, false); 760 PXOPT_LOOKUP_F32(solang_min, config->args, "-set_solang_min", false, false); 761 PXOPT_LOOKUP_F32(solang_max, config->args, "-set_solang_max", false, false); 762 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 735 PXOPT_LOOKUP_F64(ccd_temp_min, config->args, "-set_ccd_temp_min", false, false); 736 PXOPT_LOOKUP_F64(ccd_temp_max, config->args, "-set_ccd_temp_max", false, false); 737 PXOPT_LOOKUP_F64(posang_min, config->args, "-set_posang_min", false, false); 738 PXOPT_LOOKUP_F64(posang_max, config->args, "-set_posang_max", false, false); 739 PXOPT_LOOKUP_F64(solang_min, config->args, "-set_solang_min", false, false); 740 PXOPT_LOOKUP_F64(solang_max, config->args, "-set_solang_max", false, false); 763 741 PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false); 764 742 PXOPT_LOOKUP_TIME(time_begin, config->args, "-set_time_begin", false, false); … … 767 745 PXOPT_LOOKUP_TIME(use_end, config->args, "-use_end", false, false); 768 746 PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false); 769 747 PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false); 748 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); // optional 749 750 // check mode 751 if (mode && !isValidMode(config, mode)) { 752 psError(PS_ERR_UNKNOWN, false, "invalud mode"); 753 return false; 754 } 770 755 771 756 // lookup the detRun that we will be basing this one on … … 814 799 } 815 800 816 if (camera) {817 psFree(detRun->camera);818 detRun->camera = psStringCopy(camera);819 }820 821 if (telescope) {822 psFree(detRun->telescope);823 detRun->telescope = psStringCopy(telescope);824 }825 826 801 if (exp_type) { 827 802 psFree(detRun->exp_type); … … 925 900 // XXX: possible mem leak: PXOPT_COPY* will free time_filter but NOTHING 926 901 // that has previously been allocated 927 PXOPT_COPY_TIME(config->args, time_filter, "- filter_input_begin", "dateobs", ">=");928 PXOPT_COPY_TIME(config->args, time_filter, "- filter_input_end", "dateobs", "<");902 PXOPT_COPY_TIME(config->args, time_filter, "-set_input_begin", "dateobs", ">="); 903 PXOPT_COPY_TIME(config->args, time_filter, "-set_input_end", "dateobs", "<"); 929 904 930 905 // start a transaction so we don't end up with childlessed det_ids … … 951 926 psS64 newDet_id = psDBLastInsertID(config->dbh); 952 927 953 psString query = psStringCopy( 954 "INSERT INTO detInputExp" 955 " SELECT" 956 " %d," 957 " 0," 958 " detResidExp.exp_id," 959 " detResidExp.accept" 960 " FROM detResidExp" 961 " JOIN rawExp" 962 " USING(exp_id)" 963 " WHERE det_id = %d" 964 ); 928 psString query = pxDataGet("dettool_definebydetrun.sql"); 929 if (!query) { 930 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 931 return false; 932 } 965 933 966 934 if (time_filter->list->n) { … … 1017 985 PS_ASSERT_PTR_NON_NULL(config, false); 1018 986 987 psMetadata *where = psMetadataAlloc(); 988 PXOPT_COPY_STR(config->args, where, "-det_type", "det_type", "=="); 989 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 990 991 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 992 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 993 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 994 995 // airmass_min < airmass < airmass_max 996 PXOPT_COPY_F32(config->args, where, "-airmass", "airmass_min", "<="); 997 PXOPT_COPY_F32(config->args, where, "-airmass", "airmass_max", ">="); 998 999 // exp_time_min < exp_time < exp_time_max 1000 PXOPT_COPY_F32(config->args, where, "-exp_time", "exp_time_min", "<="); 1001 PXOPT_COPY_F32(config->args, where, "-exp_time", "exp_time_max", ">="); 1002 1003 // ccd_temp_min < ccd_temp < ccd_temp_max 1004 PXOPT_COPY_F32(config->args, where, "-ccd_temp", "ccd_temp_min", "<="); 1005 PXOPT_COPY_F32(config->args, where, "-ccd_temp", "ccd_temp_max", ">="); 1006 1007 PXOPT_COPY_F64(config->args, where, "-posang", "posang_min", "<="); 1008 PXOPT_COPY_F64(config->args, where, "-posang", "posang_max", ">="); 1009 1019 1010 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1020 1011 PXOPT_LOOKUP_BOOL(active, config->args, "-active", false); 1021 1012 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1022 1013 1023 PXOPT_COPY_STR(config->args, config->where, "-inst", "camera", "==");1024 PXOPT_COPY_STR(config->args, config->where, "-telescope", "telescope", "==");1025 PXOPT_COPY_STR(config->args, config->where, "-filter", "filter", "==");1026 1027 // airmass_min < airmass < airmass_max1028 PXOPT_COPY_F32(config->args, config->where, "-airmass", "airmass_min", "<=");1029 PXOPT_COPY_F32(config->args, config->where, "-airmass", "airmass_max", ">=");1030 1031 // exp_time_min < exp_time < exp_time_max1032 PXOPT_COPY_F32(config->args, config->where, "-exp_time", "exp_time_min", "<=");1033 PXOPT_COPY_F32(config->args, config->where, "-exp_time", "exp_time_max", ">=");1034 1035 // ccd_temp_min < ccd_temp < ccd_temp_max1036 PXOPT_COPY_F32(config->args, config->where, "-ccd_temp", "ccd_temp_min", "<=");1037 PXOPT_COPY_F32(config->args, config->where, "-ccd_temp", "ccd_temp_max", ">=");1038 1039 PXOPT_COPY_F64(config->args, config->where, "-posang", "posang_min", "<=");1040 PXOPT_COPY_F64(config->args, config->where, "-posang", "posang_max", ">=");1041 1042 1014 psString query = pxDataGet("dettool_runs.sql"); 1043 1015 if (!query) { … … 1046 1018 } 1047 1019 1048 if ( config->where&& active) {1049 psString whereClause = psDBGenerateWhereSQL( config->where, "detRun");1020 if (psListLength(where->list) && active) { 1021 psString whereClause = psDBGenerateWhereSQL(where, "detRun"); 1050 1022 psStringAppend(&query, " %s AND (detRun.state = 'run' OR detRun.state = 'stop' OR detRun.state = 'register')", whereClause); 1051 1023 psFree(whereClause); 1052 1024 } 1053 if ( config->where&& !active) {1054 psString whereClause = psDBGenerateWhereSQL( config->where, "detRun");1025 if (psListLength(where->list) && !active) { 1026 psString whereClause = psDBGenerateWhereSQL(where, "detRun"); 1055 1027 psStringAppend(&query, " %s", whereClause); 1056 1028 psFree(whereClause); 1057 1029 } 1058 if (! config->where&& active) {1030 if (!psListLength(where->list) && active) { 1059 1031 psStringAppend(&query, " WHERE (detRun.state = 'run' OR detRun.state = 'stop' OR detRun.state = 'register')"); 1060 1032 } 1033 psFree (where); 1061 1034 1062 1035 // treat limit == 0 as "no limit" … … 1080 1053 } 1081 1054 1082 // XXX old version1083 # if 01084 // XXX fix the hard coding of the table name1085 psArray *runs = psDBSelectRows(config->dbh, "detRun", config->where, 0);1086 if (!runs) {1087 psError(PS_ERR_UNKNOWN, false, "database error");1088 return false;1089 }1090 # endif1091 1092 1055 if (!psArrayLength(runs)) { 1093 1056 psTrace("dettool", PS_LOG_INFO, "no rows found"); … … 1112 1075 PS_ASSERT_PTR_NON_NULL(config, false); 1113 1076 1077 psMetadata *where = psMetadataAlloc(); 1078 PXOPT_COPY_STR(config->args, where, "-det_type", "det_type", "=="); 1079 1114 1080 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1115 1081 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1116 1082 1117 psString query = psStringCopy( 1118 "SELECT DISTINCT\n" 1119 " detRun.*\n" 1120 " FROM detRun\n" 1121 " LEFT JOIN detRun as foo\n" 1122 " ON foo.parent = detRun.det_id\n" 1123 " WHERE\n" 1124 " detRun.state = 'stop'\n" 1125 " AND detRun.mode = 'master'\n" 1126 " AND foo.det_id IS NULL\n" 1127 ); 1128 1129 if (config->where) { 1130 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "detRun"); 1083 // find the exp_id of all the exposures that we want to queue up. 1084 psString query = pxDataGet("dettool_childlessrun.sql"); 1085 if (!query) { 1086 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1087 psFree(where); 1088 return false; 1089 } 1090 1091 if (psListLength(where->list)) { 1092 psString whereClause = psDBGenerateWhereConditionSQL(where, "detRun"); 1131 1093 psStringAppend(&query, " AND %s", whereClause); 1132 1094 psFree(whereClause); 1133 1095 } 1096 psFree (where); 1134 1097 1135 1098 // treat limit == 0 as "no limit" … … 1188 1151 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1189 1152 1190 // select detInputExp.*1191 // select rawExp.*1192 // by:1193 // exp_id1194 1195 psString query = p sStringCopy(1196 "SELECT DISTINCT *"1197 " FROM detInputExp"1198 " JOIN rawExp"1199 " USING(exp_id)"1200 );1201 1202 if ( config->where) {1203 psString whereClause = psDBGenerateWhereSQL( config->where, "detInputExp");1153 psMetadata *where = psMetadataAlloc(); 1154 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 1155 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 1156 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1157 1158 psString query = pxDataGet("dettool_input.sql"); 1159 if (!query) { 1160 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1161 psFree(where); 1162 return false; 1163 } 1164 1165 if (psListLength(where->list)) { 1166 psString whereClause = psDBGenerateWhereSQL(where, "detInputExp"); 1204 1167 psStringAppend(&query, " %s", whereClause); 1205 1168 psFree(whereClause); 1206 1169 } 1170 psFree (where); 1207 1171 1208 1172 if (!p_psDBRunQuery(config->dbh, query)) { … … 1242 1206 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1243 1207 1208 psMetadata *where = psMetadataAlloc(); 1209 1244 1210 psString query = pxDataGet("dettool_raw.sql"); 1245 1211 if (!query) { … … 1248 1214 } 1249 1215 1250 if ( config->where) {1251 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "rawImfile");1216 if (psListLength(where->list)) { 1217 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawImfile"); 1252 1218 psStringAppend(&query, " AND %s", whereClause); 1253 1219 psFree(whereClause); 1254 1220 } 1221 psFree (where); 1255 1222 1256 1223 if (!p_psDBRunQuery(config->dbh, query)) { … … 1288 1255 PS_ASSERT_PTR_NON_NULL(config, false); 1289 1256 1257 psMetadata *where = psMetadataAlloc(); 1258 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 1259 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 1260 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 1261 1290 1262 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1291 1263 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 1297 1269 } 1298 1270 1299 if ( config->where) {1300 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "rawImfile");1271 if (psListLength(where->list)) { 1272 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawImfile"); 1301 1273 psStringAppend(&query, " AND %s", whereClause); 1302 1274 psFree(whereClause); 1303 1275 } 1276 psFree (where); 1304 1277 1305 1278 // treat limit == 0 as "no limit" … … 1340 1313 } 1341 1314 1342 static psArray *searchRawImfiles(pxConfig *config, psMetadata *where)1343 {1344 PS_ASSERT_PTR_NON_NULL(config, NULL);1345 1346 // use the default where if "where" is NULL1347 if (!where) {1348 where = config->where;1349 }1350 1351 // select exp_ids from detInputExp matching det_idp1352 // where query should be pre-generated1353 psArray *detInputExp =1354 detInputExpSelectRowObjects(config->dbh, where, 0);1355 if (!detInputExp) {1356 psError(PS_ERR_UNKNOWN, false, "no rawExp rows found");1357 return NULL;1358 }1359 1360 // generate where query with just the exp_ids1361 psMetadata *where_exp_ids = psMetadataAlloc();1362 for (long i = 0; i < psArrayLength(detInputExp); i++) {1363 detInputExpRow *row = detInputExp->data[i];1364 if (!psMetadataAddS64(where_exp_ids, PS_LIST_TAIL, "exp_id",1365 PS_META_DUPLICATE_OK, "==", row->exp_id)1366 ) {1367 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");1368 psFree(detInputExp);1369 psFree(where_exp_ids);1370 return NULL;1371 }1372 }1373 psFree(detInputExp);1374 1375 // select rawImfiles with matching exp_ids1376 psArray *rawImfiles =1377 rawImfileSelectRowObjects(config->dbh, where_exp_ids, 0);1378 psFree(where_exp_ids);1379 if (!rawImfiles) {1380 psError(PS_ERR_UNKNOWN, false, "no rawImfile rows found");1381 return NULL;1382 }1383 1384 return rawImfiles;1385 }1386 1387 1315 static bool addprocessedimfileMode(pxConfig *config) 1388 1316 { 1389 1317 PS_ASSERT_PTR_NON_NULL(config, false); 1390 1318 1391 // det_id, exp_id, class_id, uri, recipe, -bg, -bg_stdev 1392 // are required 1319 // det_id, exp_id, class_id, uri, recipe, -bg, -bg_stdev are required 1393 1320 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 1394 1321 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false); … … 1416 1343 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 1417 1344 1418 1419 1345 // find the matching rawImfile by exp_id/class_id 1420 1346 psMetadata *where = psMetadataAlloc(); 1421 if (!psMetadataAddStr(where, PS_LIST_TAIL, "exp_id", 0, "==", exp_id)) { 1422 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 1423 psFree(where); 1424 return false; 1425 } 1426 if (!psMetadataAddStr(where, PS_LIST_TAIL, "class_id", 0, "==", class_id)) { 1427 psError(PS_ERR_UNKNOWN, false, "failed to add item class_id"); 1428 psFree(where); 1429 return false; 1430 } 1347 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 1348 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 1431 1349 1432 1350 psArray *rawImfiles = rawImfileSelectRowObjects(config->dbh, where, 0); 1433 1351 psFree(where); 1352 1434 1353 if (!rawImfiles) { 1435 1354 psError(PS_ERR_UNKNOWN, false, "no rawImfile rows found "); 1436 1355 return false; 1437 1356 } 1438 1439 1357 1440 1358 // create a new detProcessedImfile object … … 1473 1391 } 1474 1392 1393 static bool processedimfileMode(pxConfig *config) 1394 { 1395 PS_ASSERT_PTR_NON_NULL(config, false); 1396 1397 char *value = NULL; 1398 1399 PXOPT_LOOKUP_BOOL(included, config->args, "-included", false); 1400 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 1401 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1402 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1403 1404 psMetadata *where = psMetadataAlloc(); 1405 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 1406 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 1407 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 1408 1409 psString query = pxDataGet("dettool_processedimfile.sql"); 1410 if (!query) { 1411 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1412 psFree(where); 1413 return false; 1414 } 1415 1416 // add the two required restrictions: detRun.state and detRun.mode 1417 // NOTE the above query requires one of the following two WHERE statements 1418 { 1419 bool status; 1420 if ((value = psMetadataLookupStr(&status, config->args, "-select_state"))) { 1421 psStringAppend(&query, " WHERE detRun.state = '%s'", value); 1422 } else { 1423 psStringAppend(&query, " WHERE detRun.state = 'run'"); 1424 } 1425 if ((value = psMetadataLookupStr(&status, config->args, "-select_mode"))) { 1426 psStringAppend(&query, " AND detRun.mode = '%s'", value); 1427 } else { 1428 psStringAppend(&query, " AND detRun.mode = 'master'"); 1429 } 1430 } 1431 1432 if (psListLength(where->list)) { 1433 psString whereClause = psDBGenerateWhereConditionSQL(where, "detProcessedImfile"); 1434 psStringAppend(&query, " AND %s", whereClause); 1435 psFree(whereClause); 1436 } 1437 psFree (where); 1438 1439 // restrict search to included imfiles 1440 if (included) { 1441 psStringAppend(&query, " AND detInputExp.include = 1"); 1442 } 1443 1444 if (faulted) { 1445 // list only faulted rows 1446 psStringAppend(&query, " %s", "AND detProcessedImfile.fault != 0"); 1447 } else { 1448 // don't list faulted rows 1449 psStringAppend(&query, " %s", "AND detProcessedImfile.fault = 0"); 1450 } 1451 1452 // treat limit == 0 as "no limit" 1453 if (limit) { 1454 psString limitString = psDBGenerateLimitSQL(limit); 1455 psStringAppend(&query, " %s", limitString); 1456 psFree(limitString); 1457 } 1458 1459 if (!p_psDBRunQuery(config->dbh, query)) { 1460 psError(PS_ERR_UNKNOWN, false, "database error"); 1461 psFree(query); 1462 return false; 1463 } 1464 psFree(query); 1465 1466 psArray *output = p_psDBFetchResult(config->dbh); 1467 if (!output) { 1468 psError(PS_ERR_UNKNOWN, false, "database error"); 1469 return false; 1470 } 1471 if (!psArrayLength(output)) { 1472 psTrace("dettool", PS_LOG_INFO, "no rows found"); 1473 psFree(output); 1474 return true; 1475 } 1476 1477 // negative simple so the default is true 1478 if (!ippdbPrintMetadatas(stdout, output, "rawImfile", !simple)) { 1479 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1480 psFree(output); 1481 return false; 1482 } 1483 1484 psFree(output); 1485 1486 return true; 1487 } 1488 1489 static bool revertprocessedimfileMode(pxConfig *config) 1490 { 1491 PS_ASSERT_PTR_NON_NULL(config, false); 1492 1493 psMetadata *where = psMetadataAlloc(); 1494 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 1495 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 1496 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 1497 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 1498 1499 psString query = pxDataGet("dettool_revertprocessedimfile.sql"); 1500 if (!query) { 1501 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1502 return false; 1503 } 1504 1505 if (psListLength(where->list)) { 1506 psString whereClause = psDBGenerateWhereConditionSQL(where, "detProcessedImfile"); 1507 psStringAppend(&query, " AND %s", whereClause); 1508 psFree(whereClause); 1509 } 1510 psFree(where); 1511 1512 if (!p_psDBRunQuery(config->dbh, query)) { 1513 psError(PS_ERR_UNKNOWN, false, "database error"); 1514 psFree(query); 1515 return false; 1516 } 1517 psFree(query); 1518 1519 if (psDBAffectedRows(config->dbh) < 1) { 1520 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row"); 1521 return false; 1522 } 1523 1524 return true; 1525 } 1526 1475 1527 static bool toprocessedexpMode(pxConfig *config) 1476 1528 { … … 1485 1537 return false; 1486 1538 } 1487 1488 // XXX does it make sense to accept any search params?1489 #if 01490 if (config->where) {1491 psString whereClause = psDBGenerateWhereConditionSQL(config->where);1492 psStringAppend(&query, " AND %s", whereClause);1493 psFree(whereClause);1494 }1495 #endif1496 1539 1497 1540 // treat limit == 0 as "no limit" … … 1561 1604 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", true, false); 1562 1605 1563 1564 psString query = psStringCopy( 1565 " SELECT DISTINCT" 1566 " detProcessedImfile.det_id," 1567 " detRun.iteration," 1568 " detRun.det_type," 1569 " detProcessedImfile.exp_id" 1570 " FROM detRun" 1571 " JOIN detInputExp" 1572 " ON detRun.det_id = detInputExp.det_id" 1573 " AND detRun.iteration = detInputExp.iteration" 1574 " JOIN rawExp" 1575 " ON detInputExp.exp_id = rawExp.exp_id" 1576 " JOIN detProcessedImfile" 1577 " ON detInputExp.det_id = detProcessedImfile.det_id" 1578 " AND detInputExp.exp_id = detProcessedImfile.exp_id" 1579 " LEFT JOIN detProcessedExp" 1580 " ON detInputExp.det_id = detProcessedExp.det_id" 1581 " AND detProcessedImfile.exp_id= detProcessedExp.exp_id" 1582 " LEFT JOIN rawImfile" 1583 " ON detInputExp.exp_id = rawImfile.exp_id" 1584 " AND detProcessedImfile.class_id = rawImfile.class_id" 1585 " WHERE" 1586 " detRun.state = 'run'" 1587 " AND detRun.mode = 'master'" 1588 " AND detProcessedExp.det_id IS NULL" 1589 " AND detProcessedExp.exp_id IS NULL" 1590 " AND detInputExp.include = 1" 1591 " AND detRun.det_id = %s" 1592 " AND detProcessedImfile.exp_id = '%s'" 1593 " GROUP BY" 1594 " detProcessedImfile.class_id," 1595 " rawImfile.class_id," 1596 " detRun.det_id" 1597 " HAVING" 1598 " COUNT(detProcessedImfile.class_id) = COUNT(rawImfile.class_id)" 1599 ); 1606 psString query = pxDataGet("dettool_addprocessedexp.sql"); 1607 if (!query) { 1608 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1609 return false; 1610 } 1600 1611 1601 1612 if (!p_psDBRunQuery(config->dbh, query, det_id, exp_id)) { … … 1654 1665 PS_ASSERT_PTR_NON_NULL(config, false); 1655 1666 1667 psMetadata *where = psMetadataAlloc(); 1668 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 1669 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 1670 1656 1671 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1672 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 1657 1673 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1658 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);1659 1674 1660 1675 psString query = psStringCopy("SELECT * FROM detProcessedExp"); 1661 1676 1662 if ( config->where) {1663 psString whereClause = psDBGenerateWhereSQL( config->where, NULL);1677 if (psListLength(where->list)) { 1678 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1664 1679 psStringAppend(&query, " %s", whereClause); 1665 1680 psFree(whereClause); 1666 1681 } 1682 psFree(where); 1667 1683 1668 1684 if (faulted) { … … 1716 1732 PS_ASSERT_PTR_NON_NULL(config, false); 1717 1733 1734 psMetadata *where = psMetadataAlloc(); 1735 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 1736 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 1737 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 1738 1718 1739 psString query = pxDataGet("dettool_revertprocessedexp.sql"); 1719 1740 if (!query) { … … 1722 1743 } 1723 1744 1724 if ( config->where) {1725 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "detProcessedExp");1745 if (psListLength(where->list)) { 1746 psString whereClause = psDBGenerateWhereConditionSQL(where, "detProcessedExp"); 1726 1747 psStringAppend(&query, " AND %s", whereClause); 1727 1748 psFree(whereClause); 1728 1749 } 1750 psFree(where); 1729 1751 1730 1752 if (!p_psDBRunQuery(config->dbh, query)) { … … 1756 1778 return false; 1757 1779 } 1758 1759 // XXX does it make sense to accept any search params?1760 #if 01761 if (config->where) {1762 psString whereClause = psDBGenerateWhereConditionSQL(config->where);1763 psStringAppend(&query, " AND %s", whereClause);1764 psFree(whereClause);1765 }1766 #endif1767 1780 1768 1781 // treat limit == 0 as "no limit" … … 1803 1816 } 1804 1817 1805 static bool processedimfileMode(pxConfig *config) 1806 { 1807 PS_ASSERT_PTR_NON_NULL(config, false); 1808 1809 char *value = NULL; 1810 1811 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1812 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1813 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 1814 1815 psString query = psStringCopy( 1816 " SELECT DISTINCT" 1817 " detRun.det_type," 1818 " rawExp.exp_time," 1819 " detProcessedImfile.*" 1820 " FROM detProcessedImfile" 1821 " JOIN detRun" 1822 " USING(det_id)" 1823 " JOIN detInputExp" 1824 " ON detRun.det_id = detInputExp.det_id" 1825 " AND detRun.iteration = detInputExp.iteration" 1826 " AND detProcessedImfile.exp_id = detInputExp.exp_id" 1827 " JOIN rawExp" 1828 " ON rawExp.exp_id = detProcessedImfile.exp_id" 1829 " WHERE" 1830 ); 1831 // NOTE the above WHERE is completed with the following line: 1832 1833 // add the two required restrictions: detRun.state and detRun.mode 1834 { 1835 bool status; 1836 if ((value = psMetadataLookupStr(&status, config->args, "-select_state"))) { 1837 psStringAppend(&query, " detRun.state = '%s'", value); 1838 } else { 1839 psStringAppend(&query, " detRun.state = 'run'"); 1818 // this is NOT a command-line mode : it is used by 'addstackedMode' 1819 static psArray *searchRawImfiles(pxConfig *config) 1820 { 1821 PS_ASSERT_PTR_NON_NULL(config, NULL); 1822 1823 psMetadata *where = psMetadataAlloc(); 1824 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 1825 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 1826 1827 // select exp_ids from detInputExp matching det_id & iteration 1828 // where query should be pre-generated 1829 psArray *detInputExp = detInputExpSelectRowObjects(config->dbh, where, 0); 1830 psFree (where); 1831 1832 if (!detInputExp) { 1833 psError(PS_ERR_UNKNOWN, false, "no rawExp rows found"); 1834 return NULL; 1835 } 1836 1837 // generate where query with just the exp_ids 1838 psMetadata *where_exp_ids = psMetadataAlloc(); 1839 for (long i = 0; i < psArrayLength(detInputExp); i++) { 1840 detInputExpRow *row = detInputExp->data[i]; 1841 if (!psMetadataAddS64(where_exp_ids, PS_LIST_TAIL, "exp_id", 1842 PS_META_DUPLICATE_OK, "==", row->exp_id) 1843 ) { 1844 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 1845 psFree(detInputExp); 1846 psFree(where_exp_ids); 1847 return NULL; 1840 1848 } 1841 if ((value = psMetadataLookupStr(&status, config->args, "-select_mode"))) { 1842 psStringAppend(&query, " AND detRun.mode = '%s'", value); 1843 } else { 1844 psStringAppend(&query, " AND detRun.mode = 'master'"); 1845 } 1846 } 1847 1848 if (config->where) { 1849 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "detProcessedImfile"); 1850 psStringAppend(&query, " AND %s", whereClause); 1851 psFree(whereClause); 1852 } 1853 1854 { 1855 bool status = false; 1856 bool included = psMetadataLookupBool(&status, config->args, "-included"); 1857 if (!status) { 1858 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple"); 1859 return false; 1860 } 1861 // restrict search to included imfiles 1862 if (included) { 1863 psStringAppend(&query, " AND detInputExp.include = 1"); 1864 } 1865 } 1866 1867 if (faulted) { 1868 // list only faulted rows 1869 psStringAppend(&query, " %s", "AND detProcessedImfile.fault != 0"); 1870 } else { 1871 // don't list faulted rows 1872 psStringAppend(&query, " %s", "AND detProcessedImfile.fault = 0"); 1873 } 1874 1875 // treat limit == 0 as "no limit" 1876 if (limit) { 1877 psString limitString = psDBGenerateLimitSQL(limit); 1878 psStringAppend(&query, " %s", limitString); 1879 psFree(limitString); 1880 } 1881 1882 if (!p_psDBRunQuery(config->dbh, query)) { 1883 psError(PS_ERR_UNKNOWN, false, "database error"); 1884 psFree(query); 1885 return false; 1886 } 1887 psFree(query); 1888 1889 psArray *output = p_psDBFetchResult(config->dbh); 1890 if (!output) { 1891 psError(PS_ERR_UNKNOWN, false, "database error"); 1892 return false; 1893 } 1894 if (!psArrayLength(output)) { 1895 psTrace("dettool", PS_LOG_INFO, "no rows found"); 1896 psFree(output); 1897 return true; 1898 } 1899 1900 // negative simple so the default is true 1901 if (!ippdbPrintMetadatas(stdout, output, "rawImfile", !simple)) { 1902 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1903 psFree(output); 1904 return false; 1905 } 1906 1907 psFree(output); 1908 1909 return true; 1910 } 1911 1912 1913 static bool revertprocessedimfileMode(pxConfig *config) 1914 { 1915 PS_ASSERT_PTR_NON_NULL(config, false); 1916 1917 psString query = pxDataGet("dettool_revertprocessedimfile.sql"); 1918 if (!query) { 1919 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1920 return false; 1921 } 1922 1923 if (config->where) { 1924 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "detProcessedImfile"); 1925 psStringAppend(&query, " AND %s", whereClause); 1926 psFree(whereClause); 1927 } 1928 1929 if (!p_psDBRunQuery(config->dbh, query)) { 1930 psError(PS_ERR_UNKNOWN, false, "database error"); 1931 psFree(query); 1932 return false; 1933 } 1934 psFree(query); 1935 1936 if (psDBAffectedRows(config->dbh) < 1) { 1937 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row"); 1938 return false; 1939 } 1940 1941 return true; 1942 } 1943 1849 } 1850 psFree(detInputExp); 1851 1852 // select rawImfiles with matching exp_ids 1853 psArray *rawImfiles = 1854 rawImfileSelectRowObjects(config->dbh, where_exp_ids, 0); 1855 psFree(where_exp_ids); 1856 if (!rawImfiles) { 1857 psError(PS_ERR_UNKNOWN, false, "no rawImfile rows found"); 1858 return NULL; 1859 } 1860 1861 return rawImfiles; 1862 } 1944 1863 1945 1864 static bool addstackedMode(pxConfig *config) … … 1947 1866 PS_ASSERT_PTR_NON_NULL(config, false); 1948 1867 1949 // det_id, class_id, uri, & recipe are required1868 // det_id, iteration, class_id, uri, & recipe are required 1950 1869 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 1870 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", true, false); 1951 1871 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false); 1952 1872 … … 1967 1887 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false); 1968 1888 1969 // default values1970 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false);1971 1972 1889 // correlate the class_id against the input exposure(s) 1973 1974 // we have to generate our own where clause as we want to search only by the 1975 // det_id 1976 psMetadata *where = psMetadataAlloc(); 1977 if (!psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", 1978 (psS64)atoll(det_id))) { 1979 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 1980 psFree(where); 1981 return false; 1982 } 1983 1984 psArray *rawImfiles = searchRawImfiles(config, where); 1985 psFree(where); 1890 // searchRawImfiles defines a where clause to search by det_id and iteration 1891 psArray *rawImfiles = searchRawImfiles(config); 1986 1892 1987 1893 if (!rawImfiles) { … … 2045 1951 PS_ASSERT_PTR_NON_NULL(config, false); 2046 1952 1953 psMetadata *where = psMetadataAlloc(); 1954 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 1955 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 1956 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 1957 PXOPT_COPY_STR(config->args, where, "-recip", "recipe", "=="); 1958 2047 1959 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1960 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 2048 1961 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 2049 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 2050 2051 // select detStackedImfile.* 2052 // by: 2053 // where det_id, iteration, class_id is not in detNormalizedImfile 2054 2055 psString query = psStringCopy( 2056 "SELECT" 2057 " detStackedImfile.*" 2058 " FROM detStackedImfile" 2059 " JOIN detRun" 2060 " USING(det_id, iteration)" 2061 " WHERE" 2062 " detRun.state = 'run'" 2063 " AND detRun.mode = 'master'" 2064 ); 2065 2066 if (config->where) { 2067 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "detStackedImfile"); 1962 1963 psString query = pxDataGet("dettool_stacked.sql"); 1964 if (!query) { 1965 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1966 psFree(where); 1967 return false; 1968 } 1969 1970 if (psListLength(where->list)) { 1971 psString whereClause = psDBGenerateWhereConditionSQL(where, "detStackedImfile"); 2068 1972 psStringAppend(&query, " AND %s", whereClause); 2069 1973 psFree(whereClause); 2070 1974 } 1975 psFree(where); 2071 1976 2072 1977 if (faulted) { … … 2120 2025 PS_ASSERT_PTR_NON_NULL(config, false); 2121 2026 2027 psMetadata *where = psMetadataAlloc(); 2028 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 2029 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 2030 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 2031 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 2032 2122 2033 psString query = pxDataGet("dettool_revertstacked.sql"); 2123 2034 if (!query) { … … 2126 2037 } 2127 2038 2128 if ( config->where) {2129 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "detStackedImfile");2039 if (psListLength(where->list)) { 2040 psString whereClause = psDBGenerateWhereConditionSQL(where, "detStackedImfile"); 2130 2041 psStringAppend(&query, " AND %s", whereClause); 2131 2042 psFree(whereClause); 2132 2043 } 2044 psFree(where); 2133 2045 2134 2046 if (!p_psDBRunQuery(config->dbh, query)) { … … 2159 2071 return false; 2160 2072 } 2161 2162 // XXX does it make sense to accept any search params?2163 #if 02164 if (config->where) {2165 psString whereClause = psDBGenerateWhereConditionSQL(config->where);2166 psStringAppend(&query, " AND %s", whereClause);2167 psFree(whereClause);2168 }2169 #endif2170 2073 2171 2074 // treat limit == 0 as "no limit" … … 2240 2143 PS_ASSERT_PTR_NON_NULL(config, false); 2241 2144 2145 psMetadata *where = psMetadataAlloc(); 2146 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 2147 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 2148 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 2149 2242 2150 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 2151 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 2243 2152 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 2244 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);2245 2153 2246 2154 psString query = pxDataGet("dettool_normalizedstat.sql"); … … 2258 2166 } 2259 2167 2260 if ( config->where) {2261 psString whereClause = psDBGenerateWhereConditionSQL( config->where, NULL);2168 if (psListLength(where->list)) { 2169 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 2262 2170 psStringAppend(&query, " AND %s", whereClause); 2263 2171 psFree(whereClause); 2264 2172 } 2173 psFree(where); 2265 2174 2266 2175 // treat limit == 0 as "no limit" … … 2305 2214 PS_ASSERT_PTR_NON_NULL(config, false); 2306 2215 2216 psMetadata *where = psMetadataAlloc(); 2217 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 2218 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 2219 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 2220 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 2221 2307 2222 psString query = pxDataGet("dettool_revertnormalizedstat.sql"); 2308 2223 if (!query) { … … 2311 2226 } 2312 2227 2313 if ( config->where) {2314 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "detNormalizedStatImfile");2228 if (psListLength(where->list)) { 2229 psString whereClause = psDBGenerateWhereConditionSQL(where, "detNormalizedStatImfile"); 2315 2230 psStringAppend(&query, " AND %s", whereClause); 2316 2231 psFree(whereClause); 2317 2232 } 2233 psFree(where); 2318 2234 2319 2235 if (!p_psDBRunQuery(config->dbh, query)) { … … 2339 2255 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 2340 2256 2341 // select detNormalizedStatImfile.* 2342 // by: 2343 // where det_id, iteration, class_id is not in detNormalizedImfile 2344 2345 psString query = psStringCopy( 2346 "SELECT DISTINCT" 2347 " detRun.det_type," 2348 " detRun.workdir," 2349 " rawExp.camera," 2350 " detStackedImfile.uri," 2351 " detNormalizedStatImfile.*" 2352 " FROM detRun" 2353 " JOIN detStackedImfile" 2354 " USING(det_id, iteration)" 2355 " JOIN detInputExp" 2356 " USING(det_id, iteration)" 2357 " JOIN rawExp" 2358 " ON detInputExp.exp_id = rawExp.exp_id" 2359 " JOIN detNormalizedStatImfile" 2360 " ON detStackedImfile.det_id = detNormalizedStatImfile.det_id" 2361 " AND detStackedImfile.iteration = detNormalizedStatImfile.iteration" 2362 " AND detStackedImfile.class_id = detNormalizedStatImfile.class_id" 2363 " LEFT JOIN detNormalizedImfile" 2364 " ON detNormalizedStatImfile.det_id = detNormalizedImfile.det_id" 2365 " AND detNormalizedStatImfile.iteration = detNormalizedImfile.iteration" 2366 " AND detNormalizedStatImfile.class_id = detNormalizedImfile.class_id" 2367 " WHERE" 2368 " detNormalizedImfile.det_id IS NULL" 2369 " AND detNormalizedImfile.iteration IS NULL" 2370 " AND detNormalizedImfile.class_id IS NULL" 2371 " AND detNormalizedStatImfile.fault = 0" 2372 " AND detRun.state = 'run'" 2373 ); 2374 2375 // XXX does it make sense to accept any search params? 2376 #if 0 2377 if (config->where) { 2378 psString whereClause = psDBGenerateWhereConditionSQL(config->where); 2379 psStringAppend(&query, " AND %s", whereClause); 2380 psFree(whereClause); 2381 } 2382 #endif 2257 psString query = pxDataGet("dettool_tonormalize.sql"); 2258 if (!query) { 2259 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 2260 return false; 2261 } 2383 2262 2384 2263 // treat limit == 0 as "no limit" … … 2419 2298 } 2420 2299 2421 #if 02422 // XXX this function was left in commented as this method may be useful in the2423 // future2424 static psArray *validDetInputClassIds(pxConfig *config, const char *det_id)2425 {2426 PS_ASSERT_PTR_NON_NULL(config, NULL);2427 // det_id is input as a string because the fact that it is an integer2428 // is just a database impliementation detail.2429 PS_ASSERT_PTR_NON_NULL(det_id, NULL);2430 2431 psArray *rawImfiles = searchInputImfiles(config, det_id);2432 if (!rawImfiles) {2433 return NULL;2434 }2435 2436 psArray *valid_class_ids = NULL;2437 {2438 // All this jumping through hoops is so that we end up with unique2439 // values. PP thinks that making multiple passes through this array and2440 // deleting matched elements would end up being more expensive then a2441 // double sort and stagger scheme. JH thinks it would be cheaper to2442 // just do a unqiue sort and delete. So this is really just a cheap2443 // hack to avoid implimenting a unique sort function but at least it's2444 // stable.2445 psHash *hash = psHashAlloc(psArrayLength(rawImfiles));2446 for (long i = 0; i < psArrayLength(rawImfiles); i++) {2447 psHashAdd(hash,2448 ((rawImfileRow *)rawImfiles->data[i])->class_id,2449 ((rawImfileRow *)rawImfiles->data[i])->class_id2450 );2451 }2452 valid_class_ids = psHashToArray(hash);2453 psFree(hash);2454 }2455 psFree(rawImfiles);2456 2457 return valid_class_ids;2458 }2459 2460 static psArray *searchInputImfiles(pxConfig *config, const char *det_id)2461 {2462 PS_ASSERT_PTR_NON_NULL(config, NULL);2463 // det_id is input as a string because the fact that it is an integer2464 // is just a database impliementation detail.2465 PS_ASSERT_PTR_NON_NULL(det_id, NULL);2466 2467 psArray *inputExps = NULL;2468 {2469 psMetadata *where = psMetadataAlloc();2470 if (!psMetadataAddS32(where, PS_LIST_TAIL, "det_id", 0, "==",2471 (psS32)atoi(det_id))) {2472 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");2473 psFree(where);2474 return NULL;2475 }2476 inputExps = detInputExpSelectRowObjects(config->dbh, where, 0);2477 psFree(where);2478 }2479 if (!inputExps) {2480 psError(PS_ERR_UNKNOWN, false, "no detInputExp rows found");2481 return NULL;2482 }2483 2484 // find rawImfiles associated with detInputExps2485 psArray *rawImfiles = NULL;2486 {2487 psMetadata *where = psMetadataAlloc();2488 for (long i = 0; i < psArrayLength(inputExps); i++) {2489 if (!psMetadataAddStr(where, PS_LIST_TAIL, "exp_id",2490 PS_META_DUPLICATE_OK, "==",2491 ((detInputExpRow *)inputExps->data[i])->exp_id)) {2492 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");2493 psFree(inputExps);2494 psFree(where);2495 return NULL;2496 }2497 }2498 psFree(inputExps);2499 rawImfiles = rawImfileSelectRowObjects(config->dbh, where, 0);2500 // XXX this really should be sorted for uniqueness2501 psFree(where);2502 }2503 if (!rawImfiles) {2504 psError(PS_ERR_UNKNOWN, false, "no rawImfile rows found");2505 return NULL;2506 }2507 2508 return rawImfiles;2509 }2510 #endif2511 2512 2300 static bool addnormalizedimfileMode(pxConfig *config) 2513 2301 { … … 2516 2304 // required 2517 2305 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 2306 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false); 2518 2307 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false); 2519 2308 … … 2533 2322 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false); 2534 2323 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 2535 2536 // default values2537 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false);2538 2324 2539 2325 if (!detNormalizedImfileInsert(config->dbh, … … 2560 2346 } 2561 2347 2562 2563 2348 static bool normalizedimfileMode(pxConfig *config) 2564 2349 { 2565 2350 PS_ASSERT_PTR_NON_NULL(config, false); 2351 2352 psMetadata *where = psMetadataAlloc(); 2353 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 2354 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 2355 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 2356 PXOPT_COPY_STR(config->args, where, "-recip", "recipe", "=="); 2566 2357 2567 2358 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 2569 2360 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 2570 2361 2571 psString query = psStringCopy( 2572 "SELECT" 2573 " detNormalizedImfile.*" 2574 " FROM detNormalizedImfile" 2575 " JOIN detRun" 2576 " USING(det_id, iteration)" 2577 " WHERE" 2578 " detRun.state = 'run'" 2579 " AND detRun.mode = 'master'" 2580 ); 2581 2582 if (config->where) { 2583 bool status; 2584 int iteration = psMetadataLookupS32 (&status, config->where, "iteration"); 2585 if (status) { 2586 psMetadataRemoveKey (config->where, "iteration"); 2587 psMetadataAddS32 (config->where, PS_LIST_TAIL, "iteration", 0, "==", iteration); 2588 } 2589 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "detNormalizedImfile"); 2362 psString query = pxDataGet("dettool_normalizedimfile.sql"); 2363 if (!query) { 2364 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 2365 return false; 2366 } 2367 2368 if (psListLength(where->list)) { 2369 psString whereClause = psDBGenerateWhereConditionSQL(where, "detNormalizedImfile"); 2590 2370 psStringAppend(&query, " AND %s", whereClause); 2591 2371 psFree(whereClause); 2592 2372 } 2373 psFree(where); 2593 2374 2594 2375 if (faulted) { … … 2642 2423 PS_ASSERT_PTR_NON_NULL(config, false); 2643 2424 2425 psMetadata *where = psMetadataAlloc(); 2426 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 2427 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 2428 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 2429 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 2430 2644 2431 psString query = pxDataGet("dettool_revertnormalizedimfile.sql"); 2645 2432 if (!query) { … … 2648 2435 } 2649 2436 2650 if ( config->where) {2651 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "detNormalizedImfile");2437 if (psListLength(where->list)) { 2438 psString whereClause = psDBGenerateWhereConditionSQL(where, "detNormalizedImfile"); 2652 2439 psStringAppend(&query, " AND %s", whereClause); 2653 2440 psFree(whereClause); 2654 2441 } 2442 psFree(where); 2655 2443 2656 2444 if (!p_psDBRunQuery(config->dbh, query)) { … … 2668 2456 return true; 2669 2457 } 2670 2671 2458 2672 2459 static bool tonormalizedexpMode(pxConfig *config) … … 2682 2469 return false; 2683 2470 } 2684 2685 // XXX does it make sense to accept any search params?2686 #if 02687 if (config->where) {2688 psString whereClause = psDBGenerateWhereConditionSQL(config->where);2689 psStringAppend(&query, " AND %s", whereClause);2690 psFree(whereClause);2691 }2692 #endif2693 2471 2694 2472 // treat limit == 0 as "no limit" … … 2732 2510 { 2733 2511 PS_ASSERT_PTR_NON_NULL(config, false); 2734 2735 // required 2736 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 2737 2512 2513 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required 2514 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false); 2738 2515 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 2739 2740 // Required if code == 0 2741 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false); 2742 2743 // optional 2516 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false); // Required if code == 0 2744 2517 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false); 2745 2518 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false); … … 2752 2525 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 2753 2526 2754 // default values2755 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false);2756 2757 2527 psString query = pxDataGet("dettool_tonormalizedexp.sql"); 2758 2528 if (!query) { … … 2761 2531 } 2762 2532 2763 psStringAppend(&query, 2764 " WHERE det_id = %s" 2765 " AND iteration = %d", det_id, iteration); 2766 2533 // XXX in some other places, we put the arguments in the .sql and supply them to RunQuery 2534 psStringAppend(&query, " WHERE det_id = %s AND iteration = %d", det_id, iteration); 2767 2535 2768 2536 if (!p_psDBRunQuery(config->dbh, query)) { … … 2813 2581 PS_ASSERT_PTR_NON_NULL(config, false); 2814 2582 2583 psMetadata *where = psMetadataAlloc(); 2584 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 2585 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 2586 PXOPT_COPY_STR(config->args, where, "-recip", "recipe", "=="); 2587 2815 2588 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 2816 2589 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 2817 2590 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 2818 2591 2819 psString query = psStringCopy( 2820 "SELECT" 2821 " detNormalizedExp.*" 2822 " FROM detNormalizedExp" 2823 " JOIN detRun" 2824 " USING(det_id, iteration)" 2825 " WHERE" 2826 " detRun.state = 'run'" 2827 " AND detRun.mode = 'master'" 2828 ); 2829 2830 if (config->where) { 2831 psString whereClause = psDBGenerateWhereSQL(config->where, NULL); 2592 psString query = pxDataGet("dettool_normalizedexp.sql"); 2593 if (!query) { 2594 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 2595 return false; 2596 } 2597 2598 if (psListLength(where->list)) { 2599 psString whereClause = psDBGenerateWhereSQL(where, NULL); 2832 2600 psStringAppend(&query, " %s", whereClause); 2833 2601 psFree(whereClause); 2834 2602 } 2603 psFree(where); 2835 2604 2836 2605 if (faulted) { … … 2885 2654 PS_ASSERT_PTR_NON_NULL(config, false); 2886 2655 2656 psMetadata *where = psMetadataAlloc(); 2657 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 2658 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 2659 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 2660 2887 2661 psString query = pxDataGet("dettool_revertnormalizedexp.sql"); 2888 2662 if (!query) { … … 2891 2665 } 2892 2666 2893 if ( config->where) {2894 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "detNormalizedExp");2667 if (psListLength(where->list)) { 2668 psString whereClause = psDBGenerateWhereConditionSQL(where, "detNormalizedExp"); 2895 2669 psStringAppend(&query, " AND %s", whereClause); 2896 2670 psFree(whereClause); 2897 2671 } 2672 psFree(where); 2898 2673 2899 2674 if (!p_psDBRunQuery(config->dbh, query)) { … … 2925 2700 return false; 2926 2701 } 2927 2928 // XXX does it make sense to accept any search params?2929 #if 02930 if (config->where) {2931 psString whereClause = psDBGenerateWhereConditionSQL(config->where);2932 psStringAppend(&query, " AND %s", whereClause);2933 psFree(whereClause);2934 }2935 #endif2936 2702 2937 2703 // treat limit == 0 as "no limit" … … 2977 2743 PS_ASSERT_PTR_NON_NULL(config, false); 2978 2744 2979 // required2980 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 2981 PXOPT_LOOKUP_S TR(class_id, config->args, "-class_id", true, false);2982 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false); 2983 2745 2746 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required 2747 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false); 2748 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false); // required 2749 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false); // required 2984 2750 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 2985 2986 // Required if code == 0 2987 PXOPT_LOOKUP_STR(uri, config->args, "-uri", (code == 0), false); 2988 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false); 2989 2990 // optional 2751 PXOPT_LOOKUP_STR(uri, config->args, "-uri", (code == 0), false); // Required if code == 0 2752 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false); // Required if code == 0 2991 2753 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false); 2992 2754 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false); … … 2995 2757 PXOPT_LOOKUP_F64(bg_kurtosis, config->args, "-bg_kurtosis", false, false); 2996 2758 PXOPT_LOOKUP_F64(bin_stdev, config->args, "-bin_stdev", false, false); 2997 2998 2759 PXOPT_LOOKUP_F64(fringe_0, config->args, "-fringe_0", false, false); 2999 2760 PXOPT_LOOKUP_F64(fringe_1, config->args, "-fringe_1", false, false); … … 3002 2763 PXOPT_LOOKUP_F64(fringe_resid_1, config->args, "-fringe_resid_1", false, false); 3003 2764 PXOPT_LOOKUP_F64(fringe_resid_2, config->args, "-fringe_resid_2", false, false); 3004 3005 2765 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); 3006 2766 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false); … … 3009 2769 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false); 3010 2770 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 3011 3012 // default values3013 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false);3014 2771 3015 2772 if (!detResidImfileInsert(config->dbh, … … 3052 2809 PS_ASSERT_PTR_NON_NULL(config, false); 3053 2810 2811 psMetadata *where = psMetadataAlloc(); 2812 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 2813 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 2814 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 2815 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 2816 PXOPT_COPY_STR(config->args, where, "-recip", "recipe", "=="); 2817 3054 2818 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 3055 2819 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 3056 2820 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 3057 2821 3058 // select detResidImfile.* 3059 // by: 3060 // where det_id, iteration, exp_id is not in detResidExp; 3061 3062 psString query = psStringCopy( 3063 "SELECT" 3064 " detRun.det_type," 3065 " detRun.mode," 3066 " detResidImfile.*," 3067 " rawExp.exp_time" 3068 " FROM detResidImfile" 3069 " JOIN detRun" 3070 " USING(det_id, iteration)" 3071 " JOIN rawExp" 3072 " USING(exp_id)" 3073 " WHERE" 3074 ); 3075 // NOTE the above WHERE is completed with the following line: 3076 2822 psString query = pxDataGet("dettool_residimfile.sql"); 2823 if (!query) { 2824 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 2825 return false; 2826 } 2827 2828 // NOTE: the query ends in a WHERE, add the required restriction on detRun.state 3077 2829 char *value = NULL; 3078 3079 // add the two required restrictions: detRun.state and detRun.mode3080 2830 bool status; 3081 2831 if ((value = psMetadataLookupStr(&status, config->args, "-select_state"))) { … … 3085 2835 } 3086 2836 3087 if ( config->where) {3088 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "detResidImfile");2837 if (psListLength(where->list)) { 2838 psString whereClause = psDBGenerateWhereConditionSQL(where, "detResidImfile"); 3089 2839 psStringAppend(&query, " AND %s", whereClause); 3090 2840 psFree(whereClause); 3091 2841 } 2842 psFree(where); 3092 2843 3093 2844 if (faulted) { … … 3141 2892 PS_ASSERT_PTR_NON_NULL(config, false); 3142 2893 2894 psMetadata *where = psMetadataAlloc(); 2895 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 2896 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 2897 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 2898 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 2899 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 2900 3143 2901 psString query = pxDataGet("dettool_revertresidimfile.sql"); 3144 2902 if (!query) { … … 3147 2905 } 3148 2906 3149 if ( config->where) {3150 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "detResidImfile");2907 if (psListLength(where->list)) { 2908 psString whereClause = psDBGenerateWhereConditionSQL(where, "detResidImfile"); 3151 2909 psStringAppend(&query, " AND %s", whereClause); 3152 2910 psFree(whereClause); 3153 2911 } 2912 psFree(where); 3154 2913 3155 2914 if (!p_psDBRunQuery(config->dbh, query)) { … … 3169 2928 3170 2929 2930 /* 2931 The SQL returns a list of exposures for which all component class ids have had residuals 2932 created. This list includes the detrend id, iteration, exposure id, detrend type, and 2933 whether the exposure was included in the stack for this iteration. 2934 */ 2935 3171 2936 static bool toresidexpMode(pxConfig *config) 3172 2937 { 3173 2938 PS_ASSERT_PTR_NON_NULL(config, false); 3174 3175 /*3176 which returns a list of exposures for which all component class ids3177 have had residuals created. This list includes the detrend id,3178 iteration, exposure id, detrend type, and whether the exposure was3179 included in the stack for this iteration.3180 */3181 2939 3182 2940 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 3188 2946 return false; 3189 2947 } 3190 3191 // XXX does it make sense to accept any search params?3192 #if 03193 if (config->where) {3194 psString whereClause = psDBGenerateWhereConditionSQL(config->where);3195 psStringAppend(&query, " AND %s", whereClause);3196 psFree(whereClause);3197 }3198 #endif3199 2948 3200 2949 // treat limit == 0 as "no limit" … … 3235 2984 } 3236 2985 2986 /* 2987 The SQL returns a list of exposures for which all component class ids have had residuals 2988 created. This list includes the detrend id, iteration, exposure id, detrend type, and 2989 whether the exposure was included in the stack for this iteration. 2990 */ 2991 3237 2992 static bool addresidexpMode(pxConfig *config) 3238 2993 { 3239 2994 PS_ASSERT_PTR_NON_NULL(config, false); 3240 2995 3241 // required 3242 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 3243 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false); 3244 2996 // limit search by det_id, iteration, exp_id 2997 psMetadata *where = psMetadataAlloc(); 2998 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 2999 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 3000 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 3001 3002 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required 3003 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false); 3004 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false); // required 3245 3005 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 3246 3247 // Required if code == 0 3248 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false); 3249 3250 // optional 3006 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false); // Required if code == 0 3251 3007 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false); 3252 3008 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false); … … 3255 3011 PXOPT_LOOKUP_F64(bg_kurtosis, config->args, "-bg_kurtosis", false, false); 3256 3012 PXOPT_LOOKUP_F64(bin_stdev, config->args, "-bin_stdev", false, false); 3257 3258 3013 PXOPT_LOOKUP_F64(fringe_0, config->args, "-fringe_0", false, false); 3259 3014 PXOPT_LOOKUP_F64(fringe_1, config->args, "-fringe_1", false, false); … … 3262 3017 PXOPT_LOOKUP_F64(fringe_resid_1, config->args, "-fringe_resid_1", false, false); 3263 3018 PXOPT_LOOKUP_F64(fringe_resid_2, config->args, "-fringe_resid_2", false, false); 3264 3265 3019 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false); 3266 3020 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false); … … 3269 3023 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false); 3270 3024 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 3271 3272 // default values3273 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false);3274 3025 PXOPT_LOOKUP_BOOL(reject, config->args, "-reject", false); 3275 3276 /*3277 which returns a list of exposures for which all component class ids3278 have had residuals created. This list includes the detrend id,3279 iteration, exposure id, detrend type, and whether the exposure was3280 included in the stack for this iteration.3281 */3282 3026 3283 3027 psString query = pxDataGet("dettool_toresidexp.sql"); … … 3287 3031 } 3288 3032 3289 { 3290 // build a query to search by det_id, iteration, exp_id 3291 psMetadata *where = psMetadataAlloc(); 3292 3293 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 3294 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 3295 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 3296 3297 3298 // there's not 3299 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 3300 psFree(where); 3301 if (whereClause) { 3302 psStringAppend(&query, " WHERE %s", whereClause); 3303 psFree(whereClause); 3304 } 3305 } 3033 if (psListLength(where->list)) { 3034 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 3035 psStringAppend(&query, " WHERE %s", whereClause); 3036 psFree(whereClause); 3037 } 3038 psFree(where); 3306 3039 3307 3040 if (!p_psDBRunQuery(config->dbh, query)) { … … 3362 3095 PS_ASSERT_PTR_NON_NULL(config, false); 3363 3096 3364 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 3365 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 3097 psMetadata *where = psMetadataAlloc(); 3098 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 3099 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 3100 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 3101 PXOPT_COPY_STR(config->args, where, "-recip", "recipe", "=="); 3102 3103 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 3104 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 3366 3105 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 3367 3368 psString query = psStringCopy( 3369 "SELECT" 3370 " detRun.mode," 3371 " detResidExp.*," 3372 " detInputExp.include" 3373 " FROM detRun" 3374 " JOIN detInputExp" 3375 " USING(det_id, iteration)" 3376 " JOIN detResidExp" 3377 " USING(det_id, iteration, exp_id)" 3378 " WHERE" 3379 " detRun.state = 'run'" 3380 ); 3381 3382 if (config->where) { 3383 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "detResidExp"); 3106 PXOPT_LOOKUP_BOOL(reject, config->args, "-reject", false); 3107 3108 psString query = pxDataGet("dettool_residexp.sql"); 3109 if (!query) { 3110 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 3111 return false; 3112 } 3113 3114 if (psListLength(where->list)) { 3115 psString whereClause = psDBGenerateWhereConditionSQL(where, "detResidExp"); 3384 3116 psStringAppend(&query, " AND %s", whereClause); 3385 3117 psFree(whereClause); 3386 3118 } 3119 psFree(where); 3387 3120 3388 3121 if (faulted) { … … 3394 3127 } 3395 3128 3129 // list only accepted rows 3130 // XXX the usage of this flag is unclear : -reject means "accepted"? 3131 if (reject) { 3132 psStringAppend(&query, " %s", "AND detResidExp.accept != 0"); 3133 } 3134 3396 3135 // treat limit == 0 as "no limit" 3397 3136 if (limit) { … … 3436 3175 PS_ASSERT_PTR_NON_NULL(config, false); 3437 3176 3177 psMetadata *where = psMetadataAlloc(); 3178 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 3179 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 3180 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 3181 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 3182 3438 3183 psString query = pxDataGet("dettool_revertresidexp.sql"); 3439 3184 if (!query) { … … 3442 3187 } 3443 3188 3444 if ( config->where) {3445 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "detResidExp");3189 if (psListLength(where->list)) { 3190 psString whereClause = psDBGenerateWhereConditionSQL(where, "detResidExp"); 3446 3191 psStringAppend(&query, " AND %s", whereClause); 3447 3192 psFree(whereClause); 3448 3193 } 3194 psFree(where); 3449 3195 3450 3196 if (!p_psDBRunQuery(config->dbh, query)) { … … 3464 3210 3465 3211 3212 static bool updateresidexpMode(pxConfig *config) 3213 { 3214 PS_ASSERT_PTR_NON_NULL(config, false); 3215 3216 PXOPT_LOOKUP_BOOL(reject, config->args, "-reject", false); 3217 3218 // build a query to search by det_id, iteration, exp_id 3219 psMetadata *where = psMetadataAlloc(); 3220 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 3221 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 3222 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 3223 3224 // find the values we're going to set 3225 // copy everything but det_id, iteration, & exp_id from the args and 3226 // remove the '-' prefix 3227 psMetadata *set = psMetadataAlloc(); 3228 PXOPT_COPY_STR(config->args, set, "-recip", "recipe", "=="); 3229 PXOPT_COPY_F64(config->args, set, "-bg", "bg", "=="); 3230 PXOPT_COPY_F64(config->args, set, "-bg_stdev", "bg_stdev", "=="); 3231 PXOPT_COPY_F64(config->args, set, "-bg_mean_stdev", "bg_mean_stdev", "=="); 3232 PXOPT_COPY_STR(config->args, set, "-path_base", "path_base", "=="); 3233 3234 // this can't be PXOPT_ macro-ized as reject is !'d 3235 if (!psMetadataAddBool(set, PS_LIST_TAIL, "accept", 0, "==", !reject)) { 3236 psError(PS_ERR_UNKNOWN, false, "failed to add item accept"); 3237 psFree(set); 3238 psFree(where); 3239 return false; 3240 } 3241 3242 long changed = psDBUpdateRows(config->dbh, "detResidExp", where, set); 3243 psFree(set); 3244 psFree(where); 3245 3246 if (changed < 0) { 3247 psError(PS_ERR_UNKNOWN, false, "no rows were updated"); 3248 return false; 3249 } 3250 3251 return true; 3252 } 3253 3254 /* The SQL returns a list of detrend runs (with detrend id, iteration and detrend type) which 3255 * have completed all residexps. 3256 */ 3257 3466 3258 static bool todetrunsummaryMode(pxConfig *config) 3467 3259 { … … 3470 3262 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 3471 3263 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 3472 3473 /* which returns a list of detrend runs (with detrend id, iteration and3474 * detrend type) which have completed all residexps.3475 */3476 3264 3477 3265 psString query = pxDataGet("dettool_todetrunsummary.sql"); … … 3480 3268 return false; 3481 3269 } 3482 3483 // XXX does it make sense to accept any search params?3484 #if 03485 if (config->where) {3486 psString whereClause = psDBGenerateWhereConditionSQL(config->where);3487 psStringAppend(&query, " AND %s", whereClause);3488 psFree(whereClause);3489 }3490 #endif3491 3270 3492 3271 // treat limit == 0 as "no limit" … … 3527 3306 } 3528 3307 3529 static bool updateresidexpMode(pxConfig *config) 3530 { 3531 PS_ASSERT_PTR_NON_NULL(config, false); 3532 3533 PXOPT_LOOKUP_BOOL(reject, config->args, "-reject", false); 3534 3308 // this function is used to generate the detrunSummary entries used below 3309 // XXX why is this a separate function? roll it back into adddetrunsummary? 3310 static detRunSummaryRow *mdToDetRunSummary(pxConfig *config, psMetadata *row) 3311 { 3312 PS_ASSERT_PTR_NON_NULL(config, false); 3313 3314 bool status = false; 3315 // from row 3316 psS64 det_id = psMetadataLookupS64(&status, row, "det_id"); 3317 if (!status) { 3318 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for det_id"); 3319 return false; 3320 } 3321 psS32 iteration = psMetadataLookupS32(&status, row, "iteration"); 3322 if (!status) { 3323 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for iteration"); 3324 return false; 3325 } 3326 3327 // optional 3328 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false); 3329 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false); 3330 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false); 3331 3332 // default values 3333 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 3334 PXOPT_LOOKUP_BOOL(accept, config->args, "-accept", false); 3335 3336 return detRunSummaryRowAlloc( 3337 det_id, 3338 iteration, 3339 bg, 3340 bg_stdev, 3341 bg_mean_stdev, 3342 accept, 3343 code 3344 ); 3345 } 3346 3347 static bool adddetrunsummaryMode(pxConfig *config) 3348 { 3349 PS_ASSERT_PTR_NON_NULL(config, false); 3350 3535 3351 // build a query to search by det_id, iteration, exp_id 3536 3352 psMetadata *where = psMetadataAlloc(); 3537 3353 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 3538 3354 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 3539 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 3540 3541 // find the values we're going to set 3542 // copy everything but det_id, iteration, & exp_id from the args and 3543 // remove the '-' prefix 3544 psMetadata *set = psMetadataAlloc(); 3545 // XXX if PXOPT_COPY_* errors here the where md will leak 3546 PXOPT_COPY_STR(config->args, set, "-recip", "recipe", "=="); 3547 PXOPT_COPY_F64(config->args, set, "-bg", "bg", "=="); 3548 PXOPT_COPY_F64(config->args, set, "-bg_stdev", "bg_stdev", "=="); 3549 PXOPT_COPY_F64(config->args, set, "-bg_mean_stdev", "bg_mean_stdev", "=="); 3550 PXOPT_COPY_STR(config->args, set, "-path_base", "path_base", "=="); 3551 3552 // this can't be PXOPT_ macro-ized as reject is !'d 3553 if (!psMetadataAddBool(set, PS_LIST_TAIL, "accept", 0, "==", !reject)) { 3554 psError(PS_ERR_UNKNOWN, false, "failed to add item accept"); 3555 psFree(set); 3556 psFree(where); 3557 return false; 3558 } 3559 3560 long changed = psDBUpdateRows(config->dbh, "detResidExp", where, set); 3561 psFree(set); 3562 psFree(where); 3563 3564 if (changed < 0) { 3565 psError(PS_ERR_UNKNOWN, false, "no rows were updated"); 3566 return false; 3567 } 3568 3569 return true; 3570 } 3571 3572 static bool adddetrunsummaryMode(pxConfig *config) 3573 { 3574 PS_ASSERT_PTR_NON_NULL(config, false); 3575 3576 // required 3577 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 3578 3579 // optional 3355 3356 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required 3580 3357 PXOPT_LOOKUP_BOOL(again, config->args, "-again", false); 3358 3359 // The values supplied as arguments on the command (eg, -bg) are parsed 3360 // by mdToDetRunSummary below. 3361 // XXX why is there ever more than one? 3581 3362 3582 3363 psString query = pxDataGet("dettool_find_completed_runs.sql"); … … 3586 3367 } 3587 3368 3588 // build a query to search by det_id, iteration, exp_id 3589 psMetadata *where = psMetadataAlloc(); 3590 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 3591 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 3592 3593 { 3594 // there's not 3369 if (psListLength(where->list)) { 3595 3370 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 3596 psFree(where); 3597 if (whereClause) { 3598 psStringAppend(&query, " WHERE %s", whereClause); 3599 psFree(whereClause); 3600 } 3601 } 3371 psStringAppend(&query, " WHERE %s", whereClause); 3372 psFree(whereClause); 3373 } 3374 psFree(where); 3602 3375 3603 3376 if (!p_psDBRunQuery(config->dbh, query)) { … … 3626 3399 } 3627 3400 3401 // XXX why is there ever more than one result here? 3628 3402 for (long i = 0; i < psArrayLength(output); i++) { 3629 3403 psMetadata *row = output->data[i]; … … 3654 3428 3655 3429 // XXX this logic does not deal with the case of -code being set 3430 // XXX it should be an error for -again and -code to both be set 3656 3431 if (again) { 3657 3432 if (!startNewIteration(config, (psS64)atoll(det_id))) { … … 3680 3455 } 3681 3456 3682 static detRunSummaryRow *mdToDetRunSummary(pxConfig *config, psMetadata *row)3683 {3684 PS_ASSERT_PTR_NON_NULL(config, false);3685 3686 bool status = false;3687 // from row3688 psS64 det_id = psMetadataLookupS64(&status, row, "det_id");3689 if (!status) {3690 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for det_id");3691 return false;3692 }3693 psS32 iteration = psMetadataLookupS32(&status, row, "iteration");3694 if (!status) {3695 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for iteration");3696 return false;3697 }3698 3699 // optional3700 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false);3701 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false);3702 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false);3703 // default values3704 PXOPT_LOOKUP_BOOL(accept, config->args, "-accept", false);3705 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);3706 3707 return detRunSummaryRowAlloc(3708 det_id,3709 iteration,3710 bg,3711 bg_stdev,3712 bg_mean_stdev,3713 accept,3714 code3715 );3716 }3717 3718 3457 static bool detrunsummaryMode(pxConfig *config) 3719 3458 { 3720 3459 PS_ASSERT_PTR_NON_NULL(config, false); 3460 3461 psMetadata *where = psMetadataAlloc(); 3462 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 3463 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 3721 3464 3722 3465 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 3724 3467 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 3725 3468 3726 psString query = psStringCopy( 3727 "SELECT DISTINCT\n" 3728 " detRunSummary.*,\n" 3729 " detRun.det_type,\n" 3730 " detRun.mode\n" 3731 " FROM detRun\n" 3732 " JOIN detRunSummary\n" 3733 " USING(det_id, iteration)\n" 3734 " WHERE\n" 3735 " detRun.state = 'run'\n" 3736 ); 3737 3738 if (config->where) { 3739 psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL); 3469 psString query = pxDataGet("dettool_detrunsummary.sql"); 3470 if (!query) { 3471 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 3472 psFree(where); 3473 return false; 3474 } 3475 3476 if (psListLength(where->list)) { 3477 psString whereClause = psDBGenerateWhereConditionSQL(where, "NULL"); 3740 3478 psStringAppend(&query, " AND %s", whereClause); 3741 3479 psFree(whereClause); 3742 3480 } 3481 psFree(where); 3743 3482 3744 3483 if (faulted) { … … 3792 3531 PS_ASSERT_PTR_NON_NULL(config, false); 3793 3532 3533 psMetadata *where = psMetadataAlloc(); 3534 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "=="); 3535 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 3536 PXOPT_COPY_STR(config->args, where, "-code", "fault", "=="); 3537 3794 3538 psString query = pxDataGet("dettool_revertdetrunsummary.sql"); 3795 3539 if (!query) { … … 3798 3542 } 3799 3543 3800 if ( config->where) {3801 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "detRunSummary");3544 if (psListLength(where->list)) { 3545 psString whereClause = psDBGenerateWhereConditionSQL(where, "detRunSummary"); 3802 3546 psStringAppend(&query, " AND %s", whereClause); 3803 3547 psFree(whereClause); 3804 3548 } 3549 psFree(where); 3805 3550 3806 3551 if (!p_psDBRunQuery(config->dbh, query)) { … … 3823 3568 { 3824 3569 PS_ASSERT_PTR_NON_NULL(config, false); 3825 3826 // required 3827 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 3828 3570 3571 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required 3829 3572 PXOPT_LOOKUP_BOOL(accept, config->args, "-accept", false); 3830 3573 PXOPT_LOOKUP_BOOL(reject, config->args, "-reject", false); … … 3854 3597 PS_ASSERT_PTR_NON_NULL(config, false); 3855 3598 3856 // det_id is required 3857 // XXX this isn't strictly nessicary but not having the det_id complicates 3858 // incrementing the iteration number 3859 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 3860 3599 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required 3861 3600 PXOPT_LOOKUP_BOOL(again, config->args, "-again", false); 3862 3601 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 3602 3863 3603 // either -rerun or -state must be specified 3864 3604 if (!(again || state)) { … … 3867 3607 } 3868 3608 if (again && state) { 3869 psError(PS_ERR_UNKNOWN, true, " either -again or -state must be specified");3609 psError(PS_ERR_UNKNOWN, true, "-accept and -reject are exclusive"); 3870 3610 return false; 3871 3611 } … … 3886 3626 } 3887 3627 3628 // used by updatedetrunMode 3888 3629 static bool startNewIteration(pxConfig *config, psS64 det_id) 3889 3630 { … … 3896 3637 } 3897 3638 3898 // XXX this query was not restricted by det_id, resulting 3899 // in an inconsistent UPDATE below. I added this AND clause 3900 // though there may be a cleaner method (EAM 2006.10.08) 3639 // restrict the update only to the specified det_id 3901 3640 psStringAppend(&query, " WHERE det_id = %" PRId64 , det_id); 3902 3641 … … 4151 3890 PS_ASSERT_PTR_NON_NULL(config, false); 4152 3891 4153 // required 4154 PXOPT_LOOKUP_STR(det_type, config->args, "-det_type", true, false); 4155 PXOPT_LOOKUP_STR(filelevel, config->args, "-filelevel", false, false); 4156 4157 // optional 3892 PXOPT_LOOKUP_STR(det_type, config->args, "-det_type", true, false); // required 3893 PXOPT_LOOKUP_STR(filelevel, config->args, "-filelevel", true, false); // required 4158 3894 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false); 4159 3895 PXOPT_LOOKUP_STR(camera, config->args, "-inst", false, false); … … 4178 3914 PXOPT_LOOKUP_STR(parent, config->args, "-parent", false, false); 4179 3915 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 4180 4181 // default4182 3916 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 4183 3917 … … 4191 3925 0, // the iteration is fixed at 0 4192 3926 det_type, 4193 "register", // mode 3927 "register", // mode is required to be "register" 4194 3928 "register", // state 4195 3929 filelevel, … … 4262 3996 } 4263 3997 3998 // NOTE : this function is also used by addcorrectimfileMode 4264 3999 bool register_detrend_imfileMode(pxConfig *config) 4265 4000 { 4266 4001 PS_ASSERT_PTR_NON_NULL(config, false); 4267 4268 // required 4269 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); 4270 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false); 4271 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 4272 4273 // optional 4002 4003 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required 4004 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false); // required 4005 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); // required 4274 4006 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false); 4275 4007 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false); … … 4389 4121 return true; 4390 4122 } 4123 4124 4125 #if 0 4126 // XXX this function was left in commented as this method may be useful in the 4127 // future 4128 static psArray *validDetInputClassIds(pxConfig *config, const char *det_id) 4129 { 4130 PS_ASSERT_PTR_NON_NULL(config, NULL); 4131 // det_id is input as a string because the fact that it is an integer 4132 // is just a database impliementation detail. 4133 PS_ASSERT_PTR_NON_NULL(det_id, NULL); 4134 4135 psArray *rawImfiles = searchInputImfiles(config, det_id); 4136 if (!rawImfiles) { 4137 return NULL; 4138 } 4139 4140 psArray *valid_class_ids = NULL; 4141 { 4142 // All this jumping through hoops is so that we end up with unique 4143 // values. PP thinks that making multiple passes through this array and 4144 // deleting matched elements would end up being more expensive then a 4145 // double sort and stagger scheme. JH thinks it would be cheaper to 4146 // just do a unqiue sort and delete. So this is really just a cheap 4147 // hack to avoid implimenting a unique sort function but at least it's 4148 // stable. 4149 psHash *hash = psHashAlloc(psArrayLength(rawImfiles)); 4150 for (long i = 0; i < psArrayLength(rawImfiles); i++) { 4151 psHashAdd(hash, 4152 ((rawImfileRow *)rawImfiles->data[i])->class_id, 4153 ((rawImfileRow *)rawImfiles->data[i])->class_id 4154 ); 4155 } 4156 valid_class_ids = psHashToArray(hash); 4157 psFree(hash); 4158 } 4159 psFree(rawImfiles); 4160 4161 return valid_class_ids; 4162 } 4163 4164 static psArray *searchInputImfiles(pxConfig *config, const char *det_id) 4165 { 4166 PS_ASSERT_PTR_NON_NULL(config, NULL); 4167 // det_id is input as a string because the fact that it is an integer 4168 // is just a database impliementation detail. 4169 PS_ASSERT_PTR_NON_NULL(det_id, NULL); 4170 4171 psArray *inputExps = NULL; 4172 { 4173 psMetadata *where = psMetadataAlloc(); 4174 if (!psMetadataAddS32(where, PS_LIST_TAIL, "det_id", 0, "==", 4175 (psS32)atoi(det_id))) { 4176 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 4177 psFree(where); 4178 return NULL; 4179 } 4180 inputExps = detInputExpSelectRowObjects(config->dbh, where, 0); 4181 psFree(where); 4182 } 4183 if (!inputExps) { 4184 psError(PS_ERR_UNKNOWN, false, "no detInputExp rows found"); 4185 return NULL; 4186 } 4187 4188 // find rawImfiles associated with detInputExps 4189 psArray *rawImfiles = NULL; 4190 { 4191 psMetadata *where = psMetadataAlloc(); 4192 for (long i = 0; i < psArrayLength(inputExps); i++) { 4193 if (!psMetadataAddStr(where, PS_LIST_TAIL, "exp_id", 4194 PS_META_DUPLICATE_OK, "==", 4195 ((detInputExpRow *)inputExps->data[i])->exp_id)) { 4196 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 4197 psFree(inputExps); 4198 psFree(where); 4199 return NULL; 4200 } 4201 } 4202 psFree(inputExps); 4203 rawImfiles = rawImfileSelectRowObjects(config->dbh, where, 0); 4204 // XXX this really should be sorted for uniqueness 4205 psFree(where); 4206 } 4207 if (!rawImfiles) { 4208 psError(PS_ERR_UNKNOWN, false, "no rawImfile rows found"); 4209 return NULL; 4210 } 4211 4212 return rawImfiles; 4213 } 4214 #endif 4215 -
trunk/ippTools/src/dettool.h
r18157 r18561 17 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 18 */ 19 20 #ifdef HAVE_CONFIG_H 21 #include <config.h> 22 #endif 19 23 20 24 #ifndef DETTOOL_H -
trunk/ippTools/src/dettoolConfig.c
r18172 r18561 18 18 */ 19 19 20 #ifdef HAVE_CONFIG_H21 #include <config.h>22 #endif23 24 #include <psmodules.h>25 26 #include "pxtools.h"27 20 #include "dettool.h" 28 21 … … 46 39 47 40 // -pending 41 // XXX EAM : is this used? does it make sense? 48 42 psMetadata *pendingArgs = psMetadataAlloc(); 49 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_id", 0, 50 "search by exposure ID", NULL); 51 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_type", 0, 52 "search by exposure type", NULL); 53 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-inst", 0, 54 "search by camera", NULL); 55 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-telescope", 0, 56 "search by telescope", NULL); 57 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-filter", 0, 58 "search by filter", NULL); 59 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-uri", 0, 60 "search by URL", NULL); 61 psMetadataAddBool(pendingArgs, PS_LIST_TAIL, "-simple", 0, 62 "use the simple output format", false); 43 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", NULL); 44 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exposure type", NULL); 45 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-inst", 0, "search by camera", NULL); 46 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-telescope", 0, "search by telescope", NULL); 47 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-filter", 0, "search by filter", NULL); 48 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-uri", 0, "search by URL", NULL); 49 psMetadataAddBool(pendingArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 63 50 64 51 // -definebytag 65 52 psMetadata *definebytagArgs = psMetadataAlloc(); 66 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-exp_id", 67 PS_META_DUPLICATE_OK, 68 "include this exposure (multiple OK, required)", NULL); 69 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-det_type", 0, 70 "define the type of detrend run (required)", NULL); 71 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-mode", 0, 72 "define the mode of this detrend run", "master"); 73 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-filelevel", 0, 74 "define filelevel", NULL); 75 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-workdir", 0, 76 "define workdir (required)", NULL); 77 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-inst", 0, 78 "define camera", NULL); 79 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-telescope", 0, 80 "define telescope", NULL); 81 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-exp_type", 0, 82 "define exposure type", NULL); 83 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-filter", 0, 84 "define filter ", NULL); 85 psMetadataAddF32(definebytagArgs, PS_LIST_TAIL, "-airmass_min", 0, 86 "define min airmass", NAN); 87 psMetadataAddF32(definebytagArgs, PS_LIST_TAIL, "-airmass_max", 0, 88 "define max airmass", NAN); 89 psMetadataAddF32(definebytagArgs, PS_LIST_TAIL, "-exp_time_min", 0, 90 "define min exposure time", NAN); 91 psMetadataAddF32(definebytagArgs, PS_LIST_TAIL, "-exp_time_max", 0, 92 "define max exposure time", NAN); 93 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, 94 "define min ccd tempature", NAN); 95 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, 96 "define max ccd tempature", NAN); 97 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-posang_min", 0, 98 "define min rotator position angle", NAN); 99 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-posang_max", 0, 100 "define max rotator position angle", NAN); 101 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-solang_min", 0, 102 "define min solar angle", NAN); 103 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-solang_max", 0, 104 "define max solar angle", NAN); 105 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-registered", 0, 106 "time detrend run was registered", now); 107 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-time_begin", 0, 108 "detrend applies to exposures taken during this period", NULL); 109 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-time_end", 0, 110 "detrend applies to exposures taken during this period", NULL); 111 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-use_begin", 0, 112 "start of detrend run applicable period", NULL); 113 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-use_end", 0, 114 "end of detrend run applicable period", NULL); 115 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-reduction", 0, 116 "define reduction class for processing", NULL); 117 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-label", 0, 118 "define detrun label", NULL); 119 psMetadataAddBool(definebytagArgs, PS_LIST_TAIL, "-simple", 0, 120 "use the simple output format", false); 53 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-exp_id", PS_META_DUPLICATE_OK, "include this exposure (multiple OK, required)", NULL); 54 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-det_type", 0, "define the type of detrend run (required)", NULL); 55 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-mode", 0, "define the mode of this detrend run", "master"); 56 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-filelevel", 0, "define filelevel", NULL); 57 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 58 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-inst", 0, "define camera", NULL); 59 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope", NULL); 60 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-exp_type", 0, "define exposure type", NULL); 61 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-filter", 0, "define filter ", NULL); 62 psMetadataAddF32(definebytagArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 63 psMetadataAddF32(definebytagArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 64 psMetadataAddF32(definebytagArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min exposure time", NAN); 65 psMetadataAddF32(definebytagArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max exposure time", NAN); 66 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 67 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 68 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 69 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 70 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 71 psMetadataAddF64(definebytagArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 72 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 73 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-time_begin", 0, "detrend applies to exposures taken during this period", NULL); 74 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-time_end", 0, "detrend applies to exposures taken during this period", NULL); 75 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-use_begin", 0, "start of detrend run applicable period", NULL); 76 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-use_end", 0, "end of detrend run applicable period", NULL); 77 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class for processing", NULL); 78 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-label", 0, "define detrun label", NULL); 79 psMetadataAddBool(definebytagArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 121 80 122 81 // -definebyquery 123 82 psMetadata *definebyqueryArgs = psMetadataAlloc(); 124 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-det_type", 0, 125 "define the type of detrend run (required)", NULL); 126 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-mode", 0, 127 "define the mode of this detrend run", "master"); 128 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-filelevel", 0, 129 "define filelevel", NULL); 130 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir", 0, 131 "define workdir (required)", NULL); 132 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-inst", 0, 133 "define camera (required)", NULL); 134 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-telescope", 0, 135 "define telescope", NULL); 136 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-filter", 0, 137 "define filter ", NULL); 138 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-airmass_min", 0, 139 "define min airmass", NAN); 140 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-airmass_max", 0, 141 "define max airmass", NAN); 142 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-exp_time_min", 0, 143 "define min exposure time", NAN); 144 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-exp_time_max", 0, 145 "define max exposure time", NAN); 146 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, 147 "define min ccd tempature", NAN); 148 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, 149 "define max ccd tempature", NAN); 150 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-posang_min", 0, 151 "define min rotator position angle", NAN); 152 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-posang_max", 0, 153 "define max rotator position angle", NAN); 154 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-solang_min", 0, 155 "define min solar angle", NAN); 156 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-solang_max", 0, 157 "define max solar angle", NAN); 158 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, 159 "time detrend run was registered", now); 160 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-time_begin", 0, 161 "detrend applies to exposures taken during this period", NULL); 162 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-time_end", 0, 163 "detrend applies to exposures taken during this period", NULL); 164 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-use_begin", 0, 165 "start of detrend run applicable period", NULL); 166 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-use_end", 0, 167 "end of detrend run applicable period", NULL); 168 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_type", 0, 169 "search for exp_type", NULL); 170 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_inst", 0, 171 "search for camera", NULL); 172 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_telescope", 0, 173 "search for telescope", NULL); 174 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_filter", 0, 175 "search for filter", NULL); 176 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_uri", 0, 177 "search for uri", NULL); 178 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-select_dateobs_begin", 0, 179 "search for exposures by time (>=)", NULL); 180 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-select_dateobs_end", 0, 181 "search for exposures by time (<)", NULL); 182 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_airmass_min", 0, 183 "define min airmass", NAN); 184 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_airmass_max", 0, 185 "define max airmass", NAN); 186 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_sat_pixel_frac_max", 0, 187 "define max fraction of saturated pixels", NAN); 188 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_time_min", 0, 189 "define min exposure time", NAN); 190 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_time_max", 0, 191 "define max exposure time", NAN); 192 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_ccd_temp_min", 0, 193 "define min ccd tempature", NAN); 194 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_ccd_temp_max", 0, 195 "define max ccd tempature", NAN); 196 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_pon_time_min", 0, 197 "define min power-on time", NAN); 198 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_pon_time_max", 0, 199 "define max power-on time", NAN); 200 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_min", 0, 201 "define min rotator position angle", NAN); 202 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_max", 0, 203 "define max rotator position angle", NAN); 204 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_solang_min", 0, 205 "define min solar angle", NAN); 206 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_solang_max", 0, 207 "define max solar angle", NAN); 208 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, 209 "print the exposures that would be included in the detrend run and exit", false); 210 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-reduction", 0, 211 "define reduction class for processing", NULL); 212 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", 0, 213 "define detrun label", NULL); 214 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, 215 "use the simple output format", false); 216 217 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-random_subset", 0, 218 "use a random subset of elements", false); 219 psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-random_limit", 0, 220 "use this number of random elements", 20); 83 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-det_type", 0, "define the type of detrend run (required)", NULL); 84 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-mode", 0, "define the mode of this detrend run", "master"); 85 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-filelevel", 0, "define filelevel", NULL); 86 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 87 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-inst", 0, "define camera (required)", NULL); 88 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope", NULL); 89 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-filter", 0, "define filter ", NULL); 90 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 91 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 92 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min exposure time", NAN); 93 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max exposure time", NAN); 94 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 95 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 96 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 97 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 98 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 99 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 100 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 101 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-time_begin", 0, "detrend applies to exposures taken during this period", NULL); 102 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-time_end", 0, "detrend applies to exposures taken during this period", NULL); 103 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-use_begin", 0, "start of detrend run applicable period", NULL); 104 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-use_end", 0, "end of detrend run applicable period", NULL); 105 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_type", 0, "search for exp_type", NULL); 106 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_inst", 0, "search for camera", NULL); 107 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_telescope", 0, "search for telescope", NULL); 108 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_filter", 0, "search for filter", NULL); 109 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_uri", 0, "search for uri", NULL); 110 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-select_dateobs_begin", 0, "search for exposures by time (>=)", NULL); 111 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-select_dateobs_end", 0, "search for exposures by time (<)", NULL); 112 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_airmass_min", 0, "define min airmass", NAN); 113 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_airmass_max", 0, "define max airmass", NAN); 114 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_sat_pixel_frac_max", 0, "define max fraction of saturated pixels", NAN); 115 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_time_min", 0, "define min exposure time", NAN); 116 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_time_max", 0, "define max exposure time", NAN); 117 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_ccd_temp_min", 0, "define min ccd tempature", NAN); 118 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_ccd_temp_max", 0, "define max ccd tempature", NAN); 119 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_pon_time_min", 0, "define min power-on time", NAN); 120 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_pon_time_max", 0, "define max power-on time", NAN); 121 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_min", 0, "define min rotator position angle", NAN); 122 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_max", 0, "define max rotator position angle", NAN); 123 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_solang_min", 0, "define min solar angle", NAN); 124 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_solang_max", 0, "define max solar angle", NAN); 125 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend", 0, "print the exposures that would be included in the detrend run and exit", false); 126 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class for processing", NULL); 127 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-label", 0, "define detrun label", NULL); 128 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 129 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-random_subset", 0, "use a random subset of elements", false); 130 psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-random_limit", 0, "use this number of random elements", 20); 221 131 222 132 // -definebydetrun 223 133 psMetadata *definebydetrunArgs = psMetadataAlloc(); 224 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-det_id", 0, 225 "det ID to base a new detRun on (required)", NULL); 226 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_det_type", 0, 227 "define the type of detrend run", NULL); 228 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_mode", 0, 229 "define the mode of this detrend run", "master"); 230 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_exp_type", 0, 231 "define exposure type", NULL); 232 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_filelevel", 0, 233 "define filelevel", NULL); 234 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_workdir", 0, 235 "define workdir", NULL); 236 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_filter", 0, 237 "define filter ", NULL); 238 psMetadataAddF32(definebydetrunArgs, PS_LIST_TAIL, "-set_airmass_min", 0, 239 "define airmass", NAN); 240 psMetadataAddF32(definebydetrunArgs, PS_LIST_TAIL, "-set_airmass_max", 0, 241 "define airmass", NAN); 242 psMetadataAddF32(definebydetrunArgs, PS_LIST_TAIL, "-set_exp_time_min", 0, 243 "define exposure time", NAN); 244 psMetadataAddF32(definebydetrunArgs, PS_LIST_TAIL, "-set_exp_time_max", 0, 245 "define exposure time", NAN); 246 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_ccd_temp_min", 0, 247 "define ccd tempature", NAN); 248 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_ccd_temp_max", 0, 249 "define ccd tempature", NAN); 250 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_posang_min", 0, 251 "define rotator position angle", NAN); 252 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_posang_max", 0, 253 "define rotator position angle", NAN); 254 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_registered", 0, 255 "time detrend run was registered", now); 256 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_time_begin", 0, 257 "start of period to apply detrend too", NULL); 258 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_time_end", 0, 259 "end of period to apply detrend too", NULL); 260 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_use_begin", 0, 261 "start of detrend run applicable period", NULL); 262 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_use_end", 0, 263 "end of detrend run applicable period", NULL); 264 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_solang_min", 0, 265 "define solar angle", NAN); 266 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_solang_max", 0, 267 "define solar angle", NAN); 268 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-filter_input_begin", 0, 269 "filter input detrun exp to be in this period", NULL); 270 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-filter_input_end", 0, 271 "filter input detrun exp to be in this period", NULL); 272 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_reduction", 0, 273 "define reduction class for processing", NULL); 274 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_label", 0, 275 "define detrun label", NULL); 276 psMetadataAddBool(definebydetrunArgs, PS_LIST_TAIL, "-simple", 0, 277 "use the simple output format", false); 278 134 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-det_id", 0, "det ID to base a new detRun on (required)", NULL); 135 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_det_type", 0, "define the type of detrend run", NULL); 136 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_mode", 0, "define the mode of this detrend run", "master"); 137 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_exp_type", 0, "define exposure type", NULL); 138 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_filelevel", 0, "define filelevel", NULL); 139 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir", NULL); 140 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_filter", 0, "define filter ", NULL); 141 psMetadataAddF32(definebydetrunArgs, PS_LIST_TAIL, "-set_airmass_min", 0, "define airmass", NAN); 142 psMetadataAddF32(definebydetrunArgs, PS_LIST_TAIL, "-set_airmass_max", 0, "define airmass", NAN); 143 psMetadataAddF32(definebydetrunArgs, PS_LIST_TAIL, "-set_exp_time_min", 0, "define exposure time", NAN); 144 psMetadataAddF32(definebydetrunArgs, PS_LIST_TAIL, "-set_exp_time_max", 0, "define exposure time", NAN); 145 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_ccd_temp_min", 0, "define ccd tempature", NAN); 146 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_ccd_temp_max", 0, "define ccd tempature", NAN); 147 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_posang_min", 0, "define rotator position angle", NAN); 148 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_posang_max", 0, "define rotator position angle", NAN); 149 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_solang_min", 0, "define solar angle", NAN); 150 psMetadataAddF64(definebydetrunArgs, PS_LIST_TAIL, "-set_solang_max", 0, "define solar angle", NAN); 151 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_registered", 0, "time detrend run was registered", now); 152 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_time_begin", 0, "start of period to apply detrend too", NULL); 153 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_time_end", 0, "end of period to apply detrend too", NULL); 154 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_use_begin", 0, "start of detrend run applicable period", NULL); 155 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_use_end", 0, "end of detrend run applicable period", NULL); 156 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class for processing", NULL); 157 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_label", 0, "define detrun label", NULL); 158 psMetadataAddBool(definebydetrunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 159 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_input_begin", 0, "require input exp to be in this period", NULL); 160 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_input_end", 0, "require input exp to be in this period", NULL); 161 162 // *** these are in dettool_correction.c *** 279 163 // -makecorrection 280 164 psMetadata *makecorrectionArgs = psMetadataAlloc(); 281 psMetadataAddStr(makecorrectionArgs, PS_LIST_TAIL, "-det_id", 0, 282 "det ID to be corrected (required)", NULL); 283 psMetadataAddBool(makecorrectionArgs, PS_LIST_TAIL, "-simple", 0, 284 "use the simple output format", false); 165 psMetadataAddStr(makecorrectionArgs, PS_LIST_TAIL, "-det_id", 0, "det ID to be corrected (required)", NULL); 166 psMetadataAddBool(makecorrectionArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 285 167 286 168 // -tocorrectexp 287 169 psMetadata *tocorrectexpArgs = psMetadataAlloc(); 288 psMetadataAddU64(tocorrectexpArgs, PS_LIST_TAIL, "-limit", 0, 289 "limit result set to N items", 0); 290 psMetadataAddBool(tocorrectexpArgs, PS_LIST_TAIL, "-simple", 0, 291 "use the simple output format", false); 170 psMetadataAddU64(tocorrectexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 171 psMetadataAddBool(tocorrectexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 292 172 293 173 // -tocorrectimfile 294 174 psMetadata *tocorrectimfileArgs = psMetadataAlloc(); 295 psMetadataAddStr(tocorrectimfileArgs, PS_LIST_TAIL, "-det_id", 0, 296 "search for detrend ID", NULL); 297 psMetadataAddU64(tocorrectimfileArgs, PS_LIST_TAIL, "-limit", 0, 298 "limit result set to N items", 0); 299 psMetadataAddBool(tocorrectimfileArgs, PS_LIST_TAIL, "-simple", 0, 300 "use the simple output format", false); 175 psMetadataAddStr(tocorrectimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL); 176 psMetadataAddU64(tocorrectimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 177 psMetadataAddBool(tocorrectimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 301 178 302 179 // -addcorrectimfile 303 180 psMetadata *addcorrectimfileArgs = psMetadataAlloc(); 304 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-det_id", 0, 305 "define detrend ID (required)", NULL); 306 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-class_id", 0, 307 "search for class ID (required)", NULL); 308 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-uri", 0, 309 "define resid file URI", NULL); 310 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-bg", 0, 311 "define exposure background", NAN); 312 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, 313 "define exposure background stdev", NAN); 314 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 315 "define exposure background mean stdev", NAN); 316 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-user_1", 0, 317 "define user statistic (1)", NAN); 318 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-user_2", 0, 319 "define user statistic (2)", NAN); 320 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-user_3", 0, 321 "define user statistic (3)", NAN); 322 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-user_4", 0, 323 "define user statistic (4)", NAN); 324 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-user_5", 0, 325 "define user statistic (5)", NAN); 326 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-path_base", 0, 327 "define base output location", NULL); 181 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 182 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID (required)", NULL); 183 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-uri", 0, "define resid file URI", NULL); 184 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 185 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 186 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 187 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-user_1", 0, "define user statistic (1)", NAN); 188 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-user_2", 0, "define user statistic (2)", NAN); 189 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-user_3", 0, "define user statistic (3)", NAN); 190 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-user_4", 0, "define user statistic (4)", NAN); 191 psMetadataAddF64(addcorrectimfileArgs, PS_LIST_TAIL, "-user_5", 0, "define user statistic (5)", NAN); 192 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 328 193 329 194 // -runs 330 195 psMetadata *runsArgs = psMetadataAlloc(); 331 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-det_type", 0, 332 "search for type of detrend run", NULL); 333 psMetadataAddBool(runsArgs, PS_LIST_TAIL, "-simple", 0, 334 "use the simple output format", false); 335 psMetadataAddBool(runsArgs, PS_LIST_TAIL, "-active", 0, 336 "only return active detRuns", false); 337 psMetadataAddU64(runsArgs, PS_LIST_TAIL, "-limit", 0, 338 "limit result set to N items", 0); 339 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-det_id", 0, 340 "search for detrend ID", NULL); 341 342 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-inst", 0, 343 "search for camera (instrument)", NULL); 344 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-telescope", 0, 345 "search for telescope", NULL); 346 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-filter", 0, 347 "search for filter", NULL); 348 349 psMetadataAddF32(runsArgs, PS_LIST_TAIL, "-airmass", 0, 350 "match airmass", NAN); 351 psMetadataAddF32(runsArgs, PS_LIST_TAIL, "-exp_time", 0, 352 "match exp time", NAN); 353 psMetadataAddF32(runsArgs, PS_LIST_TAIL, "-ccd_temp", 0, 354 "match ccd temp", NAN); 355 psMetadataAddF64(runsArgs, PS_LIST_TAIL, "-posang", 0, 356 "match posang", NAN); 196 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-det_type", 0, "search for type of detrend run", NULL); 197 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL); 198 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-inst", 0, "search for camera (instrument)", NULL); 199 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 200 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 201 psMetadataAddF32(runsArgs, PS_LIST_TAIL, "-airmass", 0, "match airmass", NAN); 202 psMetadataAddF32(runsArgs, PS_LIST_TAIL, "-exp_time", 0, "match exp time", NAN); 203 psMetadataAddF32(runsArgs, PS_LIST_TAIL, "-ccd_temp", 0, "match ccd temp", NAN); 204 psMetadataAddF64(runsArgs, PS_LIST_TAIL, "-posang", 0, "match posang", NAN); 205 psMetadataAddBool(runsArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 206 psMetadataAddBool(runsArgs, PS_LIST_TAIL, "-active", 0, "only return active detRuns", false); 207 psMetadataAddU64(runsArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 357 208 358 209 // -childlessrun 359 210 psMetadata *childlessrunArgs = psMetadataAlloc(); 360 psMetadataAddStr(childlessrunArgs, PS_LIST_TAIL, "-det_type", 0, 361 "search for type of detrend run", NULL); 362 psMetadataAddU64(childlessrunArgs, PS_LIST_TAIL, "-limit", 0, 363 "limit result set to N items", 0); 364 psMetadataAddBool(childlessrunArgs, PS_LIST_TAIL, "-simple", 0, 365 "use the simple output format", false); 211 psMetadataAddStr(childlessrunArgs, PS_LIST_TAIL, "-det_type", 0, "search for type of detrend run", NULL); 212 psMetadataAddU64(childlessrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 213 psMetadataAddBool(childlessrunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 366 214 367 215 // -input 368 216 psMetadata *inputArgs = psMetadataAlloc(); 369 psMetadataAddStr(inputArgs, PS_LIST_TAIL, "-det_id", 0, 370 "search for detrend ID", NULL); 371 psMetadataAddS32(inputArgs, PS_LIST_TAIL, "-iteration", 0, 372 "define iteration number", 0); 373 psMetadataAddStr(inputArgs, PS_LIST_TAIL, "-exp_id", 0, 374 "search for exp ID", NULL); 375 psMetadataAddBool(inputArgs, PS_LIST_TAIL, "-simple", 0, 376 "use the simple output format", false); 217 psMetadataAddStr(inputArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL); 218 psMetadataAddS32(inputArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 219 psMetadataAddS64(inputArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", 0); 220 psMetadataAddBool(inputArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 377 221 378 222 // -raw 379 223 psMetadata *rawArgs = psMetadataAlloc(); 380 psMetadataAddBool(rawArgs, PS_LIST_TAIL, "-simple", 0, 381 "use the simple output format", false); 224 psMetadataAddBool(rawArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 382 225 383 226 // -toprocessedimfile 384 227 psMetadata *toprocessedimfileArgs = psMetadataAlloc(); 385 psMetadataAddStr(toprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, 386 "search for detrend ID", NULL); 387 psMetadataAddStr(toprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 388 "search for exp ID", NULL); 389 psMetadataAddStr(toprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, 390 "search for class ID", NULL); 391 psMetadataAddU64(toprocessedimfileArgs, PS_LIST_TAIL, "-limit", 0, 392 "limit result set to N items", 0); 393 psMetadataAddBool(toprocessedimfileArgs, PS_LIST_TAIL, "-simple", 0, 394 "use the simple output format", false); 228 psMetadataAddStr(toprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL); 229 psMetadataAddStr(toprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", NULL); 230 psMetadataAddStr(toprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 231 psMetadataAddU64(toprocessedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 232 psMetadataAddBool(toprocessedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 395 233 396 234 // -addprocessedimfile 397 235 psMetadata *addprocessedimfileArgs = psMetadataAlloc(); 398 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, 399 "define detrend ID (required)", NULL); 400 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 401 "define exp ID (required)", NULL); 402 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, 403 "define class ID (required)", NULL); 404 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-uri", 0, 405 "define URI", NULL); 406 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-recip", 0, 407 "define recipe", NULL); 408 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-bg", 0, 409 "define exposure background", NAN); 410 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, 411 "define exposure background stdev", NAN); 412 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 413 "define exposure background mean stdev", NAN); 414 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-fringe_0", 0, 415 "define fringe slope (0th term)", NAN); 416 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-fringe_1", 0, 417 "define fringe slope (1st term)", NAN); 418 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-fringe_2", 0, 419 "define fringe slope (2nd term)", NAN); 420 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_1", 0, 421 "define user statistic (1)", NAN); 422 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_2", 0, 423 "define user statistic (2)", NAN); 424 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_3", 0, 425 "define user statistic (3)", NAN); 426 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_4", 0, 427 "define user statistic (4)", NAN); 428 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_5", 0, 429 "define user statistic (5)", NAN); 430 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-path_base", 0, 431 "define base output location", NULL); 432 psMetadataAddS16(addprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, 433 "set fault code", 0); 236 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 237 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "define exp ID (required)", NULL); 238 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); 239 psMetadataAddS16(addprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 240 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-uri", 0, "define URI", NULL); 241 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-recip", 0, "define recipe", NULL); 242 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 243 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 244 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 245 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-fringe_0", 0, "define fringe slope (0th term)", NAN); 246 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-fringe_1", 0, "define fringe slope (1st term)", NAN); 247 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-fringe_2", 0, "define fringe slope (2nd term)", NAN); 248 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_1", 0, "define user statistic (1)", NAN); 249 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_2", 0, "define user statistic (2)", NAN); 250 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_3", 0, "define user statistic (3)", NAN); 251 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_4", 0, "define user statistic (4)", NAN); 252 psMetadataAddF64(addprocessedimfileArgs, PS_LIST_TAIL, "-user_5", 0, "define user statistic (5)", NAN); 253 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 434 254 435 255 // -processedimfile 436 256 psMetadata *processedimfileArgs = psMetadataAlloc(); 437 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-det_id", 0, 438 "search for detrend ID", NULL); 439 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 440 "search for exp ID", NULL); 441 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-class_id", 0, 442 "search for class ID", NULL); 443 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-select_state", 0, 444 "search for state", NULL); 445 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-select_mode", 0, 446 "search for mode", NULL); 447 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-chip", 0, 448 "restrict results to completed 'chip' sets", false); 449 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-exp", 0, 450 "restrict results to complete 'exposures'", false); 451 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-included", 0, 452 "restrict results to exposures 'includeded' in the current iteration", false); 453 psMetadataAddU64(processedimfileArgs, PS_LIST_TAIL, "-limit", 0, 454 "limit result set to N items", 0); 455 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-faulted", 0, 456 "only return imfiles with a fault status set", false); 457 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-simple", 0, 458 "use the simple output format", false); 257 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL); 258 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", NULL); 259 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 260 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-select_state", 0, "search for state", NULL); 261 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-select_mode", 0, "search for mode", NULL); 262 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-included", 0, "restrict results to exposures 'includeded' in the current iteration", false); 263 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 264 psMetadataAddU64(processedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 265 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 266 267 // XXX these don't seem to be used anymore 268 // psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-chip", 0, "restrict results to completed 'chip' sets", false); 269 // psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-exp", 0, "restrict results to complete 'exposures'", false); 459 270 460 271 // -revertprocessedimfile 461 272 psMetadata *revertprocessedimfileArgs = psMetadataAlloc(); 462 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, 463 "search for detrend ID (required)", NULL); 464 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 465 "search by exposure ID", NULL); 466 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, 467 "search by class ID", NULL); 468 psMetadataAddS16(revertprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, 469 "search by fault code", 0); 273 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID (required)", NULL); 274 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", NULL); 275 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 276 psMetadataAddS16(revertprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 470 277 471 278 // -toprocessedexp 472 279 psMetadata *toprocessedexpArgs = psMetadataAlloc(); 473 psMetadataAddU64(toprocessedexpArgs, PS_LIST_TAIL, "-limit", 0, 474 "limit result set to N items", 0); 475 psMetadataAddBool(toprocessedexpArgs, PS_LIST_TAIL, "-simple", 0, 476 "use the simple output format", false); 280 psMetadataAddU64(toprocessedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 281 psMetadataAddBool(toprocessedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 477 282 478 283 // -addproccessedexp 479 284 psMetadata *addprocessedexpArgs = psMetadataAlloc(); 480 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, 481 "define detrend ID (required)", NULL); 482 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, 483 "define detrend ID (required)", NULL); 484 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-recip", 0, 485 "define recipe", NULL); 486 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg", 0, 487 "define exposure background", NAN); 488 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, 489 "define exposure background stdev", NAN); 490 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 491 "define exposure background mean stdev", NAN); 492 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_0", 0, 493 "define fringe slope (0th term)", NAN); 494 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_1", 0, 495 "define fringe slope (1st term)", NAN); 496 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_2", 0, 497 "define fringe slope (2nd term)", NAN); 498 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_1", 0, 499 "define user statistic (1)", NAN); 500 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_2", 0, 501 "define user statistic (2)", NAN); 502 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_3", 0, 503 "define user statistic (3)", NAN); 504 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_4", 0, 505 "define user statistic (4)", NAN); 506 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_5", 0, 507 "define user statistic (5)", NAN); 508 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-path_base", 0, 509 "define base output location", NULL); 510 psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-code", 0, 511 "set fault code", 0); 285 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 286 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "define detrend ID (required)", NULL); 287 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-recip", 0, "define recipe", NULL); 288 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 289 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 290 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 291 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_0", 0, "define fringe slope (0th term)", NAN); 292 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_1", 0, "define fringe slope (1st term)", NAN); 293 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-fringe_2", 0, "define fringe slope (2nd term)", NAN); 294 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_1", 0, "define user statistic (1)", NAN); 295 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_2", 0, "define user statistic (2)", NAN); 296 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_3", 0, "define user statistic (3)", NAN); 297 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_4", 0, "define user statistic (4)", NAN); 298 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-user_5", 0, "define user statistic (5)", NAN); 299 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 300 psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 512 301 513 302 // -proccessedexp 514 303 psMetadata *processedexpArgs = psMetadataAlloc(); 515 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-det_id", 0, 516 "define detrend ID", NULL); 517 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-exp_id", 0, 518 "define detrend ID", NULL); 519 psMetadataAddU64(processedexpArgs, PS_LIST_TAIL, "-limit", 0, 520 "limit result set to N items", 0); 521 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-faulted", 0, 522 "only return imfiles with a fault status set", false); 523 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-simple", 0, 524 "use the simple output format", false); 304 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID", NULL); 305 psMetadataAddStr(processedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp ID", NULL); 306 psMetadataAddU64(processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 307 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 308 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 525 309 526 310 // -revertprocessedexp 527 311 psMetadata *revertprocessedexpArgs = psMetadataAlloc(); 528 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, 529 "search by detrend ID (required)", NULL); 530 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, 531 "search by exposure ID", NULL); 532 psMetadataAddS16(revertprocessedexpArgs, PS_LIST_TAIL, "-code", 0, 533 "search by fault code", 0); 312 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL); 313 psMetadataAddStr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", NULL); 314 psMetadataAddS16(revertprocessedexpArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 534 315 535 316 // -tostacked 536 317 psMetadata *tostackedArgs = psMetadataAlloc(); 537 psMetadataAddU64(tostackedArgs, PS_LIST_TAIL, "-limit", 0, 538 "limit result set to N items", 0); 539 psMetadataAddBool(tostackedArgs, PS_LIST_TAIL, "-simple", 0, 540 "use the simple output format", false); 318 psMetadataAddU64(tostackedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 319 psMetadataAddBool(tostackedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 541 320 542 321 // -addstacked 543 322 psMetadata *addstackedArgs = psMetadataAlloc(); 544 psMetadataAddStr(addstackedArgs, PS_LIST_TAIL, "-det_id", 0, 545 "define detrend ID (required)", NULL); 546 psMetadataAddS32(addstackedArgs, PS_LIST_TAIL, "-iteration", 0, 547 "define iteration number", 0); 548 psMetadataAddStr(addstackedArgs, PS_LIST_TAIL, "-class_id", 0, 549 "define class ID (required)", NULL); 550 psMetadataAddStr(addstackedArgs, PS_LIST_TAIL, "-recip", 0, 551 "define recipe", NULL); 552 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-bg", 0, 553 "define exposure background", NAN); 554 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-bg_stdev", 0, 555 "define exposure background stdev", NAN); 556 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 557 "define exposure background mean stdev", NAN); 558 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-user_1", 0, 559 "define user statistic (1)", NAN); 560 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-user_2", 0, 561 "define user statistic (2)", NAN); 562 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-user_3", 0, 563 "define user statistic (3)", NAN); 564 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-user_4", 0, 565 "define user statistic (4)", NAN); 566 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-user_5", 0, 567 "define user statistic (5)", NAN); 568 psMetadataAddStr(addstackedArgs, PS_LIST_TAIL, "-uri", 0, 569 "define URI", NULL); 570 psMetadataAddS16(addstackedArgs, PS_LIST_TAIL, "-code", 0, 571 "set fault code", 0); 323 psMetadataAddStr(addstackedArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 324 psMetadataAddS32(addstackedArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number (required)", 0); 325 psMetadataAddStr(addstackedArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); 326 psMetadataAddS16(addstackedArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 327 psMetadataAddStr(addstackedArgs, PS_LIST_TAIL, "-uri", 0, "define URI", NULL); 328 psMetadataAddStr(addstackedArgs, PS_LIST_TAIL, "-recip", 0, "define recipe", NULL); 329 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 330 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 331 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 332 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-user_1", 0, "define user statistic (1)", NAN); 333 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-user_2", 0, "define user statistic (2)", NAN); 334 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-user_3", 0, "define user statistic (3)", NAN); 335 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-user_4", 0, "define user statistic (4)", NAN); 336 psMetadataAddF64(addstackedArgs, PS_LIST_TAIL, "-user_5", 0, "define user statistic (5)", NAN); 572 337 573 338 // -stacked 574 339 psMetadata *stackedArgs = psMetadataAlloc(); 575 psMetadataAddStr(stackedArgs, PS_LIST_TAIL, "-det_id", 0, 576 "search for detrend ID", NULL); 577 psMetadataAddS32(stackedArgs, PS_LIST_TAIL, "-iteration", 0, 578 "search for iteration number", 0); 579 psMetadataAddStr(stackedArgs, PS_LIST_TAIL, "-class_id", 0, 580 "search for class ID", NULL); 581 psMetadataAddStr(stackedArgs, PS_LIST_TAIL, "-recip", 0, 582 "search for recipe", NULL); 583 psMetadataAddU64(stackedArgs, PS_LIST_TAIL, "-limit", 0, 584 "limit result set to N items", 0); 585 psMetadataAddBool(stackedArgs, PS_LIST_TAIL, "-faulted", 0, 586 "only return imfiles with a fault status set", false); 587 psMetadataAddBool(stackedArgs, PS_LIST_TAIL, "-simple", 0, 588 "use the simple output format", false); 340 psMetadataAddStr(stackedArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL); 341 psMetadataAddS32(stackedArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 342 psMetadataAddStr(stackedArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 343 psMetadataAddStr(stackedArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL); 344 psMetadataAddU64(stackedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 345 psMetadataAddBool(stackedArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 346 psMetadataAddBool(stackedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 589 347 590 348 // -revertstacked 591 349 psMetadata *revertstackedArgs= psMetadataAlloc(); 592 psMetadataAddStr(revertstackedArgs, PS_LIST_TAIL, "-det_id", 0, 593 "search for detrend ID (required)", NULL); 594 psMetadataAddS32(revertstackedArgs, PS_LIST_TAIL, "-iteration", 0, 595 "search by iteration number", 0); 596 psMetadataAddStr(revertstackedArgs, PS_LIST_TAIL, "-class_id", 0, 597 "search by class ID", NULL); 598 psMetadataAddS16(revertstackedArgs, PS_LIST_TAIL, "-code", 0, 599 "search by fault code", 0); 350 psMetadataAddStr(revertstackedArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID (required)", NULL); 351 psMetadataAddS32(revertstackedArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 352 psMetadataAddStr(revertstackedArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 353 psMetadataAddS16(revertstackedArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 354 355 // -tonormalizedstat 356 psMetadata *tonormalizedstatArgs = psMetadataAlloc(); 357 psMetadataAddU64(tonormalizedstatArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 358 psMetadataAddBool(tonormalizedstatArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 359 360 // -addnormalizedstat 361 psMetadata *addnormstatArgs = psMetadataAlloc(); 362 psMetadataAddStr(addnormstatArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 363 psMetadataAddS32(addnormstatArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 364 psMetadataAddStr(addnormstatArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); 365 psMetadataAddF32(addnormstatArgs, PS_LIST_TAIL, "-norm", 0, "define normal value (required)", NAN); 366 psMetadataAddS16(addnormstatArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 367 368 // -normalizedstat 369 psMetadata *normalizedstatArgs = psMetadataAlloc(); 370 psMetadataAddStr(normalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID", NULL); 371 psMetadataAddS32(normalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 372 psMetadataAddStr(normalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 373 psMetadataAddU64(normalizedstatArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 374 psMetadataAddBool(normalizedstatArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 375 psMetadataAddBool(normalizedstatArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 376 377 // -revertnormalizedstat 378 psMetadata *revertnormalizedstatArgs= psMetadataAlloc(); 379 psMetadataAddStr(revertnormalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL); 380 psMetadataAddS32(revertnormalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 381 psMetadataAddStr(revertnormalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 382 psMetadataAddS16(revertnormalizedstatArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 600 383 601 384 // -tonormalize 602 385 psMetadata *tonormalizeArgs = psMetadataAlloc(); 603 psMetadataAddU64(tonormalizeArgs, PS_LIST_TAIL, "-limit", 0, 604 "limit result set to N items", 0); 605 psMetadataAddBool(tonormalizeArgs, PS_LIST_TAIL, "-simple", 0, 606 "use the simple output format", false); 607 608 // -addnormalizedstat 609 psMetadata *addnormstatArgs = psMetadataAlloc(); 610 psMetadataAddStr(addnormstatArgs, PS_LIST_TAIL, "-det_id", 0, 611 "define detrend ID (required)", NULL); 612 psMetadataAddS32(addnormstatArgs, PS_LIST_TAIL, "-iteration", 0, 613 "define iteration number", 0); 614 psMetadataAddStr(addnormstatArgs, PS_LIST_TAIL, "-class_id", 0, 615 "define class ID (required)", NULL); 616 psMetadataAddF32(addnormstatArgs, PS_LIST_TAIL, "-norm", 0, 617 "define normal value (required)", NAN); 618 psMetadataAddS16(addnormstatArgs, PS_LIST_TAIL, "-code", 0, 619 "set fault code", 0); 620 621 // -normalizedstat 622 psMetadata *normalizedstatArgs = psMetadataAlloc(); 623 psMetadataAddStr(normalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, 624 "search by detrend ID", NULL); 625 psMetadataAddS32(normalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, 626 "search by iteration number", 0); 627 psMetadataAddStr(normalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, 628 "search by class ID", NULL); 629 psMetadataAddU64(normalizedstatArgs, PS_LIST_TAIL, "-limit", 0, 630 "limit result set to N items", 0); 631 psMetadataAddBool(normalizedstatArgs, PS_LIST_TAIL, "-faulted", 0, 632 "only return imfiles with a fault status set", false); 633 psMetadataAddBool(normalizedstatArgs, PS_LIST_TAIL, "-simple", 0, 634 "use the simple output format", false); 635 636 // -revertnormalizedstat 637 psMetadata *revertnormalizedstatArgs= psMetadataAlloc(); 638 psMetadataAddStr(revertnormalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, 639 "search by detrend ID (required)", NULL); 640 psMetadataAddS32(revertnormalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, 641 "search by iteration number", 0); 642 psMetadataAddStr(revertnormalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, 643 "search by class ID", NULL); 644 psMetadataAddS16(revertnormalizedstatArgs, PS_LIST_TAIL, "-code", 0, 645 "search by fault code", 0); 646 647 // -tonormstat 648 psMetadata *tonormstatArgs = psMetadataAlloc(); 649 psMetadataAddU64(tonormstatArgs, PS_LIST_TAIL, "-limit", 0, 650 "limit result set to N items", 0); 651 psMetadataAddBool(tonormstatArgs, PS_LIST_TAIL, "-simple", 0, 652 "use the simple output format", false); 386 psMetadataAddU64(tonormalizeArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 387 psMetadataAddBool(tonormalizeArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 653 388 654 389 // -addnormalizedimfile 655 390 psMetadata *addnormalizedimfileArgs = psMetadataAlloc(); 656 psMetadataAddStr(addnormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, 657 "define detrend ID (required)", NULL); 658 psMetadataAddS32(addnormalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, 659 "define iteration number", 0); 660 psMetadataAddStr(addnormalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, 661 "define class ID (required)", NULL); 662 psMetadataAddStr(addnormalizedimfileArgs, PS_LIST_TAIL, "-uri", 0, 663 "define URI", NULL); 664 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-bg", 0, 665 "define exposure background", NAN); 666 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, 667 "define exposure background stdev", NAN); 668 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 669 "define exposure background mean stdev", NAN); 670 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-user_1", 0, 671 "define user statistic (1)", NAN); 672 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-user_2", 0, 673 "define user statistic (2)", NAN); 674 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-user_3", 0, 675 "define user statistic (3)", NAN); 676 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-user_4", 0, 677 "define user statistic (4)", NAN); 678 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-user_5", 0, 679 "define user statistic (5)", NAN); 680 psMetadataAddStr(addnormalizedimfileArgs, PS_LIST_TAIL, "-path_base", 0, 681 "define base output location", NULL); 682 psMetadataAddS16(addnormalizedimfileArgs, PS_LIST_TAIL, "-code", 0, 683 "set fault code", 0); 391 psMetadataAddStr(addnormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 392 psMetadataAddS32(addnormalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 393 psMetadataAddStr(addnormalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); 394 psMetadataAddS16(addnormalizedimfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 395 psMetadataAddStr(addnormalizedimfileArgs, PS_LIST_TAIL, "-uri", 0, "define URI", NULL); 396 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 397 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 398 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 399 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-user_1", 0, "define user statistic (1)", NAN); 400 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-user_2", 0, "define user statistic (2)", NAN); 401 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-user_3", 0, "define user statistic (3)", NAN); 402 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-user_4", 0, "define user statistic (4)", NAN); 403 psMetadataAddF64(addnormalizedimfileArgs, PS_LIST_TAIL, "-user_5", 0, "define user statistic (5)", NAN); 404 psMetadataAddStr(addnormalizedimfileArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 684 405 685 406 // -normalizedimfile 686 407 psMetadata *normalizedimfileArgs = psMetadataAlloc(); 687 psMetadataAddStr(normalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, 688 "search for detrend ID", NULL); 689 psMetadataAddS32(normalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, 690 "search for iteration number", 0); 691 psMetadataAddStr(normalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, 692 "search for class ID", NULL); 693 psMetadataAddStr(normalizedimfileArgs, PS_LIST_TAIL, "-recip", 0, 694 "search for recipe", NULL); 695 psMetadataAddU64(normalizedimfileArgs, PS_LIST_TAIL, "-limit", 0, 696 "limit result set to N items", 0); 697 psMetadataAddBool(normalizedimfileArgs, PS_LIST_TAIL, "-faulted", 0, 698 "only return imfiles with a fault status set", false); 699 psMetadataAddBool(normalizedimfileArgs, PS_LIST_TAIL, "-simple", 0, 700 "use the simple output format", false); 408 psMetadataAddStr(normalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL); 409 psMetadataAddS32(normalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 410 psMetadataAddStr(normalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 411 psMetadataAddStr(normalizedimfileArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL); 412 psMetadataAddU64(normalizedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 413 psMetadataAddBool(normalizedimfileArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 414 psMetadataAddBool(normalizedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 701 415 702 416 // -revertnormalizedimfile 703 417 psMetadata *revertnormalizedimfileArgs = psMetadataAlloc(); 704 psMetadataAddStr(revertnormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, 705 "search by detrend ID (required)", NULL); 706 psMetadataAddS32(revertnormalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, 707 "search by iteration number", 0); 708 psMetadataAddStr(revertnormalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, 709 "search by class ID", NULL); 710 psMetadataAddS16(revertnormalizedimfileArgs, PS_LIST_TAIL, "-code", 0, 711 "search by fault code", 0); 418 psMetadataAddStr(revertnormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL); 419 psMetadataAddS32(revertnormalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 420 psMetadataAddStr(revertnormalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 421 psMetadataAddS16(revertnormalizedimfileArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 712 422 713 423 // -tonormalizedexp 714 424 psMetadata *tonormalizedexpArgs = psMetadataAlloc(); 715 psMetadataAddU64(tonormalizedexpArgs, PS_LIST_TAIL, "-limit", 0, 716 "limit result set to N items", 0); 717 psMetadataAddBool(tonormalizedexpArgs, PS_LIST_TAIL, "-simple", 0, 718 "use the simple output format", false); 425 psMetadataAddU64(tonormalizedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 426 psMetadataAddBool(tonormalizedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 719 427 720 428 // -addnormalizedexp 721 429 psMetadata *addnormalizedexpArgs = psMetadataAlloc(); 722 psMetadataAddStr(addnormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, 723 "define detrend ID (required)", NULL); 724 psMetadataAddS32(addnormalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, 725 "define iteration number", 0); 726 psMetadataAddStr(addnormalizedexpArgs, PS_LIST_TAIL, "-recip", 0, 727 "search for recipe", NULL); 728 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-bg", 0, 729 "define exposure background", NAN); 730 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, 731 "define exposure background stdev", NAN); 732 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 733 "define exposure background mean stdev", NAN); 734 735 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-user_1", 0, 736 "define user statistic (1)", NAN); 737 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-user_2", 0, 738 "define user statistic (2)", NAN); 739 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-user_3", 0, 740 "define user statistic (3)", NAN); 741 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-user_4", 0, 742 "define user statistic (4)", NAN); 743 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-user_5", 0, 744 "define user statistic (5)", NAN); 745 746 psMetadataAddStr(addnormalizedexpArgs, PS_LIST_TAIL, "-path_base", 0, 747 "define base output location", NULL); 748 psMetadataAddS16(addnormalizedexpArgs, PS_LIST_TAIL, "-code", 0, 749 "set fault code", 0); 430 psMetadataAddStr(addnormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 431 psMetadataAddS32(addnormalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 432 psMetadataAddS16(addnormalizedexpArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 433 psMetadataAddStr(addnormalizedexpArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL); 434 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 435 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 436 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 437 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-user_1", 0, "define user statistic (1)", NAN); 438 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-user_2", 0, "define user statistic (2)", NAN); 439 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-user_3", 0, "define user statistic (3)", NAN); 440 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-user_4", 0, "define user statistic (4)", NAN); 441 psMetadataAddF64(addnormalizedexpArgs, PS_LIST_TAIL, "-user_5", 0, "define user statistic (5)", NAN); 442 psMetadataAddStr(addnormalizedexpArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 750 443 751 444 // -normalizedexp 752 445 psMetadata *normalizedexpArgs = psMetadataAlloc(); 753 psMetadataAddStr(normalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, 754 "define detrend ID", NULL); 755 psMetadataAddS32(normalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, 756 "define iteration number", 0); 757 psMetadataAddStr(normalizedexpArgs, PS_LIST_TAIL, "-recip", 0, 758 "search for recipe", NULL); 759 psMetadataAddF64(normalizedexpArgs, PS_LIST_TAIL, "-bg", 0, 760 "define exposure background", NAN); 761 psMetadataAddF64(normalizedexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, 762 "define exposure background stdev", NAN); 763 psMetadataAddF64(normalizedexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 764 "define exposure background mean stdev", NAN); 765 psMetadataAddStr(normalizedexpArgs, PS_LIST_TAIL, "-path_base", 0, 766 "define base output location", NULL); 767 psMetadataAddU64(normalizedexpArgs, PS_LIST_TAIL, "-limit", 0, 768 "limit result set to N items", 0); 769 psMetadataAddBool(normalizedexpArgs, PS_LIST_TAIL, "-faulted", 0, 770 "only return imfiles with a fault status set", false); 771 psMetadataAddBool(normalizedexpArgs, PS_LIST_TAIL, "-simple", 0, 772 "use the simple output format", false); 446 psMetadataAddStr(normalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID", NULL); 447 psMetadataAddS32(normalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 448 psMetadataAddStr(normalizedexpArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL); 449 psMetadataAddU64(normalizedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 450 psMetadataAddBool(normalizedexpArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 451 psMetadataAddBool(normalizedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 773 452 774 453 // -revertnormalizedexp 775 454 psMetadata *revertnormalizedexpArgs = psMetadataAlloc(); 776 psMetadataAddStr(revertnormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, 777 "search by detrend ID (required)", NULL); 778 psMetadataAddS32(revertnormalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, 779 "search by iteration number", 0); 780 psMetadataAddS16(revertnormalizedexpArgs, PS_LIST_TAIL, "-code", 0, 781 "search by fault code", 0); 455 psMetadataAddStr(revertnormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL); 456 psMetadataAddS32(revertnormalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 457 psMetadataAddS16(revertnormalizedexpArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 782 458 783 459 // -toresidimfile 784 460 psMetadata *toresidimfileArgs = psMetadataAlloc(); 785 psMetadataAddU64(toresidimfileArgs, PS_LIST_TAIL, "-limit", 0, 786 "limit result set to N items", 0); 787 psMetadataAddBool(toresidimfileArgs, PS_LIST_TAIL, "-simple", 0, 788 "use the simple output format", false); 461 psMetadataAddU64(toresidimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 462 psMetadataAddBool(toresidimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 463 464 // -addresidimfile 465 psMetadata *addresidimfileArgs = psMetadataAlloc(); 466 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 467 psMetadataAddS32(addresidimfileArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 468 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "define detrend ID (required)", NULL); 469 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); 470 psMetadataAddS16(addresidimfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 471 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-uri", 0, "define resid file URI", NULL); 472 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-recip", 0, "define recipe", NULL); 473 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 474 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 475 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 476 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bg_skewness", 0, "define exposure background skewness", NAN); 477 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bg_kurtosis", 0, "define exposure background kurtosis", NAN); 478 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bin_stdev", 0, "define exposure background binned stdev", NAN); 479 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_0", 0, "define fringe slope (0th term)", NAN); 480 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_1", 0, "define fringe slope (1st term)", NAN); 481 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_2", 0, "define fringe slope (2nd term)", NAN); 482 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_resid_0", 0, "define fringe residual (0th term)", NAN); 483 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_resid_1", 0, "define fringe residual (1st term)", NAN); 484 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_resid_2", 0, "define fringe residual (2nd term)", NAN); 485 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-user_1", 0, "define user statistic (1)", NAN); 486 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-user_2", 0, "define user statistic (2)", NAN); 487 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-user_3", 0, "define user statistic (3)", NAN); 488 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-user_4", 0, "define user statistic (4)", NAN); 489 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-user_5", 0, "define user statistic (5)", NAN); 490 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 491 492 // -residimfile 493 psMetadata *residimfileArgs = psMetadataAlloc(); 494 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL); 495 psMetadataAddS32(residimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 496 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", NULL); 497 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 498 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL); 499 psMetadataAddU64(residimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 500 psMetadataAddBool(residimfileArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 501 psMetadataAddBool(residimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 502 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-select_state", 0, "search for state", NULL); 503 504 // -revertresidimfile 505 psMetadata *revertresidimfileArgs = psMetadataAlloc(); 506 psMetadataAddStr(revertresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL); 507 psMetadataAddS32(revertresidimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 508 psMetadataAddStr(revertresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", NULL); 509 psMetadataAddStr(revertresidimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 510 psMetadataAddS16(revertresidimfileArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 789 511 790 512 // -toresidexp 791 513 psMetadata *toresidexpArgs = psMetadataAlloc(); 792 psMetadataAddU64(toresidexpArgs, PS_LIST_TAIL, "-limit", 0, 793 "limit result set to N items", 0); 794 psMetadataAddBool(toresidexpArgs, PS_LIST_TAIL, "-simple", 0, 795 "use the simple output format", false); 796 797 // -addresidimfile 798 psMetadata *addresidimfileArgs = psMetadataAlloc(); 799 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, 800 "define detrend ID (required)", NULL); 801 psMetadataAddS32(addresidimfileArgs, PS_LIST_TAIL, "-iteration", 0, 802 "define iteration number", 0); 803 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 804 "define detrend ID (required)", NULL); 805 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-class_id", 0, 806 "define class ID (required)", NULL); 807 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-uri", 0, 808 "define resid file URI", NULL); 809 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-recip", 0, 810 "define recipe", NULL); 811 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bg", 0, 812 "define exposure background", NAN); 813 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, 814 "define exposure background stdev", NAN); 815 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 816 "define exposure background mean stdev", NAN); 817 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bg_skewness", 0, 818 "define exposure background skewness", NAN); 819 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bg_kurtosis", 0, 820 "define exposure background kurtosis", NAN); 821 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-bin_stdev", 0, 822 "define exposure background binned stdev", NAN); 823 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_0", 0, 824 "define fringe slope (0th term)", NAN); 825 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_1", 0, 826 "define fringe slope (1st term)", NAN); 827 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_2", 0, 828 "define fringe slope (2nd term)", NAN); 829 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_resid_0", 0, 830 "define fringe residual (0th term)", NAN); 831 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_resid_1", 0, 832 "define fringe residual (1st term)", NAN); 833 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-fringe_resid_2", 0, 834 "define fringe residual (2nd term)", NAN); 835 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-user_1", 0, 836 "define user statistic (1)", NAN); 837 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-user_2", 0, 838 "define user statistic (2)", NAN); 839 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-user_3", 0, 840 "define user statistic (3)", NAN); 841 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-user_4", 0, 842 "define user statistic (4)", NAN); 843 psMetadataAddF64(addresidimfileArgs, PS_LIST_TAIL, "-user_5", 0, 844 "define user statistic (5)", NAN); 845 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-path_base", 0, 846 "define base output location", NULL); 847 psMetadataAddS16(addresidimfileArgs, PS_LIST_TAIL, "-code", 0, 848 "set fault code", 0); 849 850 // -residimfile 851 psMetadata *residimfileArgs = psMetadataAlloc(); 852 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-det_id", 0, 853 "search for detrend ID", NULL); 854 psMetadataAddS32(residimfileArgs, PS_LIST_TAIL, "-iteration", 0, 855 "search for iteration number", 0); 856 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 857 "define detrend ID", NULL); 858 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-class_id", 0, 859 "search for class ID", NULL); 860 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-recip", 0, 861 "search for recipe", NULL); 862 psMetadataAddU64(residimfileArgs, PS_LIST_TAIL, "-limit", 0, 863 "limit result set to N items", 0); 864 psMetadataAddBool(residimfileArgs, PS_LIST_TAIL, "-faulted", 0, 865 "only return imfiles with a fault status set", false); 866 psMetadataAddBool(residimfileArgs, PS_LIST_TAIL, "-simple", 0, 867 "use the simple output format", false); 868 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-select_state", 0, 869 "search for state", NULL); 870 871 // -revertresidimfile 872 psMetadata *revertresidimfileArgs = psMetadataAlloc(); 873 psMetadataAddStr(revertresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, 874 "search by detrend ID (required)", NULL); 875 psMetadataAddS32(revertresidimfileArgs, PS_LIST_TAIL, "-iteration", 0, 876 "search by iteration number", 0); 877 psMetadataAddStr(revertresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 878 "search by detrend ID", NULL); 879 psMetadataAddStr(revertresidimfileArgs, PS_LIST_TAIL, "-class_id", 0, 880 "search for class ID", NULL); 881 psMetadataAddS16(revertresidimfileArgs, PS_LIST_TAIL, "-code", 0, 882 "search by fault code", 0); 514 psMetadataAddU64(toresidexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 515 psMetadataAddBool(toresidexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 883 516 884 517 // -addresidexp 885 518 psMetadata *addresidexpArgs = psMetadataAlloc(); 886 psMetadataAddStr(addresidexpArgs, PS_LIST_TAIL, "-det_id", 0, 887 "define detrend ID (required)", NULL); 888 psMetadataAddS32(addresidexpArgs, PS_LIST_TAIL, "-iteration", 0, 889 "define iteration number", 0); 890 psMetadataAddStr(addresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, 891 "define detrend ID (required)", NULL); 892 psMetadataAddStr(addresidexpArgs, PS_LIST_TAIL, "-recip", 0, 893 "define recipe", NULL); 894 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bg", 0, 895 "define exposure background", NAN); 896 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, 897 "define exposure background stdev", NAN); 898 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 899 "define exposure background mean stdev", NAN); 900 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bg_skewness", 0, 901 "define exposure background skewness", NAN); 902 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bg_kurtosis", 0, 903 "define exposure background kurtosis", NAN); 904 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bin_stdev", 0, 905 "define exposure background binned stdev", NAN); 906 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_0", 0, 907 "define fringe slope (0th term)", NAN); 908 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_1", 0, 909 "define fringe slope (1st term)", NAN); 910 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_2", 0, 911 "define fringe slope (2nd term)", NAN); 912 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_resid_0", 0, 913 "define fringe residual (0th term)", NAN); 914 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_resid_1", 0, 915 "define fringe residual (1st term)", NAN); 916 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_resid_2", 0, 917 "define fringe residual (2nd term)", NAN); 918 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-user_1", 0, 919 "define user statistic (1)", NAN); 920 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-user_2", 0, 921 "define user statistic (2)", NAN); 922 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-user_3", 0, 923 "define user statistic (3)", NAN); 924 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-user_4", 0, 925 "define user statistic (4)", NAN); 926 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-user_5", 0, 927 "define user statistic (5)", NAN); 928 psMetadataAddStr(addresidexpArgs, PS_LIST_TAIL, "-path_base", 0, 929 "define base output location", NULL); 930 psMetadataAddS16(addresidexpArgs, PS_LIST_TAIL, "-code", 0, 931 "set fault code", 0); 932 psMetadataAddBool(addresidexpArgs, PS_LIST_TAIL, "-reject", 0, 933 "exposure is not to be stacked in the next iteration", false); 519 psMetadataAddStr(addresidexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 520 psMetadataAddS32(addresidexpArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 521 psMetadataAddStr(addresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, "define detrend ID (required)", NULL); 522 psMetadataAddS16(addresidexpArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 523 psMetadataAddStr(addresidexpArgs, PS_LIST_TAIL, "-recip", 0, "define recipe", NULL); 524 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 525 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 526 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 527 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bg_skewness", 0, "define exposure background skewness", NAN); 528 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bg_kurtosis", 0, "define exposure background kurtosis", NAN); 529 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-bin_stdev", 0, "define exposure background binned stdev", NAN); 530 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_0", 0, "define fringe slope (0th term)", NAN); 531 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_1", 0, "define fringe slope (1st term)", NAN); 532 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_2", 0, "define fringe slope (2nd term)", NAN); 533 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_resid_0", 0, "define fringe residual (0th term)", NAN); 534 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_resid_1", 0, "define fringe residual (1st term)", NAN); 535 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-fringe_resid_2", 0, "define fringe residual (2nd term)", NAN); 536 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-user_1", 0, "define user statistic (1)", NAN); 537 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-user_2", 0, "define user statistic (2)", NAN); 538 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-user_3", 0, "define user statistic (3)", NAN); 539 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-user_4", 0, "define user statistic (4)", NAN); 540 psMetadataAddF64(addresidexpArgs, PS_LIST_TAIL, "-user_5", 0, "define user statistic (5)", NAN); 541 psMetadataAddStr(addresidexpArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 542 psMetadataAddBool(addresidexpArgs, PS_LIST_TAIL, "-reject", 0, "exposure is not to be stacked in the next iteration", false); 934 543 935 544 // -residexp 936 545 psMetadata *residexpArgs = psMetadataAlloc(); 937 psMetadataAddStr(residexpArgs, PS_LIST_TAIL, "-det_id", 0, 938 "search for detrend ID", NULL); 939 psMetadataAddS32(residexpArgs, PS_LIST_TAIL, "-iteration", 0, 940 "search for iteration number", 0); 941 psMetadataAddStr(residexpArgs, PS_LIST_TAIL, "-exp_id", 0, 942 "search for exp ID", NULL); 943 psMetadataAddStr(residexpArgs, PS_LIST_TAIL, "-recip", 0, 944 "search for recipe", NULL); 945 psMetadataAddU64(residexpArgs, PS_LIST_TAIL, "-limit", 0, 946 "limit result set to N items", 0); 947 psMetadataAddBool(residexpArgs, PS_LIST_TAIL, "-faulted", 0, 948 "only return imfiles with a fault status set", false); 949 psMetadataAddBool(residexpArgs, PS_LIST_TAIL, "-reject", 0, 950 "search for acceptable residuals", false); 951 psMetadataAddBool(residexpArgs, PS_LIST_TAIL, "-simple", 0, 952 "use the simple output format", false); 546 psMetadataAddStr(residexpArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL); 547 psMetadataAddS32(residexpArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 548 psMetadataAddStr(residexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", NULL); 549 psMetadataAddStr(residexpArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL); 550 psMetadataAddBool(residexpArgs, PS_LIST_TAIL, "-reject", 0, "search for acceptable residuals", false); 551 psMetadataAddU64(residexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 552 psMetadataAddBool(residexpArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 553 psMetadataAddBool(residexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 953 554 954 555 // -revertresidexp 955 556 psMetadata *revertresidexpArgs = psMetadataAlloc(); 956 psMetadataAddStr(revertresidexpArgs, PS_LIST_TAIL, "-det_id", 0, 957 "search by detrend ID (required)", NULL); 958 psMetadataAddS32(revertresidexpArgs, PS_LIST_TAIL, "-iteration", 0, 959 "search by iteration number", 0); 960 psMetadataAddStr(revertresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, 961 "search by detrend ID", NULL); 962 psMetadataAddS16(revertresidexpArgs, PS_LIST_TAIL, "-code", 0, 963 "search by fault code", 0); 557 psMetadataAddStr(revertresidexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL); 558 psMetadataAddS32(revertresidexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 559 psMetadataAddStr(revertresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", NULL); 560 psMetadataAddS16(revertresidexpArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 561 562 // -updateresidexp 563 psMetadata *updateresidexpArgs = psMetadataAlloc(); 564 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID", NULL); 565 psMetadataAddS32(updateresidexpArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 566 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, "define exp ID", NULL); 567 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-recip", 0, "define recipe", NULL); 568 psMetadataAddF64(updateresidexpArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 569 psMetadataAddF64(updateresidexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 570 psMetadataAddF64(updateresidexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 571 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 572 psMetadataAddBool(updateresidexpArgs, PS_LIST_TAIL, "-reject", 0, "exposure is not to be stacked in the next iteration", false); 964 573 965 574 // -todetrunsummary 966 575 psMetadata *todetrunsummaryArgs = psMetadataAlloc(); 967 psMetadataAddBool(todetrunsummaryArgs, PS_LIST_TAIL, "-simple", 0, 968 "use the simple output format", false); 969 psMetadataAddU64(todetrunsummaryArgs, PS_LIST_TAIL, "-limit", 0, 970 "limit result set to N items", 0); 971 972 // -updateresidexp 973 psMetadata *updateresidexpArgs = psMetadataAlloc(); 974 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-det_id", 0, 975 "define detrend ID", NULL); 976 psMetadataAddS32(updateresidexpArgs, PS_LIST_TAIL, "-iteration", 0, 977 "define iteration number", 0); 978 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, 979 "define exp ID", NULL); 980 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-recip", 0, 981 "define recipe", NULL); 982 psMetadataAddF64(updateresidexpArgs, PS_LIST_TAIL, "-bg", 0, 983 "define exposure background", NAN); 984 psMetadataAddF64(updateresidexpArgs, PS_LIST_TAIL, "-bg_stdev", 0, 985 "define exposure background stdev", NAN); 986 psMetadataAddF64(updateresidexpArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 987 "define exposure background mean stdev", NAN); 988 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-path_base", 0, 989 "define base output location", NULL); 990 psMetadataAddBool(updateresidexpArgs, PS_LIST_TAIL, "-reject", 0, 991 "exposure is not to be stacked in the next iteration", false); 576 psMetadataAddBool(todetrunsummaryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 577 psMetadataAddU64(todetrunsummaryArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 992 578 993 579 // -adddetrunsummary 994 580 psMetadata *adddetrunsummaryArgs = psMetadataAlloc(); 995 psMetadataAddStr(adddetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, 996 "define detrend ID (required)", NULL); 997 psMetadataAddS32(adddetrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, 998 "define iteration number", 0); 999 psMetadataAddF64(adddetrunsummaryArgs, PS_LIST_TAIL, "-bg", 0, 1000 "define exposure background", NAN); 1001 psMetadataAddF64(adddetrunsummaryArgs, PS_LIST_TAIL, "-bg_stdev", 0, 1002 "define exposure background stdev", NAN); 1003 psMetadataAddF64(adddetrunsummaryArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 1004 "define exposure background mean stdev", NAN); 1005 psMetadataAddS16(adddetrunsummaryArgs, PS_LIST_TAIL, "-code", 0, 1006 "set fault code", 0); 1007 psMetadataAddBool(adddetrunsummaryArgs, PS_LIST_TAIL, "-accept", 0, 1008 "declare that this detrun iteration is accepted as a master", false); 1009 psMetadataAddBool(adddetrunsummaryArgs, PS_LIST_TAIL, "-again", 0, 1010 "start a new iteration of this detrend run", false); 581 psMetadataAddStr(adddetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 582 psMetadataAddS32(adddetrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 583 psMetadataAddF64(adddetrunsummaryArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 584 psMetadataAddF64(adddetrunsummaryArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 585 psMetadataAddF64(adddetrunsummaryArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 586 psMetadataAddS16(adddetrunsummaryArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 587 psMetadataAddBool(adddetrunsummaryArgs, PS_LIST_TAIL, "-accept", 0, "declare that this detrun iteration is accepted as a master", false); 588 psMetadataAddBool(adddetrunsummaryArgs, PS_LIST_TAIL, "-again", 0, "start a new iteration of this detrend run", false); 1011 589 1012 590 // -detrunsummary 1013 591 psMetadata *detrunsummaryArgs = psMetadataAlloc(); 1014 psMetadataAddStr(detrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, 1015 "search for detrend ID", NULL); 1016 psMetadataAddU64(detrunsummaryArgs, PS_LIST_TAIL, "-limit", 0, 1017 "limit result set to N items", 0); 1018 psMetadataAddS32(detrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, 1019 "search for iteration number", 0); 1020 psMetadataAddBool(detrunsummaryArgs, PS_LIST_TAIL, "-faulted", 0, 1021 "only return imfiles with a fault status set", false); 1022 psMetadataAddBool(detrunsummaryArgs, PS_LIST_TAIL, "-reject", 0, 1023 "search for acceptable residuals", false); 1024 psMetadataAddBool(detrunsummaryArgs, PS_LIST_TAIL, "-simple", 0, 1025 "use the simple output format", false); 592 psMetadataAddStr(detrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL); 593 psMetadataAddS32(detrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 594 psMetadataAddU64(detrunsummaryArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 595 psMetadataAddBool(detrunsummaryArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 596 psMetadataAddBool(detrunsummaryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 597 psMetadataAddBool(detrunsummaryArgs, PS_LIST_TAIL, "-reject", 0, "search for acceptable residuals", false); 1026 598 1027 599 // -revertdetrunsummary 1028 600 psMetadata *revertdetrunsummaryArgs = psMetadataAlloc(); 1029 psMetadataAddStr(revertdetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, 1030 "search by detrend ID (required)", NULL); 1031 psMetadataAddS32(revertdetrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, 1032 "search by iteration number", 0); 1033 psMetadataAddS16(revertdetrunsummaryArgs, PS_LIST_TAIL, "-code", 0, 1034 "search by fault code", 0); 601 psMetadataAddStr(revertdetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL); 602 psMetadataAddS32(revertdetrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 603 psMetadataAddS16(revertdetrunsummaryArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 1035 604 1036 605 // -updatedetrunsummary 1037 606 psMetadata *updatedetrunsummaryArgs = psMetadataAlloc(); 1038 psMetadataAddStr(updatedetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, 1039 "search for detrend master for detrend ID (required)", NULL); 1040 psMetadataAddBool(updatedetrunsummaryArgs, PS_LIST_TAIL, "-accept", 0, 1041 "declare that this detrun iteration is accepted as a master", false); 1042 psMetadataAddBool(updatedetrunsummaryArgs, PS_LIST_TAIL, "-reject", 0, 1043 "reject this detrun iteration as a master", false); 607 psMetadataAddStr(updatedetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend master for detrend ID (required)", NULL); 608 psMetadataAddBool(updatedetrunsummaryArgs, PS_LIST_TAIL, "-accept", 0, "declare that this detrun iteration is accepted as a master", false); 609 psMetadataAddBool(updatedetrunsummaryArgs, PS_LIST_TAIL, "-reject", 0, "reject this detrun iteration as a master", false); 1044 610 1045 611 // -updatedetrun 1046 612 psMetadata *updatedetrunArgs = psMetadataAlloc(); 1047 psMetadataAddStr(updatedetrunArgs, PS_LIST_TAIL, "-det_id", 0, 1048 "search for detrend master for detrend ID (required)", NULL); 1049 psMetadataAddBool(updatedetrunArgs, PS_LIST_TAIL, "-again", 0, 1050 "start a new iteration of this detrend run", false); 1051 psMetadataAddStr(updatedetrunArgs, PS_LIST_TAIL, "-state", 0, 1052 "set the state of this detrend run", false); 613 psMetadataAddStr(updatedetrunArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend master for detrend ID (required)", NULL); 614 psMetadataAddBool(updatedetrunArgs, PS_LIST_TAIL, "-again", 0, "start a new iteration of this detrend run", false); 615 psMetadataAddStr(updatedetrunArgs, PS_LIST_TAIL, "-state", 0, "set the state of this detrend run", false); 1053 616 1054 617 // -rerun 1055 618 psMetadata *rerunArgs = psMetadataAlloc(); 1056 psMetadataAddStr(rerunArgs, PS_LIST_TAIL, "-det_id", 0, 1057 "search for detrend master for detrend ID (required)", NULL); 1058 psMetadataAddStr(rerunArgs, PS_LIST_TAIL, "-exp_id", PS_META_DUPLICATE_OK, 1059 "include this exposure (multiple OK, required)", NULL); 619 psMetadataAddStr(rerunArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend master for detrend ID (required)", NULL); 620 psMetadataAddStr(rerunArgs, PS_LIST_TAIL, "-exp_id", PS_META_DUPLICATE_OK, "include this exposure (multiple OK, required)", NULL); 1060 621 1061 622 // -register_detrend 1062 623 psMetadata *register_detrendArgs = psMetadataAlloc(); 1063 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-det_type", 0, 1064 "define the type of detrend run (required)", NULL); 1065 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-mode", 0, 1066 "define the mode of this detrend run", "master"); 1067 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-filelevel", 0, 1068 "define filelevel (required)", NULL); 1069 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-workdir", 0, 1070 "define workdir", NULL); 1071 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-inst", 0, 1072 "define camera", NULL); 1073 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-telescope", 0, 1074 "define telescope", NULL); 1075 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-exp_type", 0, 1076 "define exposure type", NULL); 1077 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-filter", 0, 1078 "define filter ", NULL); 1079 psMetadataAddF32(register_detrendArgs, PS_LIST_TAIL, "-airmass_min", 0, 1080 "define min airmass", NAN); 1081 psMetadataAddF32(register_detrendArgs, PS_LIST_TAIL, "-airmass_max", 0, 1082 "define max airmass", NAN); 1083 psMetadataAddF32(register_detrendArgs, PS_LIST_TAIL, "-exp_time_min", 0, 1084 "define min exposure time", NAN); 1085 psMetadataAddF32(register_detrendArgs, PS_LIST_TAIL, "-exp_time_max", 0, 1086 "define max exposure time", NAN); 1087 psMetadataAddF64(register_detrendArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, 1088 "define min ccd tempature", NAN); 1089 psMetadataAddF64(register_detrendArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, 1090 "define max ccd tempature", NAN); 1091 psMetadataAddF64(register_detrendArgs, PS_LIST_TAIL, "-posang_min", 0, 1092 "define min rotator position angle", NAN); 1093 psMetadataAddF64(register_detrendArgs, PS_LIST_TAIL, "-posang_max", 0, 1094 "define max rotator position angle", NAN); 1095 psMetadataAddF64(register_detrendArgs, PS_LIST_TAIL, "-solang_min", 0, 1096 "define min solar angle", NAN); 1097 psMetadataAddF64(register_detrendArgs, PS_LIST_TAIL, "-solang_max", 0, 1098 "define max solar angle", NAN); 1099 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-registered", 0, 1100 "time detrend run was registered", now); 1101 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-time_begin", 0, 1102 "detrend applies to exposures taken during this period", NULL); 1103 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-time_end", 0, 1104 "detrend applies to exposures taken during this period", NULL); 1105 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-use_begin", 0, 1106 "start of detrend run applicable period", NULL); 1107 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-use_end", 0, 1108 "end of detrend run applicable period", NULL); 1109 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-parent", 0, 1110 "define parent det_id", NULL); 1111 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-label", 0, 1112 "define detrun label", NULL); 1113 psMetadataAddBool(register_detrendArgs, PS_LIST_TAIL, "-simple", 0, 1114 "use the simple output format", false); 624 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-det_type", 0, "define the type of detrend run (required)", NULL); 625 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-filelevel", 0, "define filelevel (required)", NULL); 626 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir", NULL); 627 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-inst", 0, "define camera", NULL); 628 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope", NULL); 629 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-exp_type", 0, "define exposure type", NULL); 630 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-filter", 0, "define filter ", NULL); 631 psMetadataAddF32(register_detrendArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 632 psMetadataAddF32(register_detrendArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 633 psMetadataAddF32(register_detrendArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min exposure time", NAN); 634 psMetadataAddF32(register_detrendArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max exposure time", NAN); 635 psMetadataAddF32(register_detrendArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 636 psMetadataAddF32(register_detrendArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 637 psMetadataAddF64(register_detrendArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 638 psMetadataAddF64(register_detrendArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 639 psMetadataAddF64(register_detrendArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 640 psMetadataAddF64(register_detrendArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 641 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 642 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-time_begin", 0, "detrend applies to exposures taken during this period", NULL); 643 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-time_end", 0, "detrend applies to exposures taken during this period", NULL); 644 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-use_begin", 0, "start of detrend run applicable period", NULL); 645 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-use_end", 0, "end of detrend run applicable period", NULL); 646 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-parent", 0, "define parent det_id", NULL); 647 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-label", 0, "define detrun label", NULL); 648 psMetadataAddBool(register_detrendArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 1115 649 1116 650 // -register_detrend_imfile 1117 651 psMetadata *register_detrend_imfileArgs = psMetadataAlloc(); 1118 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-det_id", 0, 1119 "define detrend ID (required)", NULL); 1120 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-class_id", 0, 1121 "search for class ID (required)", NULL); 1122 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-uri", 0, 1123 "define resid file URI (required)", NULL); 1124 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-bg", 0, 1125 "define exposure background", NAN); 1126 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, 1127 "define exposure background stdev", NAN); 1128 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, 1129 "define exposure background mean stdev", NAN); 1130 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-user_1", 0, 1131 "define user statistic (1)", NAN); 1132 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-user_2", 0, 1133 "define user statistic (2)", NAN); 1134 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-user_3", 0, 1135 "define user statistic (3)", NAN); 1136 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-user_4", 0, 1137 "define user statistic (4)", NAN); 1138 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-user_5", 0, 1139 "define user statistic (5)", NAN); 1140 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-path_base", 0, 1141 "define base output location", NULL); 652 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL); 653 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID (required)", NULL); 654 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-uri", 0, "define resid file URI (required)", NULL); 655 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 656 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 657 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-bg_mean_stdev", 0, "define exposure background mean stdev", NAN); 658 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-user_1", 0, "define user statistic (1)", NAN); 659 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-user_2", 0, "define user statistic (2)", NAN); 660 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-user_3", 0, "define user statistic (3)", NAN); 661 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-user_4", 0, "define user statistic (4)", NAN); 662 psMetadataAddF64(register_detrend_imfileArgs, PS_LIST_TAIL, "-user_5", 0, "define user statistic (5)", NAN); 663 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 1142 664 1143 665 psFree(now); … … 1175 697 PXOPT_ADD_MODE("-revertnormalizedstat", "", DETTOOL_MODE_REVERTNORMALIZEDSTAT, revertnormalizedstatArgs); 1176 698 1177 PXOPT_ADD_MODE("-tonormalizedstat", "", DETTOOL_MODE_TONORMALIZEDSTAT, tonorm statArgs);699 PXOPT_ADD_MODE("-tonormalizedstat", "", DETTOOL_MODE_TONORMALIZEDSTAT, tonormalizedstatArgs); 1178 700 PXOPT_ADD_MODE("-addnormalizedimfile", "", DETTOOL_MODE_ADDNORMALIZEDIMFILE,addnormalizedimfileArgs); 1179 701 PXOPT_ADD_MODE("-normalizedimfile","", DETTOOL_MODE_NORMALIZEDIMFILE, normalizedimfileArgs); … … 1213 735 psFree(modes); 1214 736 1215 // setup search criterion1216 #define addWhereStr(name) \1217 { \1218 psString str = NULL; \1219 bool status = false; \1220 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \1221 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\1222 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \1223 psFree(config); \1224 return NULL; \1225 } \1226 } \1227 }1228 1229 // generate SQL where clause1230 config->where = psMetadataAlloc();1231 1232 addWhereStr(det_id);1233 {1234 // XXX this is broke because you can't specify -iteration 01235 psMetadataItem *item = psMetadataLookup(config->args, "-iteration");1236 if (item && psStrcasestr(item->comment, "found")) {1237 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "iteration", 0, "==", item->data.S32)) {1238 psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");1239 psFree(config);1240 return NULL;1241 }1242 }1243 }1244 addWhereStr(det_type);1245 addWhereStr(exp_id);1246 addWhereStr(class_id);1247 // convert '-inst' to 'camera'1248 {1249 psString str = NULL;1250 bool status = false;1251 if ((str = psMetadataLookupStr(&status, config->args, "-inst"))) {1252 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, "camera", 0, "==", str)) {1253 psError(PS_ERR_UNKNOWN, false, "failed to add item camera");1254 psFree(config);1255 return NULL;1256 }1257 }1258 }1259 addWhereStr(telescope);1260 addWhereStr(exp_type);1261 {1262 int n = 0;1263 bool status = false;1264 if ((n = psMetadataLookupS32(&status, config->args, "-imfiles"))) {1265 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "imfiles", 0, "==", n)) {1266 psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");1267 psFree(config);1268 return NULL;1269 }1270 }1271 }1272 addWhereStr(filter);1273 addWhereStr(recipe);1274 {1275 int n = 0;1276 bool status = false;1277 if ((n = psMetadataLookupS32(&status, config->args, "-guide_version"))) {1278 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "guide_version", 0, "==", n)) {1279 psError(PS_ERR_UNKNOWN, false, "failed to add item guide_version");1280 psFree(config);1281 return NULL;1282 }1283 }1284 }1285 {1286 bool boolean = false;1287 bool status = false;1288 1289 // map reject -> !accept1290 if ((boolean = psMetadataLookupBool(&status, config->args, "-reject"))) {1291 if (!psMetadataAddBool(config->where, PS_LIST_TAIL, "accept", 0, "==", !boolean)) {1292 psError(PS_ERR_UNKNOWN, false, "failed to add item reject");1293 psFree(config);1294 return NULL;1295 }1296 }1297 }1298 1299 // convert '-code' to 'fault'1300 {1301 psS16 fault = 0;1302 bool status = false;1303 if ((fault = psMetadataLookupS16(&status, config->args, "-code"))) {1304 if (!psMetadataAddS16(config->where, PS_LIST_TAIL, "fault", 0, "==", fault)) {1305 psError(PS_ERR_UNKNOWN, false, "failed to add item fault");1306 psFree(config);1307 return NULL;1308 }1309 }1310 }1311 1312 if (config->where->list->n < 1) {1313 psFree(config->where);1314 config->where = NULL;1315 }1316 1317 737 // define Database handle, if used 1318 738 // do this last so we don't setup a connection before CLI options are -
trunk/ippTools/src/dettool_correction.c
r18336 r18561 18 18 */ 19 19 20 #ifdef HAVB_CONFIG_H21 #include <config.h>22 #endif23 24 #include <stdio.h>25 #include <string.h>26 #include <stdlib.h>27 #include <stdint.h>28 #include <inttypes.h>29 30 #include <ippdb.h>31 32 #include "pxtools.h"33 20 #include "dettool.h" 34 21 … … 37 24 PS_ASSERT_PTR_NON_NULL(config, false); 38 25 39 bool status = false; 40 psString det_id = psMetadataLookupStr(&status, config->args, "-det_id"); 41 if (!status) { 42 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -det_id"); 43 return false; 44 } 45 if (!det_id) { 46 psError(PS_ERR_UNKNOWN, true, "-det_id is required"); 47 return false; 48 } 49 50 psArray *runs = detRunSelectRowObjects(config->dbh, config->where, 1); 26 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required 27 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); // optional 28 29 // build the needed where 30 psMetadata *where = psMetadataAlloc(); 31 psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", (psS64)atoll(det_id)); 32 psArray *runs = detRunSelectRowObjects(config->dbh, where, 1); 33 psFree (where); 34 51 35 if (!psArrayLength(runs)) { 52 36 psError(PS_ERR_UNKNOWN, false, "database error"); … … 103 87 } 104 88 105 psArray *detRuns = NULL; 106 { 107 psMetadata *where = psMetadataAlloc(); 108 psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", new_det_id); 109 detRuns = psDBSelectRows(config->dbh, "detRun", where, 0); 110 psFree(where); 111 } 89 psMetadata *where_new = psMetadataAlloc(); 90 psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", new_det_id); 91 psArray *detRuns = psDBSelectRows(config->dbh, "detRun", where_new, 0); 92 psFree(where_new); 93 112 94 if (!detRuns) { 113 95 psError(PS_ERR_UNKNOWN, false, "can't find the detRun we just created"); … … 118 100 psAbort("found more then one detRun matching det_id %" PRId64 "(this should not happen)", new_det_id); 119 101 return false; 120 }121 122 bool simple = false;123 {124 bool status = false;125 simple = psMetadataLookupBool(&status, config->args, "-simple");126 if (!status) {127 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");128 return false;129 }130 102 } 131 103 … … 145 117 PS_ASSERT_PTR_NON_NULL(config, false); 146 118 147 bool status = false; 148 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 149 if (!status) { 150 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit"); 151 return false; 152 } 119 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 120 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 153 121 154 122 psString query = pxDataGet("dettool_tocorrectexp.sql"); … … 183 151 } 184 152 185 bool simple = false;186 {187 bool status = false;188 simple = psMetadataLookupBool(&status, config->args, "-simple");189 if (!status) {190 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");191 return false;192 }193 }194 195 153 // negative simple so the default is true 196 154 if (!ippdbPrintMetadatas(stdout, output, "detRun", !simple)) { … … 209 167 PS_ASSERT_PTR_NON_NULL(config, false); 210 168 211 bool status = false; 212 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 213 if (!status) { 214 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit"); 215 return false; 216 } 169 psMetadata *where = psMetadataAlloc(); 170 PXOPT_COPY_STR(config->args, where, "-det_type", "det_type", "=="); 171 172 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 173 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 217 174 218 175 psString query = pxDataGet("dettool_tocorrectimfile.sql"); … … 222 179 } 223 180 224 if (config->where) { 225 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "det1"); 181 if (psListLength(where->list)) { 182 // NOTE the SQL uses an intermediate table 'det1' for this query 183 psString whereClause = psDBGenerateWhereConditionSQL(where, "det1"); 226 184 psStringAppend(&query, " AND %s", whereClause); 227 185 psFree(whereClause); 228 186 } 187 psFree (where); 229 188 230 189 // treat limit == 0 as "no limit" … … 253 212 } 254 213 255 bool simple = false;256 {257 bool status = false;258 simple = psMetadataLookupBool(&status, config->args, "-simple");259 if (!status) {260 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");261 return false;262 }263 }264 265 214 // negative simple so the default is true 266 215 if (!ippdbPrintMetadatas(stdout, output, "detPendingCorrectImfile", !simple)) { … … 275 224 } 276 225 226 // NOTE : the command-line args are parsed by register_detrend_imfileMode 277 227 bool addcorrectimfileMode(pxConfig *config) 278 228 { -
trunk/ippTools/src/difftool.c
r18336 r18561 104 104 105 105 // default 106 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 106 107 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 107 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);108 108 109 109 diffRunRow *run = diffRunRowAlloc( … … 282 282 PS_ASSERT_PTR_NON_NULL(config, false); 283 283 284 psMetadata *where = psMetadataAlloc(); 285 286 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 287 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 288 PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "=="); 289 PXOPT_COPY_STR(config->args, where, "-tess_id", "tess_id", "=="); 290 PXOPT_COPY_STR(config->args, where, "-kind", "kind", "=="); 291 284 292 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 285 293 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 294 PXOPT_LOOKUP_BOOL(template, config->args, "-template", false); 286 295 287 296 // find all rawImfiles matching the default query … … 292 301 } 293 302 294 if (config->where) { 295 psString whereClause = psDBGenerateWhereSQL(config->where, NULL); 296 psStringAppend(&query, " %s", whereClause); 303 if (template) { 304 // list only faulted rows 305 psStringAppend(&query, " %s", "WHERE diffInputSkyfile.template != 0"); 306 } else { 307 // don't list faulted rows 308 psStringAppend(&query, " %s", "WHERE diffInputSkyfile.template = 0"); 309 } 310 311 if (psListLength(where->list)) { 312 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 313 psStringAppend(&query, " AND %s", whereClause); 297 314 psFree(whereClause); 298 315 } 316 psFree(where); 299 317 300 318 // treat limit == 0 as "no limit" … … 351 369 PS_ASSERT_PTR_NON_NULL(config, false); 352 370 371 psMetadata *where = psMetadataAlloc(); 372 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 373 353 374 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 354 375 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 360 381 } 361 382 362 if ( config->where) {363 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "diffSkyfile");383 if (psListLength(where->list)) { 384 psString whereClause = psDBGenerateWhereConditionSQL(where, "diffSkyfile"); 364 385 psStringAppend(&query, " AND %s", whereClause); 365 386 psFree(whereClause); 366 387 } 388 psFree(where); 367 389 368 390 // treat limit == 0 as "no limit" … … 418 440 { 419 441 PS_ASSERT_PTR_NON_NULL(config, false); 420 421 // required 422 PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", true, false); 423 424 // default to 0 442 443 PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", true, false); // required 425 444 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 426 427 PXOPT_LOOKUP_STR(uri, config->args, "-uri", false, false); 428 if (code == 0 && !uri) { 429 psError(PS_ERR_UNKNOWN, true, "-uri is required"); 430 return false; 431 } 432 433 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false); 434 if (code == 0 && !path_base) { 435 psError(PS_ERR_UNKNOWN, true, "-path_base is required"); 436 return false; 437 } 445 PXOPT_LOOKUP_STR(uri, config->args, "-uri", (code == 0), false); 446 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", (code == 0), false); 438 447 439 448 // optional … … 441 450 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false); 442 451 PXOPT_LOOKUP_F32(dtime_diff, config->args, "-dtime_diff", false, false); 443 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false);444 PXOPT_LOOKUP_F32(good_frac, config->args, "-good_frac", false, false);445 452 PXOPT_LOOKUP_S32(stamps_num, config->args, "-stamps_num", false, false); 446 453 PXOPT_LOOKUP_F32(stamps_rms, config->args, "-stamps_rms", false, false); 447 454 PXOPT_LOOKUP_S32(sources, config->args, "-sources", false, false); 455 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 456 PXOPT_LOOKUP_F32(good_frac, config->args, "-good_frac", false, false); 448 457 449 458 if (!psDBTransaction(config->dbh)) { … … 495 504 PS_ASSERT_PTR_NON_NULL(config, false); 496 505 506 psMetadata *where = psMetadataAlloc(); 507 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 508 PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "=="); 509 PXOPT_COPY_STR(config->args, where, "-tess_id", "tess_id", "=="); 510 497 511 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 498 512 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 504 518 } 505 519 506 if ( config->where) {507 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "diffSkyfile");520 if (psListLength(where->list)) { 521 psString whereClause = psDBGenerateWhereConditionSQL(where, "diffSkyfile"); 508 522 psStringAppend(&query, " AND %s", whereClause); 509 523 psFree(whereClause); 510 524 } 525 psFree(where); 511 526 512 527 // treat limit == 0 as "no limit" … … 563 578 PS_ASSERT_PTR_NON_NULL(config, false); 564 579 580 psMetadata *where = psMetadataAlloc(); 581 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 582 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 583 565 584 psString query = pxDataGet("difftool_revertdiffskyfile.sql"); 566 585 if (!query) { … … 569 588 } 570 589 571 if ( config->where) {572 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "diffSkyfile");590 if (psListLength(where->list)) { 591 psString whereClause = psDBGenerateWhereConditionSQL(where, "diffSkyfile"); 573 592 psStringAppend(&query, " AND %s", whereClause); 574 593 psFree(whereClause); 575 594 } 595 psFree(where); 576 596 577 597 if (!p_psDBRunQuery(config->dbh, query)) { … … 741 761 PS_ASSERT_PTR_NON_NULL(config, false); 742 762 743 // required options 744 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); 745 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false); 746 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false); 747 748 // optional 763 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required options 764 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false); // required options 765 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false); // required options 766 PXOPT_LOOKUP_S64(template_warp_id, config->args, "-template_warp_id", false, false); 749 767 PXOPT_LOOKUP_S64(template_stack_id, config->args, "-template_stack_id", false, false); 750 PXOPT_LOOKUP_S64(template_warp_id, config->args, "-template_warp_id", false, false); 768 PXOPT_LOOKUP_S64(input_warp_id, config->args, "-input_warp_id", false, false); 769 PXOPT_LOOKUP_S64(input_stack_id, config->args, "-input_stack_id", false, false); 751 770 752 771 if (template_stack_id && template_warp_id) { … … 760 779 } 761 780 762 PXOPT_LOOKUP_S64(input_stack_id, config->args, "-input_stack_id", false, false);763 PXOPT_LOOKUP_S64(input_warp_id, config->args, "-input_warp_id", false, false);764 781 if (input_stack_id && input_warp_id) { 765 782 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Only one input can be defined."); … … 787 804 PS_ASSERT_PTR_NON_NULL(config, false); 788 805 789 // required options 790 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); 791 792 // default 806 psMetadata *where = psMetadataAlloc(); 807 808 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 809 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 810 PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "=="); 811 PXOPT_COPY_STR(config->args, where, "-tess_id", "tess_id", "=="); 812 PXOPT_COPY_STR(config->args, where, "-kind", "kind", "=="); 813 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required options 814 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 815 PXOPT_LOOKUP_BOOL(template, config->args, "-template", false); 793 816 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 794 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);795 817 796 818 // find all things to queue … … 801 823 } 802 824 803 if (config->where) { 804 psString whereClause = psDBGenerateWhereSQL(config->where, NULL); 805 psStringAppend(&query, " %s", whereClause); 825 if (template) { 826 // list only faulted rows 827 psStringAppend(&query, " %s", "WHERE diffInputSkyfile.template != 0"); 828 } else { 829 // don't list faulted rows 830 psStringAppend(&query, " %s", "WHERE diffInputSkyfile.template = 0"); 831 } 832 833 if (psListLength(where->list)) { 834 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 835 psStringAppend(&query, " AND %s", whereClause); 806 836 psFree(whereClause); 807 837 } 838 psFree(where); 808 839 809 840 if (!p_psDBRunQuery(config->dbh, query)) { -
trunk/ippTools/src/difftoolConfig.c
r18518 r18561 47 47 // -definerun 48 48 psMetadata *definerunArgs = psMetadataAlloc(); 49 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0, 50 "define workdir (required)", NULL); 51 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered", 0, 52 "time detrend run was registered", now); 53 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-skycell_id", 0, 54 "define skycell ID (required)", NULL); 55 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id", 0, 56 "define tessellation ID (required)", NULL); 57 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, 58 "use the simple output format", false); 49 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 50 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-skycell_id", 0, "define skycell ID (required)", NULL); 51 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id", 0, "define tessellation ID (required)", NULL); 52 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 53 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 59 54 60 55 // -updaterun 61 56 psMetadata *updaterunArgs = psMetadataAlloc(); 62 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-diff_id", 0, 63 "define diff ID (required)", 0); 64 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, 65 "set state (required)", NULL); 66 #if 0 67 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-workdir", 0, 68 "define workdir (required)", NULL); 69 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-registered", 0, 70 "time detrend run was registered", now); 71 #endif 57 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-diff_id", 0, "define diff ID (required)", 0); 58 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state (required)", NULL); 72 59 73 60 // -addinputskyfile 74 61 psMetadata *addinputskyfileArgs = psMetadataAlloc(); 75 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, 76 "define diff ID (required)", 0); 77 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, 78 "define warp ID", 0); 79 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, 80 "define stack ID", 0); 81 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-kind", 0, 82 "define kind", NULL); 83 psMetadataAddBool(addinputskyfileArgs, PS_LIST_TAIL, "-template", 0, 84 "this sky cell file is the subtrahend", false); 62 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "define diff ID (required)", 0); 63 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, "define stack ID", 0); 64 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "define warp ID", 0); 65 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-kind", 0, "define kind", NULL); 66 psMetadataAddBool(addinputskyfileArgs, PS_LIST_TAIL, "-template", 0, "this sky cell file is the subtrahend", false); 85 67 86 68 // -inputskyfile 87 69 psMetadata *inputskyfileArgs = psMetadataAlloc(); 88 psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, 89 "search by diff ID", 0); 90 psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, 91 "search by warp ID", 0); 92 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, 93 "search by skycell ID", NULL); 94 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-tess_id", 0, 95 "search by tess ID", NULL); 96 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-kind", 0, 97 "search by kind", NULL); 98 psMetadataAddBool(inputskyfileArgs, PS_LIST_TAIL, "-template", 0, 99 "search by subtrahend", false); 100 psMetadataAddU64(inputskyfileArgs, PS_LIST_TAIL, "-limit", 0, 101 "limit result set to N items", 0); 102 psMetadataAddBool(inputskyfileArgs, PS_LIST_TAIL, "-simple", 0, 103 "use the simple output format", false); 70 psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff ID", 0); 71 psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0); 72 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL); 73 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", NULL); 74 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-kind", 0, "search by kind", NULL); 75 psMetadataAddBool(inputskyfileArgs, PS_LIST_TAIL, "-template", 0, "search by subtrahend", false); 76 psMetadataAddU64(inputskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 77 psMetadataAddBool(inputskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 104 78 105 79 // -todiffskyfile 106 80 psMetadata *todiffskyfileArgs = psMetadataAlloc(); 107 psMetadataAddS64(todiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, 108 "search by diff ID", 0); 109 psMetadataAddU64(todiffskyfileArgs, PS_LIST_TAIL, "-limit", 0, 110 "limit result set to N items", 0); 111 psMetadataAddBool(todiffskyfileArgs, PS_LIST_TAIL, "-simple", 0, 112 "use the simple output format", false); 81 psMetadataAddS64(todiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff ID", 0); 82 psMetadataAddU64(todiffskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 83 psMetadataAddBool(todiffskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 113 84 114 85 // -adddiffskyfile 115 86 psMetadata *adddiffskyfileArgs = psMetadataAlloc(); 116 psMetadataAddS64(adddiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, 117 "define warp ID (required)", 0); 118 psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-uri", 0, 119 "define URI of file", 0); 120 psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-path_base", 0, 121 "define base output location", 0); 122 psMetadataAddF64(adddiffskyfileArgs, PS_LIST_TAIL, "-bg", 0, 123 "define exposure background", NAN); 124 psMetadataAddF64(adddiffskyfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, 125 "define exposure background mean stdev", NAN); 126 psMetadataAddF32(adddiffskyfileArgs, PS_LIST_TAIL, "-dtime_diff", 0, 127 "define elapsed processing time", NAN); 128 psMetadataAddS32(adddiffskyfileArgs, PS_LIST_TAIL, "-stamps_num", 0, 129 "define subtraction stamp number", 0); 130 psMetadataAddF32(adddiffskyfileArgs, PS_LIST_TAIL, "-stamps_rms", 0, 131 "define subtraction stamp rms", NAN); 132 psMetadataAddS32(adddiffskyfileArgs, PS_LIST_TAIL, "-sources", 0, 133 "define number of sources", 0); 134 psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-hostname", 0, 135 "define hostname", 0); 136 psMetadataAddF32(adddiffskyfileArgs, PS_LIST_TAIL, "-good_frac", 0, 137 "define %% of good pixels", NAN); 138 psMetadataAddS16(adddiffskyfileArgs, PS_LIST_TAIL, "-code", 0, 139 "set fault code", 0); 87 psMetadataAddS64(adddiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "define warp ID (required)", 0); 88 psMetadataAddS16(adddiffskyfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 89 psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-uri", 0, "define URI of file", 0); 90 psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", 0); 91 psMetadataAddF64(adddiffskyfileArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 92 psMetadataAddF64(adddiffskyfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background mean stdev", NAN); 93 psMetadataAddF32(adddiffskyfileArgs, PS_LIST_TAIL, "-dtime_diff", 0, "define elapsed processing time", NAN); 94 psMetadataAddS32(adddiffskyfileArgs, PS_LIST_TAIL, "-stamps_num", 0, "define subtraction stamp number", 0); 95 psMetadataAddF32(adddiffskyfileArgs, PS_LIST_TAIL, "-stamps_rms", 0, "define subtraction stamp rms", NAN); 96 psMetadataAddS32(adddiffskyfileArgs, PS_LIST_TAIL, "-sources", 0, "define number of sources", 0); 97 psMetadataAddStr(adddiffskyfileArgs, PS_LIST_TAIL, "-hostname", 0, "define hostname", 0); 98 psMetadataAddF32(adddiffskyfileArgs, PS_LIST_TAIL, "-good_frac", 0, "define %% of good pixels", NAN); 140 99 141 100 // -diffskyfile 142 101 psMetadata *diffskyfileArgs = psMetadataAlloc(); 143 psMetadataAddS64(diffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, 144 "search by warp ID", 0); 145 psMetadataAddStr(diffskyfileArgs , PS_LIST_TAIL, "-skycell_id", 0, 146 "define skycell ID", NULL); 147 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-tess_id", 0, 148 "define tessellation ID", NULL); 149 psMetadataAddU64(diffskyfileArgs, PS_LIST_TAIL, "-limit", 0, 150 "limit result set to N items", 0); 151 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-simple", 0, 152 "use the simple output format", false); 102 psMetadataAddS64(diffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "search by warp ID", 0); 103 psMetadataAddStr(diffskyfileArgs , PS_LIST_TAIL, "-skycell_id", 0, "define skycell ID", NULL); 104 psMetadataAddStr(diffskyfileArgs, PS_LIST_TAIL, "-tess_id", 0, "define tessellation ID", NULL); 105 psMetadataAddU64(diffskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 106 psMetadataAddBool(diffskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 153 107 154 108 // -revertdiffskyfile 155 109 psMetadata *revertdiffskyfileArgs = psMetadataAlloc(); 156 psMetadataAddS64(revertdiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, 157 "define warp ID (required)", 0); 158 psMetadataAddS16(revertdiffskyfileArgs, PS_LIST_TAIL, "-code", 0, 159 "search by fault code", 0); 110 psMetadataAddS64(revertdiffskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "define warp ID (required)", 0); 111 psMetadataAddS16(revertdiffskyfileArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 160 112 161 113 // -definepoprun 162 114 psMetadata *definepoprunArgs = psMetadataAlloc(); 163 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-workdir", 0, 164 "define workdir (required)", NULL); 165 psMetadataAddTime(definepoprunArgs, PS_LIST_TAIL, "-registered", 0, 166 "time detrend run was registered", now); 167 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-skycell_id", 0, 168 "define skycell ID (required)", NULL); 169 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-tess_id", 0, 170 "define tessellation ID (required)", NULL); 171 psMetadataAddBool(definepoprunArgs, PS_LIST_TAIL, "-simple", 0, 172 "use the simple output format", false); 173 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-template_warp_id", 0, 174 "define warp ID for template", 0); 175 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-template_stack_id", 0, 176 "define stack ID for template", 0); 177 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-input_warp_id", 0, 178 "define warp ID for input", 0); 179 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-input_stack_id", 0, 180 "define stack ID for input", 0); 115 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 116 psMetadataAddTime(definepoprunArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 117 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-skycell_id", 0, "define skycell ID (required)", NULL); 118 psMetadataAddStr(definepoprunArgs, PS_LIST_TAIL, "-tess_id", 0, "define tessellation ID (required)", NULL); 119 psMetadataAddBool(definepoprunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 120 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-template_warp_id", 0, "define warp ID for template", 0); 121 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-template_stack_id", 0, "define stack ID for template", 0); 122 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-input_warp_id", 0, "define warp ID for input", 0); 123 psMetadataAddS64(definepoprunArgs, PS_LIST_TAIL, "-input_stack_id", 0, "define stack ID for input", 0); 181 124 182 125 // -definebyquery 183 126 psMetadata *queueArgs = psMetadataAlloc(); 184 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-workdir", 0, 185 "define workdir (required)", NULL); 186 psMetadataAddTime(queueArgs, PS_LIST_TAIL, "-registered", 0, 187 "time detrend run was registered", now); 188 psMetadataAddBool(queueArgs, PS_LIST_TAIL, "-simple", 0, 189 "use the simple output format", false); 127 psMetadataAddS64(queueArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff ID", 0); 128 psMetadataAddS64(queueArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0); 129 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL); 130 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", NULL); 131 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-kind", 0, "search by kind", NULL); 132 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 133 psMetadataAddTime(queueArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 134 psMetadataAddBool(queueArgs, PS_LIST_TAIL, "-template", 0, "search by subtrahend", false); 135 psMetadataAddBool(queueArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 190 136 191 137 psFree(now); … … 216 162 psFree(modes); 217 163 218 // setup search criterion219 #define addWhereStr(name) \220 { \221 psString str = NULL; \222 bool status = false; \223 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \224 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\225 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \226 psFree(config); \227 return NULL; \228 } \229 } \230 }231 232 #define addWhereS32(name) \233 { \234 psS32 s32 = 0; \235 bool status = false; \236 if ((s32= psMetadataLookupS32(&status, config->args, "-" #name))) { \237 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, #name, 0, "==", s32)) { \238 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \239 psFree(config); \240 return NULL; \241 } \242 } \243 }244 245 246 // generate SQL where clause247 config->where = psMetadataAlloc();248 249 {250 psS64 s64 = 0;251 bool status = false;252 if ((s64 = psMetadataLookupS64(&status, config->args, "-diff_id"))) {253 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, "diff_id", 0, "==", s64)) {254 psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");255 psFree(config);256 return NULL;257 }258 }259 }260 {261 psString str = NULL;262 bool status = false;263 if ((str = psMetadataLookupStr(&status, config->args, "-warp_id"))) {264 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, "warp_id", 0, "==", (psS64)atoll(str))) {265 psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");266 psFree(config);267 return NULL;268 }269 }270 }271 addWhereStr(skycell_id);272 addWhereStr(tess_id);273 274 // convert '-code' to 'fault'275 {276 psS16 fault = 0;277 bool status = false;278 if ((fault = psMetadataLookupS16(&status, config->args, "-code"))) {279 if (!psMetadataAddS16(config->where, PS_LIST_TAIL, "fault", 0, "==", fault)) {280 psError(PS_ERR_UNKNOWN, false, "failed to add item fault");281 psFree(config);282 return NULL;283 }284 }285 }286 287 if (config->where->list->n < 1) {288 psFree(config->where);289 config->where = NULL;290 }291 292 164 // define Database handle, if used 293 165 // do this last so we don't setup a connection before CLI options are -
trunk/ippTools/src/flatcorr.c
r18336 r18561 92 92 PS_ASSERT_PTR_NON_NULL(config, false); 93 93 94 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", false, false);95 96 94 psMetadata *where = psMetadataAlloc(); 97 // convert exp_id into a psS64 98 if (exp_id) { 99 if (!psMetadataAddS64(where, PS_LIST_TAIL, "exp_id", 0, "==", (psS64)atoll(exp_id))) { 100 psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id"); 101 psFree(where); 102 return false; 103 } 104 } 105 95 96 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 106 97 PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "=="); 107 98 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); … … 110 101 PXOPT_COPY_TIME(config->args, where, "-dateobs_end", "dateobs", "<="); 111 102 PXOPT_COPY_STR(config->args, where, "-exp_tag", "exp_tag", "=="); 103 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 112 104 PXOPT_COPY_STR(config->args, where, "-filelevel", "filelvel", "=="); 113 105 PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "=="); 114 106 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 115 PXOPT_COPY_F 64(config->args, where, "-airmass_min", "airmass", ">=");116 PXOPT_COPY_F 64(config->args, where, "-airmass_max", "airmass", "<");107 PXOPT_COPY_F32(config->args, where, "-airmass_min", "airmass", ">="); 108 PXOPT_COPY_F32(config->args, where, "-airmass_max", "airmass", "<"); 117 109 PXOPT_COPY_F64(config->args, where, "-ra_min", "ra", ">="); 118 110 PXOPT_COPY_F64(config->args, where, "-ra_max", "ra", "<"); … … 157 149 PXOPT_LOOKUP_STR(region, config->args, "-set_region", false, false); 158 150 159 // default160 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "==");161 162 151 PXOPT_LOOKUP_BOOL(pretend, config->args, "-pretend", false); 163 152 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 324 313 325 314 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 315 PXOPT_LOOKUP_BOOL(limit, config->args, "-limit", false); 326 316 327 317 // create a temp table to hold completely processed chipRuns 328 { 329 psString query = pxDataGet("flatcorr_create_tmp_chiprundone.sql"); 330 if (!query) { 331 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 332 return false; 333 } 334 335 if (!p_psDBRunQuery(config->dbh, query)) { 336 psError(PS_ERR_UNKNOWN, false, "database error"); 337 psFree(query); 338 return false; 339 } 340 341 psFree(query); 342 } 343 318 { 319 psString query = pxDataGet("flatcorr_create_tmp_chiprundone.sql"); 320 if (!query) { 321 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 322 return false; 323 } 324 325 if (!p_psDBRunQuery(config->dbh, query)) { 326 psError(PS_ERR_UNKNOWN, false, "database error"); 327 psFree(query); 328 return false; 329 } 330 331 psFree(query); 332 } 344 333 345 334 // find all completed chipRuns 346 { 347 psString query = pxDataGet("flatcorr_completely_processed_chiprun.sql"); 348 if (!query) { 349 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 350 return false; 351 } 352 353 if (!p_psDBRunQuery(config->dbh, query)) { 354 psError(PS_ERR_UNKNOWN, false, "database error"); 355 psFree(query); 356 return false; 357 } 358 359 psFree(query); 360 } 335 { 336 psString query = pxDataGet("flatcorr_completely_processed_chiprun.sql"); 337 if (!query) { 338 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 339 return false; 340 } 341 342 if (!p_psDBRunQuery(config->dbh, query)) { 343 psError(PS_ERR_UNKNOWN, false, "database error"); 344 psFree(query); 345 return false; 346 } 347 348 psFree(query); 349 } 350 361 351 // find flatcorrRun's that have had all of their chipRun's completed by 362 352 // comparing against the temp table … … 367 357 } 368 358 359 // treat limit == 0 as "no limit" 360 if (limit) { 361 psString limitString = psDBGenerateLimitSQL(limit); 362 psStringAppend(&query, " %s", limitString); 363 psFree(limitString); 364 } 365 369 366 if (!p_psDBRunQuery(config->dbh, query)) { 370 367 psError(PS_ERR_UNKNOWN, false, "database error"); … … 377 374 psErrorCode err = psErrorCodeLast(); 378 375 switch (err) { 379 case PS_ERR_DB_CLIENT:380 psError(PXTOOLS_ERR_SYS, false, "database error");381 case PS_ERR_DB_SERVER:382 psError(PXTOOLS_ERR_PROG, false, "database error");383 default:384 psError(PXTOOLS_ERR_PROG, false, "unknown error");376 case PS_ERR_DB_CLIENT: 377 psError(PXTOOLS_ERR_SYS, false, "database error"); 378 case PS_ERR_DB_SERVER: 379 psError(PXTOOLS_ERR_PROG, false, "database error"); 380 default: 381 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 385 382 } 386 383 … … 412 409 PS_ASSERT_PTR_NON_NULL(config, false); 413 410 411 psMetadata *where = psMetadataAlloc(); 412 PXOPT_COPY_S64(config->args, where, "-corr_id", "corr_id", "=="); 413 414 414 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 415 415 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 422 422 } 423 423 424 if ( config->where) {425 psString whereClause = psDBGenerateWhereConditionSQL( config->where, NULL);424 if (psListLength(where->list)) { 425 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 426 426 psStringAppend(&query, " AND %s", whereClause); 427 427 psFree(whereClause); 428 428 } 429 psFree(where); 429 430 430 431 // treat limit == 0 as "no limit" -
trunk/ippTools/src/flatcorrConfig.c
r18172 r18561 48 48 psMetadata *newrunArgs = psMetadataAlloc(); 49 49 // XXX need to allow multiple exp_ids 50 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-exp_id", 0, 51 "search by exp_id", NULL); 52 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-exp_name", 0, 53 "search by exp_name", NULL); 54 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-inst", 0, 55 "search for camera", NULL); 56 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-telescope", 0, 57 "search for telescope", NULL); 58 psMetadataAddTime(newrunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, 59 "search for exposures by time (>=)", NULL); 60 psMetadataAddTime(newrunArgs, PS_LIST_TAIL, "-dateobs_end", 0, 61 "search for exposures by time (<)", NULL); 62 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-exp_tag", 0, 63 "search by exp_tag", NULL); 64 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-exp_type", 0, 65 "search by exp_type", "object"); 66 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-filelevel", 0, 67 "search by filelevel", NULL); 68 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-reduction", 0, 69 "search by reduction class", NULL); 70 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-filter", 0, 71 "search for filter", NULL); 72 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-airmass_min", 0, 73 "define min airmass", NAN); 74 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-airmass_max", 0, 75 "define max airmass", NAN); 76 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-ra_min", 0, 77 "define min", NAN); 78 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-ra_max", 0, 79 "define max", NAN); 80 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-decl_min", 0, 81 "define min", NAN); 82 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-decl_max", 0, 83 "define max", NAN); 84 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-exp_time_min", 0, 85 "define min", NAN); 86 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-exp_time_max", 0, 87 "define max", NAN); 88 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, 89 "define max fraction of saturated pixels", NAN); 90 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, 91 "define min fraction of saturated pixels", NAN); 92 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_min", 0, 93 "define max", NAN); 94 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_max", 0, 95 "define max", NAN); 96 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, 97 "define max", NAN); 98 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, 99 "define max", NAN); 100 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, 101 "define max", NAN); 102 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, 103 "define max", NAN); 104 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-alt_min", 0, 105 "define min", NAN); 106 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-alt_max", 0, 107 "define max", NAN); 108 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-az_min", 0, 109 "define min", NAN); 110 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-az_max", 0, 111 "define max", NAN); 112 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, 113 "define min ccd tempature", NAN); 114 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, 115 "define max ccd tempature", NAN); 116 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-posang_min", 0, 117 "define min rotator position angle", NAN); 118 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-posang_max", 0, 119 "define max rotator position angle", NAN); 120 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-object", 0, 121 "search by exposure object", NULL); 122 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-solang_min", 0, 123 "define min solar angle", NAN); 124 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-solang_max", 0, 125 "define max solar angle", NAN); 126 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_workdir", 0, 127 "define workdir", NULL); 128 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_label", 0, 129 "define label", NULL); 130 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_reduction", 0, 131 "define reduction class", NULL); 132 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_expgroup", 0, 133 "define exposure group", NULL); 134 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_dvodb", 0, 135 "define DVO db", NULL); 136 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_filter", 0, 137 "define filter", NULL); 138 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_tess_id", 0, 139 "define tessalation", NULL); 140 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_end_stage", 0, 141 "define processing end stage", NULL); 142 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_region", 0, 143 "define region", NULL); 50 psMetadataAddS64(newrunArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 51 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); 52 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); 53 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 54 psMetadataAddTime(newrunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 55 psMetadataAddTime(newrunArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 56 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 57 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", "object"); 58 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); 59 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 60 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 61 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 62 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 63 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-ra_min", 0, "define min", NAN); 64 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-ra_max", 0, "define max", NAN); 65 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-decl_min", 0, "define min", NAN); 66 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-decl_max", 0, "define max", NAN); 67 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min", NAN); 68 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max", NAN); 69 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "define max fraction of saturated pixels", NAN); 70 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "define min fraction of saturated pixels", NAN); 71 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_min", 0, "define max", NAN); 72 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_max", 0, "define max", NAN); 73 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, "define max", NAN); 74 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, "define max", NAN); 75 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "define max", NAN); 76 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "define max", NAN); 77 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-alt_min", 0, "define min", NAN); 78 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-alt_max", 0, "define max", NAN); 79 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-az_min", 0, "define min", NAN); 80 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-az_max", 0, "define max", NAN); 81 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 82 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 83 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 84 psMetadataAddF64(newrunArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 85 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 86 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 87 psMetadataAddF32(newrunArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 144 88 145 psMetadataAddBool(newrunArgs, PS_LIST_TAIL, "-pretend", 0, 146 "print the exposures that would be included in the detrend run and exit", false); 147 psMetadataAddBool(newrunArgs, PS_LIST_TAIL, "-simple", 0, 148 "use the simple output format", false); 89 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir", NULL); 90 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 91 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL); 92 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_expgroup", 0, "define exposure group", NULL); 93 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_dvodb", 0, "define DVO db", NULL); 94 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_filter", 0, "define filter", NULL); 95 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_tess_id", 0, "define tessalation", NULL); 96 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_end_stage", 0, "define processing end stage", NULL); 97 psMetadataAddStr(newrunArgs, PS_LIST_TAIL, "-set_region", 0, "define region", NULL); 98 99 psMetadataAddBool(newrunArgs, PS_LIST_TAIL, "-pretend", 0, "print the exposures that would be included in the detrend run and exit", false); 100 psMetadataAddBool(newrunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 149 101 150 102 // -addexp 151 103 psMetadata *addexpArgs = psMetadataAlloc(); 152 psMetadataAddStr(addexpArgs, PS_LIST_TAIL, "-corr_id", 0, 153 "define Flat Correction ID (required)", NULL); 154 psMetadataAddStr(addexpArgs, PS_LIST_TAIL, "-chip_id", 0, 155 "define Chip ID (required)", NULL); 104 psMetadataAddStr(addexpArgs, PS_LIST_TAIL, "-corr_id", 0, "define Flat Correction ID (required)", NULL); 105 psMetadataAddStr(addexpArgs, PS_LIST_TAIL, "-chip_id", 0, "define Chip ID (required)", NULL); 156 106 157 107 // -pending 158 108 psMetadata *pendingArgs = psMetadataAlloc(); 159 psMetadataAddU64(pendingArgs, PS_LIST_TAIL, "-limit", 0, 160 "limit result set to N items", 0); 161 psMetadataAddBool(pendingArgs, PS_LIST_TAIL, "-simple", 0, 162 "use the simple output format", false); 109 psMetadataAddU64(pendingArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 110 psMetadataAddBool(pendingArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 163 111 164 112 // -flatcorrimfile 165 113 psMetadata *flatcorrimfileArgs = psMetadataAlloc(); 166 psMetadataAddStr(flatcorrimfileArgs, PS_LIST_TAIL, "-corr_id", 0, 167 "search by flat correction ID (required)", NULL); 168 psMetadataAddU64(flatcorrimfileArgs, PS_LIST_TAIL, "-limit", 0, 169 "limit result set to N items", 0); 170 psMetadataAddBool(flatcorrimfileArgs, PS_LIST_TAIL, "-simple", 0, 171 "use the simple output format", false); 114 psMetadataAddStr(flatcorrimfileArgs, PS_LIST_TAIL, "-corr_id", 0, "search by flat correction ID (required)", NULL); 115 psMetadataAddU64(flatcorrimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 116 psMetadataAddBool(flatcorrimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 172 117 173 118 // -done 174 119 psMetadata *doneArgs = psMetadataAlloc(); 175 psMetadataAddStr(doneArgs, PS_LIST_TAIL, "-corr_id", 0, 176 "define correction id (required)", NULL); 177 psMetadataAddStr(doneArgs, PS_LIST_TAIL, "-stats", 0, 178 "define stats (required)", NULL); 120 psMetadataAddStr(doneArgs, PS_LIST_TAIL, "-corr_id", 0, "define correction id (required)", NULL); 121 psMetadataAddStr(doneArgs, PS_LIST_TAIL, "-stats", 0, "define stats (required)", NULL); 179 122 180 123 // -updaterun 181 124 psMetadata *updaterunArgs = psMetadataAlloc(); 182 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-corr_id", 0, 183 "define correction id (required)", NULL); 184 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, 185 "set state (required)", NULL); 125 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-corr_id", 0, "define correction id (required)", NULL); 126 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state (required)", NULL); 186 127 187 128 psFree(now); … … 190 131 psMetadata *modes = psMetadataAlloc(); 191 132 192 PXOPT_ADD_MODE("-newrun", "start a new flat correction run", 193 FLATCORR_MODE_NEWRUN, newrunArgs); 194 PXOPT_ADD_MODE("-addexp", "add an exp to a flat correction run", 195 FLATCORR_MODE_ADDEXP, addexpArgs); 196 PXOPT_ADD_MODE("-pending", "show flat correction runs needing to be processed", 197 FLATCORR_MODE_PENDING, pendingArgs); 198 PXOPT_ADD_MODE("-flatcorrimfile", "list all the imfiles in a flat correction run", 199 FLATCORR_MODE_FLATCORRIMFILE, flatcorrimfileArgs); 200 PXOPT_ADD_MODE("-done", "change a flat calibration run's state", 201 FLATCORR_MODE_DONE, doneArgs); 202 PXOPT_ADD_MODE("-updaterun", "change a flat calibration run's state", 203 FLATCORR_MODE_UPDATERUN, updaterunArgs); 133 PXOPT_ADD_MODE("-newrun", "start a new flat correction run", FLATCORR_MODE_NEWRUN, newrunArgs); 134 PXOPT_ADD_MODE("-addexp", "add an exp to a flat correction run", FLATCORR_MODE_ADDEXP, addexpArgs); 135 PXOPT_ADD_MODE("-pending", "show flat correction runs needing to be processed", FLATCORR_MODE_PENDING, pendingArgs); 136 PXOPT_ADD_MODE("-flatcorrimfile", "list all the imfiles in a flat correction run", FLATCORR_MODE_FLATCORRIMFILE, flatcorrimfileArgs); 137 PXOPT_ADD_MODE("-done", "change a flat calibration run's state", FLATCORR_MODE_DONE, doneArgs); 138 PXOPT_ADD_MODE("-updaterun", "change a flat calibration run's state", FLATCORR_MODE_UPDATERUN, updaterunArgs); 204 139 205 140 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { … … 213 148 psFree(argSets); 214 149 psFree(modes); 215 216 // setup search criterion217 #define addWhereStr(name) \218 { \219 psString str = NULL; \220 bool status = false; \221 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \222 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\223 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \224 psFree(config); \225 return NULL; \226 } \227 } \228 }229 230 // generate SQL where clause231 config->where = psMetadataAlloc();232 233 {234 psString str = NULL;235 bool status = false;236 if ((str = psMetadataLookupStr(&status, config->args, "-corr_id"))) {237 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, "corr_id", 0, "==", (psS64)atoll(str))) {238 psError(PS_ERR_UNKNOWN, false, "failed to add item corr_id");239 psFree(config);240 return NULL;241 }242 }243 }244 245 if (config->where->list->n < 1) {246 psFree(config->where);247 config->where = NULL;248 }249 150 250 151 // define Database handle, if used -
trunk/ippTools/src/guidetool.c
r14023 r18561 61 61 PS_ASSERT_PTR_NON_NULL(config, false); 62 62 63 psMetadata *where = psMetadataAlloc(); 64 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 65 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 66 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 67 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 68 PXOPT_COPY_S32(config->args, where, "-imfiles", "imfiles", "=="); 69 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 70 PXOPT_COPY_STR(config->args, where, "-recip", "recipe", "=="); 71 PXOPT_COPY_S32(config->args, where, "-guide_version", "guide_version", "=="); 72 if (!psListLength(where->list)) { 73 psFree (where); 74 where = NULL; 75 } 76 63 77 // return all guidePendingExp rows unless there CLI search options 64 psArray *guidePendingExp = guidePendingExpSelectRowObjects( 65 config->dbh, 66 config->where ? config->where : NULL, 67 0 68 ); 78 psArray *guidePendingExp = guidePendingExpSelectRowObjects(config->dbh, where, 0); 79 psFree (where); 80 69 81 if (!guidePendingExp) { 70 82 psError(PS_ERR_UNKNOWN, false, "no guidePendingExp found"); 71 83 return false; 72 84 } 73 74 85 psMetadata *output = psMetadataAlloc(); 75 86 … … 94 105 PS_ASSERT_PTR_NON_NULL(config, false); 95 106 107 psMetadata *where = psMetadataAlloc(); 108 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "=="); 109 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 110 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 111 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 112 PXOPT_COPY_S32(config->args, where, "-imfiles", "imfiles", "=="); 113 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 114 if (!psListLength(where->list)) { 115 psFree (where); 116 where = NULL; 117 } 118 96 119 // return all rawScienceExp rows unless there CLI search options 97 psArray *rawScienceExps = rawScienceExpSelectRowObjects( 98 config->dbh, 99 config->where ? config->where : NULL, 100 0 101 ); 102 120 psArray *rawScienceExps = rawScienceExpSelectRowObjects(config->dbh, where, 0); 121 psFree (where); 122 103 123 if (!rawScienceExps) { 104 124 psError(PS_ERR_UNKNOWN, false, "no rawScienceExp rows found"); -
trunk/ippTools/src/guidetoolConfig.c
r18172 r18561 52 52 // -pending search 53 53 psMetadata *pendingArgs = psMetadataAlloc(); 54 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_id", 0, 55 "define exposure ID", NULL); 56 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-inst", 0, 57 "define camera of interest", NULL); 58 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-telescope", 0, 59 "define telescope of interest", NULL); 60 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_type", 0, 61 "define exposure type", NULL); 62 psMetadataAddS32(pendingArgs, PS_LIST_TAIL, "-imfiles", 0, 63 "define number of imfiles", 0); 64 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-filter", 0, 65 "define filter of interest", NULL); 66 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-recipe", 0, 67 "define recipe of interest", NULL); 68 psMetadataAddS32(pendingArgs, PS_LIST_TAIL, "-guide_version", 0, 69 "define guide_version of interest", 0); 54 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure ID", NULL); 55 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-inst", 0, "define camera of interest", NULL); 56 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope of interest", NULL); 57 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_type", 0, "define exposure type", NULL); 58 psMetadataAddS32(pendingArgs, PS_LIST_TAIL, "-imfiles", 0, "define number of imfiles", 0); 59 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-filter", 0, "define filter of interest", NULL); 60 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-recipe", 0, "define recipe of interest", NULL); 61 psMetadataAddS32(pendingArgs, PS_LIST_TAIL, "-guide_version", 0, "define guide_version of interest", 0); 70 62 71 63 // -define inputs 72 64 psMetadata *defineArgs = psMetadataAlloc(); 73 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-exp_id", 0, 74 "define class", NULL); 75 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-inst", 0, 76 "define camera of interest", NULL); 77 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-telescope", 0, 78 "define camera of interest", NULL); 79 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-exp_type", 0, 80 "define class", NULL); 81 psMetadataAddS32(defineArgs, PS_LIST_TAIL, "-imfiles", 0, 82 "define number of imfiles", 0); 83 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-filter", 0, 84 "define filter of interest", NULL); 65 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-exp_id", 0, "define class", NULL); 66 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-inst", 0, "define camera of interest", NULL); 67 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-telescope", 0, "define camera of interest", NULL); 68 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-exp_type", 0, "define class", NULL); 69 psMetadataAddS32(defineArgs, PS_LIST_TAIL, "-imfiles", 0, "define number of imfiles", 0); 70 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-filter", 0, "define filter of interest", NULL); 85 71 // these two are inputs NOT search parameters 86 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-recipe", 0, 87 "define recipe of interest", NULL); 88 psMetadataAddS32(defineArgs, PS_LIST_TAIL, "-guide_version", 0, 89 "define guide_version of interest", 0); 72 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-recipe", 0, "define recipe of interest", NULL); 73 psMetadataAddS32(defineArgs, PS_LIST_TAIL, "-guide_version", 0, "define guide_version of interest", 0); 90 74 91 75 // find which mode we're running under … … 146 130 psFree(defineArgs); 147 131 148 // setup search criterion149 #define addWhereStr(name) \150 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \151 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\152 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \153 exit(EXIT_FAILURE); \154 } \155 }156 157 // generate SQL where clause158 config->where = psMetadataAlloc();159 160 {161 psString str = NULL;162 int n = 0;163 bool status = false;164 165 addWhereStr(exp_id);166 // convert '-inst' to 'camera'167 if ((str = psMetadataLookupStr(&status, config->args, "-inst"))) {168 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, "camera", 0, "==", str)) {169 psError(PS_ERR_UNKNOWN, false, "failed to add item camera");170 exit(EXIT_FAILURE);171 }172 }173 addWhereStr(telescope);174 addWhereStr(exp_type);175 if ((n = psMetadataLookupS32(&status, config->args, "-imfiles"))) {176 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "imfiles", 0, "==", n)) {177 psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");178 exit(EXIT_FAILURE);179 }180 }181 addWhereStr(filter);182 addWhereStr(stats);183 addWhereStr(recipe);184 if ((n = psMetadataLookupS32(&status, config->args, "-guide_version"))) {185 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "guide_version", 0, "==", n)) {186 psError(PS_ERR_UNKNOWN, false, "failed to add item guide_version");187 exit(EXIT_FAILURE);188 }189 }190 }191 192 if (config->where->list->n < 1) {193 psFree(config->where);194 config->where = NULL;195 }196 197 132 // define Database handle, if used 198 133 config->dbh = psMemIncrRefCounter(pmConfigDB(config->modules)); -
trunk/ippTools/src/magictool.c
r18526 r18561 104 104 PS_ASSERT_PTR_NON_NULL(config, false); 105 105 106 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false); 107 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 108 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 109 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 110 106 111 // create warped skycells temp table 107 { 108 char *query = 109 "CREATE TEMPORARY TABLE warpComplete\n" 110 " (warp_id BIGINT, skycell_id VARCHAR(64), tess_id VARCHAR(64),\n" 111 " PRIMARY KEY(warp_id, skycell_id, tess_id)) ENGINE=MEMORY\n"; 112 113 if (!p_psDBRunQuery(config->dbh, query)) { 114 psError(PS_ERR_UNKNOWN, false, "database error"); 115 return false; 116 } 117 } 112 { 113 psString query = pxDataGet("magictool_create_tmp_warpcomplete.sql"); 114 if (!query) { 115 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 116 return false; 117 } 118 119 if (!p_psDBRunQuery(config->dbh, query)) { 120 psError(PS_ERR_UNKNOWN, false, "database error"); 121 return false; 122 } 123 } 118 124 119 125 // find warped skycells 120 { 121 psString query = pxDataGet("magictool_find_complete_warpruns.sql"); 126 { 127 psString query = pxDataGet("magictool_find_complete_warpruns.sql"); 128 if (!query) { 129 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 130 return false; 131 } 132 133 if (!p_psDBRunQuery(config->dbh, query)) { 134 psError(PS_ERR_UNKNOWN, false, "database error"); 135 psFree(query); 136 return false; 137 } 138 psFree(query); 139 } 140 141 // find the diff_id's of the warped skycells 142 { 143 psString query = pxDataGet("magictool_find_complete_diffed_exposures.sql"); 144 if (!query) { 145 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 146 return false; 147 } 148 149 if (!p_psDBRunQuery(config->dbh, query)) { 150 psError(PS_ERR_UNKNOWN, false, "database error"); 151 psFree(query); 152 return false; 153 } 154 psFree(query); 155 } 156 psArray *output = p_psDBFetchResult(config->dbh); 157 if (!output) { 158 psErrorCode err = psErrorCodeLast(); 159 switch (err) { 160 case PS_ERR_DB_CLIENT: 161 psError(PXTOOLS_ERR_SYS, false, "database error"); 162 case PS_ERR_DB_SERVER: 163 psError(PXTOOLS_ERR_PROG, false, "database error"); 164 default: 165 psError(PXTOOLS_ERR_PROG, false, "unknown error"); 166 } 167 168 return false; 169 } 170 if (!psArrayLength(output)) { 171 psTrace("magictool", PS_LOG_INFO, "no rows found"); 172 psFree(output); 173 return true; 174 } 175 176 // pre-allocate enough hash buckets for 1 unique warp_id per row 177 psHash *groups = psHashAlloc(psArrayLength(output)); 178 // iterate over result set, and group by warp_id 179 for (long i = 0; i < psArrayLength(output); i++) { 180 // lookup the key we're grouping by 181 bool status = false; 182 psS64 warp_id = psMetadataLookupS64(&status, output->data[i], "warp_id"); 183 if (!status) { 184 psAbort("failed to lookup value for warp_id"); 185 } 186 187 psString key = psDBIntToString(warp_id); 188 // look to see if there is a bin for this key 189 psArray *groupBin = psHashLookup(groups, key); 190 if (!groupBin) { 191 // if not, create one 192 groupBin = psArrayAlloc(0); 193 psHashAdd(groups, key, groupBin); 194 } 195 psFree(key); 196 197 // add this row to the bin 198 psArrayAdd(groupBin, 0, output->data[i]); 199 psFree(groupBin); 200 } 201 psFree(output); 202 203 // create a magic run 204 psArray *grouped = psHashToArray(groups); 205 psFree(groups); 206 207 // iterate over array of grouped warp_ids 208 for (long i = 0; i < psArrayLength(grouped); i++) { 209 psArray *group = grouped->data[i]; 210 211 // create a new magicRun for this group 212 magicRunRow *run = magicRunRowAlloc( 213 0, // ID 214 "reg", // state 215 workdir, // workdir 216 "dirty", // workdir_state 217 label, // label 218 dvodb, // dvodb 219 registered, // registered 220 0 // fault 221 ); 222 if (!run) { 223 psAbort("failed to alloc magicRun object"); 224 } 225 if (!magicRunInsertObject(config->dbh, run)) { 226 psError(PS_ERR_UNKNOWN, false, "database error"); 227 psFree(run); 228 psFree(grouped); 229 return false; 230 } 231 232 // get the assigned warp_id 233 psS64 magic_id = psDBLastInsertID(config->dbh); 234 235 // insert all rows in this bin into the new magicRun 236 for (long j = 0; j < psArrayLength(group); j++) { 237 psMetadata *row = group->data[j]; 238 239 bool status = false; 240 psS64 diff_id = psMetadataLookupS64(&status, row, "diff_id"); 241 if (!status) { 242 psAbort("failed to lookup value for diff_id"); 243 } 244 psString node = psMetadataLookupStr(&status, row, "skycell_id"); 245 if (!status) { 246 psAbort("failed to lookup value for diff_id"); 247 } 248 249 if (!magicInputSkyfileInsert(config->dbh, 250 magic_id, 251 diff_id, 252 node)) { 253 psError(PS_ERR_UNKNOWN, false, "database error"); 254 psFree(grouped); 255 return false; 256 } 257 } 258 259 // set magicRun.state to 'run' 260 return setmagicRunState(config, magic_id, "run"); 261 } 262 psFree(grouped); 263 264 return true; 265 } 266 267 static psS64 definerunMode(pxConfig *config) 268 { 269 PS_ASSERT_PTR_NON_NULL(config, false); 270 271 // required 272 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); 273 274 // optional 275 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 276 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 277 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 278 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 279 280 magicRunRow *run = magicRunRowAlloc( 281 0, // ID 282 "reg", // state 283 workdir, 284 "dirty", // workdir_state 285 label, 286 dvodb, 287 registered, 288 0 289 ); 290 291 if (!run) { 292 psError(PS_ERR_UNKNOWN, false, "failed to alloc magicRun object"); 293 return false; 294 } 295 if (!magicRunInsertObject(config->dbh, run)) { 296 psError(PS_ERR_UNKNOWN, false, "database error"); 297 psFree(run); 298 return false; 299 } 300 301 // get the assigned warp_id 302 psS64 magic_id = psDBLastInsertID(config->dbh); 303 run->magic_id = magic_id; 304 305 if (!magicRunPrintObject(stdout, run, !simple)) { 306 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 307 psFree(run); 308 return false; 309 } 310 311 psFree(run); 312 313 return magic_id; 314 } 315 316 317 static bool updaterunMode(pxConfig *config) 318 { 319 PS_ASSERT_PTR_NON_NULL(config, false); 320 321 // required 322 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false); 323 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 324 325 if (state) { 326 // set detRun.state to state 327 return setmagicRunState(config, (psS64)atoll(magic_id), state); 328 } 329 330 return true; 331 } 332 333 334 static bool addinputskyfileMode(pxConfig *config) 335 { 336 PS_ASSERT_PTR_NON_NULL(config, false); 337 338 // required 339 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false); 340 PXOPT_LOOKUP_STR(diff_id, config->args, "-diff_id", true, false); 341 PXOPT_LOOKUP_STR(node, config->args, "-node", true, false); 342 343 magicInputSkyfileInsert( 344 config->dbh, 345 (psS64)atoll(magic_id), 346 (psS64)atoll(diff_id), 347 node 348 ); 349 350 return true; 351 } 352 353 354 static bool inputskyfileMode(pxConfig *config) 355 { 356 PS_ASSERT_PTR_NON_NULL(config, false); 357 358 psMetadata *where = psMetadataAlloc(); 359 PXOPT_COPY_STR(config->args, where, "-magic_id", "magic_id", "=="); 360 PXOPT_COPY_STR(config->args, where, "-diff_id", "diff_id", "=="); 361 PXOPT_COPY_STR(config->args, where, "-node", "node", "=="); 362 363 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 364 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 365 366 // find all rawImfiles matching the default query 367 psString query = pxDataGet("magictool_inputskyfile.sql"); 122 368 if (!query) { 123 369 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); … … 125 371 } 126 372 373 if (psListLength(where->list)) { 374 psString whereClause = psDBGenerateWhereConditionSQL(where, "magicInputSkyfile"); 375 psStringAppend(&query, " AND %s", whereClause); 376 psFree(whereClause); 377 } 378 psFree(where); 379 380 // treat limit == 0 as "no limit" 381 if (limit) { 382 psString limitString = psDBGenerateLimitSQL(limit); 383 psStringAppend(&query, " %s", limitString); 384 psFree(limitString); 385 } 386 127 387 if (!p_psDBRunQuery(config->dbh, query)) { 128 388 psError(PS_ERR_UNKNOWN, false, "database error"); … … 131 391 } 132 392 psFree(query); 133 } 134 135 // find the diff_id's of the warped skycells 136 { 137 psString query = pxDataGet("magictool_find_complete_diffed_exposures.sql"); 138 if (!query) { 139 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 140 return false; 141 } 142 143 if (!p_psDBRunQuery(config->dbh, query)) { 144 psError(PS_ERR_UNKNOWN, false, "database error"); 145 psFree(query); 146 return false; 147 } 148 psFree(query); 149 } 393 150 394 psArray *output = p_psDBFetchResult(config->dbh); 151 395 if (!output) { … … 168 412 } 169 413 170 // pre-allocate enough hash buckets for 1 unique warp_id per row 171 psHash *groups = psHashAlloc(psArrayLength(output)); 172 // iterate over result set, and group by warp_id 173 for (long i = 0; i < psArrayLength(output); i++) { 174 // lookup the key we're grouping by 175 bool status = false; 176 psS64 warp_id = psMetadataLookupS64(&status, output->data[i], "warp_id"); 177 if (!status) { 178 psAbort("failed to lookup value for warp_id"); 179 } 180 181 psString key = psDBIntToString(warp_id); 182 // look to see if there is a bin for this key 183 psArray *groupBin = psHashLookup(groups, key); 184 if (!groupBin) { 185 // if not, create one 186 groupBin = psArrayAlloc(0); 187 psHashAdd(groups, key, groupBin); 188 } 189 psFree(key); 190 191 // add this row to the bin 192 psArrayAdd(groupBin, 0, output->data[i]); 193 psFree(groupBin); 194 } 414 if (psArrayLength(output)) { 415 // negative simple so the default is true 416 if (!ippdbPrintMetadatas(stdout, output, "magicInputSkyfile", !simple)) { 417 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 418 psFree(output); 419 return false; 420 } 421 } 422 195 423 psFree(output); 196 424 197 // create a magic run 198 psArray *grouped = psHashToArray(groups); 199 psFree(groups); 200 201 // iterate over array of grouped warp_ids 202 for (long i = 0; i < psArrayLength(grouped); i++) { 203 psArray *group = grouped->data[i]; 204 205 // create a new magicRun for this group 206 // XXX This need to have options passed through to it 207 208 magicRunRow *run = magicRunRowAlloc( 209 0, // ID 210 "reg", // state 211 NULL, // workdir 212 "dirty", // workdir_state 213 NULL, // label 214 NULL, // dvodb 215 NULL, // registered 216 0 // fault 217 ); 218 if (!run) { 219 psAbort("failed to alloc magicRun object"); 220 } 221 if (!magicRunInsertObject(config->dbh, run)) { 222 psError(PS_ERR_UNKNOWN, false, "database error"); 223 psFree(run); 224 psFree(grouped); 225 return false; 226 } 227 228 // get the assigned warp_id 229 psS64 magic_id = psDBLastInsertID(config->dbh); 230 231 // insert all rows in this bin into the new magicRun 232 for (long j = 0; j < psArrayLength(group); j++) { 233 psMetadata *row = group->data[j]; 234 235 bool status = false; 236 psS64 diff_id = psMetadataLookupS64(&status, row, "diff_id"); 237 if (!status) { 238 psAbort("failed to lookup value for diff_id"); 239 } 240 psString node = psMetadataLookupStr(&status, row, "skycell_id"); 241 if (!status) { 242 psAbort("failed to lookup value for diff_id"); 243 } 244 245 if (!magicInputSkyfileInsert(config->dbh, 246 magic_id, 247 diff_id, 248 node)) { 249 psError(PS_ERR_UNKNOWN, false, "database error"); 250 psFree(grouped); 251 return false; 252 } 253 } 254 255 // set magicRun.state to 'run' 256 return setmagicRunState(config, magic_id, "run"); 257 } 258 psFree(grouped); 259 260 return true; 261 } 262 263 static psS64 definerunMode(pxConfig *config) 264 { 265 PS_ASSERT_PTR_NON_NULL(config, false); 266 267 // required 268 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); 269 270 // optional 271 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 272 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 273 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 274 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 275 276 magicRunRow *run = magicRunRowAlloc( 277 0, // ID 278 "reg", // state 279 workdir, 280 "dirty", // workdir_state 281 label, 282 dvodb, 283 registered, 284 0 285 ); 286 287 if (!run) { 288 psError(PS_ERR_UNKNOWN, false, "failed to alloc magicRun object"); 289 return false; 290 } 291 if (!magicRunInsertObject(config->dbh, run)) { 292 psError(PS_ERR_UNKNOWN, false, "database error"); 293 psFree(run); 294 return false; 295 } 296 297 // get the assigned warp_id 298 psS64 magic_id = psDBLastInsertID(config->dbh); 299 run->magic_id = magic_id; 300 301 if (!magicRunPrintObject(stdout, run, !simple)) { 302 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 303 psFree(run); 304 return false; 305 } 306 307 psFree(run); 308 309 return magic_id; 310 } 311 312 313 static bool updaterunMode(pxConfig *config) 314 { 315 PS_ASSERT_PTR_NON_NULL(config, false); 316 317 // required 318 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false); 319 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 320 321 if (state) { 322 // set detRun.state to state 323 return setmagicRunState(config, (psS64)atoll(magic_id), state); 324 } 325 326 return true; 327 } 328 329 330 static bool addinputskyfileMode(pxConfig *config) 331 { 332 PS_ASSERT_PTR_NON_NULL(config, false); 333 334 // required 335 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false); 336 PXOPT_LOOKUP_STR(diff_id, config->args, "-diff_id", true, false); 337 PXOPT_LOOKUP_STR(node, config->args, "-node", true, false); 338 339 magicInputSkyfileInsert( 340 config->dbh, 341 (psS64)atoll(magic_id), 342 (psS64)atoll(diff_id), 343 node 344 ); 345 346 return true; 347 } 348 349 350 static bool inputskyfileMode(pxConfig *config) 351 { 352 PS_ASSERT_PTR_NON_NULL(config, false); 425 return true; 426 } 427 428 static bool totreeMode(pxConfig *config) 429 { 430 PS_ASSERT_PTR_NON_NULL(config, false); 431 432 psMetadata *where = psMetadataAlloc(); 433 PXOPT_COPY_STR(config->args, where, "-magic_id", "magicRun.magic_id", "=="); 353 434 354 435 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 355 436 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 356 437 357 // find all rawImfiles matching the default query358 psString query = pxDataGet("magictool_ inputskyfile.sql");438 // look for "inputs" that need to processed 439 psString query = pxDataGet("magictool_totree.sql"); 359 440 if (!query) { 360 441 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); … … 362 443 } 363 444 364 if ( config->where) {365 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "magicInputSkyfile");445 if (psListLength(where->list)) { 446 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 366 447 psStringAppend(&query, " AND %s", whereClause); 367 448 psFree(whereClause); 368 449 } 450 psFree(where); 369 451 370 452 // treat limit == 0 as "no limit" … … 404 486 if (psArrayLength(output)) { 405 487 // negative simple so the default is true 406 if (!ippdbPrintMetadatas(stdout, output, " magicInputSkyfile", !simple)) {488 if (!ippdbPrintMetadatas(stdout, output, "totree", !simple)) { 407 489 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 408 490 psFree(output); … … 416 498 } 417 499 418 419 static bool totreeMode(pxConfig *config) 420 { 421 PS_ASSERT_PTR_NON_NULL(config, false); 500 static bool inputtreeMode(pxConfig *config) 501 { 502 PS_ASSERT_PTR_NON_NULL(config, false); 503 504 // required 505 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false); 506 PXOPT_LOOKUP_STR(dep_file, config->args, "-dep_file", true, false); 507 508 if (!parseAndInsertNodeDeps(config, (psS64)atoll(magic_id), dep_file)) { 509 psError(PS_ERR_UNKNOWN, false, "failed to parse file"); 510 return false; 511 } 512 513 return true; 514 } 515 516 static bool inputsMode(pxConfig *config) 517 { 518 PS_ASSERT_PTR_NON_NULL(config, false); 519 520 psMetadata *where = psMetadataAlloc(); 521 PXOPT_COPY_STR(config->args, where, "-magic_id", "magic_id", "=="); 522 PXOPT_COPY_STR(config->args, where, "-node", "node", "=="); 422 523 423 524 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 424 525 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 425 526 426 // look for "inputs" that need to processed 427 psString query = pxDataGet("magictool_totree.sql"); 527 psString query = pxDataGet("magictool_inputs.sql"); 428 528 if (!query) { 429 529 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 430 530 return false; 431 531 } 532 533 if (psListLength(where->list)) { 534 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 535 psStringAppend(&query, " AND %s", whereClause); 536 psFree(whereClause); 537 } 538 psFree(where); 432 539 433 540 // treat limit == 0 as "no limit" … … 467 574 if (psArrayLength(output)) { 468 575 // negative simple so the default is true 469 if (!ippdbPrintMetadatas(stdout, output, " totree", !simple)) {576 if (!ippdbPrintMetadatas(stdout, output, "magicNode", !simple)) { 470 577 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 471 578 psFree(output); … … 478 585 return true; 479 586 } 480 481 482 static bool inputtreeMode(pxConfig *config)483 {484 PS_ASSERT_PTR_NON_NULL(config, false);485 486 // required487 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false);488 PXOPT_LOOKUP_STR(dep_file, config->args, "-dep_file", true, false);489 490 if (!parseAndInsertNodeDeps(config, (psS64)atoll(magic_id), dep_file)) {491 psError(PS_ERR_UNKNOWN, false, "failed to parse file");492 return false;493 }494 495 return true;496 }497 498 587 499 588 bool findBaseNodes(void *arg, pxNode *node) … … 573 662 PS_ASSERT_PTR_NON_NULL(config, false); 574 663 575 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", false, false); 664 psMetadata *where = psMetadataAlloc(); 665 PXOPT_COPY_STR(config->args, where, "-magic_id", "magic_id", "=="); 666 576 667 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 577 668 … … 583 674 } 584 675 585 if (magic_id) { 586 psMetadata *where = psMetadataAlloc(); 587 psMetadataAddS64(where, PS_LIST_TAIL, "magic_id", 0, "==", (psS64)atoll(magic_id)); 588 psString whereClause = psDBGenerateWhereSQL(where, NULL); 589 psFree(where); 676 psString whereClause = NULL; 677 if (psListLength(where->list)) { 678 whereClause = psDBGenerateWhereSQL(where, NULL); 590 679 psStringAppend(&query, " %s", whereClause); 591 psFree(whereClause); 592 } 680 psFree(whereClause); 681 } 682 psFree(where); 593 683 594 684 if (!p_psDBRunQuery(config->dbh, query)) { … … 615 705 if (!psArrayLength(output)) { 616 706 psTrace("magictool", PS_LOG_INFO, "no rows found"); 617 //psFree(output);618 //return true;707 // psFree(output); 708 // return true; 619 709 } 620 710 … … 626 716 } 627 717 628 629 if (magic_id) { 630 psMetadata *where = psMetadataAlloc(); 631 psMetadataAddS64(where, PS_LIST_TAIL, "magic_id", 0, "==", (psS64)atoll(magic_id)); 632 psString whereClause = psDBGenerateWhereSQL(where, NULL); 633 psFree(where); 718 if (whereClause) { 634 719 psStringAppend(&query, " %s", whereClause); 635 psFree(whereClause);636 720 } 637 721 … … 686 770 pxNode *root = psHashLookup(forest, "root"); 687 771 psFree(forest); 688 //pxTreePrint(stdout, root);772 // pxTreePrint(stdout, root); 689 773 690 774 // crawl through the tree and looking for nodes with children that are all … … 703 787 704 788 psFree(output); 789 psFree(whereClause); 705 790 706 791 return true; … … 735 820 } 736 821 737 static bool inputsMode(pxConfig *config)822 static bool tomaskMode(pxConfig *config) 738 823 { 739 824 PS_ASSERT_PTR_NON_NULL(config, false); … … 742 827 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 743 828 744 psString query = pxDataGet("magictool_inputs.sql"); 829 // look for "inputs" that need to processed 830 psString query = pxDataGet("magictool_tomask.sql"); 745 831 if (!query) { 746 832 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 747 833 return false; 748 }749 750 if (config->where) {751 psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL);752 psStringAppend(&query, " AND %s", whereClause);753 psFree(whereClause);754 834 } 755 835 … … 790 870 if (psArrayLength(output)) { 791 871 // negative simple so the default is true 792 if (!ippdbPrintMetadatas(stdout, output, " magicNode", !simple)) {872 if (!ippdbPrintMetadatas(stdout, output, "toprocess", !simple)) { 793 873 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 794 874 psFree(output); … … 803 883 804 884 805 static bool tomaskMode(pxConfig *config) 806 { 807 PS_ASSERT_PTR_NON_NULL(config, false); 885 static bool addmaskMode(pxConfig *config) 886 { 887 PS_ASSERT_PTR_NON_NULL(config, false); 888 889 // required 890 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false); 891 892 // optional 893 PXOPT_LOOKUP_STR(uri, config->args, "-uri", false, false); 894 PXOPT_LOOKUP_S32(streaks, config->args, "-streaks", false, false); 895 896 // default values 897 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 898 899 if (!psDBTransaction(config->dbh)) { 900 psError(PS_ERR_UNKNOWN, false, "database error"); 901 return false; 902 } 903 904 if (!magicMaskInsert(config->dbh, 905 (psS64)atoll(magic_id), 906 uri, 907 streaks, 908 code 909 )) { 910 psError(PS_ERR_UNKNOWN, false, "database error"); 911 return false; 912 } 913 914 // Set the magicRun state 915 psString query = pxDataGet("magictool_addmask.sql"); 916 if (!query) { 917 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 918 return false; 919 } 920 921 // manually add constraint 922 psStringAppend(&query, " AND magic_id = %s", magic_id); 923 924 if (!p_psDBRunQuery(config->dbh, query)) { 925 psError(PS_ERR_UNKNOWN, false, "database error"); 926 psFree(query); 927 return false; 928 } 929 psFree(query); 930 931 if (!psDBCommit(config->dbh)) { 932 psError(PS_ERR_UNKNOWN, false, "database error"); 933 return false; 934 } 935 936 return true; 937 } 938 939 940 static bool maskMode(pxConfig *config) 941 { 942 PS_ASSERT_PTR_NON_NULL(config, false); 943 944 psMetadata *where = psMetadataAlloc(); 945 PXOPT_COPY_STR(config->args, where, "-magic_id", "magicRun.magic_id", "=="); 808 946 809 947 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 810 948 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 811 949 812 // look for "inputs" that need to processed 813 psString query = pxDataGet("magictool_tomask.sql"); 950 psString query = pxDataGet("magictool_mask.sql"); 814 951 if (!query) { 815 952 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 816 953 return false; 817 954 } 955 956 if (psListLength(where->list)) { 957 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 958 psStringAppend(&query, " AND %s", whereClause); 959 psFree(whereClause); 960 } 961 psFree(where); 818 962 819 963 // treat limit == 0 as "no limit" … … 853 997 if (psArrayLength(output)) { 854 998 // negative simple so the default is true 855 if (!ippdbPrintMetadatas(stdout, output, "toprocess", !simple)) {856 psError(PS_ERR_UNKNOWN, false, "failed to print array");857 psFree(output);858 return false;859 }860 }861 862 psFree(output);863 864 return true;865 }866 867 868 static bool addmaskMode(pxConfig *config)869 {870 PS_ASSERT_PTR_NON_NULL(config, false);871 872 // required873 PXOPT_LOOKUP_STR(magic_id, config->args, "-magic_id", true, false);874 875 // optional876 PXOPT_LOOKUP_STR(uri, config->args, "-uri", false, false);877 PXOPT_LOOKUP_S32(streaks, config->args, "-streaks", false, false);878 879 // default values880 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);881 882 if (!psDBTransaction(config->dbh)) {883 psError(PS_ERR_UNKNOWN, false, "database error");884 return false;885 }886 887 if (!magicMaskInsert(config->dbh,888 (psS64)atoll(magic_id),889 uri,890 streaks,891 code892 )) {893 psError(PS_ERR_UNKNOWN, false, "database error");894 return false;895 }896 897 // Set the magicRun state898 psString query = pxDataGet("magictool_addmask.sql");899 if (!query) {900 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");901 return false;902 }903 904 // Add "magic_id = value"905 psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL);906 psStringAppend(&query, " AND %s", whereClause);907 psFree(whereClause);908 909 if (!p_psDBRunQuery(config->dbh, query)) {910 psError(PS_ERR_UNKNOWN, false, "database error");911 psFree(query);912 return false;913 }914 psFree(query);915 916 if (!psDBCommit(config->dbh)) {917 psError(PS_ERR_UNKNOWN, false, "database error");918 return false;919 }920 921 return true;922 }923 924 925 static bool maskMode(pxConfig *config)926 {927 PS_ASSERT_PTR_NON_NULL(config, false);928 929 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);930 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);931 932 psString query = pxDataGet("magictool_mask.sql");933 if (!query) {934 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");935 return false;936 }937 938 if (config->where) {939 psString whereClause = psDBGenerateWhereConditionSQL(config->where, NULL);940 psStringAppend(&query, " AND %s", whereClause);941 psFree(whereClause);942 }943 944 // treat limit == 0 as "no limit"945 if (limit) {946 psString limitString = psDBGenerateLimitSQL(limit);947 psStringAppend(&query, " %s", limitString);948 psFree(limitString);949 }950 951 if (!p_psDBRunQuery(config->dbh, query)) {952 psError(PS_ERR_UNKNOWN, false, "database error");953 psFree(query);954 return false;955 }956 psFree(query);957 958 psArray *output = p_psDBFetchResult(config->dbh);959 if (!output) {960 psErrorCode err = psErrorCodeLast();961 switch (err) {962 case PS_ERR_DB_CLIENT:963 psError(PXTOOLS_ERR_SYS, false, "database error");964 case PS_ERR_DB_SERVER:965 psError(PXTOOLS_ERR_PROG, false, "database error");966 default:967 psError(PXTOOLS_ERR_PROG, false, "unknown error");968 }969 970 return false;971 }972 if (!psArrayLength(output)) {973 psTrace("magictool", PS_LOG_INFO, "no rows found");974 psFree(output);975 return true;976 }977 978 if (psArrayLength(output)) {979 // negative simple so the default is true980 999 if (!ippdbPrintMetadatas(stdout, output, "magicNode", !simple)) { 981 1000 psError(PS_ERR_UNKNOWN, false, "failed to print array"); -
trunk/ippTools/src/magictoolConfig.c
r18526 r18561 49 49 // -definebyquery 50 50 psMetadata *queueArgs = psMetadataAlloc(); 51 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 52 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 53 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-dvodb", 0, "define dvodb", NULL); 54 psMetadataAddTime(queueArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 51 55 52 56 // -definerun 53 57 psMetadata *definerunArgs = psMetadataAlloc(); 54 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0, 55 "define workdir (required)", NULL); 56 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, 57 "define label", NULL); 58 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-dvodb", 0, 59 "define dvodb", NULL); 60 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered", 0, 61 "time detrend run was registered", now); 62 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, 63 "use the simple output format", false); 58 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 59 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 60 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-dvodb", 0, "define dvodb", NULL); 61 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 62 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 64 63 65 64 // -updaterun 66 65 psMetadata *updaterunArgs = psMetadataAlloc(); 67 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-magic_id", 0, 68 "define warptool ID (required)", NULL); 69 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, 70 "set state (required)", NULL); 71 #if 0 72 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-workdir", 0, 73 "define workdir (required)", NULL); 74 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-registered", 0, 75 "time detrend run was registered", now); 76 #endif 66 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-magic_id", 0, "define warptool ID (required)", NULL); 67 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state (required)", NULL); 77 68 78 69 // -addinputskyfile 79 70 psMetadata *addinputskyfileArgs = psMetadataAlloc(); 80 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-magic_id", 0, 81 "define magictool ID (required)", NULL); 82 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, 83 "define difftool ID (required)", NULL); 84 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-node", 0, 85 "define symbolic node name (required)", NULL); 71 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-magic_id", 0, "define magictool ID (required)", NULL); 72 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "define difftool ID (required)", NULL); 73 psMetadataAddStr(addinputskyfileArgs, PS_LIST_TAIL, "-node", 0, "define symbolic node name (required)", NULL); 86 74 87 75 // -inputskyfile 88 76 psMetadata *inputskyfileArgs = psMetadataAlloc(); 89 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-magic_id", 0, 90 "search by magictool ID", NULL); 91 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, 92 "search by difftool ID", NULL); 93 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-node", 0, 94 "search by symbolic node name", NULL); 95 psMetadataAddU64(inputskyfileArgs, PS_LIST_TAIL, "-limit", 0, 96 "limit result set to N items", 0); 97 psMetadataAddBool(inputskyfileArgs, PS_LIST_TAIL, "-simple", 0, 98 "use the simple output format", false); 77 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magictool ID", NULL); 78 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "search by difftool ID", NULL); 79 psMetadataAddStr(inputskyfileArgs, PS_LIST_TAIL, "-node", 0, "search by symbolic node name", NULL); 80 psMetadataAddU64(inputskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 81 psMetadataAddBool(inputskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 99 82 100 83 // -totree … … 106 89 // -inputtree 107 90 psMetadata *inputtreeArgs = psMetadataAlloc(); 108 psMetadataAddStr(inputtreeArgs, PS_LIST_TAIL, "-magic_id", 0, 109 "define magictool ID (required)", NULL); 110 psMetadataAddStr(inputtreeArgs, PS_LIST_TAIL, "-dep_file", 0, 111 "order of operations dep. file (required)", NULL); 91 psMetadataAddStr(inputtreeArgs, PS_LIST_TAIL, "-magic_id", 0, "define magictool ID (required)", NULL); 92 psMetadataAddStr(inputtreeArgs, PS_LIST_TAIL, "-dep_file", 0, "order of operations dep. file (required)", NULL); 112 93 psMetadataAddS16(inputtreeArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 113 94 114 95 // -inputs 115 96 psMetadata *inputsArgs = psMetadataAlloc(); 116 psMetadataAddStr(inputsArgs, PS_LIST_TAIL, "-magic_id", 0, 117 "search by magictool ID", NULL); 118 psMetadataAddStr(inputsArgs, PS_LIST_TAIL, "-node", 0, 119 "search by symbolic node name", NULL); 120 psMetadataAddU64(inputsArgs, PS_LIST_TAIL, "-limit", 0, 121 "limit result set to N items", 0); 122 psMetadataAddBool(inputsArgs, PS_LIST_TAIL, "-simple", 0, 123 "use the simple output format", false); 97 psMetadataAddStr(inputsArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magictool ID", NULL); 98 psMetadataAddStr(inputsArgs, PS_LIST_TAIL, "-node", 0, "search by symbolic node name", NULL); 99 psMetadataAddU64(inputsArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 100 psMetadataAddBool(inputsArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 124 101 125 102 // -tooprocess 126 103 psMetadata *toprocessArgs = psMetadataAlloc(); 127 psMetadataAddStr(toprocessArgs, PS_LIST_TAIL, "-magic_id", 0, 128 "search by magic ID", NULL); 129 psMetadataAddU64(toprocessArgs, PS_LIST_TAIL, "-limit", 0, 130 "limit result set to N items", 0); 131 psMetadataAddBool(toprocessArgs, PS_LIST_TAIL, "-simple", 0, 132 "use the simple output format", false); 104 psMetadataAddStr(toprocessArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magic ID", NULL); 105 psMetadataAddU64(toprocessArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 106 psMetadataAddBool(toprocessArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 133 107 134 108 // -addresult 135 109 psMetadata *addresultArgs = psMetadataAlloc(); 136 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "-magic_id", 0, 137 "define magictool ID (required)", NULL); 138 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "-node", 0, 139 "define symbolic node name (required)", NULL); 140 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "-uri", 0, 141 "define URI", NULL); 110 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "-magic_id", 0, "define magictool ID (required)", NULL); 111 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "-node", 0, "define symbolic node name (required)", NULL); 112 psMetadataAddStr(addresultArgs, PS_LIST_TAIL, "-uri", 0, "define URI (required)", NULL); 142 113 psMetadataAddS16(addresultArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 143 114 144 115 // -tomask 145 116 psMetadata *tomaskArgs = psMetadataAlloc(); 146 psMetadataAddU64(tomaskArgs, PS_LIST_TAIL, "-limit", 0, 147 "limit result set to N items", 0); 148 psMetadataAddBool(tomaskArgs, PS_LIST_TAIL, "-simple", 0, 149 "use the simple output format", false); 117 psMetadataAddU64(tomaskArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 118 psMetadataAddBool(tomaskArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 150 119 151 120 // -addmask 152 121 psMetadata *addmaskArgs = psMetadataAlloc(); 153 psMetadataAddStr(addmaskArgs, PS_LIST_TAIL, "-magic_id", 0, 154 "define magictool ID (required)", NULL); 122 psMetadataAddStr(addmaskArgs, PS_LIST_TAIL, "-magic_id", 0, "define magictool ID (required)", NULL); 155 123 psMetadataAddStr(addmaskArgs, PS_LIST_TAIL, "-uri", 0, "define URI", NULL); 156 124 psMetadataAddS32(addmaskArgs, PS_LIST_TAIL, "-streaks", 0, "define number of streaks", 0); 157 125 psMetadataAddS16(addmaskArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 126 127 # if (0) 128 // -toskyfilemask 129 psMetadata *toskyfilemaskArgs = psMetadataAlloc(); 130 psMetadataAddStr(toskyfilemaskArgs, PS_LIST_TAIL, "-magic_id", 0, "search by magic ID", NULL); 131 psMetadataAddU64(toskyfilemaskArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 132 psMetadataAddBool(toskyfilemaskArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 133 134 // -addskyfilemask 135 psMetadata *addskyfilemaskArgs = psMetadataAlloc(); 136 psMetadataAddStr(addskyfilemaskArgs, PS_LIST_TAIL, "-magic_id", 0, "define magictool ID (required)", NULL); 137 psMetadataAddStr(addskyfilemaskArgs, PS_LIST_TAIL, "-diff_id", 0, "define difftool ID (required)", NULL); 138 psMetadataAddStr(addskyfilemaskArgs, PS_LIST_TAIL, "-uri", 0, "define URI (required)", NULL); 139 # endif 158 140 159 141 // -mask … … 193 175 psFree(modes); 194 176 195 // setup search criterion196 #define addWhereStr(name) \197 { \198 psString str = NULL; \199 bool status = false; \200 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \201 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\202 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \203 psFree(config); \204 return NULL; \205 } \206 } \207 }208 209 #define addWhereS32(name) \210 { \211 psS32 s32 = 0; \212 bool status = false; \213 if ((s32= psMetadataLookupS32(&status, config->args, "-" #name))) { \214 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, #name, 0, "==", s32)) { \215 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \216 psFree(config); \217 return NULL; \218 } \219 } \220 }221 222 223 // generate SQL where clause224 config->where = psMetadataAlloc();225 226 {227 psString str = NULL;228 bool status = false;229 if ((str = psMetadataLookupStr(&status, config->args, "-magic_id"))) {230 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, "magic_id", 0, "==", (psS64)atoll(str))) {231 psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");232 psFree(config);233 return NULL;234 }235 }236 }237 addWhereStr(skycell_id);238 addWhereStr(tess_id);239 addWhereStr(exp_id);240 addWhereStr(node);241 242 // convert '-code' to 'fault'243 {244 psS16 fault = 0;245 bool status = false;246 if ((fault = psMetadataLookupS16(&status, config->args, "-code"))) {247 if (!psMetadataAddS16(config->where, PS_LIST_TAIL, "fault", 0, "==", fault)) {248 psError(PS_ERR_UNKNOWN, false, "failed to add item fault");249 psFree(config);250 return NULL;251 }252 }253 }254 255 if (config->where->list->n < 1) {256 psFree(config->where);257 config->where = NULL;258 }259 260 177 // define Database handle, if used 261 178 // do this last so we don't setup a connection before CLI options are -
trunk/ippTools/src/pstamptool.c
r18531 r18561 102 102 PS_ASSERT_PTR_NON_NULL(config, false); 103 103 104 bool status = false; 105 psString uri = psMetadataLookupStr(&status, config->args, "-uri"); 106 if (!status) { 107 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -uri"); 108 return false; 109 } 110 if (!uri) { 111 psError(PS_ERR_UNKNOWN, true, "-uri is required"); 112 return false; 113 } 114 psString outProduct = psMetadataLookupStr(&status, config->args, "-out_product"); 115 if (!status) { 116 psError(PS_ERR_UNKNOWN, false, "failed to looku value for -out_product"); 117 return false; 118 } 119 if (!outProduct) { 120 psError(PS_ERR_UNKNOWN, true, "-out_product is required"); 121 return false; 122 } 123 124 psString lastFileset = psMetadataLookupStr(&status, config->args, "-last_fileset"); 125 psString state = psMetadataLookupStr(&status, config->args, "-state"); 126 if (!state) { 127 state = "enabled"; 128 } 104 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 105 PXOPT_LOOKUP_STR(outProduct, config->args, "-out_product", true, false); 106 PXOPT_LOOKUP_STR(lastFileset, config->args, "-last_fileset", false, false); 107 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 129 108 130 109 if (!pstampDataStoreInsert(config->dbh, … … 144 123 static bool datastoreMode(pxConfig *config) 145 124 { 146 bool status = false; 147 PS_ASSERT_PTR_NON_NULL(config, false); 148 149 psString ds_id = psMetadataLookupStr(&status, config->args, "-ds_id"); 150 if (!status) { 151 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ds_id"); 152 return false; 153 } 154 155 psString query = NULL; 156 psStringAppend(&query, "SELECT * FROM pstampDataStore"); 157 if (ds_id) { 158 psStringAppend(&query, " WHERE ds_id = '%s'", ds_id); 159 } 125 PS_ASSERT_PTR_NON_NULL(config, false); 126 127 psMetadata *where = psMetadataAlloc(); 128 PXOPT_COPY_STR(config->args, where, "-ds_id", "ds_id", "=="); 129 130 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 131 132 psString query = pxDataGet("pstamptool_datastore.sql"); 133 if (!query) { 134 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 135 return false; 136 } 137 138 if (psListLength(where->list)) { 139 psString whereClause = psDBGenerateWhereSQL(where, NULL); 140 psStringAppend(&query, " %s", whereClause); 141 psFree(whereClause); 142 } 143 psFree(where); 144 160 145 if (!p_psDBRunQuery(config->dbh, query)) { 161 146 psError(PS_ERR_UNKNOWN, false, "database error"); … … 172 157 psFree(output); 173 158 return true; 174 }175 176 bool simple = false;177 {178 bool status = false;179 simple = psMetadataLookupBool(&status, config->args, "-simple");180 if (!status) {181 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");182 return false;183 }184 159 } 185 160 … … 197 172 static bool moddatastoreMode(pxConfig *config) 198 173 { 199 bool status; 200 201 PS_ASSERT_PTR_NON_NULL(config, false); 202 203 psString ds_id = psMetadataLookupStr(&status, config->args, "-ds_id"); 204 if (!status) { 205 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ds_id"); 206 return false; 207 } 208 if (!ds_id) { 209 psError(PS_ERR_UNKNOWN, true, "-ds_id is required"); 210 return false; 211 } 212 psString lastFileset = psMetadataLookupStr(&status, config->args, "-last_fileset"); 213 if (!status) { 214 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -last_fileset"); 215 return false; 216 } 217 psString state = psMetadataLookupStr(&status, config->args, "-state"); 218 if (!status) { 219 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -state"); 220 return false; 221 } 174 PS_ASSERT_PTR_NON_NULL(config, false); 175 176 PXOPT_LOOKUP_STR(ds_id, config->args, "-ds_id", true, false); 177 PXOPT_LOOKUP_STR(lastFileset, config->args, "-last_fileset", false, false); 178 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 222 179 223 180 if (!state && !lastFileset) { … … 226 183 } 227 184 228 char *query = NULL;185 char *query = psStringCopy ("UPDATE pstampDataStore SET"); 229 186 bool needComma = false; 230 187 231 psStringAppend(&query, "UPDATE pstampDataStore SET");232 233 188 if (lastFileset) { 234 189 psStringAppend(&query, " lastFileset = '%s'", lastFileset); … … 237 192 238 193 if (state) { 239 psStringAppend(&query, "%s state = '%s'", needComma ? "," : " ", 240 state); 194 psStringAppend(&query, "%s state = '%s'", needComma ? "," : " ", state); 241 195 needComma = true; // be ready in case we add another field 242 196 } … … 262 216 static bool addReqMode(pxConfig *config) 263 217 { 264 bool status; 265 266 PS_ASSERT_PTR_NON_NULL(config, false); 267 268 psString uri = psMetadataLookupStr(&status, config->args, "-uri"); 269 if (!status) { 270 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -uri"); 271 return false; 272 } 273 if (!uri) { 274 psError(PS_ERR_UNKNOWN, true, "-uri is required"); 275 return false; 276 } 277 278 // Data Store ID is optional 279 psString ds_id = psMetadataLookupStr(&status, config->args, "-ds_id"); 280 if (!status) { 281 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ds_id"); 282 return false; 283 } 284 if (!ds_id) { 285 ds_id = "0"; 286 } 218 PS_ASSERT_PTR_NON_NULL(config, false); 219 220 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 221 // PXOPT_LOOKUP_STR(outFileset, config->args, "-out_fileset", true, false); 222 PXOPT_LOOKUP_STR(ds_id, config->args, "-ds_id", false, false); 287 223 288 224 char *query ="INSERT INTO pstampRequest" … … 313 249 PS_ASSERT_PTR_NON_NULL(config, false); 314 250 315 bool status = false; 316 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 317 if (!status) { 318 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit"); 319 return false; 320 } 321 322 psString query = psStringCopy( 323 "SELECT" 324 " *" 325 " FROM pstampRequest" 326 " WHERE state = 'new'" 327 ); 328 329 if (config->where) { 330 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "pstampRequest"); 251 psMetadata *where = psMetadataAlloc(); 252 PXOPT_COPY_STR(config->args, where, "-ds_id", "ds_id", "=="); 253 254 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 255 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 256 257 psString query = pxDataGet("pstamptool_pendingreq.sql"); 258 if (!query) { 259 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 260 return false; 261 } 262 263 if (psListLength(where->list)) { 264 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampRequest"); 331 265 psStringAppend(&query, " AND %s", whereClause); 332 266 psFree(whereClause); 333 267 } 268 psFree(where); 334 269 335 270 // treat limit == 0 as "no limit" … … 358 293 } 359 294 360 bool simple = false;361 {362 bool status = false;363 simple = psMetadataLookupBool(&status, config->args, "-simple");364 if (!status) {365 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");366 psFree(output);367 return false;368 }369 }370 371 295 // negative simple so the default is true 372 296 if (!ippdbPrintMetadatas(stdout, output, "pstampRequest", !simple)) { … … 380 304 return true; 381 305 } 382 static bool completedReqMode(pxConfig *config) 383 { 384 PS_ASSERT_PTR_NON_NULL(config, false); 385 386 bool status = false; 387 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 388 if (!status) { 389 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit"); 390 return false; 391 } 306 307 static bool listReqMode(pxConfig *config) 308 { 309 PS_ASSERT_PTR_NON_NULL(config, false); 310 311 PXOPT_LOOKUP_STR(req_id, config->args, "-req_id", true, false); 312 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 313 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 392 314 393 315 psString query = NULL; 394 316 psStringAppend(&query, 395 "SELECT * FROM pstampRequest WHERE state = 'run' AND "396 "(SELECT count(*) FROM pstampJob WHERE pstampJob.req_id = pstampRequest.req_id "397 " AND pstampJob.state != 'stop') = 0" );398 317 "SELECT * FROM pstampRequest WHERE state = 'run' AND " 318 "(SELECT count(*) FROM pstampJob WHERE pstampJob.req_id = pstampRequest.req_id " 319 " AND pstampJob.state != 'stop') = 0" ); 320 399 321 // treat limit == 0 as "no limit" 400 322 if (limit) { … … 409 331 return false; 410 332 } 333 psFree(query); 411 334 412 335 psArray *output = p_psDBFetchResult(config->dbh); … … 415 338 return false; 416 339 } 417 418 340 if (!psArrayLength(output)) { 419 341 psTrace("pstamptool", PS_LOG_INFO, "no rows found"); 420 342 psFree(output); 421 343 return true; 422 }423 424 bool simple = false;425 {426 bool status = false;427 simple = psMetadataLookupBool(&status, config->args, "-simple");428 if (!status) {429 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");430 psFree(output);431 return false;432 }433 344 } 434 345 … … 445 356 } 446 357 447 static bool listReqMode(pxConfig *config) 448 { 449 PS_ASSERT_PTR_NON_NULL(config, false); 450 451 bool status = false; 452 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 453 if (!status) { 454 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit"); 455 return false; 456 } 457 458 psString query = NULL; 459 460 psString req_id = psMetadataLookupStr(&status, config->args, "-req_id"); 461 462 if (req_id) { 463 psStringAppend(&query, 464 "SELECT" 465 " *" 466 " FROM pstampRequest" 467 " WHERE req_id = %s", req_id 468 ); 469 } else { 470 fprintf(stderr, "req_id must be specified\n"); 471 exit (1); 472 } 358 static bool completedReqMode(pxConfig *config) 359 { 360 PS_ASSERT_PTR_NON_NULL(config, false); 361 362 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 363 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 364 365 psString query = 366 "SELECT * FROM pstampRequest WHERE state = 'run' AND " 367 "(SELECT count(*) FROM pstampJob WHERE pstampJob.req_id = pstampRequest.req_id " 368 " AND pstampJob.state != 'stop') = 0" ; 473 369 474 370 // treat limit == 0 as "no limit" … … 484 380 return false; 485 381 } 486 psFree(query);487 382 488 383 psArray *output = p_psDBFetchResult(config->dbh); … … 491 386 return false; 492 387 } 388 493 389 if (!psArrayLength(output)) { 494 390 psTrace("pstamptool", PS_LOG_INFO, "no rows found"); 495 391 psFree(output); 496 392 return true; 497 }498 499 bool simple = false;500 {501 bool status = false;502 simple = psMetadataLookupBool(&status, config->args, "-simple");503 if (!status) {504 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");505 psFree(output);506 return false;507 }508 393 } 509 394 … … 522 407 static bool processedReqMode(pxConfig *config) 523 408 { 524 bool status; 525 526 PS_ASSERT_PTR_NON_NULL(config, false); 527 528 psString req_id = psMetadataLookupStr(&status, config->args, "-req_id"); 529 if (!status) { 530 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -req_id"); 531 return false; 532 } 533 if (!req_id) { 534 psError(PS_ERR_UNKNOWN, true, "-req_id is required"); 535 return false; 536 } 537 psString state = psMetadataLookupStr(&status, config->args, "-state"); 538 if (!status) { 539 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -state"); 540 return false; 541 } 542 psString outProduct = psMetadataLookupStr(&status, config->args, "-outProduct"); 543 if (!status) { 544 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -outProduct"); 545 return false; 546 } 547 psString fault = psMetadataLookupStr(&status, config->args, "-fault"); 548 if (!status) { 549 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -fault"); 550 return false; 551 } 552 553 psString uri = psMetadataLookupStr(&status, config->args, "-uri"); 554 if (!status) { 555 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -uri"); 556 return false; 557 } 558 psString name = psMetadataLookupStr(&status, config->args, "-name"); 559 if (!status) { 560 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -name"); 561 return false; 562 } 563 psString reqType = psMetadataLookupStr(&status, config->args, "-reqType"); 564 if (!status) { 565 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -reqType"); 566 return false; 567 } 409 PS_ASSERT_PTR_NON_NULL(config, false); 410 411 PXOPT_LOOKUP_STR(req_id, config->args, "-req_id", true, false); 412 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); 413 PXOPT_LOOKUP_STR(outProduct, config->args, "-outProduct", false, false); 414 PXOPT_LOOKUP_STR(fault, config->args, "-fault", false, false); 415 PXOPT_LOOKUP_STR(uri, config->args, "-uri", false, false); 416 PXOPT_LOOKUP_STR(name, config->args, "-name", false, false); 417 PXOPT_LOOKUP_STR(reqType, config->args, "-reqType", false, false); 568 418 569 419 psString query = NULL; … … 621 471 static bool revertReqMode(pxConfig *config) 622 472 { 623 bool status; 624 625 PS_ASSERT_PTR_NON_NULL(config, false); 626 627 psS64 req_id = psMetadataLookupS64(&status, config->args, "-req_id"); 628 if (!status) { 629 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -req_id"); 630 return false; 631 } 632 if (!req_id) { 633 psError(PS_ERR_UNKNOWN, true, "-req_id is required"); 634 return false; 635 } 636 473 PS_ASSERT_PTR_NON_NULL(config, false); 474 475 PXOPT_LOOKUP_S64(req_id, config->args, "-req_id", true, false); 637 476 638 477 printf("Revert request %" PRId64 "\n", req_id); … … 653 492 static bool addJobMode(pxConfig *config) 654 493 { 655 bool status;656 494 bool stampJob = false; 657 658 PS_ASSERT_PTR_NON_NULL(config, false); 659 660 psString job_type = psMetadataLookupStr(&status, config->args, "-job_type"); 661 if (!status) { 662 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -job_type"); 663 return false; 664 } 665 if (job_type) { 666 if (!strcmp(job_type, "get_image") || !strcmp(job_type, "detect_query")) { 667 stampJob = false; 668 } else if (!strcmp(job_type, "stamp")) { 669 stampJob = true; 670 } else { 671 psError(PS_ERR_UNKNOWN, false, "unknown value for -job_type: %s", job_type); 672 return false; 673 } 495 char *query = NULL; 496 497 PS_ASSERT_PTR_NON_NULL(config, false); 498 499 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); 500 PXOPT_LOOKUP_STR(req_id, config->args, "-req_id", true, false); 501 PXOPT_LOOKUP_STR(rownum, config->args, "-rownum", true, false); 502 PXOPT_LOOKUP_STR(job_type, config->args, "-job_type", false, false); 503 PXOPT_LOOKUP_STR(outputBase, config->args, "-outputBase", true, false); 504 PXOPT_LOOKUP_STR(argString, config->args, "-args", false, false); 505 PXOPT_LOOKUP_STR(stateString, config->args, "-state", false, false); 506 PXOPT_LOOKUP_STR(fault, config->args, "-fault", false, false); 507 508 // default value for job_type is defined in pstamptoolConfig.c 509 if (!strcmp(job_type, "get_image") || !strcmp(job_type, "detect_query")) { 510 stampJob = false; 511 } else if (!strcmp(job_type, "stamp")) { 512 stampJob = true; 674 513 } else { 675 job_type = "stamp"; 676 stampJob = true; 677 } 678 679 psString rownum = psMetadataLookupStr(&status, config->args, "-rownum"); 680 if (!status) { 681 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -rownum"); 682 return false; 683 } 684 if (!rownum) { 685 psError(PS_ERR_UNKNOWN, true, "-rownum is required"); 686 return false; 687 } 688 psString uri = psMetadataLookupStr(&status, config->args, "-uri"); 689 if (!status) { 690 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -uri"); 691 return false; 692 } 693 if (!uri) { 694 psError(PS_ERR_UNKNOWN, true, "-uri is required"); 695 return false; 696 } 697 698 psString req_id = psMetadataLookupStr(&status, config->args, "-req_id"); 699 if (!status) { 700 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -req_id"); 701 return false; 702 } 703 if (!req_id) { 704 psError(PS_ERR_UNKNOWN, true, "-req_id is required"); 705 return false; 706 } 707 708 psString outputBase = psMetadataLookupStr(&status, config->args, "-outputBase"); 709 if (!status) { 710 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -outputBase"); 711 return false; 712 } 713 if (!outputBase) { 714 psError(PS_ERR_UNKNOWN, true, "-outputBase is required"); 715 return false; 716 } 717 718 psString argString = psMetadataLookupStr(&status, config->args, "-args"); 719 if (!status) { 720 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -args"); 721 return false; 722 } 723 if (!argString) { 724 if (stampJob) { 725 psError(PS_ERR_UNKNOWN, true, "-args is required"); 726 return false; 727 } 728 } 729 730 psString stateString = psMetadataLookupStr(&status, config->args, "-state"); 731 if (!status) { 732 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -state"); 733 return false; 734 } 735 if (!stateString) { 736 stateString = "run"; 737 } 738 psString fault = psMetadataLookupStr(&status, config->args, "-fault"); 739 if (!status) { 740 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -fault"); 741 return false; 742 } 743 if (!fault) { 744 fault = "0"; 745 } 746 747 char *query; 748 514 psError(PS_ERR_UNKNOWN, false, "unknown value for -job_type: %s", job_type); 515 return false; 516 } 517 518 if (stampJob && !argString) { 519 psError(PS_ERR_UNKNOWN, true, "-args is required for stamp job"); 520 return false; 521 } 522 749 523 if (stampJob) { 750 query ="INSERT INTO pstampJob" 751 " (req_id, rownum, state, jobType, uri, outputBase, fault, args)" 752 " VALUES( %s, '%s', '%s', '%s', '%s', '%s', %s, '%s')"; 524 query = pxDataGet("pstamptool_addjob_stampjob.sql"); 753 525 } else { 754 query ="INSERT INTO pstampJob" 755 " (req_id, rownum, state, jobType, uri, outputBase, fault)" 756 " VALUES( %s, '%s', '%s', '%s', '%s', '%s', %s)"; 526 query = pxDataGet("pstamptool_addjob_otherjob.sql"); 527 } 528 if (!query) { 529 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 530 return false; 757 531 } 758 532 … … 780 554 PS_ASSERT_PTR_NON_NULL(config, false); 781 555 782 bool status = false; 783 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 784 if (!status) { 785 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit"); 786 return false; 787 } 556 PXOPT_LOOKUP_STR(req_id, config->args, "-req_id", false, false); 557 PXOPT_LOOKUP_STR(job_id, config->args, "-job_id", false, false); 558 559 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 560 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 788 561 789 562 psString query = NULL; 790 563 791 psString req_id = psMetadataLookupStr(&status, config->args, "-req_id"); 792 psString job_id = psMetadataLookupStr(&status, config->args, "-job_id"); 793 564 if (!req_id && !job_id) { 565 fprintf(stderr, "either req_id or job_id must be specified\n"); 566 exit (1); 567 } 568 794 569 if (req_id) { 795 570 psStringAppend(&query, … … 799 574 " WHERE req_id = %s", req_id 800 575 ); 801 } else if (job_id){576 } else { 802 577 psStringAppend(&query, 803 578 "SELECT" … … 806 581 " WHERE job_id = %s", job_id 807 582 ); 808 } else { 809 fprintf(stderr, "either req_id or job_id must be specified\n"); 810 exit (1); 811 } 583 } 812 584 813 585 // treat limit == 0 as "no limit" … … 836 608 } 837 609 838 bool simple = false;839 {840 bool status = false;841 simple = psMetadataLookupBool(&status, config->args, "-simple");842 if (!status) {843 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");844 psFree(output);845 return false;846 }847 }848 849 610 // negative simple so the default is true 850 611 if (!ippdbPrintMetadatas(stdout, output, "pstampJob", !simple)) { … … 863 624 PS_ASSERT_PTR_NON_NULL(config, false); 864 625 865 bool status = false; 866 psU64 limit = psMetadataLookupU64(&status, config->args, "-limit"); 867 if (!status) { 868 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -limit"); 869 return false; 870 } 871 872 psString query = psStringCopy( 873 "SELECT" 874 " *" 875 " FROM pstampJob" 876 " WHERE state = 'run'" 877 ); 878 879 if (config->where) { 880 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "pstampJob"); 626 psMetadata *where = psMetadataAlloc(); 627 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); 628 629 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 630 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 631 632 psString query = pxDataGet("pstamptool_pendingjob.sql"); 633 if (!query) { 634 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 635 return false; 636 } 637 638 // use psDBGenerateWhereSQL because the SQL yields an intermediate table 639 if (psListLength(where->list)) { 640 psString whereClause = psDBGenerateWhereConditionSQL(where, "pstampJob"); 881 641 psStringAppend(&query, " AND %s", whereClause); 882 642 psFree(whereClause); 883 643 } 644 psFree(where); 884 645 885 646 // treat limit == 0 as "no limit" … … 908 669 } 909 670 910 bool simple = false;911 {912 bool status = false;913 simple = psMetadataLookupBool(&status, config->args, "-simple");914 if (!status) {915 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");916 psFree(output);917 return false;918 }919 }920 921 671 // negative simple so the default is true 922 672 if (!ippdbPrintMetadatas(stdout, output, "pstampJob", !simple)) { … … 933 683 static bool processedJobMode(pxConfig *config) 934 684 { 935 bool status; 936 937 PS_ASSERT_PTR_NON_NULL(config, false); 938 939 psString job_id = psMetadataLookupStr(&status, config->args, "-job_id"); 940 if (!status) { 941 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -job_id"); 942 return false; 943 } 944 if (!job_id) { 945 psError(PS_ERR_UNKNOWN, true, "-job_id is required"); 946 return false; 947 } 948 psString state = psMetadataLookupStr(&status, config->args, "-state"); 949 if (!status) { 950 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -state"); 951 return false; 952 } 953 if (!state) { 954 psError(PS_ERR_UNKNOWN, true, "-state is required"); 955 return false; 956 } 957 psString fault = psMetadataLookupStr(&status, config->args, "-fault"); 958 if (!status) { 959 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -fault"); 960 return false; 961 } 685 PS_ASSERT_PTR_NON_NULL(config, false); 686 687 PXOPT_LOOKUP_STR(job_id, config->args, "-job_id", true, false); 688 PXOPT_LOOKUP_STR(state, config->args, "-state", true, false); 689 PXOPT_LOOKUP_STR(fault, config->args, "-fault", false, false); 962 690 963 691 psString faultStr = NULL; … … 967 695 psStringAppend(&faultStr, ", fault = '%s'", fault); 968 696 } 969 697 970 698 char *query ="UPDATE pstampJob" 971 " SET state = '%s' %s"972 " WHERE job_id = '%s'";973 699 " SET state = '%s' %s" 700 " WHERE job_id = '%s'"; 701 974 702 if (!p_psDBRunQuery(config->dbh, query, state, faultStr, job_id)) { 975 703 psError(PS_ERR_UNKNOWN, false, "database error"); -
trunk/ippTools/src/pstamptoolConfig.c
r18531 r18561 45 45 // -adddatastore 46 46 psMetadata *adddatastoreArgs = psMetadataAlloc(); 47 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-uri", 0, 48 "define storage uri", NULL); 49 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-last_fileset", 0, 50 "define last fileset seen", NULL); 51 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-state", 0, 52 "define datastore state", NULL); 53 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-out_product", 0, 54 "define output product name", NULL); 47 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-uri", 0, "define storage uri (required)", NULL); 48 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-out_product", 0, "define output product name (required)", NULL); 49 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-last_fileset", 0, "define last fileset seen", NULL); 50 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-state", 0, "define datastore state", "enabled"); 55 51 56 52 // -datastore 57 53 psMetadata *datastoreArgs = psMetadataAlloc(); 58 psMetadataAddBool(datastoreArgs, PS_LIST_TAIL, "-simple", 0, 59 "use the simple output format", false); 60 psMetadataAddStr(datastoreArgs, PS_LIST_TAIL, "-ds_id", 0, 61 "define ds_id", NULL); 54 psMetadataAddStr(datastoreArgs, PS_LIST_TAIL, "-ds_id", 0, "define ds_id", NULL); 55 psMetadataAddBool(datastoreArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 62 56 63 57 // -moddatastore 64 58 psMetadata *moddatastoreArgs = psMetadataAlloc(); 65 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-ds_id", 0, 66 "define ds_id", NULL); 67 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-last_fileset", 0, 68 "define storage uri", NULL); 69 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-state", 0, 70 "define storage uri", NULL); 71 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-out_product", 0, 72 "define output product name", NULL); 73 59 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-ds_id", 0, "define ds_id", "0"); 60 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-last_fileset", 0, "define storage uri", NULL); 61 psMetadataAddStr(moddatastoreArgs, PS_LIST_TAIL, "-state", 0, "define storage uri", NULL); 74 62 75 63 // -addreq 76 64 psMetadata *addreqArgs = psMetadataAlloc(); 77 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0, 78 "define request file uri", NULL); 79 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-ds_id", 0, 80 "define request ds_id", NULL); 65 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-uri", 0, "define request file uri", NULL); 66 psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-ds_id", 0, "define request ds_id", NULL); 67 // psMetadataAddStr(addreqArgs, PS_LIST_TAIL, "-out_fileset", 0, "define request output_fileset", NULL); 81 68 82 69 // -pendingreq 83 70 psMetadata *pendingreqArgs = psMetadataAlloc(); 84 psMetadataAddStr(pendingreqArgs, PS_LIST_TAIL, "-req_id", 0, 85 "define req_id", NULL); 86 psMetadataAddU64(pendingreqArgs, PS_LIST_TAIL, "-limit", 0, 87 "limit result set to N items", 0); 88 psMetadataAddBool(pendingreqArgs, PS_LIST_TAIL, "-simple", 0, 89 "use the simple output format", false); 71 psMetadataAddStr(pendingreqArgs, PS_LIST_TAIL, "-req_id", 0, "define req_id", NULL); 72 psMetadataAddU64(pendingreqArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 73 psMetadataAddBool(pendingreqArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 90 74 91 75 // -listreq 92 76 psMetadata *listreqArgs = psMetadataAlloc(); 93 psMetadataAddStr(listreqArgs, PS_LIST_TAIL, "-req_id", 0, 94 "define req_id", NULL); 95 psMetadataAddU64(listreqArgs, PS_LIST_TAIL, "-limit", 0, 96 "limit result set to N items", 0); 97 psMetadataAddBool(listreqArgs, PS_LIST_TAIL, "-simple", 0, 98 "use the simple output format", false); 77 psMetadataAddStr(listreqArgs, PS_LIST_TAIL, "-req_id", 0, "define req_id", NULL); 78 psMetadataAddU64(listreqArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 79 psMetadataAddBool(listreqArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 99 80 100 81 // -completedreq 101 82 psMetadata *completedreqArgs = psMetadataAlloc(); 102 psMetadataAddU64(completedreqArgs, PS_LIST_TAIL, "-limit", 0, 103 "limit result set to N items", 0); 104 psMetadataAddBool(completedreqArgs, PS_LIST_TAIL, "-simple", 0, 105 "use the simple output format", false); 83 psMetadataAddU64(completedreqArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 84 psMetadataAddBool(completedreqArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 106 85 107 86 // -processedreq 108 87 psMetadata *processedreqArgs = psMetadataAlloc(); 109 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-req_id", 0, 110 "req_id for which to change state", NULL); 111 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-state", 0, 112 "new state", NULL); 113 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-outProduct", 0, 114 "define request outProduct", NULL); 115 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-fault", 0, 116 "define request fault code", NULL); 117 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-uri", 0, 118 "define the uri", NULL); 119 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-name", 0, 120 "define the name", NULL); 121 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-reqType", 0, 122 "define the reqType", NULL); 88 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-req_id", 0, "req_id for which to change state", NULL); 89 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-state", 0, "new state", NULL); 90 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-outProduct", 0, "define request outProduct", NULL); 91 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-fault", 0, "define request fault code", NULL); 92 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-uri", 0, "define the uri", NULL); 93 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-name", 0, "define the name", NULL); 94 psMetadataAddStr(processedreqArgs, PS_LIST_TAIL, "-reqType", 0, "define the reqType", NULL); 123 95 124 96 // -revertreq 125 97 psMetadata *revertreqArgs = psMetadataAlloc(); 126 psMetadataAddS64(revertreqArgs, PS_LIST_TAIL, "-req_id", 0, 127 "req_id for which to revert", 0); 98 psMetadataAddS64(revertreqArgs, PS_LIST_TAIL, "-req_id", 0, "req_id for which to revert", 0); 128 99 129 100 // -addjob 130 101 psMetadata *addjobArgs = psMetadataAlloc(); 131 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-uri", 0, 132 "define job file uri", NULL); 133 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-req_id", 0, 134 "define job req_id", NULL); 135 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-rownum", 0, 136 "define job rownum", NULL); 137 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-job_type", 0, 138 "define job job_type", NULL); 139 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-outputBase", 0, 140 "define job outputBase", NULL); 141 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-args", 0, 142 "define job args", NULL); 143 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-state", 0, 144 "new state", NULL); 145 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-fault", 0, 146 "new result", NULL); 102 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-uri", 0, "define job file uri", NULL); 103 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-req_id", 0, "define job req_id", NULL); 104 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-rownum", 0, "define job rownum", NULL); 105 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-job_type", 0, "define job job_type", "stamp"); 106 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-outputBase", 0, "define job outputBase", NULL); 107 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-args", 0, "define job args", NULL); 108 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-state", 0, "new state", "run"); 109 // psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-result", 0, "new result", "0"); 110 psMetadataAddStr(addjobArgs, PS_LIST_TAIL, "-fault", 0, "new result", NULL); 147 111 148 112 // -listjob 149 113 psMetadata *listjobArgs = psMetadataAlloc(); 150 psMetadataAddStr(listjobArgs, PS_LIST_TAIL, "-req_id", 0, 151 "define request", NULL); 152 psMetadataAddStr(listjobArgs, PS_LIST_TAIL, "-job_id", 0, 153 "define job", NULL); 154 psMetadataAddU64(listjobArgs, PS_LIST_TAIL, "-limit", 0, 155 "limit result set to N items", 0); 156 psMetadataAddBool(listjobArgs, PS_LIST_TAIL, "-simple", 0, 157 "use the simple output format", false); 114 psMetadataAddStr(listjobArgs, PS_LIST_TAIL, "-req_id", 0, "define request", NULL); 115 psMetadataAddStr(listjobArgs, PS_LIST_TAIL, "-job_id", 0, "define job", NULL); 116 psMetadataAddU64(listjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 117 psMetadataAddBool(listjobArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 158 118 159 119 // -pendingjob 160 120 psMetadata *pendingjobArgs = psMetadataAlloc(); 161 psMetadataAddStr(pendingjobArgs, PS_LIST_TAIL, "-job_id", 0, 162 "define job", NULL); 163 psMetadataAddU64(pendingjobArgs, PS_LIST_TAIL, "-limit", 0, 164 "limit result set to N items", 0); 165 psMetadataAddBool(pendingjobArgs, PS_LIST_TAIL, "-simple", 0, 166 "use the simple output format", false); 121 psMetadataAddStr(pendingjobArgs, PS_LIST_TAIL, "-job_id", 0, "define job", NULL); 122 psMetadataAddU64(pendingjobArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 123 psMetadataAddBool(pendingjobArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 167 124 168 125 // -processedjob 169 126 psMetadata *processedjobArgs = psMetadataAlloc(); 170 psMetadataAddStr(processedjobArgs, PS_LIST_TAIL, "-job_id", 0, 171 "req_id for which to change state", NULL); 172 psMetadataAddStr(processedjobArgs, PS_LIST_TAIL, "-state", 0, 173 "new state", NULL); 174 psMetadataAddStr(processedjobArgs, PS_LIST_TAIL, "-fault", 0, 175 "new result", NULL); 176 177 #define PXTOOL_MODE(option, modeval, argset) \ 178 { \ 179 int N = 0; \ 180 if ((N = psArgumentGet (argc, argv, option))) { \ 181 psArgumentRemove (N, &argc, argv); \ 182 if (config->mode) { \ 183 psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); \ 184 psFree(config); \ 185 return NULL; \ 186 } \ 187 config->mode = modeval; \ 188 config->args = psMemIncrRefCounter(argset); \ 189 } \ 190 if (!psMetadataAddMetadata(argSets, PS_LIST_TAIL, option, 0, NULL, argset)) {;\ 191 psError(PS_ERR_UNKNOWN, false, "failed to add argset for %s", option); \ 192 } \ 193 psFree(argset); \ 194 } 127 psMetadataAddStr(processedjobArgs, PS_LIST_TAIL, "-job_id", 0, "req_id for which to change state", NULL); 128 psMetadataAddStr(processedjobArgs, PS_LIST_TAIL, "-state", 0, "new state", NULL); 129 // psMetadataAddStr(processedjobArgs, PS_LIST_TAIL, "-result", 0, "new result", NULL); 130 psMetadataAddStr(processedjobArgs, PS_LIST_TAIL, "-fault", 0, "new result", NULL); 195 131 196 132 psMetadata *argSets = psMetadataAlloc(); … … 224 160 psFree(modes); 225 161 226 // setup search criterion227 #define addWhereStr(name) \228 { \229 psString str = NULL; \230 bool status = false; \231 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \232 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\233 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \234 psFree(config); \235 return NULL; \236 } \237 } \238 }239 240 // generate SQL where clause241 config->where = psMetadataAlloc();242 243 addWhereStr(req_id);244 addWhereStr(job_id);245 246 if (config->where->list->n < 1) {247 psFree(config->where);248 config->where = NULL;249 }250 251 162 // define Database handle, if used 252 163 // do this last so we don't setup a connection before CLI options are -
trunk/ippTools/src/pxconfig.c
r17015 r18561 43 43 config->dbh = NULL; 44 44 config->modules = NULL; 45 config->where = NULL;45 // XXX config->where = NULL; 46 46 config->args = NULL; 47 47 … … 54 54 psFree(config->dbh); 55 55 psFree(config->modules); 56 psFree(config->where);56 // XXX psFree(config->where); 57 57 psFree(config->args); 58 58 } -
trunk/ippTools/src/pxconfig.h
r14018 r18561 30 30 psDB *dbh; 31 31 psMetadata *args; 32 psMetadata *where;32 // XXX deprecate psMetadata *where; 33 33 int argc; 34 34 char **argv; -
trunk/ippTools/src/pxinjectConfig.c
r18336 r18561 45 45 // -newExp 46 46 psMetadata *newExpArgs = psMetadataAlloc(); 47 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-tmp_exp_name", 0, 48 "define the exp_name (required)", NULL); 49 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-tmp_inst", 0, 50 "define the camera name (required)", NULL); 51 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-tmp_telescope", 0, 52 "define the telescope name (required)", NULL); 53 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-workdir", 0, 54 "define workdir (required)", 0); 55 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-reduction", 0, 56 "define reduction class", NULL); 57 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-dvodb", 0, 58 "define the dvodb for the next processing step", NULL); 59 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-tess_id", 0, 60 "define the tess_id for the next processing step", NULL); 61 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-end_stage", 0, 62 "define the end goal processing step", NULL); 63 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-label", 0, 64 "define a label (carried to chip stage)", NULL); 65 psMetadataAddBool(newExpArgs, PS_LIST_TAIL, "-simple", 0, 66 "use the simple output format", false); 47 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-tmp_exp_name", 0, "define the exp_name (required)", NULL); 48 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-tmp_inst", 0, "define the camera name (required)", NULL); 49 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-tmp_telescope", 0, "define the telescope name (required)", NULL); 50 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", 0); 51 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class", NULL); 52 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-dvodb", 0, "define the dvodb for the next processing step", NULL); 53 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-tess_id", 0, "define the tess_id for the next processing step", NULL); 54 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-end_stage", 0, "define the end goal processing step", NULL); 55 psMetadataAddStr(newExpArgs, PS_LIST_TAIL, "-label", 0, "define a label (carried to chip stage)", NULL); 56 psMetadataAddBool(newExpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 67 57 68 58 // -newImfile 69 59 psMetadata *newImfileArgs = psMetadataAlloc(); 70 psMetadataAddS64(newImfileArgs, PS_LIST_TAIL, "-exp_id", 0, 71 "define the exp_id (required)", 0); 72 psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-tmp_class_id", 0, 73 "define the class ID (required)", NULL); 74 psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-uri", 0, 75 "define the URI (required)", NULL); 60 psMetadataAddS64(newImfileArgs, PS_LIST_TAIL, "-exp_id", 0, "define the exp_id (required)", 0); 61 psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-tmp_class_id", 0, "define the class ID (required)", NULL); 62 psMetadataAddStr(newImfileArgs, PS_LIST_TAIL, "-uri", 0, "define the URI (required)", NULL); 76 63 77 64 // -updatenewExp 78 65 psMetadata *updatenewExpArgs = psMetadataAlloc(); 79 psMetadataAddS64(updatenewExpArgs, PS_LIST_TAIL, "-exp_id", 0, 80 "define the exp_id (required)", 0); 81 psMetadataAddStr(updatenewExpArgs, PS_LIST_TAIL, "-state", 0, 82 "set state (required)", NULL); 83 66 psMetadataAddS64(updatenewExpArgs, PS_LIST_TAIL, "-exp_id", 0, "define the exp_id (required)", 0); 67 psMetadataAddStr(updatenewExpArgs, PS_LIST_TAIL, "-state", 0, "set state (required)", NULL); 84 68 85 69 psMetadata *argSets = psMetadataAlloc(); … … 101 85 psFree(modes); 102 86 103 // setup search criterion104 #define addWhereStr(name) \105 { \106 psString str = NULL; \107 bool status = false; \108 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \109 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\110 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \111 psFree(config); \112 return NULL; \113 } \114 } \115 }116 117 // generate SQL where clause118 config->where = psMetadataAlloc();119 120 addWhereStr(det_id);121 {122 int n = 0;123 bool status = false;124 if ((n = psMetadataLookupS32(&status, config->args, "-iteration"))) {125 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "iteration", 0, "==", n)) {126 psError(PS_ERR_UNKNOWN, false, "failed to add item iteration");127 psFree(config);128 return NULL;129 }130 }131 }132 addWhereStr(det_type);133 addWhereStr(exp_id);134 addWhereStr(class_id);135 // convert '-inst' to 'camera'136 {137 psString str = NULL;138 bool status = false;139 if ((str = psMetadataLookupStr(&status, config->args, "-inst"))) {140 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, "camera", 0, "==", str)) {141 psError(PS_ERR_UNKNOWN, false, "failed to add item camera");142 psFree(config);143 return NULL;144 }145 }146 }147 addWhereStr(telescope);148 {149 int n = 0;150 bool status = false;151 if ((n = psMetadataLookupS32(&status, config->args, "-imfiles"))) {152 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "imfiles", 0, "==", n)) {153 psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles");154 psFree(config);155 return NULL;156 }157 }158 }159 addWhereStr(filter);160 addWhereStr(stats);161 addWhereStr(recipe);162 {163 int n = 0;164 bool status = false;165 if ((n = psMetadataLookupS32(&status, config->args, "-guide_version"))) {166 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, "guide_version", 0, "==", n)) {167 psError(PS_ERR_UNKNOWN, false, "failed to add item guide_version");168 psFree(config);169 return NULL;170 }171 }172 }173 {174 bool boolean = false;175 bool status = false;176 177 if ((boolean = psMetadataLookupBool(&status, config->args, "-accept"))) {178 if (!psMetadataAddBool(config->where, PS_LIST_TAIL, "accept", 0, "==", boolean)) {179 psError(PS_ERR_UNKNOWN, false, "failed to add item accept");180 psFree(config);181 return NULL;182 }183 }184 }185 186 if (config->where->list->n < 1) {187 psFree(config->where);188 config->where = NULL;189 }190 191 87 // define Database handle, if used 192 88 // do this last so we don't setup a connection before CLI options are -
trunk/ippTools/src/pxtools.h
r18366 r18561 22 22 23 23 #include <stdio.h> 24 #include <string.h> // for strcmp and strncmp 24 25 #include <strings.h> // for strcasecmp 25 26 #include <unistd.h> // for unlink 27 28 // #include <stdlib.h> 29 // #include <stdint.h> 30 // #include <inttypes.h> 31 26 32 #include <pslib.h> 27 33 #include <psmodules.h> … … 253 259 PXOPT_COPY_PRIMITIVE(from, to, psU64, U64, oldname, newname, comment) 254 260 261 262 /*** these PXOPT_ADD_WHERE macros are used to construct the default sql elements ***/ 263 264 #define PXOPT_ADD_WHERE_STR(name) \ 265 { \ 266 psString str = NULL; \ 267 bool status = false; \ 268 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \ 269 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\ 270 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \ 271 psFree(config); \ 272 return NULL; \ 273 } \ 274 } \ 275 } 276 277 #define PXOPT_ADD_WHERE_STR_ALIAS(name,realname) \ 278 { \ 279 psString str = NULL; \ 280 bool status = false; \ 281 if ((str = psMetadataLookupStr(&status, config->args, name))) { \ 282 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, realname, 0, "==", str)) {\ 283 psError(PS_ERR_UNKNOWN, false, "failed to add item %s", name); \ 284 psFree(config); \ 285 return NULL; \ 286 } \ 287 } \ 288 } 289 290 #define PXOPT_ADD_WHERE_S16(name) \ 291 { \ 292 psS16 s16 = 0; \ 293 bool status = false; \ 294 if ((s16= psMetadataLookupS16(&status, config->args, "-" #name))) { \ 295 if (!psMetadataAddS16(config->where, PS_LIST_TAIL, #name, 0, "==", s16)) { \ 296 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \ 297 psFree(config); \ 298 return NULL; \ 299 } \ 300 } \ 301 } 302 303 #define PXOPT_ADD_WHERE_BOOL(name) \ 304 { \ 305 bool value = false; \ 306 bool status = false; \ 307 if ((value = psMetadataLookupBool(&status, config->args, "-" #name))) { \ 308 if (!psMetadataAddBool(config->where, PS_LIST_TAIL, #name, 0, "==", value)) { \ 309 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \ 310 psFree(config); \ 311 return NULL; \ 312 } \ 313 } \ 314 } 315 316 #define PXOPT_ADD_WHERE_S32(name) \ 317 { \ 318 psS32 s32 = 0; \ 319 bool status = false; \ 320 if ((s32= psMetadataLookupS32(&status, config->args, "-" #name))) { \ 321 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, #name, 0, "==", s32)) { \ 322 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \ 323 psFree(config); \ 324 return NULL; \ 325 } \ 326 } \ 327 } 328 329 #define PXOPT_ADD_WHERE_S64(name) \ 330 { \ 331 psS64 s64 = 0; \ 332 bool status = false; \ 333 if ((s64= psMetadataLookupS64(&status, config->args, "-" #name))) { \ 334 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, #name, 0, "==", s64)) { \ 335 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \ 336 psFree(config); \ 337 return NULL; \ 338 } \ 339 } \ 340 } 341 342 #define PXOPT_ADD_WHERE_F32(name) \ 343 { \ 344 psF32 var = 0; \ 345 bool status = false; \ 346 if ((var = psMetadataLookupF32(&status, config->args, "-" #name))) { \ 347 if (!isnan(var)) { \ 348 if (!psMetadataAddF32(config->where, PS_LIST_TAIL, #name, 0, "==", var)) { \ 349 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \ 350 psFree(config); \ 351 return NULL; \ 352 } \ 353 } \ 354 } \ 355 } 356 357 #define PXOPT_ADD_WHERE_F64(name) \ 358 { \ 359 psF64 var = 0; \ 360 bool status = false; \ 361 if ((var = psMetadataLookupF64(&status, config->args, "-" #name))) { \ 362 if (!isnan(var)) { \ 363 if (!psMetadataAddF64(config->where, PS_LIST_TAIL, #name, 0, "==", var)) { \ 364 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \ 365 psFree(config); \ 366 return NULL; \ 367 } \ 368 } \ 369 } \ 370 } 371 372 #define PXOPT_ADD_WHERE_BOOL_ALIAS(flag,name) \ 373 { \ 374 bool value = 0; \ 375 bool status = false; \ 376 if ((value = psMetadataLookupBool(&status, config->args, flag))) { \ 377 if (!psMetadataAddBOOL(config->where, PS_LIST_TAIL, name, 0, "==", value)) { \ 378 psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \ 379 psFree(config); \ 380 return NULL; \ 381 } \ 382 } \ 383 } 384 385 #define PXOPT_ADD_WHERE_S16_ALIAS(flag,name) \ 386 { \ 387 psS16 s16 = 0; \ 388 bool status = false; \ 389 if ((s16= psMetadataLookupS16(&status, config->args, flag))) { \ 390 if (!psMetadataAddS16(config->where, PS_LIST_TAIL, name, 0, "==", s16)) { \ 391 psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \ 392 psFree(config); \ 393 return NULL; \ 394 } \ 395 } \ 396 } 397 398 #define PXOPT_ADD_WHERE_S32_ALIAS(flag,name) \ 399 { \ 400 psS32 s32 = 0; \ 401 bool status = false; \ 402 if ((s32= psMetadataLookupS32(&status, config->args, flag))) { \ 403 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, name, 0, "==", s32)) { \ 404 psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \ 405 psFree(config); \ 406 return NULL; \ 407 } \ 408 } \ 409 } 410 411 #define PXOPT_ADD_WHERE_S64_ALIAS(flag,name) \ 412 { \ 413 psS64 s64 = 0; \ 414 bool status = false; \ 415 if ((s64= psMetadataLookupS64(&status, config->args, flag))) { \ 416 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, name, 0, "==", s64)) { \ 417 psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \ 418 psFree(config); \ 419 return NULL; \ 420 } \ 421 } \ 422 } 423 424 #define PXOPT_ADD_WHERE_F32_ALIAS(flag,name) \ 425 { \ 426 psF32 var = 0; \ 427 bool status = false; \ 428 if ((var = psMetadataLookupF32(&status, config->args, flag))) { \ 429 if (!isnan(var)) { \ 430 if (!psMetadataAddF32(config->where, PS_LIST_TAIL, name, 0, "==", var)) { \ 431 psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \ 432 psFree(config); \ 433 return NULL; \ 434 } \ 435 } \ 436 } \ 437 } 438 439 #define PXOPT_ADD_WHERE_F64_ALIAS(flag,name) \ 440 { \ 441 psF64 var = 0; \ 442 bool status = false; \ 443 if ((var = psMetadataLookupF64(&status, config->args, flag))) { \ 444 if (!isnan(var)) { \ 445 if (!psMetadataAddF64(config->where, PS_LIST_TAIL, name, 0, "==", var)) { \ 446 psError(PS_ERR_UNKNOWN, false, "failed to add item %s", flag); \ 447 psFree(config); \ 448 return NULL; \ 449 } \ 450 } \ 451 } \ 452 } 453 454 #define PXOPT_ADD_WHERE_TIME_STR(name) \ 455 { \ 456 psString str = NULL; \ 457 bool status = false; \ 458 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \ 459 psTime *time = psTimeFromISO(str, PS_TIME_UTC); \ 460 if (!time) { \ 461 psError(PS_ERR_UNKNOWN, false, "failed to convert " #name " into a psTime object"); \ 462 psFree(config); \ 463 return NULL; \ 464 } \ 465 psMetadataItem *item = psMetadataLookup(config->args, "-" #name); \ 466 if (item) { \ 467 str = item->comment; \ 468 } else { \ 469 str = NULL; \ 470 } \ 471 if (!psMetadataAddTime(config->where, PS_LIST_TAIL, #name, 0, str, time)) {\ 472 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \ 473 psFree(config); \ 474 return NULL; \ 475 } \ 476 psFree(time); \ 477 } \ 478 } 479 255 480 #endif // PXTOOLS_H -
trunk/ippTools/src/pztool.c
r18314 r18561 162 162 PS_ASSERT_PTR_NON_NULL(config, false); 163 163 164 psMetadata *where = psMetadataAlloc(); 165 PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "=="); 166 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 167 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 168 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 169 164 170 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 165 171 166 172 psString query = psStringCopy("SELECT * FROM summitExp"); 167 173 168 if ( config->where) {169 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "summitExp");174 if (psListLength(where->list)) { 175 psString whereClause = psDBGenerateWhereConditionSQL(where, "summitExp"); 170 176 psStringAppend(&query, " AND %s", whereClause); 171 177 psFree(whereClause); 172 178 } 179 psFree(where); 173 180 174 181 if (!p_psDBRunQuery(config->dbh, query)) { … … 206 213 PS_ASSERT_PTR_NON_NULL(config, false); 207 214 215 psMetadata *where = psMetadataAlloc(); 216 PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "=="); 217 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 218 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 219 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 220 208 221 PXOPT_LOOKUP_BOOL(desc, config->args, "-desc", false); 209 222 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 210 223 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 211 224 225 // XXX leave this query here ? 212 226 psString query = psStringCopy( 213 227 "SELECT" … … 223 237 ); 224 238 225 if ( config->where) {226 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "pzDownloadExp");239 if (psListLength(where->list)) { 240 psString whereClause = psDBGenerateWhereConditionSQL(where, "pzDownloadExp"); 227 241 psStringAppend(&query, " AND %s", whereClause); 228 242 psFree(whereClause); 229 243 } 244 psFree(where); 230 245 231 246 psStringAppend(&query, " ORDER BY summitExp.dateobs"); … … 274 289 { 275 290 PS_ASSERT_PTR_NON_NULL(config, false); 291 292 psMetadata *where = psMetadataAlloc(); 293 PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "=="); 294 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); 295 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 296 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 276 297 277 298 PXOPT_LOOKUP_BOOL(desc, config->args, "-desc", false); … … 300 321 psStringAppend(&query, " WHERE camera = \"%s\"", camera); 301 322 302 if ( config->where) {303 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "pzDownloadImfile");323 if (psListLength(where->list)) { 324 psString whereClause = psDBGenerateWhereConditionSQL(where, "pzDownloadImfile"); 304 325 psStringAppend(&query, " AND %s", whereClause); 305 326 psFree(whereClause); … … 347 368 psFree(result); 348 369 } 370 psFree(where); 349 371 350 372 // stitch the arrays of imfiles together … … 378 400 // default values 379 401 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 402 403 // NOTE : the rest of the command-line args are parsed in copydoneCompleteExp 380 404 381 405 if (!pzDownloadImfileInsert(config->dbh, … … 447 471 } 448 472 473 // XXX this is a bit ugly : could just use the PXOPT_COPY_* methods 474 // and not pass exp_name, camera, or telescope as additional args 449 475 psMetadata *where = psMetadataAlloc(); 450 476 if (exp_name) { … … 472 498 } 473 499 474 if ( config->where) {500 if (psListLength(where->list)) { 475 501 psString whereClause = psDBGenerateWhereSQL(where, NULL); 476 502 psStringAppend(&query, " %s", whereClause); … … 720 746 PS_ASSERT_PTR_NON_NULL(config, false); 721 747 748 psMetadata *where = psMetadataAlloc(); 749 PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "=="); 750 PXOPT_COPY_STR(config->args, where, "-inst", "inst", "=="); 751 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 752 PXOPT_COPY_STR(config->args, where, "-class", "class", "=="); 753 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 754 722 755 PXOPT_LOOKUP_S16(code, config->args, "-code", true, false); 723 756 724 if (!pxSetFaultCode(config->dbh, "pzDownloadImfile", config->where, code)) {757 if (!pxSetFaultCode(config->dbh, "pzDownloadImfile", where, code)) { 725 758 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 726 return false; 727 } 759 psFree (where); 760 return false; 761 } 762 psFree(where); 728 763 729 764 return true; … … 734 769 { 735 770 PS_ASSERT_PTR_NON_NULL(config, false); 771 772 psMetadata *where = psMetadataAlloc(); 773 PXOPT_COPY_STR(config->args, where, "-exp_name", "exp_name", "=="); 774 PXOPT_COPY_STR(config->args, where, "-inst", "inst", "=="); 775 PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "=="); 776 PXOPT_COPY_STR(config->args, where, "-class", "class", "=="); 777 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 736 778 737 779 psString query = pxDataGet("pztool_revertcopied.sql"); … … 741 783 } 742 784 743 if ( config->where) {744 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "pzDownloadImfile");785 if (psListLength(where->list)) { 786 psString whereClause = psDBGenerateWhereConditionSQL(where, "pzDownloadImfile"); 745 787 psStringAppend(&query, " AND %s", whereClause); 746 788 psFree(whereClause); 747 789 } 790 psFree(where); 748 791 749 792 if (!p_psDBRunQuery(config->dbh, query)) { … … 803 846 { 804 847 PS_ASSERT_PTR_NON_NULL(config, false); 848 849 // NOTE : the command-line args are parsed in copydoneCompleteExp 805 850 806 851 // start a transaction so it's all rows or nothing -
trunk/ippTools/src/pztoolConfig.c
r18314 r18561 45 45 // -adddatastore 46 46 psMetadata *adddatastoreArgs = psMetadataAlloc(); 47 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-inst", 0, 48 "define camera ID", NULL); 49 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-telescope", 0, 50 "define telescope ID", NULL); 51 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-uri", 0, 52 "define storage uri", NULL); 47 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-inst", 0, "define camera ID", NULL); 48 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope ID", NULL); 49 psMetadataAddStr(adddatastoreArgs, PS_LIST_TAIL, "-uri", 0, "define storage uri", NULL); 53 50 54 51 // -datastore 55 52 psMetadata *datastoreArgs = psMetadataAlloc(); 56 psMetadataAddBool(datastoreArgs, PS_LIST_TAIL, "-simple", 0, 57 "use the simple output format", false); 53 psMetadataAddBool(datastoreArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 58 54 59 55 // -seen 60 56 psMetadata *seenArgs = psMetadataAlloc(); 61 psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-exp_name", 0, 62 "define exposure ID", NULL); 63 psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-inst", 0, 64 "define camera ID", NULL); 65 psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-telescope", 0, 66 "define telescope ID", NULL); 67 psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-exp_type", 0, 68 "define exposure type", NULL); 69 psMetadataAddBool(seenArgs, PS_LIST_TAIL, "-simple", 0, 70 "use the simple output format", false); 57 psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-exp_name", 0, "define exposure ID", NULL); 58 psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-inst", 0, "define camera ID", NULL); 59 psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope ID", NULL); 60 psMetadataAddStr(seenArgs, PS_LIST_TAIL, "-exp_type", 0, "define exposure type", NULL); 61 psMetadataAddBool(seenArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 71 62 72 63 // -pendingexp 73 64 psMetadata *pendingexpArgs = psMetadataAlloc(); 74 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-exp_name", 0, 75 "define exposure ID", NULL); 76 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-inst", 0, 77 "define camera ID", NULL); 78 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-telescope", 0, 79 "define telescope ID", NULL); 80 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-exp_type", 0, 81 "define exposure type", NULL); 82 psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-desc", 0, 83 "sort ouput in descending format", false); 84 psMetadataAddU64(pendingexpArgs, PS_LIST_TAIL, "-limit", 0, 85 "limit result set to N items", 0); 86 psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-simple", 0, 87 "use the simple output format", false); 65 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-exp_name", 0, "define exposure ID", NULL); 66 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-inst", 0, "define camera ID", NULL); 67 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope ID", NULL); 68 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-exp_type", 0, "define exposure type", NULL); 69 psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-desc", 0, "sort ouput in descending format", false); 70 psMetadataAddU64(pendingexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 71 psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 88 72 89 73 // -pendingimfile 90 74 psMetadata *pendingimfileArgs = psMetadataAlloc(); 91 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_name", 0, 92 "define exposure ID", NULL); 93 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-inst", 0, 94 "define camera ID", NULL); 95 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-telescope", 0, 96 "define telescope ID", NULL); 97 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_type", 0, 98 "define exposure type", NULL); 99 psMetadataAddBool(pendingimfileArgs, PS_LIST_TAIL, "-desc", 0, 100 "sort ouput in descending format", false); 101 psMetadataAddU64(pendingimfileArgs, PS_LIST_TAIL, "-limit", 0, 102 "limit result set to N items", 0); 103 psMetadataAddBool(pendingimfileArgs, PS_LIST_TAIL, "-simple", 0, 104 "use the simple output format", false); 75 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_name", 0, "define exposure ID", NULL); 76 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-inst", 0, "define camera ID", NULL); 77 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope ID", NULL); 78 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-exp_type", 0, "define exposure type", NULL); 79 psMetadataAddBool(pendingimfileArgs, PS_LIST_TAIL, "-desc", 0, "sort ouput in descending format", false); 80 psMetadataAddU64(pendingimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 81 psMetadataAddBool(pendingimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 105 82 106 83 // -copydone 107 84 psMetadata *copydoneArgs = psMetadataAlloc(); 108 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-exp_name", 0, 109 "define exposure ID (required)", NULL); 110 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-inst", 0, 111 "define camera ID (required)", NULL); 112 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-telescope", 0, 113 "define telescope ID (required)", NULL); 114 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-class", 0, 115 "define class", NULL); 116 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-class_id", 0, 117 "define class_id", NULL); 118 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-uri", 0, 119 "define storage uri", NULL); 120 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-workdir", 0, 121 "define the \"default\" workdir for this exposure", NULL); 122 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-dvodb", 0, 123 "define the dvodb for the next processing step", NULL); 124 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-tess_id", 0, 125 "define the tess_id for the next processing step", NULL); 126 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-end_stage", 0, 127 "define the end goal processing step", NULL); 128 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-label", 0, 129 "define the label for the chip stage", NULL); 130 psMetadataAddS16(copydoneArgs, PS_LIST_TAIL, "-code", 0, 131 "set fault code", 0); 85 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-exp_name", 0, "define exposure ID (required)", NULL); 86 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-inst", 0, "define camera ID (required)", NULL); 87 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope ID (required)", NULL); 88 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-class", 0, "define class", NULL); 89 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-class_id", 0, "define class_id", NULL); 90 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-uri", 0, "define storage uri", NULL); 91 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-workdir", 0, "define the \"default\" workdir for this exposure", NULL); 92 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-dvodb", 0, "define the dvodb for the next processing step", NULL); 93 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-tess_id", 0, "define the tess_id for the next processing step", NULL); 94 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-end_stage", 0, "define the end goal processing step", NULL); 95 psMetadataAddStr(copydoneArgs, PS_LIST_TAIL, "-label", 0, "define the label for the chip stage", NULL); 96 psMetadataAddS16(copydoneArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 132 97 133 98 // -copied 134 99 psMetadata *copiedArgs = psMetadataAlloc(); 135 psMetadataAddStr(copiedArgs, PS_LIST_TAIL, "-exp_name", 0, 136 "define exposure ID", NULL); 137 psMetadataAddStr(copiedArgs, PS_LIST_TAIL, "-inst", 0, 138 "define camera ID", NULL); 139 psMetadataAddStr(copiedArgs, PS_LIST_TAIL, "-telescope", 0, 140 "define telescope ID", NULL); 141 psMetadataAddStr(copiedArgs, PS_LIST_TAIL, "-class", 0, 142 "define class", NULL); 143 psMetadataAddStr(copiedArgs, PS_LIST_TAIL, "-class_id", 0, 144 "define class_id", NULL); 145 psMetadataAddBool(copiedArgs, PS_LIST_TAIL, "-faulted", 0, 146 "only return imfiles with a fault status set", false); 147 psMetadataAddU64(copiedArgs, PS_LIST_TAIL, "-limit", 0, 148 "limit result set to N items", 0); 149 psMetadataAddBool(copiedArgs, PS_LIST_TAIL, "-simple", 0, 150 "use the simple output format", false); 100 psMetadataAddStr(copiedArgs, PS_LIST_TAIL, "-exp_name", 0, "define exposure ID", NULL); 101 psMetadataAddStr(copiedArgs, PS_LIST_TAIL, "-inst", 0, "define camera ID", NULL); 102 psMetadataAddStr(copiedArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope ID", NULL); 103 psMetadataAddStr(copiedArgs, PS_LIST_TAIL, "-class", 0, "define class", NULL); 104 psMetadataAddStr(copiedArgs, PS_LIST_TAIL, "-class_id", 0, "define class_id", NULL); 105 psMetadataAddBool(copiedArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 106 psMetadataAddU64(copiedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 107 psMetadataAddBool(copiedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 151 108 152 109 // -updatecopied 153 110 psMetadata *updatecopiedArgs = psMetadataAlloc(); 154 psMetadataAddStr(updatecopiedArgs, PS_LIST_TAIL, "-exp_name", 0, 155 "define exposure ID (required)", NULL); 156 psMetadataAddStr(updatecopiedArgs, PS_LIST_TAIL, "-inst", 0, 157 "define camera ID (required)", NULL); 158 psMetadataAddStr(updatecopiedArgs, PS_LIST_TAIL, "-telescope", 0, 159 "define telescope ID (required)", NULL); 160 psMetadataAddStr(updatecopiedArgs, PS_LIST_TAIL, "-class", 0, 161 "define class", NULL); 162 psMetadataAddStr(updatecopiedArgs, PS_LIST_TAIL, "-class_id", 0, 163 "define class_id", NULL); 164 psMetadataAddS16(updatecopiedArgs, PS_LIST_TAIL, "-code", 0, 165 "search by fault code", 0); 111 psMetadataAddStr(updatecopiedArgs, PS_LIST_TAIL, "-exp_name", 0, "define exposure ID (required)", NULL); 112 psMetadataAddStr(updatecopiedArgs, PS_LIST_TAIL, "-inst", 0, "define camera ID (required)", NULL); 113 psMetadataAddStr(updatecopiedArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope ID (required)", NULL); 114 psMetadataAddStr(updatecopiedArgs, PS_LIST_TAIL, "-class", 0, "define class", NULL); 115 psMetadataAddStr(updatecopiedArgs, PS_LIST_TAIL, "-class_id", 0, "define class_id", NULL); 116 psMetadataAddS16(updatecopiedArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 166 117 167 118 // -revertcopied 168 119 psMetadata *revertcopiedArgs = psMetadataAlloc(); 169 psMetadataAddStr(revertcopiedArgs, PS_LIST_TAIL, "-exp_name", 0, 170 "define exposure ID (required)", NULL); 171 psMetadataAddStr(revertcopiedArgs, PS_LIST_TAIL, "-inst", 0, 172 "define camera ID (required)", NULL); 173 psMetadataAddStr(revertcopiedArgs, PS_LIST_TAIL, "-telescope", 0, 174 "define telescope ID (required)", NULL); 175 psMetadataAddStr(revertcopiedArgs, PS_LIST_TAIL, "-class", 0, 176 "define class", NULL); 177 psMetadataAddStr(revertcopiedArgs, PS_LIST_TAIL, "-class_id", 0, 178 "define class_id", NULL); 179 psMetadataAddS16(revertcopiedArgs, PS_LIST_TAIL, "-code", 0, 180 "search by fault code", 0); 120 psMetadataAddStr(revertcopiedArgs, PS_LIST_TAIL, "-exp_name", 0, "define exposure ID (required)", NULL); 121 psMetadataAddStr(revertcopiedArgs, PS_LIST_TAIL, "-inst", 0, "define camera ID (required)", NULL); 122 psMetadataAddStr(revertcopiedArgs, PS_LIST_TAIL, "-telescope", 0, "define telescope ID (required)", NULL); 123 psMetadataAddStr(revertcopiedArgs, PS_LIST_TAIL, "-class", 0, "define class", NULL); 124 psMetadataAddStr(revertcopiedArgs, PS_LIST_TAIL, "-class_id", 0, "define class_id", NULL); 125 psMetadataAddS16(revertcopiedArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 181 126 182 127 // -clearcommonfaults … … 185 130 // -advance 186 131 psMetadata *advanceArgs = psMetadataAlloc(); 187 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-workdir", 0, 188 "define the \"default\" workdir for this exposure", NULL); 189 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-dvodb", 0, 190 "define the dvodb for the next processing step", NULL); 191 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-tess_id", 0, 192 "define the tess_id for the next processing step", NULL); 193 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-end_stage", 0, 194 "define the end goal processing step", NULL); 195 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-label", 0, 196 "define the label for the chip stage", NULL); 132 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-workdir", 0, "define the \"default\" workdir for this exposure", NULL); 133 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-dvodb", 0, "define the dvodb for the next processing step", NULL); 134 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-tess_id", 0, "define the tess_id for the next processing step", NULL); 135 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-end_stage", 0, "define the end goal processing step", NULL); 136 psMetadataAddStr(advanceArgs, PS_LIST_TAIL, "-label", 0, "define the label for the chip stage", NULL); 197 137 198 138 psMetadata *argSets = psMetadataAlloc(); … … 222 162 psFree(modes); 223 163 224 // setup search criterion225 #define addWhereStr(name) \226 { \227 psString str = NULL; \228 bool status = false; \229 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \230 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\231 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \232 psFree(config); \233 return NULL; \234 } \235 } \236 }237 238 // generate SQL where clause239 config->where = psMetadataAlloc();240 241 addWhereStr(exp_name);242 addWhereStr(telescope);243 // convert '-inst' to 'camera'244 {245 psString str = NULL;246 bool status = false;247 if ((str = psMetadataLookupStr(&status, config->args, "-inst"))) {248 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, "camera", 0, "==", str)) {249 psError(PS_ERR_UNKNOWN, false, "failed to add item camera");250 psFree(config);251 return NULL;252 }253 }254 }255 addWhereStr(exp_type);256 addWhereStr(class);257 addWhereStr(class_id);258 259 if (config->where->list->n < 1) {260 psFree(config->where);261 config->where = NULL;262 }263 264 164 // define Database handle, if used 265 165 // do this last so we don't setup a connection before CLI options are -
trunk/ippTools/src/regtool.c
r18402 r18561 297 297 PS_ASSERT_PTR_NON_NULL(config, false); 298 298 299 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);300 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);301 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);302 303 299 psMetadata *where = psMetadataAlloc(); 304 300 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); … … 306 302 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 307 303 304 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 305 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 306 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 307 308 308 psString query = pxDataGet("regtool_processedimfile.sql"); 309 309 if (!query) { … … 313 313 } 314 314 315 if ( where) {315 if (psListLength(where->list)) { 316 316 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawImfile"); 317 317 psStringAppend(&query, " AND %s", whereClause); … … 381 381 PS_ASSERT_PTR_NON_NULL(config, false); 382 382 383 psMetadata *where = psMetadataAlloc(); 384 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 385 PXOPT_COPY_STR(config->args, where, "-tmp_class_id", "tmp_class_id", "=="); 386 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 387 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 388 383 389 psString query = pxDataGet("regtool_revertprocessedimfile.sql"); 384 390 if (!query) { 385 391 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 386 return false; 387 } 388 389 if (config->where) { 390 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "rawImfile"); 392 psFree(where); 393 return false; 394 } 395 396 if (psListLength(where->list)) { 397 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawImfile"); 391 398 psStringAppend(&query, " AND %s", whereClause); 392 399 psFree(whereClause); 393 400 } 401 psFree(where); 394 402 395 403 if (!p_psDBRunQuery(config->dbh, query)) { … … 413 421 PS_ASSERT_PTR_NON_NULL(config, false); 414 422 423 psMetadata *where = psMetadataAlloc(); 424 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 425 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 426 415 427 PXOPT_LOOKUP_S16(code, config->args, "-code", true, false); 416 428 417 if (!pxSetFaultCode(config->dbh, "rawImfile", config->where, code)) {429 if (!pxSetFaultCode(config->dbh, "rawImfile", where, code)) { 418 430 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 419 return false; 420 } 431 psFree (where); 432 return false; 433 } 434 psFree (where); 421 435 422 436 return true; … … 511 525 512 526 // optional 527 PXOPT_LOOKUP_TIME(dateobs, config->args, "-dateobs", false, false); 528 PXOPT_LOOKUP_STR(exp_type, config->args, "-exp_type", false, false); 529 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false); 513 530 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 514 531 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", false, false); 515 532 PXOPT_LOOKUP_STR(end_stage, config->args, "-end_stage", false, false); 516 PXOPT_LOOKUP_STR(exp_type, config->args, "-exp_type", false, false);517 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false);518 533 PXOPT_LOOKUP_STR(reduction, config->args, "-reduction", false, false); 519 534 PXOPT_LOOKUP_STR(filter, config->args, "-filter", false, false); … … 561 576 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 562 577 PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false); 563 PXOPT_LOOKUP_TIME(dateobs, config->args, "-dateobs", false, false);564 578 565 579 // default … … 789 803 PS_ASSERT_PTR_NON_NULL(config, false); 790 804 791 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);792 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);793 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);794 795 805 psString query = pxDataGet("regtool_processedexp.sql"); 796 806 if (!query) { … … 812 822 PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "=="); 813 823 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 814 PXOPT_COPY_F 64(config->args, where, "-airmass_min", "airmass", ">=");815 PXOPT_COPY_F 64(config->args, where, "-airmass_max", "airmass", "<");824 PXOPT_COPY_F32(config->args, where, "-airmass_min", "airmass", ">="); 825 PXOPT_COPY_F32(config->args, where, "-airmass_max", "airmass", "<"); 816 826 PXOPT_COPY_F64(config->args, where, "-ra_min", "ra", ">="); 817 827 PXOPT_COPY_F64(config->args, where, "-ra_max", "ra", "<"); … … 832 842 PXOPT_COPY_F64(config->args, where, "-az_min", "az", ">="); 833 843 PXOPT_COPY_F64(config->args, where, "-az_max", "az", "<"); 834 PXOPT_COPY_F 32(config->args, where, "-ccd_temp_min", "ccd_temp", ">=");835 PXOPT_COPY_F 32(config->args, where, "-ccd_temp_max", "ccd_temp", "<");844 PXOPT_COPY_F64(config->args, where, "-ccd_temp_min", "ccd_temp", ">="); 845 PXOPT_COPY_F64(config->args, where, "-ccd_temp_max", "ccd_temp", "<"); 836 846 PXOPT_COPY_F64(config->args, where, "-posang_min", "posang", ">="); 837 847 PXOPT_COPY_F64(config->args, where, "-posang_max", "posang", "<"); … … 839 849 PXOPT_COPY_F32(config->args, where, "-solang_min", "solang", ">="); 840 850 PXOPT_COPY_F32(config->args, where, "-solang_max", "solang", "<"); 851 852 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 853 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 854 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false); 841 855 842 856 if (psListLength(where->list)) { … … 906 920 PS_ASSERT_PTR_NON_NULL(config, false); 907 921 922 psMetadata *where = psMetadataAlloc(); 923 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 924 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 925 908 926 psString query = pxDataGet("regtool_revertprocessedexp.sql"); 909 927 if (!query) { 910 928 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 911 return false; 912 } 913 914 if (config->where) { 915 psString whereClause = psDBGenerateWhereConditionSQL(config->where, "rawExp"); 929 psFree(where); 930 return false; 931 } 932 933 if (psListLength(where->list)) { 934 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp"); 916 935 psStringAppend(&query, " AND %s", whereClause); 936 psFree(where); 917 937 psFree(whereClause); 918 938 } 939 psFree(where); 919 940 920 941 if (!p_psDBRunQuery(config->dbh, query)) { … … 938 959 PS_ASSERT_PTR_NON_NULL(config, false); 939 960 961 psMetadata *where = psMetadataAlloc(); 962 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 963 940 964 PXOPT_LOOKUP_S16(code, config->args, "-code", true, false); 941 965 942 if (!pxSetFaultCode(config->dbh, "rawExp", config->where, code)) {966 if (!pxSetFaultCode(config->dbh, "rawExp", where, code)) { 943 967 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 944 return false; 945 } 968 psFree(where); 969 return false; 970 } 971 psFree(where); 946 972 947 973 return true; -
trunk/ippTools/src/regtoolConfig.c
r18336 r18561 50 50 // -pendingimfile 51 51 psMetadata *pendingimfileArgs = psMetadataAlloc(); 52 // support for this options is unimplemented53 #if 054 ADD_OPT(Str, pendingimfileArgs, "-exp_id", "search by exposure ID", NULL);55 ADD_OPT(Str, pendingimfileArgs, "-class", "search by class", NULL);56 ADD_OPT(Str, pendingimfileArgs, "-class_id", "search by class ID", NULL);57 #endif58 52 ADD_OPT(U64, pendingimfileArgs, "-limit", "limit result set to N items", 0); 59 53 ADD_OPT(Bool, pendingimfileArgs, "-simple", "use the simple output format", false); … … 68 62 ADD_OPT(Str, addprocessedimfileArgs, "-class_id", "define class ID (required)", NULL); 69 63 ADD_OPT(Str, addprocessedimfileArgs, "-uri", "define URI (required)", NULL); 64 70 65 ADD_OPT(Str, addprocessedimfileArgs, "-exp_type", "define exposure type", NULL); 71 66 ADD_OPT(Str, addprocessedimfileArgs, "-filelevel", "define filelevel", NULL); 72 67 ADD_OPT(Str, addprocessedimfileArgs, "-filter", "define filter ", NULL); 73 68 ADD_OPT(Str, addprocessedimfileArgs, "-comment", "define comment ", NULL); 69 74 70 ADD_OPT(F32, addprocessedimfileArgs, "-airmass", "define airmass", NAN); 75 71 ADD_OPT(F64, addprocessedimfileArgs, "-ra", "define RA", NAN); … … 94 90 ADD_OPT(F32, addprocessedimfileArgs, "-m2_tip", "define M2 TIP position", NAN); 95 91 ADD_OPT(F32, addprocessedimfileArgs, "-m2_tilt", "define M2 TILT position", NAN); 92 96 93 ADD_OPT(F32, addprocessedimfileArgs, "-env_temperature","define Environmental Temperature", NAN); 97 94 ADD_OPT(F32, addprocessedimfileArgs, "-env_humidity", "define Environmental Humidity", NAN); … … 139 136 // -pendingexp 140 137 psMetadata *pendingexpArgs = psMetadataAlloc(); 141 // support for these options in unimplemented142 #if 0143 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", NULL);144 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-inst", 0, "search by camera", NULL);145 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-telescope",0, "search by telescope", NULL);146 psMetadataAddStr(pendingexpArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exposure type", NULL);147 #endif148 138 psMetadataAddU64(pendingexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 149 139 psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 156 146 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-telescope", 0, "define the telescope name (required)", NULL); 157 147 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-exp_tag", 0, "define the external exposure tag name (required)", NULL); 148 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-filelevel", 0, "define the data partitioning level of this file (required)", NULL); 149 158 150 psMetadataAddTime(addprocessedexpArgs, PS_LIST_TAIL, "-dateobs", 0, "define observation time", NULL); 159 151 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-exp_type", 0, "define exposure type", NULL); 160 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-filelevel", 0, "define the data partitioning level of this file", NULL);161 152 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-workdir", 0, "define the \"default\" workdir for this exposure", NULL); 162 153 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-dvodb", 0, "define the dvodb for the next processing step", NULL); … … 208 199 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-hostname", 0, "define host name", NULL); 209 200 psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 210 /*211 psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-recip", 0, "define URL", NULL);212 psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-mosiac", 0, "define URL", NULL);213 */214 201 215 202 // -processedexp … … 297 284 psFree(modes); 298 285 299 // setup search criterion300 #define addWhereStr(name) \301 { \302 psString str = NULL; \303 bool status = false; \304 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \305 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\306 psError(PXTOOLS_ERR_PROG, false, "failed to add item " #name); \307 psFree(config); \308 return NULL; \309 } \310 } \311 }312 313 // generate SQL where clause314 config->where = psMetadataAlloc();315 316 addWhereStr(exp_id);317 addWhereStr(exp_name);318 // convert '-inst' to 'camera'319 {320 psString str = NULL;321 bool status = false;322 if ((str = psMetadataLookupStr(&status, config->args, "-inst"))) {323 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, "camera", 0, "==", str)) {324 psError(PXTOOLS_ERR_PROG, false, "failed to add item camera");325 psFree(config);326 return NULL;327 }328 }329 }330 331 addWhereStr(telescope);332 addWhereStr(exp_type);333 addWhereStr(class);334 addWhereStr(class_id);335 addWhereStr(tmp_class_id);336 addWhereStr(filter);337 338 // convert '-code' to 'fault'339 {340 psS16 fault = 0;341 bool status = false;342 if ((fault = psMetadataLookupS16(&status, config->args, "-code"))) {343 if (!psMetadataAddS16(config->where, PS_LIST_TAIL, "fault", 0, "==", fault)) {344 psError(PS_ERR_UNKNOWN, false, "failed to add item fault");345 psFree(config);346 return NULL;347 }348 }349 }350 351 if (config->where->list->n < 1) {352 psFree(config->where);353 config->where = NULL;354 }355 356 357 286 // define Database handle, if used 358 287 config->dbh = psMemIncrRefCounter(pmConfigDB(config->modules)); -
trunk/ippTools/src/stacktool.c
r18336 r18561 524 524 PS_ASSERT_PTR_NON_NULL(config, false); 525 525 526 psMetadata *where = psMetadataAlloc(); 527 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 528 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); 529 526 530 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 527 531 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 533 537 } 534 538 535 if ( config->where) {536 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "stackInputSkyfile");539 if (psListLength(where->list)) { 540 psString whereClause = psDBGenerateWhereConditionSQL(where, "stackInputSkyfile"); 537 541 psStringAppend(&query, " AND %s", whereClause); 538 542 psFree(whereClause); 539 543 } 544 psFree(where); 540 545 541 546 // treat limit == 0 as "no limit" … … 592 597 PS_ASSERT_PTR_NON_NULL(config, false); 593 598 599 psMetadata *where = psMetadataAlloc(); 600 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 601 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); 602 594 603 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 595 604 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 601 610 } 602 611 603 if ( config->where) {604 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "stackSumSkyfile");612 if (psListLength(where->list)) { 613 psString whereClause = psDBGenerateWhereConditionSQL(where, "stackSumSkyfile"); 605 614 psStringAppend(&query, " AND %s", whereClause); 606 615 psFree(whereClause); 607 616 } 617 psFree(where); 608 618 609 619 // treat limit == 0 as "no limit" … … 723 733 PS_ASSERT_PTR_NON_NULL(config, false); 724 734 735 psMetadata *where = psMetadataAlloc(); 736 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 737 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); 738 725 739 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 726 740 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 732 746 } 733 747 734 if ( config->where) {735 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "stackSumSkyfile");748 if (psListLength(where->list)) { 749 psString whereClause = psDBGenerateWhereConditionSQL(where, "stackSumSkyfile"); 736 750 psStringAppend(&query, " AND %s", whereClause); 737 751 psFree(whereClause); 738 752 } 753 psFree(where); 739 754 740 755 // treat limit == 0 as "no limit" … … 790 805 PS_ASSERT_PTR_NON_NULL(config, false); 791 806 807 psMetadata *where = psMetadataAlloc(); 808 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); 809 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 810 792 811 psString query = pxDataGet("stacktool_revertsumskyfile.sql"); 793 812 if (!query) { … … 796 815 } 797 816 798 if ( config->where) {799 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "stackSumSkyfile");817 if (psListLength(where->list)) { 818 psString whereClause = psDBGenerateWhereConditionSQL(where, "stackSumSkyfile"); 800 819 psStringAppend(&query, " AND %s", whereClause); 801 820 psFree(whereClause); 802 821 } 822 psFree(where); 803 823 804 824 if (!p_psDBRunQuery(config->dbh, query)) { -
trunk/ippTools/src/stacktoolConfig.c
r18336 r18561 47 47 // -definebyquery 48 48 psMetadata *definebyqueryArgs = psMetadataAlloc(); 49 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir", 0, 50 "define workdir (required)", NULL); 51 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, 52 "time detrend run was registered", now); 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_skycell_id", 0, 54 "search for skycell_id", NULL); 55 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_good_frac_min", 0, 56 "define min good_frac", 0.0); 57 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_type", 0, 58 "search for exp_type", "object"); 59 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_inst", 0, 60 "search for camera", NULL); 61 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_telescope", 0, 62 "search for telescope", NULL); 63 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_filter", 0, 64 "search for filter", NULL); 65 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_uri", 0, 66 "search for uri", NULL); 67 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-select_dateobs_begin", 0, 68 "search for exposures by time (>=)", NULL); 69 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-select_dateobs_end", 0, 70 "search for exposures by time (<)", NULL); 71 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_airmass_min", 0, 72 "define min airmass", NAN); 73 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_airmass_max", 0, 74 "define max airmass", NAN); 75 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_sat_pixel_frac_max", 0, 76 "define max fraction of saturated pixels", NAN); 77 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_time_min", 0, 78 "define min exposure time", NAN); 79 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_time_max", 0, 80 "define max exposure time", NAN); 81 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_ccd_temp_min", 0, 82 "define min ccd tempature", NAN); 83 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_ccd_temp_max", 0, 84 "define max ccd tempature", NAN); 85 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_min", 0, 86 "define min rotator position angle", NAN); 87 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_max", 0, 88 "define max rotator position angle", NAN); 89 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_solang_min", 0, 90 "define min solar angle", NAN); 91 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_solang_max", 0, 92 "define max solar angle", NAN); 93 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-random_subset", 0, 94 "use a random subset of elements", false); 95 psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-random_limit", 0, 96 "use this number of random elements", 20); 97 98 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-all", 0, 99 "allow everything to be queued without search terms", false); 100 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, 101 "use the simple output format", false); 49 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 50 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 51 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_skycell_id", 0, "search for skycell_id", NULL); 52 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_good_frac_min", 0, "define min good_frac", 0.0); 53 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_type", 0, "search for exp_type", "object"); 54 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_inst", 0, "search for camera", NULL); 55 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_telescope", 0, "search for telescope", NULL); 56 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_filter", 0, "search for filter", NULL); 57 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_uri", 0, "search for uri", NULL); 58 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-select_dateobs_begin", 0, "search for exposures by time (>=)", NULL); 59 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-select_dateobs_end", 0, "search for exposures by time (<)", NULL); 60 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_airmass_min", 0, "define min airmass", NAN); 61 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_airmass_max", 0, "define max airmass", NAN); 62 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_sat_pixel_frac_max", 0, "define max fraction of saturated pixels", NAN); 63 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_time_min", 0, "define min exposure time", NAN); 64 psMetadataAddF32(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_time_max", 0, "define max exposure time", NAN); 65 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_ccd_temp_min", 0, "define min ccd tempature", NAN); 66 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_ccd_temp_max", 0, "define max ccd tempature", NAN); 67 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_min", 0, "define min rotator position angle", NAN); 68 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_posang_max", 0, "define max rotator position angle", NAN); 69 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_solang_min", 0, "define min solar angle", NAN); 70 psMetadataAddF64(definebyqueryArgs, PS_LIST_TAIL, "-select_solang_max", 0, "define max solar angle", NAN); 71 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-random_subset", 0, "use a random subset of elements", false); 72 psMetadataAddS32(definebyqueryArgs, PS_LIST_TAIL, "-random_limit", 0, "use this number of random elements", 20); 73 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 74 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 102 75 103 76 // -definerun 104 77 psMetadata *definerunArgs = psMetadataAlloc(); 105 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0, 106 "define workdir (required)", NULL); 107 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered", 0, 108 "time detrend run was registered", now); 109 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-skycell_id", 0, 110 "define skycell ID (required)", NULL); 111 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id", 0, 112 "define tessellation ID (required)", NULL); 113 psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-warp_id", 114 PS_META_DUPLICATE_OK, 115 "include this warp ID (multiple OK, required)", 0); 116 117 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, 118 "use the simple output format", false); 78 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 79 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 80 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-skycell_id", 0, "define skycell ID (required)", NULL); 81 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id", 0, "define tessellation ID (required)", NULL); 82 psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-warp_id", PS_META_DUPLICATE_OK, "include this warp ID (multiple OK, required)", 0); 83 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 119 84 120 85 // -updaterun 121 86 psMetadata *updaterunArgs = psMetadataAlloc(); 122 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-stack_id", 0, 123 "define stack ID (required)", 0); 124 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, 125 "set state (required)", NULL); 126 #if 0 127 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-workdir", 0, 128 "define workdir (required)", NULL); 129 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-registered", 0, 130 "time detrend run was registered", now); 131 #endif 87 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-stack_id", 0, "define stack ID (required)", 0); 88 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state (required)", NULL); 132 89 133 90 // -addinputskyfile 134 91 psMetadata *addinputskyfileArgs = psMetadataAlloc(); 135 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, 136 "define stack ID (required)", 0); 137 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, 138 "define warp ID (required)", 0); 92 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, "define stack ID (required)", 0); 93 psMetadataAddS64(addinputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "define warp ID (required)", 0); 139 94 140 95 // -inputskyfile 141 96 psMetadata *inputskyfileArgs = psMetadataAlloc(); 142 psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, 143 "search by stack ID", 0); 144 psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, 145 "search by warp ID", 0); 146 psMetadataAddU64(inputskyfileArgs, PS_LIST_TAIL, "-limit", 0, 147 "limit result set to N items", 0); 148 psMetadataAddBool(inputskyfileArgs, PS_LIST_TAIL, "-simple", 0, 149 "use the simple output format", false); 97 psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, "search by stack ID", 0); 98 psMetadataAddS64(inputskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0); 99 psMetadataAddU64(inputskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 100 psMetadataAddBool(inputskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 150 101 151 102 // -tosum 152 103 psMetadata *tosumArgs = psMetadataAlloc(); 153 psMetadataAddS64(tosumArgs, PS_LIST_TAIL, "-stack_id", 0, 154 "search by stack ID", 0); 155 psMetadataAddS64(tosumArgs, PS_LIST_TAIL, "-warp_id", 0, 156 "search by warp ID", 0); 157 psMetadataAddU64(tosumArgs, PS_LIST_TAIL, "-limit", 0, 158 "limit result set to N items", 0); 159 psMetadataAddBool(tosumArgs, PS_LIST_TAIL, "-simple", 0, 160 "use the simple output format", false); 104 psMetadataAddS64(tosumArgs, PS_LIST_TAIL, "-stack_id", 0, "search by stack ID", 0); 105 psMetadataAddS64(tosumArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0); 106 psMetadataAddU64(tosumArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 107 psMetadataAddBool(tosumArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 161 108 162 109 // -addsumskyfile 163 110 psMetadata *addsumskyfileArgs = psMetadataAlloc(); 164 psMetadataAddS64(addsumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, 165 "define stack ID (required)", 0); 166 psMetadataAddStr(addsumskyfileArgs, PS_LIST_TAIL, "-uri", 0, 167 "define URI of file", 0); 168 psMetadataAddStr(addsumskyfileArgs, PS_LIST_TAIL, "-path_base", 0, 169 "define base output location", 0); 170 psMetadataAddF64(addsumskyfileArgs, PS_LIST_TAIL, "-bg", 0, 171 "define exposue background", NAN); 172 psMetadataAddF64(addsumskyfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, 173 "define exposue background mean stdev", NAN); 174 psMetadataAddF32(addsumskyfileArgs, PS_LIST_TAIL, "-dtime_stack", 0, 175 "define elapsed processing time", NAN); 176 psMetadataAddStr(addsumskyfileArgs, PS_LIST_TAIL, "-hostname", 0, 177 "define hostname", 0); 178 psMetadataAddF32(addsumskyfileArgs, PS_LIST_TAIL, "-good_frac", 0, 179 "define %% of good pixels", NAN); 180 psMetadataAddS16(addsumskyfileArgs, PS_LIST_TAIL, "-code", 0, 181 "set fault code", 0); 111 psMetadataAddS64(addsumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, "define stack ID (required)", 0); 112 psMetadataAddStr(addsumskyfileArgs, PS_LIST_TAIL, "-uri", 0, "define URI of file", 0); 113 psMetadataAddStr(addsumskyfileArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", 0); 114 psMetadataAddF64(addsumskyfileArgs, PS_LIST_TAIL, "-bg", 0, "define exposue background", NAN); 115 psMetadataAddF64(addsumskyfileArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposue background mean stdev", NAN); 116 psMetadataAddF32(addsumskyfileArgs, PS_LIST_TAIL, "-dtime_stack", 0, "define elapsed processing time", NAN); 117 psMetadataAddStr(addsumskyfileArgs, PS_LIST_TAIL, "-hostname", 0, "define hostname", 0); 118 psMetadataAddF32(addsumskyfileArgs, PS_LIST_TAIL, "-good_frac", 0, "define %% of good pixels", NAN); 119 psMetadataAddS16(addsumskyfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 182 120 183 121 // -sumskyfile 184 122 psMetadata *sumskyfileArgs= psMetadataAlloc(); 185 psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, 186 "search by stack ID", 0); 187 psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, 188 "search by warp ID", 0); 189 psMetadataAddU64(sumskyfileArgs, PS_LIST_TAIL, "-limit", 0, 190 "limit result set to N items", 0); 191 psMetadataAddBool(sumskyfileArgs, PS_LIST_TAIL, "-simple", 0, 192 "use the simple output format", false); 123 psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, "search by stack ID", 0); 124 psMetadataAddS64(sumskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0); 125 psMetadataAddU64(sumskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 126 psMetadataAddBool(sumskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 193 127 194 128 // -revertsumskyfile 195 129 psMetadata *revertsumskyfileArgs= psMetadataAlloc(); 196 psMetadataAddS64(revertsumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, 197 "search by stack ID (required)", 0); 198 psMetadataAddS16(revertsumskyfileArgs, PS_LIST_TAIL, "-code", 0, 199 "search by fault code", 0); 130 psMetadataAddS64(revertsumskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, "search by stack ID (required)", 0); 131 psMetadataAddS16(revertsumskyfileArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 200 132 201 133 psFree(now); … … 204 136 psMetadata *modes = psMetadataAlloc(); 205 137 206 PXOPT_ADD_MODE("-definebyquery", "Define a new stackRun by searching for warp IDs", 207 STACKTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs); 138 PXOPT_ADD_MODE("-definebyquery", "Define a new stackRun by searching for warp IDs", STACKTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs); 208 139 PXOPT_ADD_MODE("-definerun", "", STACKTOOL_MODE_DEFINERUN, definerunArgs); 209 140 PXOPT_ADD_MODE("-updaterun", "", STACKTOOL_MODE_UPDATERUN, updaterunArgs); … … 226 157 psFree(modes); 227 158 228 // setup search criterion229 #define addWhereStr(name) \230 { \231 psString str = NULL; \232 bool status = false; \233 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \234 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\235 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \236 psFree(config); \237 return NULL; \238 } \239 } \240 }241 242 #define addWhereS32(name) \243 { \244 psS32 s32 = 0; \245 bool status = false; \246 if ((s32= psMetadataLookupS32(&status, config->args, "-" #name))) { \247 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, #name, 0, "==", s32)) { \248 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \249 psFree(config); \250 return NULL; \251 } \252 } \253 }254 255 256 // generate SQL where clause257 config->where = psMetadataAlloc();258 259 {260 psString str = NULL;261 bool status = false;262 if ((str = psMetadataLookupStr(&status, config->args, "-warp_id"))) {263 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, "warp_id", 0, "==", (psS64)atoll(str))) {264 psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");265 psFree(config);266 return NULL;267 }268 }269 }270 271 {272 psString str = NULL;273 bool status = false;274 if ((str = psMetadataLookupStr(&status, config->args, "-stack_id"))) {275 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, "stack_id", 0, "==", (psS64)atoll(str))) {276 psError(PS_ERR_UNKNOWN, false, "failed to add item stack_id");277 psFree(config);278 return NULL;279 }280 }281 }282 283 addWhereStr(skycell_id);284 addWhereStr(tess_id);285 286 // convert '-code' to 'fault'287 {288 psS16 fault = 0;289 bool status = false;290 if ((fault = psMetadataLookupS16(&status, config->args, "-code"))) {291 if (!psMetadataAddS16(config->where, PS_LIST_TAIL, "fault", 0, "==", fault)) {292 psError(PS_ERR_UNKNOWN, false, "failed to add item fault");293 psFree(config);294 return NULL;295 }296 }297 }298 299 if (config->where->list->n < 1) {300 psFree(config->where);301 config->where = NULL;302 }303 304 159 // define Database handle, if used 305 160 // do this last so we don't setup a connection before CLI options are -
trunk/ippTools/src/warptool.c
r18336 r18561 109 109 { 110 110 PS_ASSERT_PTR_NON_NULL(config, false); 111 112 // required options 113 PXOPT_LOOKUP_S64(fake_id, config->args, "-fake_id", true, false); 114 PXOPT_LOOKUP_STR(mode, config->args, "-mode", true, false); 115 // check mode 116 if (mode && !isValidMode(config, mode)) { 117 psError(PS_ERR_UNKNOWN, false, "invalud mode"); 118 return false; 119 } 120 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); 121 122 // optional 111 112 PXOPT_LOOKUP_S64(fake_id, config->args, "-fake_id", true, false); // required 113 PXOPT_LOOKUP_STR(mode, config->args, "-mode", true, false); // required 114 PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required 123 115 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 124 116 PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false); 125 117 PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", false, false); 126 118 PXOPT_LOOKUP_STR(end_stage, config->args, "-end_stage", false, false); 127 128 // default129 119 PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false); 130 120 PXOPT_LOOKUP_BOOL(magiced, config->args, "-magiced", false); 131 121 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 122 123 // check mode 124 if (mode && !isValidMode(config, mode)) { 125 psError(PS_ERR_UNKNOWN, false, "invalid mode"); 126 return false; 127 } 132 128 133 129 warpRunRow *warpRun = warpRunRowAlloc( … … 190 186 PXOPT_COPY_STR(config->args, where, "-reduction", "reduction", "=="); 191 187 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 192 193 PXOPT_COPY_F64(config->args, where, "-airmass_min", "airmass", ">="); 194 PXOPT_COPY_F64(config->args, where, "-airmass_max", "airmass", "<"); 188 PXOPT_COPY_F32(config->args, where, "-airmass_min", "airmass", ">="); 189 PXOPT_COPY_F32(config->args, where, "-airmass_max", "airmass", "<"); 195 190 PXOPT_COPY_F64(config->args, where, "-ra_min", "ra", ">="); 196 191 PXOPT_COPY_F64(config->args, where, "-ra_max", "ra", "<"); … … 211 206 PXOPT_COPY_F64(config->args, where, "-az_min", "az", ">="); 212 207 PXOPT_COPY_F64(config->args, where, "-az_max", "az", "<"); 213 PXOPT_COPY_F 32(config->args, where, "-ccd_temp_min", "ccd_temp", ">=");214 PXOPT_COPY_F 32(config->args, where, "-ccd_temp_max", "ccd_temp", "<");208 PXOPT_COPY_F64(config->args, where, "-ccd_temp_min", "ccd_temp", ">="); 209 PXOPT_COPY_F64(config->args, where, "-ccd_temp_max", "ccd_temp", "<"); 215 210 PXOPT_COPY_F64(config->args, where, "-posang_min", "posang", ">="); 216 211 PXOPT_COPY_F64(config->args, where, "-posang_max", "posang", "<"); … … 262 257 PS_ASSERT_PTR_NON_NULL(config, false); 263 258 259 psMetadata *where = psMetadataAlloc(); 260 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 261 PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "=="); 262 264 263 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 265 264 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 272 271 } 273 272 274 if ( config->where) {275 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "warpRun");273 if (psListLength(where->list)) { 274 psString whereClause = psDBGenerateWhereConditionSQL(where, "warpRun"); 276 275 psStringAppend(&query, " AND %s", whereClause); 277 276 psFree(whereClause); 278 277 } 278 psFree(where); 279 279 280 280 // treat limit == 0 as "no limit" … … 331 331 PS_ASSERT_PTR_NON_NULL(config, false); 332 332 333 psMetadata *where = psMetadataAlloc(); 334 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 335 PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "=="); 336 333 337 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 334 338 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 341 345 } 342 346 343 if ( config->where) {344 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "warpRun");347 if (psListLength(where->list)) { 348 psString whereClause = psDBGenerateWhereConditionSQL(where, "warpRun"); 345 349 psStringAppend(&query, " AND %s", whereClause); 346 350 psFree(whereClause); 347 351 } 352 psFree(where); 348 353 349 354 // treat limit == 0 as "no limit" … … 400 405 PS_ASSERT_PTR_NON_NULL(config, false); 401 406 407 psMetadata *where = psMetadataAlloc(); 408 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 409 402 410 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 403 411 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 410 418 } 411 419 412 if ( config->where) {413 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "warpRun");420 if (psListLength(where->list)) { 421 psString whereClause = psDBGenerateWhereConditionSQL(where, "warpRun"); 414 422 psStringAppend(&query, " AND %s", whereClause); 415 423 psFree(whereClause); 416 424 } 425 psFree(where); 417 426 418 427 // treat limit == 0 as "no limit" … … 571 580 PS_ASSERT_PTR_NON_NULL(config, false); 572 581 582 psMetadata *where = psMetadataAlloc(); 583 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 584 PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "=="); 585 PXOPT_COPY_STR(config->args, where, "-tess_id", "tess_id", "=="); 586 573 587 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 574 588 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 581 595 } 582 596 583 if ( config->where) {584 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "warpSkyCellMap");597 if (psListLength(where->list)) { 598 psString whereClause = psDBGenerateWhereConditionSQL(where, "warpSkyCellMap"); 585 599 psStringAppend(&query, " AND %s", whereClause); 586 600 psFree(whereClause); 587 601 } 602 psFree(where); 588 603 589 604 // treat limit == 0 as "no limit" … … 635 650 } 636 651 637 638 652 static bool towarpedMode(pxConfig *config) 639 653 { 640 654 PS_ASSERT_PTR_NON_NULL(config, false); 655 656 psMetadata *where = psMetadataAlloc(); 657 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 641 658 642 659 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); … … 650 667 } 651 668 652 if ( config->where) {653 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "warpSkyCellMap");669 if (psListLength(where->list)) { 670 psString whereClause = psDBGenerateWhereConditionSQL(where, "warpSkyCellMap"); 654 671 psStringAppend(&query, " AND %s", whereClause); 655 672 psFree(whereClause); 656 673 } 674 psFree(where); 657 675 658 676 // treat limit == 0 as "no limit" … … 891 909 PS_ASSERT_PTR_NON_NULL(config, false); 892 910 911 psMetadata *where = psMetadataAlloc(); 912 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 913 PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "=="); 914 PXOPT_COPY_STR(config->args, where, "-tess_id", "tess_id", "=="); 915 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 916 PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "=="); 917 893 918 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 894 919 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 901 926 } 902 927 903 if ( config->where) {904 psString whereClause = psDBGenerateWhereConditionSQL( config->where, "warpSkyfile");928 if (psListLength(where->list)) { 929 psString whereClause = psDBGenerateWhereConditionSQL(where, "warpSkyfile"); 905 930 psStringAppend(&query, " AND %s", whereClause); 906 931 psFree(whereClause); 907 932 } 933 psFree(where); 908 934 909 935 // treat limit == 0 as "no limit" … … 962 988 psMetadata *where = psMetadataAlloc(); 963 989 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 990 PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "=="); 991 PXOPT_COPY_STR(config->args, where, "-tess_id", "tess_id", "=="); 964 992 PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "=="); 965 993 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 966 994 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 967 PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "==");968 PXOPT_COPY_STR(config->args, where, "-tess_id", "tess_id", "==");969 995 970 996 // XXX These may need to be updated with the table name? … … 980 1006 PXOPT_COPY_STR(config->args, where, "-filter", "filter", "=="); 981 1007 982 PXOPT_COPY_F 64(config->args, where, "-airmass_min", "airmass", ">=");983 PXOPT_COPY_F 64(config->args, where, "-airmass_max", "airmass", "<");1008 PXOPT_COPY_F32(config->args, where, "-airmass_min", "airmass", ">="); 1009 PXOPT_COPY_F32(config->args, where, "-airmass_max", "airmass", "<"); 984 1010 PXOPT_COPY_F64(config->args, where, "-ra_min", "ra", ">="); 985 1011 PXOPT_COPY_F64(config->args, where, "-ra_max", "ra", "<"); … … 1000 1026 PXOPT_COPY_F64(config->args, where, "-az_min", "az", ">="); 1001 1027 PXOPT_COPY_F64(config->args, where, "-az_max", "az", "<"); 1002 PXOPT_COPY_F 32(config->args, where, "-ccd_temp_min", "ccd_temp", ">=");1003 PXOPT_COPY_F 32(config->args, where, "-ccd_temp_max", "ccd_temp", "<");1028 PXOPT_COPY_F64(config->args, where, "-ccd_temp_min", "ccd_temp", ">="); 1029 PXOPT_COPY_F64(config->args, where, "-ccd_temp_max", "ccd_temp", "<"); 1004 1030 PXOPT_COPY_F64(config->args, where, "-posang_min", "posang", ">="); 1005 1031 PXOPT_COPY_F64(config->args, where, "-posang_max", "posang", "<"); … … 1007 1033 PXOPT_COPY_F32(config->args, where, "-solang_min", "solang", ">="); 1008 1034 PXOPT_COPY_F32(config->args, where, "-solang_max", "solang", "<"); 1009 //PXOPT_COPY_S16(config->args, where, "-code", "fault", "==");1035 PXOPT_COPY_S16(config->args, where, "-code", "fault", "=="); 1010 1036 1011 1037 if (!psListLength(where->list) -
trunk/ippTools/src/warptoolConfig.c
r18461 r18561 49 49 // -definerun 50 50 psMetadata *definerunArgs = psMetadataAlloc(); 51 psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-fake_id", 0, 52 "define camtool ID (required)", 0); 53 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-mode", 0, 54 "define mode (required)", NULL); 55 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0, 56 "define workdir (required)", NULL); 57 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, 58 "define label", NULL); 59 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-dvodb", 0, 60 "define dvodb", NULL); 61 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id", 0, 62 "define tess_id", NULL); 63 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-end_stage", 0, 64 "define end stage", NULL); 65 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered", 0, 66 "time detrend run was registered", now); 67 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-magiced", 0, 68 "has this exposure been magiced", false); 69 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, 70 "use the simple output format", false); 51 psMetadataAddS64(definerunArgs, PS_LIST_TAIL, "-fake_id", 0, "define camtool ID (required)", 0); 52 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-mode", 0, "define mode (required)", NULL); 53 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 54 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-label", 0, "define label", NULL); 55 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-dvodb", 0, "define dvodb", NULL); 56 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id", 0, "define tess_id", NULL); 57 psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-end_stage", 0, "define end stage", NULL); 58 psMetadataAddTime(definerunArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 59 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-magiced", 0, "has this exposure been magiced", false); 60 psMetadataAddBool(definerunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 71 61 72 62 // -updaterun 63 // XXX need to allow multiple fake_ids 64 // XXX need to allow multiple fake_ids 65 // XXX need to allow multiple chip_ids 66 // XXX need to allow multiple exp_ids 73 67 psMetadata *updaterunArgs = psMetadataAlloc(); 74 // XXX need to allow multiple fake_ids 75 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-warp_id", 0, 76 "search by warptool ID", 0); 77 // XXX need to allow multiple fake_ids 78 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-fake_id", 0, 79 "search by fake_id", 0); 80 // XXX need to allow multiple chip_ids 81 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-chip_id", 0, 82 "search by chip_id", 0); 83 // XXX need to allow multiple exp_ids 84 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-exp_id", 0, 85 "search by exp_id", 0); 86 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_name", 0, 87 "search by exp_name", NULL); 88 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-inst", 0, 89 "search for camera", NULL); 90 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-telescope", 0, 91 "search for telescope", NULL); 92 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, 93 "search for exposures by time (>=)", NULL); 94 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_end", 0, 95 "search for exposures by time (<)", NULL); 96 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_tag", 0, 97 "search by exp_tag", NULL); 98 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_type", 0, 99 "search by exp_type", NULL); 100 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filelevel", 0, 101 "search by filelevel", NULL); 102 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, 103 "search by reduction class", NULL); 104 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filter", 0, 105 "search for filter", NULL); 106 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-airmass_min", 0, 107 "define min airmass", NAN); 108 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-airmass_max", 0, 109 "define max airmass", NAN); 110 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_min", 0, 111 "define min", NAN); 112 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_max", 0, 113 "define max", NAN); 114 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_min", 0, 115 "define min", NAN); 116 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_max", 0, 117 "define max", NAN); 118 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_min", 0, 119 "define min", NAN); 120 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_max", 0, 121 "define max", NAN); 122 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, 123 "define max fraction of saturated pixels", NAN); 124 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, 125 "define min fraction of saturated pixels", NAN); 126 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_min", 0, 127 "define max", NAN); 128 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_max", 0, 129 "define max", NAN); 130 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, 131 "define max", NAN); 132 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, 133 "define max", NAN); 134 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, 135 "define max", NAN); 136 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, 137 "define max", NAN); 138 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_min", 0, 139 "define min", NAN); 140 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_max", 0, 141 "define max", NAN); 142 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_min", 0, 143 "define min", NAN); 144 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_max", 0, 145 "define max", NAN); 146 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, 147 "define min ccd tempature", NAN); 148 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, 149 "define max ccd tempature", NAN); 150 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_min", 0, 151 "define min rotator position angle", NAN); 152 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_max", 0, 153 "define max rotator position angle", NAN); 154 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-object", 0, 155 "search by exposure object", NULL); 156 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_min", 0, 157 "define min solar angle", NAN); 158 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_max", 0, 159 "define max solar angle", NAN); 160 161 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, 162 "allow everything to be queued without search terms", false); 163 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, 164 "set state", NULL); 165 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, 166 "set label", NULL); 68 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID", 0); 69 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-fake_id", 0, "search by fake_id", 0); 70 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip_id", 0); 71 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 72 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); 73 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); 74 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 75 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 76 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 77 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 78 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", NULL); 79 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); 80 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 81 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 82 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 83 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 84 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_min", 0, "define min", NAN); 85 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_max", 0, "define max", NAN); 86 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_min", 0, "define min", NAN); 87 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_max", 0, "define max", NAN); 88 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min", NAN); 89 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max", NAN); 90 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "define max fraction of saturated pixels", NAN); 91 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "define min fraction of saturated pixels", NAN); 92 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_min", 0, "define max", NAN); 93 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_max", 0, "define max", NAN); 94 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, "define max", NAN); 95 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, "define max", NAN); 96 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "define max", NAN); 97 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "define max", NAN); 98 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_min", 0, "define min", NAN); 99 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_max", 0, "define max", NAN); 100 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_min", 0, "define min", NAN); 101 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_max", 0, "define max", NAN); 102 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 103 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 104 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 105 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 106 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 107 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 108 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 109 110 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 111 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state", NULL); 112 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "set label", NULL); 113 167 114 #if 0 168 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-workdir", 0, 169 "define workdir (required)", NULL); 170 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-registered", 0, 171 "time detrend run was registered", now); 115 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-workdir", 0, "define workdir (required)", NULL); 116 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-registered", 0, "time detrend run was registered", now); 172 117 #endif 173 118 174 119 // -exp 175 120 psMetadata *expArgs = psMetadataAlloc(); 176 psMetadataAddS64(expArgs, PS_LIST_TAIL, "-warp_id", 0, 177 "search by warptool ID", 0); 178 psMetadataAddS64(expArgs, PS_LIST_TAIL, "-fake_id", 0, 179 "search by camtool ID", 0); 180 psMetadataAddU64(expArgs, PS_LIST_TAIL, "-limit", 0, 181 "limit result set to N items", 0); 182 psMetadataAddBool(expArgs, PS_LIST_TAIL, "-simple", 0, 183 "use the simple output format", false); 121 psMetadataAddS64(expArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID", 0); 122 psMetadataAddS64(expArgs, PS_LIST_TAIL, "-fake_id", 0, "search by camtool ID", 0); 123 psMetadataAddU64(expArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 124 psMetadataAddBool(expArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 184 125 185 126 // -imfile 186 127 psMetadata *imfileArgs = psMetadataAlloc(); 187 psMetadataAddS64(imfileArgs, PS_LIST_TAIL, "-warp_id", 0, 188 "search by warptool ID", 0); 189 psMetadataAddS64(imfileArgs, PS_LIST_TAIL, "-fake_id", 0, 190 "search by camtool ID", 0); 191 psMetadataAddU64(imfileArgs, PS_LIST_TAIL, "-limit", 0, 192 "limit result set to N items", 0); 193 psMetadataAddBool(imfileArgs, PS_LIST_TAIL, "-simple", 0, 194 "use the simple output format", false); 128 psMetadataAddS64(imfileArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID", 0); 129 psMetadataAddS64(imfileArgs, PS_LIST_TAIL, "-fake_id", 0, "search by camtool ID", 0); 130 psMetadataAddU64(imfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 131 psMetadataAddBool(imfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 195 132 196 133 // -tooverlap 197 134 psMetadata *tooverlapArgs = psMetadataAlloc(); 198 psMetadataAddS64(tooverlapArgs, PS_LIST_TAIL, "-warp_id", 0, 199 "search by warp ID", 0); 200 psMetadataAddU64(tooverlapArgs, PS_LIST_TAIL, "-limit", 0, 201 "limit result set to N items", 0); 202 psMetadataAddBool(tooverlapArgs, PS_LIST_TAIL, "-simple", 0, 203 "use the simple output format", false); 135 psMetadataAddS64(tooverlapArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0); 136 psMetadataAddU64(tooverlapArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 137 psMetadataAddBool(tooverlapArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 204 138 205 139 // -addoverlap 206 140 psMetadata *addoverlapArgs = psMetadataAlloc(); 207 psMetadataAddStr(addoverlapArgs, PS_LIST_TAIL, "-mapfile", 0, 208 "path to skycell <-> imfile mapping file", NULL); 209 psMetadataAddS64(addoverlapArgs, PS_LIST_TAIL, "-warp_id", 0, 210 "set warp ID", 0); 211 psMetadataAddS16(addoverlapArgs, PS_LIST_TAIL, "-code", 0, 212 "set fault code", 0); 141 psMetadataAddStr(addoverlapArgs, PS_LIST_TAIL, "-mapfile", 0, "path to skycell <-> imfile mapping file", NULL); 142 psMetadataAddS64(addoverlapArgs, PS_LIST_TAIL, "-warp_id", 0, "set warp ID", 0); 143 psMetadataAddS16(addoverlapArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 213 144 214 145 // -scmap 215 146 psMetadata *scmapArgs = psMetadataAlloc(); 216 psMetadataAddS64(scmapArgs, PS_LIST_TAIL, "-warp_id", 0, 217 "search by warptool ID", 0); 218 psMetadataAddStr(scmapArgs, PS_LIST_TAIL, "-skycell_id", 0, 219 "search by skycell ID", NULL); 220 psMetadataAddStr(scmapArgs, PS_LIST_TAIL, "-tess_id", 0, 221 "search by tess ID", NULL); 222 psMetadataAddU64(scmapArgs, PS_LIST_TAIL, "-limit", 0, 223 "limit result set to N items", 0); 224 psMetadataAddBool(scmapArgs, PS_LIST_TAIL, "-simple", 0, 225 "use the simple output format", false); 147 psMetadataAddS64(scmapArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID", 0); 148 psMetadataAddStr(scmapArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL); 149 psMetadataAddStr(scmapArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess ID", NULL); 150 psMetadataAddU64(scmapArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 151 psMetadataAddBool(scmapArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 226 152 227 153 // -towarped 228 154 psMetadata *towarpedArgs = psMetadataAlloc(); 229 psMetadataAddS64(towarpedArgs, PS_LIST_TAIL, "-warp_id", 0, 230 "search by warptool ID", 0); 231 psMetadataAddU64(towarpedArgs, PS_LIST_TAIL, "-limit", 0, 232 "limit result set to N items", 0); 233 psMetadataAddBool(towarpedArgs, PS_LIST_TAIL, "-simple", 0, 234 "use the simple output format", false); 155 psMetadataAddS64(towarpedArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID", 0); 156 psMetadataAddU64(towarpedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 157 psMetadataAddBool(towarpedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 235 158 236 159 // -addwarped 237 160 psMetadata *addwarpedArgs = psMetadataAlloc(); 238 psMetadataAddS64(addwarpedArgs, PS_LIST_TAIL, "-warp_id", 0, 239 "define warptool ID (required)", 0); 240 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-skycell_id", 0, 241 "define skycell ID (required)", NULL); 242 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-tess_id", 0, 243 "define tessellation ID (required)", NULL); 244 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-uri", 0, 245 "define URI of file", 0); 246 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-path_base", 0, 247 "define base output location", 0); 248 psMetadataAddF64(addwarpedArgs, PS_LIST_TAIL, "-bg", 0, 249 "define exposure background", NAN); 250 psMetadataAddF64(addwarpedArgs, PS_LIST_TAIL, "-bg_stdev", 0, 251 "define exposure background stdev", NAN); 252 psMetadataAddF32(addwarpedArgs, PS_LIST_TAIL, "-dtime_warp", 0, 253 "define elapsed processing time", NAN); 254 psMetadataAddS32(addwarpedArgs, PS_LIST_TAIL, "-xmin", 0, 255 "define minimum x value", INT_MAX); 256 psMetadataAddS32(addwarpedArgs, PS_LIST_TAIL, "-xmax", 0, 257 "define maximum x value", -INT_MAX); 258 psMetadataAddS32(addwarpedArgs, PS_LIST_TAIL, "-ymin", 0, 259 "define minimum y value", INT_MAX); 260 psMetadataAddS32(addwarpedArgs, PS_LIST_TAIL, "-ymax", 0, 261 "define maximum y value", -INT_MAX); 262 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-hostname", 0, 263 "define hostname", 0); 264 psMetadataAddF32(addwarpedArgs, PS_LIST_TAIL, "-good_frac", 0, 265 "define %% of good pixels", NAN); 266 psMetadataAddBool(addwarpedArgs, PS_LIST_TAIL, "-ignore", 0, 267 "define if this skycell should be ignored", false); 268 psMetadataAddS16(addwarpedArgs, PS_LIST_TAIL, "-code", 0, 269 "set fault code", 0); 161 psMetadataAddS64(addwarpedArgs, PS_LIST_TAIL, "-warp_id", 0, "define warptool ID (required)", 0); 162 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-skycell_id", 0, "define skycell ID (required)", NULL); 163 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-tess_id", 0, "define tessellation ID (required)", NULL); 164 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-uri", 0, "define URI of file", 0); 165 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", 0); 166 psMetadataAddF64(addwarpedArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); 167 psMetadataAddF64(addwarpedArgs, PS_LIST_TAIL, "-bg_stdev", 0, "define exposure background stdev", NAN); 168 psMetadataAddF32(addwarpedArgs, PS_LIST_TAIL, "-dtime_warp", 0, "define elapsed processing time", NAN); 169 psMetadataAddS32(addwarpedArgs, PS_LIST_TAIL, "-xmin", 0, "define minimum x value", INT_MAX); 170 psMetadataAddS32(addwarpedArgs, PS_LIST_TAIL, "-xmax", 0, "define maximum x value", -INT_MAX); 171 psMetadataAddS32(addwarpedArgs, PS_LIST_TAIL, "-ymin", 0, "define minimum y value", INT_MAX); 172 psMetadataAddS32(addwarpedArgs, PS_LIST_TAIL, "-ymax", 0, "define maximum y value", -INT_MAX); 173 psMetadataAddStr(addwarpedArgs, PS_LIST_TAIL, "-hostname", 0, "define hostname", 0); 174 psMetadataAddF32(addwarpedArgs, PS_LIST_TAIL, "-good_frac", 0, "define %% of good pixels", NAN); 175 psMetadataAddBool(addwarpedArgs, PS_LIST_TAIL, "-ignore", 0, "define if this skycell should be ignored", false); 176 psMetadataAddS16(addwarpedArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 270 177 271 178 // -warped 272 179 psMetadata *warpedArgs = psMetadataAlloc(); 273 psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-warp_id", 0, 274 "search by warptool ID", 0); 275 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-skycell_id", 0, 276 "define skycell ID", NULL); 277 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-tess_id", 0, 278 "define tessellation ID", NULL); 279 psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-exp_id", 0, 280 "define exposure tag", 0); 281 psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-fake_id", 0, 282 "define phase 3 version of exposure tag", 0); 283 psMetadataAddU64(warpedArgs, PS_LIST_TAIL, "-limit", 0, 284 "limit result set to N items", 0); 285 psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-simple", 0, 286 "use the simple output format", false); 180 psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID", 0); 181 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-skycell_id", 0, "define skycell ID", NULL); 182 psMetadataAddStr(warpedArgs, PS_LIST_TAIL, "-tess_id", 0, "define tessellation ID", NULL); 183 psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure tag", 0); 184 psMetadataAddS64(warpedArgs, PS_LIST_TAIL, "-fake_id", 0, "define phase 3 version of exposure tag", 0); 185 psMetadataAddU64(warpedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 186 psMetadataAddBool(warpedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 287 187 288 188 // -revertwarped 189 // XXX need to allow multiple fake_ids 190 // XXX need to allow multiple fake_ids 191 // XXX need to allow multiple chip_ids 192 // XXX need to allow multiple exp_ids 289 193 psMetadata *revertwarpedArgs = psMetadataAlloc(); 290 // XXX need to allow multiple fake_ids 291 psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-warp_id", 0, 292 "search by warptool ID", 0); 293 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-skycell_id", 0, 294 "search by skycell ID", NULL); 295 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-tess_id", 0, 296 "searcy by tessellation ID", NULL); 297 // XXX need to allow multiple fake_ids 298 psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-fake_id", 0, 299 "search by fake_id", 0); 300 // XXX need to allow multiple chip_ids 301 psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-chip_id", 0, 302 "search by chip_id", 0); 303 // XXX need to allow multiple exp_ids 304 psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-exp_id", 0, 305 "search by exp_id", 0); 306 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-exp_name", 0, 307 "search by exp_name", NULL); 308 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-inst", 0, 309 "search for camera", NULL); 310 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-telescope", 0, 311 "search for telescope", NULL); 312 psMetadataAddTime(revertwarpedArgs, PS_LIST_TAIL, "-dateobs_begin", 0, 313 "search for exposures by time (>=)", NULL); 314 psMetadataAddTime(revertwarpedArgs, PS_LIST_TAIL, "-dateobs_end", 0, 315 "search for exposures by time (<)", NULL); 316 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-exp_tag", 0, 317 "search by exp_tag", NULL); 318 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-exp_type", 0, 319 "search by exp_type", NULL); 320 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-filelevel", 0, 321 "search by filelevel", NULL); 322 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-reduction", 0, 323 "search by reduction class", NULL); 324 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-filter", 0, 325 "search for filter", NULL); 326 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-airmass_min", 0, 327 "define min airmass", NAN); 328 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-airmass_max", 0, 329 "define max airmass", NAN); 330 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-ra_min", 0, 331 "define min", NAN); 332 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-ra_max", 0, 333 "define max", NAN); 334 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-decl_min", 0, 335 "define min", NAN); 336 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-decl_max", 0, 337 "define max", NAN); 338 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-exp_time_min", 0, 339 "define min", NAN); 340 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-exp_time_max", 0, 341 "define max", NAN); 342 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, 343 "define max fraction of saturated pixels", NAN); 344 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, 345 "define min fraction of saturated pixels", NAN); 346 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_min", 0, 347 "define max", NAN); 348 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_max", 0, 349 "define max", NAN); 350 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, 351 "define max", NAN); 352 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, 353 "define max", NAN); 354 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, 355 "define max", NAN); 356 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, 357 "define max", NAN); 358 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-alt_min", 0, 359 "define min", NAN); 360 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-alt_max", 0, 361 "define max", NAN); 362 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-az_min", 0, 363 "define min", NAN); 364 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-az_max", 0, 365 "define max", NAN); 366 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, 367 "define min ccd tempature", NAN); 368 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, 369 "define max ccd tempature", NAN); 370 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-posang_min", 0, 371 "define min rotator position angle", NAN); 372 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-posang_max", 0, 373 "define max rotator position angle", NAN); 374 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-object", 0, 375 "search by exposure object", NULL); 376 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-solang_min", 0, 377 "define min solar angle", NAN); 378 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-solang_max", 0, 379 "define max solar angle", NAN); 380 381 psMetadataAddS16(revertwarpedArgs, PS_LIST_TAIL, "-code", 0, 382 "search by fault code", 0); 383 psMetadataAddBool(revertwarpedArgs, PS_LIST_TAIL, "-all", 0, 384 "allow everything to be queued without search terms", false); 194 psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warptool ID", 0); 195 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL); 196 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-tess_id", 0, "searcy by tessellation ID", NULL); 197 psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-fake_id", 0, "search by fake_id", 0); 198 psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip_id", 0); 199 psMetadataAddS64(revertwarpedArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 200 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); 201 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); 202 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 203 psMetadataAddTime(revertwarpedArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 204 psMetadataAddTime(revertwarpedArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 205 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 206 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", NULL); 207 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); 208 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 209 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 210 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 211 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 212 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-ra_min", 0, "define min", NAN); 213 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-ra_max", 0, "define max", NAN); 214 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-decl_min", 0, "define min", NAN); 215 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-decl_max", 0, "define max", NAN); 216 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min", NAN); 217 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max", NAN); 218 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "define max fraction of saturated pixels", NAN); 219 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "define min fraction of saturated pixels", NAN); 220 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_min", 0, "define max", NAN); 221 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_max", 0, "define max", NAN); 222 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, "define max", NAN); 223 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, "define max", NAN); 224 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "define max", NAN); 225 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "define max", NAN); 226 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-alt_min", 0, "define min", NAN); 227 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-alt_max", 0, "define max", NAN); 228 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-az_min", 0, "define min", NAN); 229 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-az_max", 0, "define max", NAN); 230 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 231 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 232 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 233 psMetadataAddF64(revertwarpedArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 234 psMetadataAddStr(revertwarpedArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 235 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 236 psMetadataAddF32(revertwarpedArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 237 238 psMetadataAddS16(revertwarpedArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 239 psMetadataAddBool(revertwarpedArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 385 240 386 241 // -block 387 242 psMetadata *blockArgs = psMetadataAlloc(); 388 psMetadataAddStr(blockArgs, PS_LIST_TAIL, "-label", 0, 389 "name of a label to mask out (required)", NULL); 243 psMetadataAddStr(blockArgs, PS_LIST_TAIL, "-label", 0, "name of a label to mask out (required)", NULL); 390 244 391 245 // -masked 392 246 psMetadata *maskedArgs = psMetadataAlloc(); 393 psMetadataAddBool(maskedArgs, PS_LIST_TAIL, "-simple", 0, 394 "use the simple output format", false); 247 psMetadataAddBool(maskedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 395 248 396 249 // -unblock 397 250 psMetadata *unblockArgs = psMetadataAlloc(); 398 psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label", 0, 399 "name of a label to unmask (required)", NULL); 251 psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label", 0, "name of a label to unmask (required)", NULL); 400 252 401 253 psFree(now); … … 429 281 psFree(modes); 430 282 431 // setup search criterion432 #define addWhereStr(name) \433 { \434 psString str = NULL; \435 bool status = false; \436 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \437 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\438 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \439 psFree(config); \440 return NULL; \441 } \442 } \443 }444 445 #define addWhereS32(name) \446 { \447 psS32 s32 = 0; \448 bool status = false; \449 if ((s32= psMetadataLookupS32(&status, config->args, "-" #name))) { \450 if (!psMetadataAddS32(config->where, PS_LIST_TAIL, #name, 0, "==", s32)) { \451 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \452 psFree(config); \453 return NULL; \454 } \455 } \456 }457 458 459 // generate SQL where clause460 config->where = psMetadataAlloc();461 462 {463 psS64 warp_id = -1;464 bool status = false;465 if ((warp_id = psMetadataLookupS64(&status, config->args, "-warp_id"))) {466 if (!psMetadataAddS64(config->where, PS_LIST_TAIL, "warp_id", 0, "==", warp_id)) {467 psError(PS_ERR_UNKNOWN, false, "failed to add item warp_id");468 psFree(config);469 return NULL;470 }471 }472 }473 addWhereStr(skycell_id);474 addWhereStr(tess_id);475 addWhereStr(exp_id);476 477 // convert '-code' to 'fault'478 {479 psS16 fault = 0;480 bool status = false;481 if ((fault = psMetadataLookupS16(&status, config->args, "-code"))) {482 if (!psMetadataAddS16(config->where, PS_LIST_TAIL, "fault", 0, "==", fault)) {483 psError(PS_ERR_UNKNOWN, false, "failed to add item fault");484 psFree(config);485 return NULL;486 }487 }488 }489 490 if (config->where->list->n < 1) {491 psFree(config->where);492 config->where = NULL;493 }494 495 283 // define Database handle, if used 496 284 // do this last so we don't setup a connection before CLI options are
Note:
See TracChangeset
for help on using the changeset viewer.
