Changeset 19092
- Timestamp:
- Aug 16, 2008, 1:27:58 PM (18 years ago)
- Location:
- trunk/ippTools
- Files:
-
- 32 added
- 3 deleted
- 51 edited
-
notes.txt (modified) (1 diff)
-
share/Makefile.am (modified) (1 diff)
-
share/camtool_donecleanup.sql (added)
-
share/camtool_find_pendingexp.sql (modified) (1 diff)
-
share/camtool_pendingcleanupexp.sql (added)
-
share/camtool_pendingcleanuprun.sql (added)
-
share/camtool_reset_faulted_runs.sql (modified) (1 diff)
-
share/dettool_addprocessedexp.sql (modified) (1 diff)
-
share/dettool_definebydetrun.sql (modified) (2 diffs)
-
share/dettool_pendingcleanup_normalizedexp.sql (added)
-
share/dettool_pendingcleanup_normalizedimfile.sql (added)
-
share/dettool_pendingcleanup_normalizedstat.sql (added)
-
share/dettool_pendingcleanup_processedexp.sql (added)
-
share/dettool_pendingcleanup_processedimfile.sql (added)
-
share/dettool_pendingcleanup_residexp.sql (added)
-
share/dettool_pendingcleanup_residimfile.sql (added)
-
share/dettool_pendingcleanup_stacked.sql (added)
-
share/difftool_donecleanup.sql (added)
-
share/difftool_inputskyfile.sql (modified) (2 diffs)
-
share/difftool_pendingcleanuprun.sql (added)
-
share/difftool_pendingcleanupskyfile.sql (added)
-
share/difftool_skyfile.sql (modified) (2 diffs)
-
share/difftool_todiffskyfile.sql (modified) (1 diff)
-
share/faketool_completely_processed_exp.sql (modified) (1 diff)
-
share/faketool_donecleanup.sql (added)
-
share/faketool_find_camrun.sql (modified) (1 diff)
-
share/faketool_find_pendingexp.sql (modified) (1 diff)
-
share/faketool_pendingcleanupimfile.sql (added)
-
share/faketool_pendingcleanuprun.sql (added)
-
share/faketool_queue_cam_id.sql (modified) (1 diff)
-
share/pxadmin_create_tables.sql (modified) (8 diffs)
-
share/stacktool_definebyquery_part1.sql (modified) (1 diff)
-
share/stacktool_definebyquery_test.sql (modified) (1 diff)
-
share/stacktool_donecleanup.sql (added)
-
share/stacktool_find_complete_warps.sql (modified) (1 diff)
-
share/stacktool_inputskyfile.sql (modified) (1 diff)
-
share/stacktool_pendingcleanuprun.sql (added)
-
share/stacktool_pendingcleanupskyfile.sql (added)
-
share/stacktool_sumskyfile.sql (modified) (1 diff)
-
share/stacktool_tosum.sql (modified) (1 diff)
-
share/warptool_donecleanup.sql (added)
-
share/warptool_exp.sql (modified) (1 diff)
-
share/warptool_imfile.sql (modified) (1 diff)
-
share/warptool_pendingcleanuprun.sql (added)
-
share/warptool_pendingcleanupskyfile.sql (added)
-
share/warptool_scmap.sql (modified) (1 diff)
-
share/warptool_tooverlap.sql (modified) (1 diff)
-
share/warptool_towarped.sql (modified) (1 diff)
-
share/warptool_warped.sql (modified) (1 diff)
-
src/Makefile.am (modified) (1 diff)
-
src/camtool.c (modified) (4 diffs)
-
src/camtool.h (modified) (1 diff)
-
src/camtoolConfig.c (modified) (1 diff)
-
src/chiptoolConfig.c (modified) (1 diff)
-
src/dettool.c (modified) (32 diffs)
-
src/dettool.h (modified) (2 diffs)
-
src/dettoolConfig.c (modified) (43 diffs)
-
src/dettool_correction.c (modified) (1 diff)
-
src/dettool_detrunsummary.c (added)
-
src/dettool_normalizedexp.c (added)
-
src/dettool_normalizedimfile.c (added)
-
src/dettool_normalizedstat.c (added)
-
src/dettool_processedexp.c (added)
-
src/dettool_processedimfile.c (added)
-
src/dettool_residexp.c (added)
-
src/dettool_residimfile.c (added)
-
src/dettool_stack.c (added)
-
src/difftool.c (modified) (6 diffs)
-
src/difftool.h (modified) (1 diff)
-
src/difftoolConfig.c (modified) (2 diffs)
-
src/faketool.c (modified) (5 diffs)
-
src/faketool.h (modified) (1 diff)
-
src/faketoolConfig.c (modified) (1 diff)
-
src/guidetool.c (deleted)
-
src/guidetool.h (deleted)
-
src/guidetoolConfig.c (deleted)
-
src/pxcam.c (modified) (4 diffs)
-
src/pxfake.c (modified) (3 diffs)
-
src/pxtools.c (modified) (1 diff)
-
src/pxwarp.c (modified) (3 diffs)
-
src/stacktool.c (modified) (8 diffs)
-
src/stacktool.h (modified) (1 diff)
-
src/stacktoolConfig.c (modified) (2 diffs)
-
src/warptool.c (modified) (5 diffs)
-
src/warptool.h (modified) (1 diff)
-
src/warptoolConfig.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/notes.txt
r18561 r19092 1 2 2008.07.19 EAM 3 4 * need to add cleanup modes to all stages. here is the minimum list 5 of stages that need the cleanups: 6 7 * chiptool - DONE 8 * camtool 9 * faketool 10 * warptool 11 * difftool 12 * stacktool 13 * dettool processedimfile 14 * dettool processedexp 15 * dettool stackedimfile 16 * dettool normalizedstat 17 * dettool normalizedimfile 18 * dettool normalizedexp 19 * dettool residimfile 20 * dettool residexp 21 22 * I am modifiying the tools to use the new states: new, full, goto_cleaned, etc. 23 I am NOT changing: regtool, pztool, magictool, flatcorr, pxregister, pstamptool 24 25 * for dettool, I have added a new field, 'data_state' to the 26 detRunSummary. My plan here is that a complete detRunIteration 27 is cleaned at once. I've added functions to all of the dettool 28 major modes to list pending entries to be cleaned and a function 29 to update the data_state when cleaning is done. 1 30 2 31 2008.07.11 EAM -
trunk/ippTools/share/Makefile.am
r19038 r19092 1 1 dist_pkgdata_DATA = \ 2 camtool_find_chip_id.sql \ 3 camtool_find_pendingexp.sql \ 4 camtool_find_pendingimfile.sql \ 5 camtool_find_processedexp.sql \ 6 camtool_queue_chip_id.sql \ 7 camtool_reset_faulted_runs.sql \ 8 camtool_revertprocessedexp.sql \ 9 chiptool_completely_processed_exp.sql \ 10 chiptool_donecleanup.sql \ 11 chiptool_find_rawexp.sql \ 12 chiptool_pendingcleanupimfile.sql \ 13 chiptool_pendingcleanuprun.sql \ 14 chiptool_pendingimfile.sql \ 15 chiptool_processedimfile.sql \ 16 chiptool_revertprocessedimfile.sql \ 17 chiptool_run.sql \ 18 chiptool_unmasked.sql \ 19 detselect_search.sql \ 20 detselect_select.sql \ 21 dettool_addprocessedexp.sql \ 22 dettool_childlessrun.sql \ 23 dettool_definebydetrun.sql \ 24 dettool_detrunsummary.sql \ 25 dettool_find_completed_runs.sql \ 26 dettool_input.sql \ 27 dettool_normalizedexp.sql \ 28 dettool_normalizedimfile.sql \ 29 dettool_normalizedstat.sql \ 30 dettool_pending.sql \ 31 dettool_processedimfile.sql \ 32 dettool_raw.sql \ 33 dettool_residexp.sql \ 34 dettool_residimfile.sql \ 35 dettool_revertdetrunsummary.sql \ 36 dettool_revertnormalizedexp.sql \ 37 dettool_revertnormalizedimfile.sql \ 38 dettool_revertnormalizedstat.sql \ 39 dettool_revertprocessedexp.sql \ 40 dettool_revertprocessedimfile.sql \ 41 dettool_revertresidexp.sql \ 42 dettool_revertresidimfile.sql\ 43 dettool_revertstacked.sql \ 44 dettool_runs.sql \ 45 dettool_stacked.sql \ 46 dettool_start_new_iteration.sql \ 47 dettool_stop_completed_correct_runs.sql \ 48 dettool_tocorrectexp.sql \ 49 dettool_tocorrectimfile.sql \ 50 dettool_todetrunsummary.sql \ 51 dettool_tonormalize.sql \ 52 dettool_tonormalizedexp.sql \ 53 dettool_tonormalizedstat.sql \ 54 dettool_toprocessedexp.sql \ 55 dettool_toprocessedimfile.sql \ 56 dettool_toresidexp.sql \ 57 dettool_toresidimfile.sql \ 58 dettool_tostacked.sql \ 59 difftool_inputskyfile.sql \ 60 difftool_definebyquery.sql \ 61 difftool_revertdiffskyfile_update.sql \ 62 difftool_revertdiffskyfile_delete.sql \ 63 difftool_skyfile.sql \ 64 difftool_todiffskyfile.sql \ 65 faketool_completely_processed_exp.sql \ 66 faketool_find_camrun.sql \ 67 faketool_find_pendingexp.sql \ 68 faketool_pendingimfile.sql \ 69 faketool_processedimfile.sql \ 70 faketool_queue_cam_id.sql \ 71 faketool_revertprocessedimfile.sql \ 72 faketool_unmasked.sql \ 73 flatcorr_completely_processed_chiprun.sql \ 74 flatcorr_create_tmp_chiprundone.sql \ 75 flatcorr_find_completed_floatcorruns.sql \ 76 flatcorr_find_processedimfiles.sql \ 77 flatcorr_pending.sql \ 78 magictool_definebyquery_temp_create.sql \ 79 magictool_definebyquery_temp_insert.sql \ 80 magictool_definebyquery_temp_insert_groupby.sql \ 81 magictool_definebyquery_select_part1.sql \ 82 magictool_definebyquery_select_part2.sql \ 83 magictool_definebyquery_insert.sql \ 84 magictool_inputskyfile.sql \ 85 magictool_totree.sql \ 86 magictool_tomask.sql \ 87 magictool_toprocess_inputs.sql \ 88 magictool_toprocess_tree.sql \ 89 magictool_toskyfilemask.sql \ 90 magictool_inputs.sql \ 91 magictool_addmask.sql \ 92 magictool_mask.sql \ 93 pstamptool_addjob_otherjob.sql \ 94 pstamptool_addjob_stampjob.sql \ 95 pstamptool_datastore.sql \ 96 pstamptool_pendingjob.sql \ 97 pstamptool_pendingreq.sql \ 98 pxadmin_create_tables.sql \ 99 pxadmin_drop_tables.sql \ 100 pztool_find_completed_exp.sql \ 101 pztool_pendingimfile.sql \ 102 pztool_revert_downloadimfile_faults.sql \ 103 pztool_revert_fileset_faults.sql \ 104 pztool_revertcopied.sql \ 105 regtool_create_dup_table.sql \ 106 regtool_pendingexp.sql \ 107 regtool_pendingimfile.sql \ 108 regtool_populate_dup_table.sql \ 109 regtool_processedexp.sql \ 110 regtool_processedimfile.sql \ 111 regtool_revertprocessedexp.sql \ 112 regtool_revertprocessedimfile.sql \ 113 stacktool_definebyquery_part1.sql \ 114 stacktool_definebyquery_part2.sql \ 115 stacktool_definebyquery_insert.sql \ 116 stacktool_definebyquery_insert_random.sql \ 117 stacktool_inputskyfile.sql \ 118 stacktool_revertsumskyfile_update.sql \ 119 stacktool_revertsumskyfile_delete.sql \ 120 stacktool_sumskyfile.sql \ 121 stacktool_tosum.sql \ 122 warptool_exp.sql \ 123 warptool_imfile.sql \ 124 warptool_revertwarped.sql \ 125 warptool_scmap.sql \ 126 warptool_tooverlap.sql \ 127 warptool_towarped.sql \ 128 warptool_warped.sql 2 camtool_donecleanup.sql \ 3 camtool_find_chip_id.sql \ 4 camtool_find_pendingexp.sql \ 5 camtool_find_pendingimfile.sql \ 6 camtool_find_processedexp.sql \ 7 camtool_pendingcleanupexp.sql \ 8 camtool_pendingcleanuprun.sql \ 9 camtool_queue_chip_id.sql \ 10 camtool_reset_faulted_runs.sql \ 11 camtool_revertprocessedexp.sql \ 12 chiptool_completely_processed_exp.sql \ 13 chiptool_donecleanup.sql \ 14 chiptool_find_rawexp.sql \ 15 chiptool_pendingcleanupimfile.sql \ 16 chiptool_pendingcleanuprun.sql \ 17 chiptool_pendingimfile.sql \ 18 chiptool_processedimfile.sql \ 19 chiptool_revertprocessedimfile.sql \ 20 chiptool_run.sql \ 21 chiptool_unmasked.sql \ 22 detselect_search.sql \ 23 detselect_select.sql \ 24 dettool_addprocessedexp.sql \ 25 dettool_childlessrun.sql \ 26 dettool_definebydetrun.sql \ 27 dettool_detrunsummary.sql \ 28 dettool_find_completed_runs.sql \ 29 dettool_input.sql \ 30 dettool_normalizedexp.sql \ 31 dettool_normalizedimfile.sql \ 32 dettool_normalizedstat.sql \ 33 dettool_pending.sql \ 34 dettool_pendingcleanup_normalizedexp.sql \ 35 dettool_pendingcleanup_normalizedimfile.sql \ 36 dettool_pendingcleanup_normalizedstat.sql \ 37 dettool_pendingcleanup_processedexp.sql \ 38 dettool_pendingcleanup_processedimfile.sql \ 39 dettool_pendingcleanup_residexp.sql \ 40 dettool_pendingcleanup_residimfile.sql \ 41 dettool_pendingcleanup_stacked.sql \ 42 dettool_processedimfile.sql \ 43 dettool_raw.sql \ 44 dettool_residexp.sql \ 45 dettool_residimfile.sql \ 46 dettool_revertdetrunsummary.sql \ 47 dettool_revertnormalizedexp.sql \ 48 dettool_revertnormalizedimfile.sql \ 49 dettool_revertnormalizedstat.sql \ 50 dettool_revertprocessedexp.sql \ 51 dettool_revertprocessedimfile.sql \ 52 dettool_revertresidexp.sql \ 53 dettool_revertresidimfile.sql \ 54 dettool_revertstacked.sql \ 55 dettool_runs.sql \ 56 dettool_stacked.sql \ 57 dettool_start_new_iteration.sql \ 58 dettool_stop_completed_correct_runs.sql \ 59 dettool_tocorrectexp.sql \ 60 dettool_tocorrectimfile.sql \ 61 dettool_todetrunsummary.sql \ 62 dettool_tonormalize.sql \ 63 dettool_tonormalizedexp.sql \ 64 dettool_tonormalizedstat.sql \ 65 dettool_toprocessedexp.sql \ 66 dettool_toprocessedimfile.sql \ 67 dettool_toresidexp.sql \ 68 dettool_toresidimfile.sql \ 69 dettool_tostacked.sql \ 70 difftool_definebyquery.sql \ 71 difftool_donecleanup.sql \ 72 difftool_inputskyfile.sql \ 73 difftool_pendingcleanuprun.sql \ 74 difftool_pendingcleanupskyfile.sql \ 75 difftool_revertdiffskyfile_delete.sql \ 76 difftool_revertdiffskyfile_update.sql \ 77 difftool_skyfile.sql \ 78 difftool_todiffskyfile.sql \ 79 faketool_completely_processed_exp.sql \ 80 faketool_donecleanup.sql \ 81 faketool_find_camrun.sql \ 82 faketool_find_pendingexp.sql \ 83 faketool_pendingcleanupimfile.sql \ 84 faketool_pendingcleanuprun.sql \ 85 faketool_pendingimfile.sql \ 86 faketool_processedimfile.sql \ 87 faketool_queue_cam_id.sql \ 88 faketool_revertprocessedimfile.sql \ 89 faketool_unmasked.sql \ 90 flatcorr_completely_processed_chiprun.sql \ 91 flatcorr_create_tmp_chiprundone.sql \ 92 flatcorr_find_completed_floatcorruns.sql \ 93 flatcorr_find_processedimfiles.sql \ 94 flatcorr_pending.sql \ 95 magictool_addmask.sql \ 96 magictool_create_tmp_warpcomplete.sql \ 97 magictool_definebyquery.sql \ 98 magictool_definebyquery_insert.sql \ 99 magictool_definebyquery_select_part1.sql \ 100 magictool_definebyquery_select_part2.sql \ 101 magictool_definebyquery_select_test.sql \ 102 magictool_definebyquery_temp_create.sql \ 103 magictool_definebyquery_temp_insert.sql \ 104 magictool_definebyquery_temp_insert_groupby.sql \ 105 magictool_inputs.sql \ 106 magictool_inputskyfile.sql \ 107 magictool_mask.sql \ 108 magictool_tomask.sql \ 109 magictool_toprocess_inputs.sql \ 110 magictool_toprocess_tree.sql \ 111 magictool_toskyfilemask.sql \ 112 magictool_totree.sql \ 113 pstamptool_addjob_otherjob.sql \ 114 pstamptool_addjob_stampjob.sql \ 115 pstamptool_datastore.sql \ 116 pstamptool_pendingjob.sql \ 117 pstamptool_pendingreq.sql \ 118 pxadmin_create_tables.sql \ 119 pxadmin_drop_tables.sql \ 120 pztool_find_completed_exp.sql \ 121 pztool_pendingimfile.sql \ 122 pztool_revert_downloadimfile_faults.sql \ 123 pztool_revert_fileset_faults.sql \ 124 pztool_revertcopied.sql \ 125 regtool_create_dup_table.sql \ 126 regtool_pendingexp.sql \ 127 regtool_pendingimfile.sql \ 128 regtool_populate_dup_table.sql \ 129 regtool_processedexp.sql \ 130 regtool_processedimfile.sql \ 131 regtool_revertprocessedexp.sql \ 132 regtool_revertprocessedimfile.sql \ 133 stacktool_definebyquery_insert.sql \ 134 stacktool_definebyquery_insert_random.sql \ 135 stacktool_definebyquery_part1.sql \ 136 stacktool_definebyquery_part2.sql \ 137 stacktool_definebyquery_test.sql \ 138 stacktool_donecleanup.sql \ 139 stacktool_find_complete_warps.sql \ 140 stacktool_inputskyfile.sql \ 141 stacktool_pendingcleanuprun.sql \ 142 stacktool_pendingcleanupskyfile.sql \ 143 stacktool_revertsumskyfile_delete.sql \ 144 stacktool_revertsumskyfile_update.sql \ 145 stacktool_sumskyfile.sql \ 146 stacktool_tosum.sql \ 147 warptool_donecleanup.sql \ 148 warptool_exp.sql \ 149 warptool_imfile.sql \ 150 warptool_pendingcleanuprun.sql \ 151 warptool_pendingcleanupskyfile.sql \ 152 warptool_revertwarped.sql \ 153 warptool_scmap.sql \ 154 warptool_tooverlap.sql \ 155 warptool_towarped.sql \ 156 warptool_warped.sql -
trunk/ippTools/share/camtool_find_pendingexp.sql
r18366 r19092 25 25 WHERE 26 26 chipRun.state = 'full' 27 AND camRun.state = ' run'27 AND camRun.state = 'new' 28 28 AND camMask.label IS NULL 29 29 AND camProcessedExp.cam_id IS NULL -
trunk/ippTools/share/camtool_reset_faulted_runs.sql
r17216 r19092 1 1 UPDATE camRun, camProcessedExp, chipRun, rawExp 2 SET camRun.state = ' run'2 SET camRun.state = 'new' 3 3 WHERE 4 4 camRun.cam_id = camProcessedExp.cam_id -
trunk/ippTools/share/dettool_addprocessedexp.sql
r18561 r19092 25 25 AND detProcessedExp.exp_id IS NULL 26 26 AND detInputExp.include = 1 27 AND detRun.det_id = % s28 AND detProcessedImfile.exp_id = '%s'27 AND detRun.det_id = %lld 28 AND detProcessedImfile.exp_id = %lld 29 29 GROUP BY 30 30 detProcessedImfile.class_id, -
trunk/ippTools/share/dettool_definebydetrun.sql
r18561 r19092 3 3 INSERT INTO detInputExp 4 4 SELECT 5 % d,5 %lld, 6 6 0, 7 7 detResidExp.exp_id, … … 10 10 JOIN rawExp 11 11 USING(exp_id) 12 WHERE det_id = % d12 WHERE det_id = %lld -
trunk/ippTools/share/difftool_inputskyfile.sql
r18448 r19092 30 30 ON chipRun.exp_id = rawExp.exp_id 31 31 WHERE 32 diffRun.state = ' run'33 AND warpRun.state = ' stop'34 AND fakeRun.state = ' stop'35 AND camRun.state = ' stop'32 diffRun.state = 'new' 33 AND warpRun.state = 'full' 34 AND fakeRun.state = 'full' 35 AND camRun.state = 'full' 36 36 AND chipRun.state = 'full' 37 37 UNION … … 66 66 ON chipRun.exp_id = rawExp.exp_id 67 67 WHERE 68 diffRun.state = ' run'69 AND warpRun.state = ' stop'70 AND fakeRun.state = ' stop'71 AND camRun.state = ' stop'68 diffRun.state = 'new' 69 AND warpRun.state = 'full' 70 AND fakeRun.state = 'full' 71 AND camRun.state = 'full' 72 72 AND chipRun.state = 'full' 73 73 ) as Foo -
trunk/ippTools/share/difftool_skyfile.sql
r18975 r19092 9 9 JOIN diffSkyfile 10 10 USING(diff_id) 11 -- my new stuff begins here11 -- WS: my new stuff begins here 12 12 JOIN diffInputSkyfile 13 13 ON diffInputSkyfile.diff_id = diffRun.diff_id … … 23 23 JOIN rawExp 24 24 ON chipRun.exp_id = rawExp.exp_id 25 -- my new stuff ends here25 -- WS: my new stuff ends here 26 26 WHERE 27 27 -- bogus test to allow appending conditionals 28 -- XXX EAM : this is not needed if we modify the difftool.c code : fix 28 29 diffRun.diff_id IS NOT NULL 29 -
trunk/ippTools/share/difftool_todiffskyfile.sql
r18448 r19092 25 25 ON diffInputSkyfile.diff_id = diffSkyfile.diff_id 26 26 WHERE 27 diffRun.state = ' run'28 AND warpRun.state = ' stop'29 AND fakeRun.state = ' stop'30 AND camRun.state = ' stop'27 diffRun.state = 'new' 28 AND warpRun.state = 'full' 29 AND fakeRun.state = 'full' 30 AND camRun.state = 'full' 31 31 AND chipRun.state = 'full' 32 32 AND diffSkyfile.diff_id IS NULL -
trunk/ippTools/share/faketool_completely_processed_exp.sql
r17938 r19092 31 31 AND rawImfile.class_id = fakeProcessedImfile.class_id 32 32 WHERE 33 fakeRun.state = ' run'33 fakeRun.state = 'new' 34 34 GROUP BY 35 35 fakeRun.fake_id, -
trunk/ippTools/share/faketool_find_camrun.sql
r18448 r19092 32 32 using(exp_id) 33 33 WHERE 34 camRun.state = ' stop'34 camRun.state = 'full' 35 35 AND chipRun.state = 'full' 36 36 ) as Foo -
trunk/ippTools/share/faketool_find_pendingexp.sql
r18688 r19092 25 25 ON fakeRun.label = fakeMask.label 26 26 WHERE 27 fakeRun.state = ' run'28 AND camRun.state = ' stop'27 fakeRun.state = 'new' 28 AND camRun.state = 'full' 29 29 AND chipRun.state = 'full' 30 30 AND fakeMask.label IS NULL -
trunk/ippTools/share/faketool_queue_cam_id.sql
r17938 r19092 14 14 FROM camRun 15 15 WHERE 16 camRun.state = ' stop'16 camRun.state = 'full' 17 17 AND camRun.cam_id = %lld -
trunk/ippTools/share/pxadmin_create_tables.sql
r18764 r19092 485 485 user_5 DOUBLE, 486 486 path_base VARCHAR(255), 487 data_state VARCHAR(64), 487 488 fault SMALLINT NOT NULL, 488 489 PRIMARY KEY(det_id, exp_id, class_id), … … 512 513 user_5 DOUBLE, 513 514 path_base VARCHAR(255), 515 data_state VARCHAR(64), 514 516 fault SMALLINT NOT NULL, 515 517 PRIMARY KEY(det_id, exp_id), … … 535 537 user_4 DOUBLE, 536 538 user_5 DOUBLE, 539 data_state VARCHAR(64), 537 540 fault SMALLINT NOT NULL, 538 541 PRIMARY KEY(det_id, iteration, class_id), … … 549 552 class_id VARCHAR(64), 550 553 norm FLOAT, 554 data_state VARCHAR(64), 551 555 fault SMALLINT NOT NULL, 552 556 PRIMARY KEY(det_id, iteration, class_id), … … 572 576 user_5 DOUBLE, 573 577 path_base VARCHAR(255), 578 data_state VARCHAR(64), 574 579 fault SMALLINT NOT NULL, 575 580 PRIMARY KEY(det_id, iteration, class_id), … … 595 600 user_5 DOUBLE, 596 601 path_base VARCHAR(255), 602 data_state VARCHAR(64), 597 603 fault SMALLINT NOT NULL, 598 604 PRIMARY KEY(det_id, iteration), … … 629 635 user_5 DOUBLE, 630 636 path_base VARCHAR(255), 637 data_state VARCHAR(64), 631 638 fault SMALLINT NOT NULL, 632 639 PRIMARY KEY(det_id, iteration, exp_id, class_id), … … 641 648 ) ENGINE=innodb DEFAULT CHARSET=latin1; 642 649 643 CREATE TABLE detResidExp (det_id BIGINT, iteration INT, exp_id BIGINT, recipe VARCHAR(64), bg DOUBLE, bg_stdev DOUBLE, bg_mean_stdev DOUBLE, bg_skewness DOUBLE, bg_kurtosis DOUBLE, bin_stdev DOUBLE, fringe_0 DOUBLE, fringe_1 DOUBLE, fringe_2 DOUBLE, fringe_resid_0 DOUBLE, fringe_resid_1 DOUBLE, fringe_resid_2 DOUBLE, user_1 DOUBLE, user_2 DOUBLE, user_3 DOUBLE, user_4 DOUBLE, user_5 DOUBLE, path_base VARCHAR(255), accept TINYINT, fault SMALLINT NOT NULL, PRIMARY KEY(det_id, iteration, exp_id), KEY(fault), INDEX(det_id, iteration), FOREIGN KEY (det_id, iteration, exp_id) REFERENCES detInputExp(det_id, iteration, exp_id), FOREIGN KEY (det_id, iteration, exp_id) REFERENCES detResidImfile(det_id, iteration, exp_id)) ENGINE=innodb DEFAULT CHARSET=latin1; 644 CREATE TABLE detRunSummary (det_id BIGINT, iteration INT, bg DOUBLE, bg_stdev DOUBLE, bg_mean_stdev DOUBLE, accept TINYINT, fault SMALLINT NOT NULL, PRIMARY KEY(det_id, iteration), KEY(fault), FOREIGN KEY (det_id, iteration) REFERENCES detInputExp(det_id, iteration), FOREIGN KEY (det_id, iteration) REFERENCES detResidExp(det_id, iteration)) ENGINE=innodb DEFAULT CHARSET=latin1; 645 CREATE TABLE detRegisteredImfile (det_id BIGINT, iteration INT, class_id VARCHAR(64), uri VARCHAR(255), bg DOUBLE, bg_stdev DOUBLE, bg_mean_stdev DOUBLE, user_1 DOUBLE, user_2 DOUBLE, user_3 DOUBLE, user_4 DOUBLE, user_5 DOUBLE, path_base VARCHAR(255), fault SMALLINT NOT NULL, PRIMARY KEY(det_id, iteration, class_id), KEY(fault), FOREIGN KEY (det_id, iteration) REFERENCES detRun(det_id, iteration)) ENGINE=innodb DEFAULT CHARSET=latin1; 650 CREATE TABLE detResidExp ( 651 det_id BIGINT, 652 iteration INT, 653 exp_id BIGINT, 654 recipe VARCHAR(64), 655 bg DOUBLE, 656 bg_stdev DOUBLE, 657 bg_mean_stdev DOUBLE, 658 bg_skewness DOUBLE, 659 bg_kurtosis DOUBLE, 660 bin_stdev DOUBLE, 661 fringe_0 DOUBLE, 662 fringe_1 DOUBLE, 663 fringe_2 DOUBLE, 664 fringe_resid_0 DOUBLE, 665 fringe_resid_1 DOUBLE, 666 fringe_resid_2 DOUBLE, 667 user_1 DOUBLE, 668 user_2 DOUBLE, 669 user_3 DOUBLE, 670 user_4 DOUBLE, 671 user_5 DOUBLE, 672 path_base VARCHAR(255), 673 data_state VARCHAR(64), 674 accept TINYINT, 675 fault SMALLINT NOT NULL, 676 PRIMARY KEY(det_id, iteration, exp_id), 677 KEY(fault), 678 INDEX(det_id, iteration), 679 FOREIGN KEY (det_id, iteration, exp_id) 680 REFERENCES detInputExp(det_id, iteration, exp_id), 681 FOREIGN KEY (det_id, iteration, exp_id) 682 REFERENCES detResidImfile(det_id, iteration, exp_id) 683 ) ENGINE=innodb DEFAULT CHARSET=latin1; 684 685 CREATE TABLE detRunSummary ( 686 det_id BIGINT, 687 iteration INT, 688 data_state VARCHAR(64), 689 bg DOUBLE, 690 bg_stdev DOUBLE, 691 bg_mean_stdev DOUBLE, 692 accept TINYINT, 693 fault SMALLINT NOT NULL, 694 PRIMARY KEY(det_id, iteration), 695 KEY(fault), 696 FOREIGN KEY (det_id, iteration) 697 REFERENCES detInputExp(det_id, iteration), 698 FOREIGN KEY (det_id, iteration) 699 REFERENCES detResidExp(det_id, iteration) 700 ) ENGINE=innodb DEFAULT CHARSET=latin1; 701 702 CREATE TABLE detRegisteredImfile ( 703 det_id BIGINT, 704 iteration INT, 705 class_id VARCHAR(64), 706 uri VARCHAR(255), 707 bg DOUBLE, 708 bg_stdev DOUBLE, 709 bg_mean_stdev DOUBLE, 710 user_1 DOUBLE, 711 user_2 DOUBLE, 712 user_3 DOUBLE, 713 user_4 DOUBLE, 714 user_5 DOUBLE, 715 path_base VARCHAR(255), 716 data_state VARCHAR(64), 717 fault SMALLINT NOT NULL, 718 PRIMARY KEY(det_id, iteration, class_id), 719 KEY(fault), 720 FOREIGN KEY (det_id, iteration) 721 REFERENCES detRun(det_id, iteration) 722 ) ENGINE=innodb DEFAULT CHARSET=latin1; 646 723 647 724 CREATE TABLE warpRun ( -
trunk/ippTools/share/stacktool_definebyquery_part1.sql
r18609 r19092 23 23 JOIN rawExp USING(exp_id, tess_id) 24 24 WHERE 25 warpRun.state = ' stop'25 warpRun.state = 'full' 26 26 AND warpSkyfile.ignored = 0 27 27 AND warpSkyfile.fault = 0 -
trunk/ippTools/share/stacktool_definebyquery_test.sql
r18609 r19092 30 30 JOIN rawExp USING(exp_id, tess_id) 31 31 WHERE 32 warpRun.state = ' stop'32 warpRun.state = 'full' 33 33 AND warpSkyfile.ignored = 0 34 34 AND warpSkyfile.fault = 0 -
trunk/ippTools/share/stacktool_find_complete_warps.sql
r18574 r19092 23 23 AND stackRun.stack_id = stackInputSkyfile.stack_id 24 24 WHERE 25 warpRun.state = ' stop'25 warpRun.state = 'full' 26 26 AND warpSkyfile.ignored = 0 27 27 GROUP BY -
trunk/ippTools/share/stacktool_inputskyfile.sql
r18029 r19092 22 22 ON chipProcessedImfile.exp_id = rawExp.exp_id 23 23 WHERE 24 stackRun.state = ' run'24 stackRun.state = 'new' -
trunk/ippTools/share/stacktool_sumskyfile.sql
r18975 r19092 20 20 WHERE 21 21 -- bogus test; just here so there there is a 'WHERE' stmt to append conditionals too 22 -- XXX EAM : this is not needed : fix the stacktool code. 22 23 stackRun.stack_id is NOT NULL -
trunk/ippTools/share/stacktool_tosum.sql
r18483 r19092 25 25 USING(stack_id) 26 26 WHERE 27 stackRun.state = ' run'27 stackRun.state = 'new' 28 28 AND stackSumSkyfile.stack_id IS NULL -
trunk/ippTools/share/warptool_exp.sql
r18029 r19092 5 5 USING(fake_id) 6 6 WHERE 7 warpRun.state = ' run'8 AND fakeRun.state = ' stop'7 warpRun.state = 'new' 8 AND fakeRun.state = 'full' -
trunk/ippTools/share/warptool_imfile.sql
r18448 r19092 21 21 AND chipProcessedImfile.class_id = rawImfile.class_id 22 22 WHERE 23 warpRun.state = ' run'24 AND fakeRun.state = ' stop'25 AND camRun.state = ' stop'23 warpRun.state = 'new' 24 AND fakeRun.state = 'full' 25 AND camRun.state = 'full' 26 26 AND chipRun.state = 'full' 27 27 -
trunk/ippTools/share/warptool_scmap.sql
r18448 r19092 19 19 AND warpSkyCellMap.class_id = chipProcessedImfile.class_id 20 20 WHERE 21 -- warpRun.state = ' run'22 fakeRun.state = ' stop'23 AND camRun.state = ' stop'21 -- warpRun.state = 'new' 22 fakeRun.state = 'full' 23 AND camRun.state = 'full' 24 24 AND chipRun.state = 'full' -
trunk/ippTools/share/warptool_tooverlap.sql
r18915 r19092 23 23 ON warpRun.label = warpMask.label 24 24 WHERE 25 warpRun.state = ' run'26 AND fakeRun.state = ' stop'27 AND camRun.state = ' stop'25 warpRun.state = 'new' 26 AND fakeRun.state = 'full' 27 AND camRun.state = 'full' 28 28 AND chipRun.state = 'full' 29 29 AND warpSkyCellMap.warp_id IS NULL -
trunk/ippTools/share/warptool_towarped.sql
r18448 r19092 27 27 ON warpRun.label = warpMask.label 28 28 WHERE 29 warpRun.state = ' run'30 AND fakeRun.state = ' stop'31 AND camRun.state = ' stop'29 warpRun.state = 'new' 30 AND fakeRun.state = 'full' 31 AND camRun.state = 'full' 32 32 AND chipRun.state = 'full' 33 33 AND warpSkyfile.warp_id IS NULL -
trunk/ippTools/share/warptool_warped.sql
r18975 r19092 17 17 WHERE 18 18 -- bogus test; just here so there there is a 'WHERE' stmt to append conditionals too 19 -- XXX EAM : not needed: fix warptool.c 19 20 warpRun.warp_id is NOT NULL -
trunk/ippTools/src/Makefile.am
r18765 r19092 173 173 dettool.c \ 174 174 dettoolConfig.c \ 175 dettool_correction.c 175 dettool_correction.c \ 176 dettool_detrunsummary.c \ 177 dettool_normalizedexp.c \ 178 dettool_normalizedimfile.c \ 179 dettool_normalizedstat.c \ 180 dettool_processedexp.c \ 181 dettool_processedimfile.c \ 182 dettool_residexp.c \ 183 dettool_residimfile.c \ 184 dettool_stack.c 176 185 177 186 detselect_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(IPPDB_CFLAGS) -
trunk/ippTools/src/camtool.c
r18561 r19092 41 41 static bool maskedMode(pxConfig *config); 42 42 static bool unblockMode(pxConfig *config); 43 static bool pendingcleanuprunMode(pxConfig *config); 44 static bool pendingcleanupexpMode(pxConfig *config); 45 static bool donecleanupMode(pxConfig *config); 43 46 44 47 # define MODECASE(caseName, func) \ … … 71 74 MODECASE(CAMTOOL_MODE_MASKED, maskedMode); 72 75 MODECASE(CAMTOOL_MODE_UNBLOCK, unblockMode); 76 MODECASE(CAMTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); 77 MODECASE(CAMTOOL_MODE_PENDINGCLEANUPEXP, pendingcleanupexpMode); 78 MODECASE(CAMTOOL_MODE_DONECLEANUP, donecleanupMode); 73 79 default: 74 80 psAbort("invalid option (this should not happen)"); … … 570 576 571 577 // since there is only one exp per 'run' set camRun.state = 'stop' 572 if (!pxcamRunSetState(config, row->cam_id, " stop")) {578 if (!pxcamRunSetState(config, row->cam_id, "full")) { 573 579 psError(PS_ERR_UNKNOWN, false, "failed to change camRun.state for cam_id: %" PRId64, row->cam_id); 574 580 psFree(row); … … 914 920 return true; 915 921 } 922 923 static bool pendingcleanuprunMode(pxConfig *config) 924 { 925 PS_ASSERT_PTR_NON_NULL(config, NULL); 926 927 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 928 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 929 930 psMetadata *where = psMetadataAlloc(); 931 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 932 933 psString query = pxDataGet("camtool_pendingcleanuprun.sql"); 934 if (!query) { 935 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 936 return false; 937 } 938 939 if (where && psListLength(where->list)) { 940 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 941 psStringAppend(&query, " AND %s", whereClause); 942 psFree(whereClause); 943 } 944 psFree(where); 945 946 // treat limit == 0 as "no limit" 947 if (limit) { 948 psString limitString = psDBGenerateLimitSQL(limit); 949 psStringAppend(&query, " %s", limitString); 950 psFree(limitString); 951 } 952 953 if (!p_psDBRunQuery(config->dbh, query)) { 954 psError(PS_ERR_UNKNOWN, false, "database error"); 955 psFree(query); 956 return false; 957 } 958 psFree(query); 959 960 psArray *output = p_psDBFetchResult(config->dbh); 961 if (!output) { 962 psError(PS_ERR_UNKNOWN, false, "database error"); 963 return false; 964 } 965 if (!psArrayLength(output)) { 966 psTrace("camtool", PS_LOG_INFO, "no rows found"); 967 psFree(output); 968 return true; 969 } 970 971 // negative simple so the default is true 972 if (!ippdbPrintMetadatas(stdout, output, "camPendingCleanupRun", !simple)) { 973 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 974 psFree(output); 975 return false; 976 } 977 978 psFree(output); 979 980 return true; 981 } 982 983 984 static bool pendingcleanupexpMode(pxConfig *config) 985 { 986 PS_ASSERT_PTR_NON_NULL(config, NULL); 987 988 PXOPT_LOOKUP_S64(cam_id, config->args, "-cam_id", false, false); 989 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 990 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 991 992 psMetadata *where = psMetadataAlloc(); 993 if (cam_id) { 994 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); 995 } 996 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 997 998 psString query = pxDataGet("camtool_pendingcleanupexp.sql"); 999 if (!query) { 1000 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1001 return false; 1002 } 1003 1004 if (where && psListLength(where->list)) { 1005 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1006 psStringAppend(&query, " AND %s", whereClause); 1007 psFree(whereClause); 1008 } 1009 psFree(where); 1010 1011 // treat limit == 0 as "no limit" 1012 if (limit) { 1013 psString limitString = psDBGenerateLimitSQL(limit); 1014 psStringAppend(&query, " %s", limitString); 1015 psFree(limitString); 1016 } 1017 1018 if (!p_psDBRunQuery(config->dbh, query)) { 1019 psError(PS_ERR_UNKNOWN, false, "database error"); 1020 psFree(query); 1021 return false; 1022 } 1023 psFree(query); 1024 1025 psArray *output = p_psDBFetchResult(config->dbh); 1026 if (!output) { 1027 psError(PS_ERR_UNKNOWN, false, "database error"); 1028 return false; 1029 } 1030 if (!psArrayLength(output)) { 1031 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 1032 psFree(output); 1033 return true; 1034 } 1035 1036 // negative simple so the default is true 1037 if (!ippdbPrintMetadatas(stdout, output, "camPendingCleanupExp", !simple)) { 1038 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1039 psFree(output); 1040 return false; 1041 } 1042 1043 psFree(output); 1044 1045 return true; 1046 } 1047 1048 1049 static bool donecleanupMode(pxConfig *config) 1050 { 1051 PS_ASSERT_PTR_NON_NULL(config, NULL); 1052 1053 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1054 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1055 1056 psMetadata *where = psMetadataAlloc(); 1057 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1058 1059 psString query = pxDataGet("camtool_donecleanup.sql"); 1060 if (!query) { 1061 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1062 return false; 1063 } 1064 1065 if (where && psListLength(where->list)) { 1066 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1067 psStringAppend(&query, " AND %s", whereClause); 1068 psFree(whereClause); 1069 } 1070 psFree(where); 1071 1072 // treat limit == 0 as "no limit" 1073 if (limit) { 1074 psString limitString = psDBGenerateLimitSQL(limit); 1075 psStringAppend(&query, " %s", limitString); 1076 psFree(limitString); 1077 } 1078 1079 if (!p_psDBRunQuery(config->dbh, query)) { 1080 psError(PS_ERR_UNKNOWN, false, "database error"); 1081 psFree(query); 1082 return false; 1083 } 1084 psFree(query); 1085 1086 psArray *output = p_psDBFetchResult(config->dbh); 1087 if (!output) { 1088 psError(PS_ERR_UNKNOWN, false, "database error"); 1089 return false; 1090 } 1091 if (!psArrayLength(output)) { 1092 psTrace("camtool", PS_LOG_INFO, "no rows found"); 1093 psFree(output); 1094 return true; 1095 } 1096 1097 // negative simple so the default is true 1098 if (!ippdbPrintMetadatas(stdout, output, "camDoneCleanup", !simple)) { 1099 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1100 psFree(output); 1101 return false; 1102 } 1103 1104 psFree(output); 1105 1106 return true; 1107 } -
trunk/ippTools/src/camtool.h
r18093 r19092 35 35 CAMTOOL_MODE_BLOCK, 36 36 CAMTOOL_MODE_MASKED, 37 CAMTOOL_MODE_UNBLOCK 37 CAMTOOL_MODE_UNBLOCK, 38 CAMTOOL_MODE_PENDINGCLEANUPRUN, 39 CAMTOOL_MODE_PENDINGCLEANUPEXP, 40 CAMTOOL_MODE_DONECLEANUP, 38 41 } camtoolMode; 39 42 -
trunk/ippTools/src/camtoolConfig.c
r18561 r19092 274 274 psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label", 0, "name of a label to unmask (required)", NULL); 275 275 276 // -pendingcleanuprun 277 psMetadata *pendingcleanuprunArgs = psMetadataAlloc(); 278 psMetadataAddStr(pendingcleanuprunArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 279 psMetadataAddBool(pendingcleanuprunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 280 psMetadataAddU64(pendingcleanuprunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 281 282 // -pendingcleanupexp 283 psMetadata *pendingcleanupexpArgs = psMetadataAlloc(); 284 psMetadataAddStr(pendingcleanupexpArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 285 psMetadataAddS64(pendingcleanupexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by camera ID", 0); 286 psMetadataAddStr(pendingcleanupexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", NULL); 287 psMetadataAddBool(pendingcleanupexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 288 psMetadataAddU64(pendingcleanupexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 289 290 // -donecleanup 291 psMetadata *donecleanupArgs = psMetadataAlloc(); 292 psMetadataAddStr(donecleanupArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 293 psMetadataAddBool(donecleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 294 psMetadataAddU64(donecleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 295 276 296 psMetadata *argSets = psMetadataAlloc(); 277 297 psMetadata *modes = psMetadataAlloc(); 278 298 279 PXOPT_ADD_MODE("-definebyquery", "", CAMTOOL_MODE_DEFINEBYQUERY, definebydefinebyqueryArgs); 280 PXOPT_ADD_MODE("-updaterun", "", CAMTOOL_MODE_UPDATERUN, updaterunArgs); 281 PXOPT_ADD_MODE("-pendingexp", "", CAMTOOL_MODE_PENDINGEXP, pendingexpArgs); 282 PXOPT_ADD_MODE("-pendingimfile", "", CAMTOOL_MODE_PENDINGIMFILE, pendingimfileArgs); 283 PXOPT_ADD_MODE("-addprocessedexp", "", CAMTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs); 284 PXOPT_ADD_MODE("-processedexp", "", CAMTOOL_MODE_PROCESSEDEXP, processedexpArgs); 285 PXOPT_ADD_MODE("-revertprocessedexp", "", CAMTOOL_MODE_REVERTPROCESSEDEXP, revertprocessedexpArgs); 286 PXOPT_ADD_MODE("-updateprocessedexp", "", CAMTOOL_MODE_UPDATEPROCESSEDEXP,updateprocessedexpArgs); 287 PXOPT_ADD_MODE("-block", "", CAMTOOL_MODE_BLOCK, blockArgs); 288 PXOPT_ADD_MODE("-masked", "", CAMTOOL_MODE_MASKED, maskedArgs); 289 PXOPT_ADD_MODE("-unblock", "", CAMTOOL_MODE_UNBLOCK, unblockArgs); 299 PXOPT_ADD_MODE("-definebyquery", "create runs from chip stage", CAMTOOL_MODE_DEFINEBYQUERY, definebydefinebyqueryArgs); 300 PXOPT_ADD_MODE("-updaterun", "change cam run properties", CAMTOOL_MODE_UPDATERUN, updaterunArgs); 301 PXOPT_ADD_MODE("-pendingexp", "show pending exposures", CAMTOOL_MODE_PENDINGEXP, pendingexpArgs); 302 PXOPT_ADD_MODE("-pendingimfile", "show pending imfiles", CAMTOOL_MODE_PENDINGIMFILE, pendingimfileArgs); 303 PXOPT_ADD_MODE("-addprocessedexp", "add a processed exposure", CAMTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs); 304 PXOPT_ADD_MODE("-processedexp", "show processed exposures", CAMTOOL_MODE_PROCESSEDEXP, processedexpArgs); 305 PXOPT_ADD_MODE("-revertprocessedexp", "change procesed exp properties", CAMTOOL_MODE_REVERTPROCESSEDEXP, revertprocessedexpArgs); 306 PXOPT_ADD_MODE("-updateprocessedexp", "undo a processed exposure", CAMTOOL_MODE_UPDATEPROCESSEDEXP,updateprocessedexpArgs); 307 PXOPT_ADD_MODE("-block", "set a label block", CAMTOOL_MODE_BLOCK, blockArgs); 308 PXOPT_ADD_MODE("-masked", "show blocked labels", CAMTOOL_MODE_MASKED, maskedArgs); 309 PXOPT_ADD_MODE("-unblock", "remove a label block", CAMTOOL_MODE_UNBLOCK, unblockArgs); 310 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", CAMTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs); 311 PXOPT_ADD_MODE("-pendingcleanupexp", "show exposures for cleanup runs", CAMTOOL_MODE_PENDINGCLEANUPEXP, pendingcleanupexpArgs); 312 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", CAMTOOL_MODE_DONECLEANUP, donecleanupArgs); 290 313 291 314 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/chiptoolConfig.c
r18976 r19092 280 280 psMetadataAddU64(pendingcleanuprunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 281 281 282 // -pendingcleanupi fmile282 // -pendingcleanupimfile 283 283 psMetadata *pendingcleanupimfileArgs = psMetadataAlloc(); 284 284 psMetadataAddStr(pendingcleanupimfileArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 285 psMetadataAddS64(pendingcleanupimfileArgs, PS_LIST_TAIL, "-chip_id", 0, 286 "search by chip ID", 0); 285 psMetadataAddS64(pendingcleanupimfileArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip ID", 0); 287 286 psMetadataAddStr(pendingcleanupimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", NULL); 288 287 psMetadataAddBool(pendingcleanupimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 289 288 psMetadataAddU64(pendingcleanupimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 290 289 291 // -donecle naup290 // -donecleanup 292 291 psMetadata *donecleanupArgs = psMetadataAlloc(); 293 292 psMetadataAddStr(donecleanupArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); -
trunk/ippTools/src/dettool.c
r18561 r19092 28 28 static bool inputMode(pxConfig *config); 29 29 static bool rawMode(pxConfig *config); 30 // processedimfile 31 static bool toprocessedimfileMode(pxConfig *config); 32 static bool addprocessedimfileMode(pxConfig *config); 33 static bool processedimfileMode(pxConfig *config); 34 static bool revertprocessedimfileMode(pxConfig *config); 35 // processedexp 36 static bool toprocessedexpMode(pxConfig *config); 37 static bool addprocessedexpMode(pxConfig *config); 38 static bool processedexpMode(pxConfig *config); 39 static bool revertprocessedexpMode(pxConfig *config); 40 // stackedimfile 41 static bool tostackedMode(pxConfig *config); 42 static bool addstackedMode(pxConfig *config); 43 static bool stackedMode(pxConfig *config); 44 static bool revertstackedMode(pxConfig *config); 45 // normalizedstat 46 static bool tonormalizedstatMode(pxConfig *config); 47 static bool addnormalizedstatMode(pxConfig *config); 48 static bool normalizedstatMode(pxConfig *config); 49 static bool revertnormalizedstatMode(pxConfig *config); 50 // normalizedimfile 51 static bool tonormalizeMode(pxConfig *config); 52 static bool addnormalizedimfileMode(pxConfig *config); 53 static bool normalizedimfileMode(pxConfig *config); 54 static bool revertnormalizedimfileMode(pxConfig *config); 55 // normalizedexp 56 static bool tonormalizedexpMode(pxConfig *config); 57 static bool addnormalizedexpMode(pxConfig *config); 58 static bool normalizedexpMode(pxConfig *config); 59 static bool revertnormalizedexpMode(pxConfig *config); 60 // residimfile 61 static bool toresidimfileMode(pxConfig *config); 62 static bool addresidimfileMode(pxConfig *config); 63 static bool residimfileMode(pxConfig *config); 64 static bool revertresidimfileMode(pxConfig *config); 65 // residexp 66 static bool toresidexpMode(pxConfig *config); 67 static bool addresidexpMode(pxConfig *config); 68 static bool residexpMode(pxConfig *config); 69 static bool revertresidexpMode(pxConfig *config); 70 static bool updateresidexpMode(pxConfig *config); 71 // detrunsummary 72 static bool todetrunsummaryMode(pxConfig *config); 73 static bool adddetrunsummaryMode(pxConfig *config); 74 static bool detrunsummaryMode(pxConfig *config); 75 static bool revertdetrunsummaryMode(pxConfig *config); 76 static bool updatedetrunsummaryMode(pxConfig *config); 30 77 31 // run 78 32 static bool updatedetrunMode(pxConfig *config); … … 81 35 static bool register_detrendMode(pxConfig *config); 82 36 83 static detRunSummaryRow *mdToDetRunSummary(pxConfig *config, psMetadata *row);84 37 //static psArray *validDetInputClassIds(pxConfig *config, const char *det_id); 85 38 //static psArray *searchInputImfiles(pxConfig *config, const char *det_id); 86 39 static detInputExpRow *rawDetrenTodetInputExpRow(rawExpRow *rawExp, psS64 det_id, psS32 iteration); 87 static psArray *searchRawImfiles(pxConfig *config);88 static bool startNewIteration(pxConfig *config, psS64 det_id);89 40 static psS32 incrementIteration(pxConfig *config, psS64 det_id); 90 static bool setDetRunState(pxConfig *config, psS64 det_id, const char *state);91 static bool isValidMode(pxConfig *config, const char *mode);92 41 93 42 # define MODECASE(caseName, func) \ … … 127 76 MODECASE(DETTOOL_MODE_PROCESSEDIMFILE, processedimfileMode); 128 77 MODECASE(DETTOOL_MODE_REVERTPROCESSEDIMFILE, revertprocessedimfileMode); 78 MODECASE(DETTOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileMode); 79 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_PROCESSEDIMFILE, pendingcleanup_processedimfileMode); 80 MODECASE(DETTOOL_MODE_DONECLEANUP_PROCESSEDIMFILE, donecleanup_processedimfileMode); 129 81 // exp 130 82 MODECASE(DETTOOL_MODE_TOPROCESSEDEXP, toprocessedexpMode); … … 132 84 MODECASE(DETTOOL_MODE_PROCESSEDEXP, processedexpMode); 133 85 MODECASE(DETTOOL_MODE_REVERTPROCESSEDEXP, revertprocessedexpMode); 86 MODECASE(DETTOOL_MODE_UPDATEPROCESSEDEXP, updateprocessedexpMode); 87 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_PROCESSEDEXP, pendingcleanup_processedexpMode); 88 MODECASE(DETTOOL_MODE_DONECLEANUP_PROCESSEDEXP, donecleanup_processedexpMode); 134 89 // stacked 135 90 MODECASE(DETTOOL_MODE_TOSTACKED, tostackedMode); … … 137 92 MODECASE(DETTOOL_MODE_STACKED, stackedMode); 138 93 MODECASE(DETTOOL_MODE_REVERTSTACKED, revertstackedMode); 94 MODECASE(DETTOOL_MODE_UPDATESTACKED, updatestackedMode); 95 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_STACKED, pendingcleanup_stackedMode); 96 MODECASE(DETTOOL_MODE_DONECLEANUP_STACKED, donecleanup_stackedMode); 139 97 // normalizedstat 140 98 MODECASE(DETTOOL_MODE_TONORMALIZEDSTAT, tonormalizedstatMode); … … 142 100 MODECASE(DETTOOL_MODE_NORMALIZEDSTAT, normalizedstatMode); 143 101 MODECASE(DETTOOL_MODE_REVERTNORMALIZEDSTAT, revertnormalizedstatMode); 102 MODECASE(DETTOOL_MODE_UPDATENORMALIZEDSTAT, updatenormalizedstatMode); 103 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_NORMALIZEDSTAT, pendingcleanup_normalizedstatMode); 104 MODECASE(DETTOOL_MODE_DONECLEANUP_NORMALIZEDSTAT, donecleanup_normalizedstatMode); 144 105 // normalizedimfile 145 106 MODECASE(DETTOOL_MODE_TONORMALIZE, tonormalizeMode); … … 147 108 MODECASE(DETTOOL_MODE_NORMALIZEDIMFILE, normalizedimfileMode); 148 109 MODECASE(DETTOOL_MODE_REVERTNORMALIZEDIMFILE, revertnormalizedimfileMode); 110 MODECASE(DETTOOL_MODE_UPDATENORMALIZEDIMFILE, updatenormalizedimfileMode); 111 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_NORMALIZEDIMFILE, pendingcleanup_normalizedimfileMode); 112 MODECASE(DETTOOL_MODE_DONECLEANUP_NORMALIZEDIMFILE, donecleanup_normalizedimfileMode); 149 113 // normalizedexp 150 114 MODECASE(DETTOOL_MODE_TONORMALIZEDEXP, tonormalizedexpMode); … … 152 116 MODECASE(DETTOOL_MODE_NORMALIZEDEXP, normalizedexpMode); 153 117 MODECASE(DETTOOL_MODE_REVERTNORMALIZEDEXP, revertnormalizedexpMode); 118 MODECASE(DETTOOL_MODE_UPDATENORMALIZEDEXP, updatenormalizedexpMode); 119 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_NORMALIZEDEXP, pendingcleanup_normalizedexpMode); 120 MODECASE(DETTOOL_MODE_DONECLEANUP_NORMALIZEDEXP, donecleanup_normalizedexpMode); 154 121 // residimfile 155 122 MODECASE(DETTOOL_MODE_TORESIDIMFILE, toresidimfileMode); … … 157 124 MODECASE(DETTOOL_MODE_RESIDIMFILE, residimfileMode); 158 125 MODECASE(DETTOOL_MODE_REVERTRESIDIMFILE,revertresidimfileMode); 126 MODECASE(DETTOOL_MODE_UPDATERESIDIMFILE, updateresidimfileMode); 127 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_RESIDIMFILE, pendingcleanup_residimfileMode); 128 MODECASE(DETTOOL_MODE_DONECLEANUP_RESIDIMFILE, donecleanup_residimfileMode); 159 129 // residexp 160 130 MODECASE(DETTOOL_MODE_TORESIDEXP, toresidexpMode); … … 163 133 MODECASE(DETTOOL_MODE_REVERTRESIDEXP, revertresidexpMode); 164 134 MODECASE(DETTOOL_MODE_UPDATERESIDEXP, updateresidexpMode); 135 MODECASE(DETTOOL_MODE_PENDINGCLEANUP_RESIDEXP, pendingcleanup_residexpMode); 136 MODECASE(DETTOOL_MODE_DONECLEANUP_RESIDEXP, donecleanup_residexpMode); 165 137 // detrunsummary 166 138 MODECASE(DETTOOL_MODE_TODETRUNSUMMARY, todetrunsummaryMode); … … 208 180 209 181 psMetadata *where = psMetadataAlloc(); 210 PXOPT_COPY_S TR(config->args, where, "-exp_id", "exp_id", "==");182 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 211 183 PXOPT_COPY_STR(config->args, where, "-exp_type", "exp_type", "=="); 212 184 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); … … 722 694 723 695 724 PXOPT_LOOKUP_S TR(det_id, config->args, "-det_id", true, false); // required696 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); // required 725 697 PXOPT_LOOKUP_STR(det_type, config->args, "-set_det_type", false, false); // optional 726 698 PXOPT_LOOKUP_STR(mode, config->args, "-set_mode", false, false); // optional … … 758 730 { 759 731 psMetadata *where = psMetadataAlloc(); 760 psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", (psS64)atoll(det_id));732 psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", det_id); 761 733 detRuns = detRunSelectRowObjects(config->dbh, where, 0); 762 734 psFree(where); … … 768 740 // sanity check the result... we should have only found one det_id 769 741 if (psArrayLength(detRuns) != 1) { 770 psAbort("found more then one detRun matching det_id %" PRId64 " (this should not happen)", (psS64)atoll(det_id));742 psAbort("found more then one detRun matching det_id %" PRId64 " (this should not happen)", det_id); 771 743 return false; // unreachable 772 744 } … … 939 911 psFree(time_filter); 940 912 941 if (!p_psDBRunQuery(config->dbh, query, ( psS64)newDet_id, (psS64)atoll(det_id))) {913 if (!p_psDBRunQuery(config->dbh, query, (long long) newDet_id, (long long) det_id)) { 942 914 psError(PS_ERR_UNKNOWN, false, "database error"); 943 915 psFree(query); … … 987 959 psMetadata *where = psMetadataAlloc(); 988 960 PXOPT_COPY_STR(config->args, where, "-det_type", "det_type", "=="); 989 PXOPT_COPY_S TR(config->args, where, "-det_id", "det_id", "==");961 PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "=="); 990 962 991 963 PXOPT_COPY_STR(config->args, where, "-inst", "camera", "=="); … … 1152 1124 1153 1125 psMetadata *where = psMetadataAlloc(); 1154 PXOPT_COPY_S TR(config->args, where, "-det_id", "det_id", "==");1126 PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "=="); 1155 1127 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "=="); 1156 1128 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); … … 1251 1223 } 1252 1224 1253 static bool toprocessedimfileMode(pxConfig *config)1254 {1255 PS_ASSERT_PTR_NON_NULL(config, false);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 1262 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);1263 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);1264 1265 psString query = pxDataGet("dettool_toprocessedimfile.sql");1266 if (!query) {1267 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");1268 return false;1269 }1270 1271 if (psListLength(where->list)) {1272 psString whereClause = psDBGenerateWhereConditionSQL(where, "rawImfile");1273 psStringAppend(&query, " AND %s", whereClause);1274 psFree(whereClause);1275 }1276 psFree (where);1277 1278 // treat limit == 0 as "no limit"1279 if (limit) {1280 psString limitString = psDBGenerateLimitSQL(limit);1281 psStringAppend(&query, " %s", limitString);1282 psFree(limitString);1283 }1284 1285 if (!p_psDBRunQuery(config->dbh, query)) {1286 psError(PS_ERR_UNKNOWN, false, "database error");1287 psFree(query);1288 return false;1289 }1290 psFree(query);1291 1292 psArray *output = p_psDBFetchResult(config->dbh);1293 if (!output) {1294 psError(PS_ERR_UNKNOWN, false, "database error");1295 return false;1296 }1297 if (!psArrayLength(output)) {1298 psTrace("dettool", PS_LOG_INFO, "no rows found");1299 psFree(output);1300 return true;1301 }1302 1303 // negative simple so the default is true1304 if (!ippdbPrintMetadatas(stdout, output, "detPendingProcessedImfile", !simple)) {1305 psError(PS_ERR_UNKNOWN, false, "failed to print array");1306 psFree(output);1307 return false;1308 }1309 1310 psFree(output);1311 1312 return true;1313 }1314 1315 static bool addprocessedimfileMode(pxConfig *config)1316 {1317 PS_ASSERT_PTR_NON_NULL(config, false);1318 1319 // det_id, exp_id, class_id, uri, recipe, -bg, -bg_stdev are required1320 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false);1321 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false);1322 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);1323 1324 // default values1325 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);1326 1327 // Required if code == 01328 PXOPT_LOOKUP_STR(uri, config->args, "-uri", (code == 0), false);1329 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false);1330 1331 // optional1332 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false);1333 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false);1334 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false);1335 PXOPT_LOOKUP_F64(fringe_0, config->args, "-fringe_0", false, false);1336 PXOPT_LOOKUP_F64(fringe_1, config->args, "-fringe_1", false, false);1337 PXOPT_LOOKUP_F64(fringe_2, config->args, "-fringe_2", false, false);1338 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);1339 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false);1340 PXOPT_LOOKUP_F64(user_3, config->args, "-user_3", false, false);1341 PXOPT_LOOKUP_F64(user_4, config->args, "-user_4", false, false);1342 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false);1343 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false);1344 1345 // find the matching rawImfile by exp_id/class_id1346 psMetadata *where = psMetadataAlloc();1347 PXOPT_COPY_STR(config->args, where, "-exp_id", "exp_id", "==");1348 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");1349 1350 psArray *rawImfiles = rawImfileSelectRowObjects(config->dbh, where, 0);1351 psFree(where);1352 1353 if (!rawImfiles) {1354 psError(PS_ERR_UNKNOWN, false, "no rawImfile rows found ");1355 return false;1356 }1357 1358 // create a new detProcessedImfile object1359 detProcessedImfileRow *detRow = detProcessedImfileRowAlloc(1360 (psS64)atoll(det_id),1361 (psS64)atoll(exp_id),1362 class_id,1363 uri,1364 recipe,1365 bg,1366 bg_stdev,1367 bg_mean_stdev,1368 fringe_0,1369 fringe_1,1370 fringe_2,1371 user_1,1372 user_2,1373 user_3,1374 user_4,1375 user_5,1376 path_base,1377 code1378 );1379 psFree(rawImfiles);1380 1381 // insert the new row into the detProcessedImfile table1382 if (!detProcessedImfileInsertObject(config->dbh, detRow)) {1383 psError(PS_ERR_UNKNOWN, false, "database error");1384 psFree(detRow);1385 return false;1386 }1387 1388 psFree(detRow);1389 1390 return true;1391 }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.mode1417 // NOTE the above query requires one of the following two WHERE statements1418 {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 imfiles1440 if (included) {1441 psStringAppend(&query, " AND detInputExp.include = 1");1442 }1443 1444 if (faulted) {1445 // list only faulted rows1446 psStringAppend(&query, " %s", "AND detProcessedImfile.fault != 0");1447 } else {1448 // don't list faulted rows1449 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 true1478 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 1527 static bool toprocessedexpMode(pxConfig *config)1528 {1529 PS_ASSERT_PTR_NON_NULL(config, false);1530 1531 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);1532 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);1533 1534 psString query = pxDataGet("dettool_toprocessedexp.sql");1535 if (!query) {1536 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");1537 return false;1538 }1539 1540 // treat limit == 0 as "no limit"1541 if (limit) {1542 psString limitString = psDBGenerateLimitSQL(limit);1543 psStringAppend(&query, " %s", limitString);1544 psFree(limitString);1545 }1546 1547 if (!p_psDBRunQuery(config->dbh, query)) {1548 psError(PS_ERR_UNKNOWN, false, "database error");1549 psFree(query);1550 return false;1551 }1552 psFree(query);1553 1554 psArray *output = p_psDBFetchResult(config->dbh);1555 if (!output) {1556 psError(PS_ERR_UNKNOWN, false, "database error");1557 return false;1558 }1559 if (!psArrayLength(output)) {1560 psTrace("dettool", PS_LOG_INFO, "no rows found");1561 psFree(output);1562 return true;1563 }1564 1565 // negative simple so the default is true1566 if (!ippdbPrintMetadatas(stdout, output, "detPendingProcessedExp", !simple)) {1567 psError(PS_ERR_UNKNOWN, false, "failed to print array");1568 psFree(output);1569 return false;1570 }1571 1572 psFree(output);1573 1574 return true;1575 }1576 1577 static bool addprocessedexpMode(pxConfig *config)1578 {1579 PS_ASSERT_PTR_NON_NULL(config, false);1580 1581 // det_id, exp_id, recip, -bg, -bg_stdev1582 // are required1583 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false);1584 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false);1585 1586 // default values1587 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);1588 1589 // Required if code == 01590 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false);1591 1592 // optional1593 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false);1594 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false);1595 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false);1596 PXOPT_LOOKUP_F64(fringe_0, config->args, "-fringe_0", false, false);1597 PXOPT_LOOKUP_F64(fringe_1, config->args, "-fringe_1", false, false);1598 PXOPT_LOOKUP_F64(fringe_2, config->args, "-fringe_2", false, false);1599 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);1600 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false);1601 PXOPT_LOOKUP_F64(user_3, config->args, "-user_3", false, false);1602 PXOPT_LOOKUP_F64(user_4, config->args, "-user_4", false, false);1603 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false);1604 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", true, false);1605 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 }1611 1612 if (!p_psDBRunQuery(config->dbh, query, det_id, exp_id)) {1613 psError(PS_ERR_UNKNOWN, false, "database error");1614 psFree(query);1615 return false;1616 }1617 psFree(query);1618 1619 psArray *output = p_psDBFetchResult(config->dbh);1620 if (!output) {1621 psError(PS_ERR_UNKNOWN, false, "database error");1622 return false;1623 }1624 if (!psArrayLength(output)) {1625 psTrace("dettool", PS_LOG_INFO, "no rows found");1626 psFree(output);1627 return true;1628 }1629 psFree(output);1630 1631 // create a new detProcessedImfile object1632 detProcessedExpRow *detRow = detProcessedExpRowAlloc(1633 (psS64)atoll(det_id),1634 (psS64)atoll(exp_id),1635 recipe,1636 bg,1637 bg_stdev,1638 bg_mean_stdev,1639 fringe_0,1640 fringe_1,1641 fringe_2,1642 user_1,1643 user_2,1644 user_3,1645 user_4,1646 user_5,1647 path_base,1648 code1649 );1650 1651 // insert the new row into the detProcessedImfile table1652 if (!detProcessedExpInsertObject(config->dbh, detRow)) {1653 psError(PS_ERR_UNKNOWN, false, "database error");1654 psFree(detRow);1655 return false;1656 }1657 1658 psFree(detRow);1659 1660 return true;1661 }1662 1663 static bool processedexpMode(pxConfig *config)1664 {1665 PS_ASSERT_PTR_NON_NULL(config, false);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 1671 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);1672 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);1673 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);1674 1675 psString query = psStringCopy("SELECT * FROM detProcessedExp");1676 1677 if (psListLength(where->list)) {1678 psString whereClause = psDBGenerateWhereSQL(where, NULL);1679 psStringAppend(&query, " %s", whereClause);1680 psFree(whereClause);1681 }1682 psFree(where);1683 1684 if (faulted) {1685 // list only faulted rows1686 psStringAppend(&query, " %s", "AND detProcessedExp.fault != 0");1687 } else {1688 // don't list faulted rows1689 psStringAppend(&query, " %s", "AND detProcessedExp.fault = 0");1690 }1691 1692 // treat limit == 0 as "no limit"1693 if (limit) {1694 psString limitString = psDBGenerateLimitSQL(limit);1695 psStringAppend(&query, " %s", limitString);1696 psFree(limitString);1697 }1698 1699 if (!p_psDBRunQuery(config->dbh, query)) {1700 psError(PS_ERR_UNKNOWN, false, "database error");1701 psFree(query);1702 return false;1703 }1704 psFree(query);1705 1706 psArray *output = p_psDBFetchResult(config->dbh);1707 if (!output) {1708 psError(PS_ERR_UNKNOWN, false, "database error");1709 return false;1710 }1711 if (!psArrayLength(output)) {1712 psTrace("dettool", PS_LOG_INFO, "no rows found");1713 psFree(output);1714 return true;1715 }1716 1717 // negative simple so the default is true1718 if (!ippdbPrintMetadatas(stdout, output, "detProcessedExp", !simple)) {1719 psError(PS_ERR_UNKNOWN, false, "failed to print array");1720 psFree(output);1721 return false;1722 }1723 1724 psFree(output);1725 1726 return true;1727 }1728 1729 1730 static bool revertprocessedexpMode(pxConfig *config)1731 {1732 PS_ASSERT_PTR_NON_NULL(config, false);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 1739 psString query = pxDataGet("dettool_revertprocessedexp.sql");1740 if (!query) {1741 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");1742 return false;1743 }1744 1745 if (psListLength(where->list)) {1746 psString whereClause = psDBGenerateWhereConditionSQL(where, "detProcessedExp");1747 psStringAppend(&query, " AND %s", whereClause);1748 psFree(whereClause);1749 }1750 psFree(where);1751 1752 if (!p_psDBRunQuery(config->dbh, query)) {1753 psError(PS_ERR_UNKNOWN, false, "database error");1754 psFree(query);1755 return false;1756 }1757 psFree(query);1758 1759 if (psDBAffectedRows(config->dbh) < 1) {1760 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");1761 return false;1762 }1763 1764 return true;1765 }1766 1767 1768 static bool tostackedMode(pxConfig *config)1769 {1770 PS_ASSERT_PTR_NON_NULL(config, false);1771 1772 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);1773 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);1774 1775 psString query = pxDataGet("dettool_tostacked.sql");1776 if (!query) {1777 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");1778 return false;1779 }1780 1781 // treat limit == 0 as "no limit"1782 if (limit) {1783 psString limitString = psDBGenerateLimitSQL(limit);1784 psStringAppend(&query, " %s", limitString);1785 psFree(limitString);1786 }1787 1788 if (!p_psDBRunQuery(config->dbh, query)) {1789 psError(PS_ERR_UNKNOWN, false, "database error");1790 psFree(query);1791 return false;1792 }1793 psFree(query);1794 1795 psArray *output = p_psDBFetchResult(config->dbh);1796 if (!output) {1797 psError(PS_ERR_UNKNOWN, false, "database error");1798 return false;1799 }1800 if (!psArrayLength(output)) {1801 psTrace("dettool", PS_LOG_INFO, "no rows found");1802 psFree(output);1803 return true;1804 }1805 1806 // negative simple so the default is true1807 if (!ippdbPrintMetadatas(stdout, output, "detPendingStackedImfile", !simple)) {1808 psError(PS_ERR_UNKNOWN, false, "failed to print array");1809 psFree(output);1810 return false;1811 }1812 1813 psFree(output);1814 1815 return true;1816 }1817 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 & iteration1828 // where query should be pre-generated1829 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_ids1838 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;1848 }1849 }1850 psFree(detInputExp);1851 1852 // select rawImfiles with matching exp_ids1853 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 }1863 1864 static bool addstackedMode(pxConfig *config)1865 {1866 PS_ASSERT_PTR_NON_NULL(config, false);1867 1868 // det_id, iteration, class_id, uri, & recipe are required1869 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false);1870 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", true, false);1871 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);1872 1873 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);1874 1875 // Required if code == 01876 PXOPT_LOOKUP_STR(uri, config->args, "-uri", (code == 0), false);1877 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false);1878 1879 // optional1880 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false);1881 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false);1882 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false);1883 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);1884 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false);1885 PXOPT_LOOKUP_F64(user_3, config->args, "-user_3", false, false);1886 PXOPT_LOOKUP_F64(user_4, config->args, "-user_4", false, false);1887 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false);1888 1889 // correlate the class_id against the input exposure(s)1890 // searchRawImfiles defines a where clause to search by det_id and iteration1891 psArray *rawImfiles = searchRawImfiles(config);1892 1893 if (!rawImfiles) {1894 psError(PS_ERR_UNKNOWN, false, "failed to get rawImfiles from db");1895 return false;1896 }1897 1898 bool valid_class_id = false;1899 if (rawImfiles) {1900 for (long i = 0; i < psArrayLength(rawImfiles); i++) {1901 if (!rawImfiles->data[i]) {1902 fprintf (stderr, "*");1903 continue;1904 }1905 if (strcmp(class_id, ((rawImfileRow *)rawImfiles->data[i])->class_id) == 0) {1906 valid_class_id = true;1907 break;1908 }1909 }1910 psFree(rawImfiles);1911 }1912 1913 if (!valid_class_id) {1914 psError(PS_ERR_UNKNOWN, true,1915 "class_id can not be correlated with the input exposures");1916 return false;1917 }1918 1919 // create a new detStackedImfile object1920 detStackedImfileRow *stackedImfile = detStackedImfileRowAlloc(1921 (psS64)atoll(det_id),1922 iteration,1923 class_id,1924 uri,1925 recipe,1926 bg,1927 bg_stdev,1928 bg_mean_stdev,1929 user_1,1930 user_2,1931 user_3,1932 user_4,1933 user_5,1934 code1935 );1936 1937 // insert the new row into the detProcessedImfile table1938 if (!detStackedImfileInsertObject(config->dbh, stackedImfile)) {1939 psError(PS_ERR_UNKNOWN, false, "database error");1940 psFree(stackedImfile);1941 return false;1942 }1943 1944 psFree(stackedImfile);1945 1946 return true;1947 }1948 1949 static bool stackedMode(pxConfig *config)1950 {1951 PS_ASSERT_PTR_NON_NULL(config, false);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 1959 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);1960 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);1961 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);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");1972 psStringAppend(&query, " AND %s", whereClause);1973 psFree(whereClause);1974 }1975 psFree(where);1976 1977 if (faulted) {1978 // list only faulted rows1979 psStringAppend(&query, " %s", "AND detStackedImfile.fault != 0");1980 } else {1981 // don't list faulted rows1982 psStringAppend(&query, " %s", "AND detStackedImfile.fault = 0");1983 }1984 1985 // treat limit == 0 as "no limit"1986 if (limit) {1987 psString limitString = psDBGenerateLimitSQL(limit);1988 psStringAppend(&query, " %s", limitString);1989 psFree(limitString);1990 }1991 1992 if (!p_psDBRunQuery(config->dbh, query)) {1993 psError(PS_ERR_UNKNOWN, false, "database error");1994 psFree(query);1995 return false;1996 }1997 psFree(query);1998 1999 psArray *output = p_psDBFetchResult(config->dbh);2000 if (!output) {2001 psError(PS_ERR_UNKNOWN, false, "database error");2002 return false;2003 }2004 if (!psArrayLength(output)) {2005 psTrace("dettool", PS_LOG_INFO, "no rows found");2006 psFree(output);2007 return true;2008 }2009 2010 // negative simple so the default is true2011 if (!ippdbPrintMetadatas(stdout, output, "rawImfile", !simple)) {2012 psError(PS_ERR_UNKNOWN, false, "failed to print array");2013 psFree(output);2014 return false;2015 }2016 2017 psFree(output);2018 2019 return true;2020 }2021 2022 2023 static bool revertstackedMode(pxConfig *config)2024 {2025 PS_ASSERT_PTR_NON_NULL(config, false);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 2033 psString query = pxDataGet("dettool_revertstacked.sql");2034 if (!query) {2035 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2036 return false;2037 }2038 2039 if (psListLength(where->list)) {2040 psString whereClause = psDBGenerateWhereConditionSQL(where, "detStackedImfile");2041 psStringAppend(&query, " AND %s", whereClause);2042 psFree(whereClause);2043 }2044 psFree(where);2045 2046 if (!p_psDBRunQuery(config->dbh, query)) {2047 psError(PS_ERR_UNKNOWN, false, "database error");2048 psFree(query);2049 return false;2050 }2051 psFree(query);2052 2053 if (psDBAffectedRows(config->dbh) < 1) {2054 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");2055 return false;2056 }2057 2058 return true;2059 }2060 2061 static bool tonormalizedstatMode(pxConfig *config)2062 {2063 PS_ASSERT_PTR_NON_NULL(config, false);2064 2065 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);2066 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);2067 2068 psString query = pxDataGet("dettool_tonormalizedstat.sql");2069 if (!query) {2070 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2071 return false;2072 }2073 2074 // treat limit == 0 as "no limit"2075 if (limit) {2076 psString limitString = psDBGenerateLimitSQL(limit);2077 psStringAppend(&query, " %s", limitString);2078 psFree(limitString);2079 }2080 2081 if (!p_psDBRunQuery(config->dbh, query)) {2082 psError(PS_ERR_UNKNOWN, false, "database error");2083 psFree(query);2084 return false;2085 }2086 psFree(query);2087 2088 psArray *output = p_psDBFetchResult(config->dbh);2089 if (!output) {2090 psError(PS_ERR_UNKNOWN, false, "database error");2091 return false;2092 }2093 if (!psArrayLength(output)) {2094 psTrace("dettool", PS_LOG_INFO, "no rows found");2095 psFree(output);2096 return true;2097 }2098 2099 // negative simple so the default is true2100 if (!ippdbPrintMetadatas(stdout, output, "detPendingNormStatImfile", !simple)) {2101 psError(PS_ERR_UNKNOWN, false, "failed to print array");2102 psFree(output);2103 return false;2104 }2105 2106 psFree(output);2107 2108 return true;2109 }2110 2111 static bool addnormalizedstatMode(pxConfig *config)2112 {2113 PS_ASSERT_PTR_NON_NULL(config, NULL);2114 2115 // required2116 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false);2117 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);2118 2119 // optional2120 PXOPT_LOOKUP_F32(norm, config->args, "-norm", false, false);2121 2122 // default2123 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false);2124 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);2125 2126 if (!detNormalizedStatImfileInsert(config->dbh,2127 (psS64)atoll(det_id),2128 iteration,2129 class_id,2130 norm,2131 code2132 )) {2133 psError(PS_ERR_UNKNOWN, false, "database error");2134 return false;2135 }2136 2137 return true;2138 }2139 2140 2141 static bool normalizedstatMode(pxConfig *config)2142 {2143 PS_ASSERT_PTR_NON_NULL(config, false);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 2150 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);2151 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);2152 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);2153 2154 psString query = pxDataGet("dettool_normalizedstat.sql");2155 if (!query) {2156 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2157 return false;2158 }2159 2160 if (faulted) {2161 // list only faulted rows2162 psStringAppend(&query, " %s", "WHERE fault != 0");2163 } else {2164 // don't list faulted rows2165 psStringAppend(&query, " %s", "WHERE fault = 0");2166 }2167 2168 if (psListLength(where->list)) {2169 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);2170 psStringAppend(&query, " AND %s", whereClause);2171 psFree(whereClause);2172 }2173 psFree(where);2174 2175 // treat limit == 0 as "no limit"2176 if (limit) {2177 psString limitString = psDBGenerateLimitSQL(limit);2178 psStringAppend(&query, " %s", limitString);2179 psFree(limitString);2180 }2181 2182 if (!p_psDBRunQuery(config->dbh, query)) {2183 psError(PS_ERR_UNKNOWN, false, "database error");2184 psFree(query);2185 return false;2186 }2187 psFree(query);2188 2189 psArray *output = p_psDBFetchResult(config->dbh);2190 if (!output) {2191 psError(PS_ERR_UNKNOWN, false, "database error");2192 return false;2193 }2194 if (!psArrayLength(output)) {2195 psTrace("dettool", PS_LOG_INFO, "no rows found");2196 psFree(output);2197 return true;2198 }2199 2200 // negative simple so the default is true2201 if (!ippdbPrintMetadatas(stdout, output, "detNormalizedStatImfile", !simple)) {2202 psError(PS_ERR_UNKNOWN, false, "failed to print array");2203 psFree(output);2204 return false;2205 }2206 2207 psFree(output);2208 2209 return true;2210 }2211 2212 static bool revertnormalizedstatMode(pxConfig *config)2213 {2214 PS_ASSERT_PTR_NON_NULL(config, false);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 2222 psString query = pxDataGet("dettool_revertnormalizedstat.sql");2223 if (!query) {2224 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2225 return false;2226 }2227 2228 if (psListLength(where->list)) {2229 psString whereClause = psDBGenerateWhereConditionSQL(where, "detNormalizedStatImfile");2230 psStringAppend(&query, " AND %s", whereClause);2231 psFree(whereClause);2232 }2233 psFree(where);2234 2235 if (!p_psDBRunQuery(config->dbh, query)) {2236 psError(PS_ERR_UNKNOWN, false, "database error");2237 psFree(query);2238 return false;2239 }2240 psFree(query);2241 2242 if (psDBAffectedRows(config->dbh) < 1) {2243 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");2244 return false;2245 }2246 2247 return true;2248 }2249 2250 static bool tonormalizeMode(pxConfig *config)2251 {2252 PS_ASSERT_PTR_NON_NULL(config, false);2253 2254 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);2255 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);2256 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 }2262 2263 // treat limit == 0 as "no limit"2264 if (limit) {2265 psString limitString = psDBGenerateLimitSQL(limit);2266 psStringAppend(&query, " %s", limitString);2267 psFree(limitString);2268 }2269 2270 if (!p_psDBRunQuery(config->dbh, query)) {2271 psError(PS_ERR_UNKNOWN, false, "database error");2272 psFree(query);2273 return false;2274 }2275 psFree(query);2276 2277 psArray *output = p_psDBFetchResult(config->dbh);2278 if (!output) {2279 psError(PS_ERR_UNKNOWN, false, "database error");2280 return false;2281 }2282 if (!psArrayLength(output)) {2283 psTrace("dettool", PS_LOG_INFO, "no rows found");2284 psFree(output);2285 return true;2286 }2287 2288 // negative simple so the default is true2289 if (!ippdbPrintMetadatas(stdout, output, "detPendingNormImfile", !simple)) {2290 psError(PS_ERR_UNKNOWN, false, "failed to print array");2291 psFree(output);2292 return false;2293 }2294 2295 psFree(output);2296 2297 return true;2298 }2299 2300 static bool addnormalizedimfileMode(pxConfig *config)2301 {2302 PS_ASSERT_PTR_NON_NULL(config, false);2303 2304 // required2305 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false);2306 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false);2307 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false);2308 2309 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);2310 2311 // Required if code == 02312 PXOPT_LOOKUP_STR(uri, config->args, "-uri", (code == 0), false);2313 2314 // optional2315 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false);2316 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false);2317 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false);2318 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);2319 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false);2320 PXOPT_LOOKUP_F64(user_3, config->args, "-user_3", false, false);2321 PXOPT_LOOKUP_F64(user_4, config->args, "-user_4", false, false);2322 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false);2323 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false);2324 2325 if (!detNormalizedImfileInsert(config->dbh,2326 (psS64)atoll(det_id),2327 iteration,2328 class_id,2329 uri,2330 bg,2331 bg_stdev,2332 bg_mean_stdev,2333 user_1,2334 user_2,2335 user_3,2336 user_4,2337 user_5,2338 path_base,2339 code2340 )) {2341 psError(PS_ERR_UNKNOWN, false, "database error");2342 return false;2343 }2344 2345 return true;2346 }2347 2348 static bool normalizedimfileMode(pxConfig *config)2349 {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", "==");2357 2358 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);2359 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);2360 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);2361 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");2370 psStringAppend(&query, " AND %s", whereClause);2371 psFree(whereClause);2372 }2373 psFree(where);2374 2375 if (faulted) {2376 // list only faulted rows2377 psStringAppend(&query, " %s", "AND detNormalizedImfile.fault != 0");2378 } else {2379 // don't list faulted rows2380 psStringAppend(&query, " %s", "AND detNormalizedImfile.fault = 0");2381 }2382 2383 // treat limit == 0 as "no limit"2384 if (limit) {2385 psString limitString = psDBGenerateLimitSQL(limit);2386 psStringAppend(&query, " %s", limitString);2387 psFree(limitString);2388 }2389 2390 if (!p_psDBRunQuery(config->dbh, query)) {2391 psError(PS_ERR_UNKNOWN, false, "database error");2392 psFree(query);2393 return false;2394 }2395 psFree(query);2396 2397 psArray *output = p_psDBFetchResult(config->dbh);2398 if (!output) {2399 psError(PS_ERR_UNKNOWN, false, "database error");2400 return false;2401 }2402 if (!psArrayLength(output)) {2403 psTrace("dettool", PS_LOG_INFO, "no rows found");2404 psFree(output);2405 return true;2406 }2407 2408 // negative simple so the default is true2409 if (!ippdbPrintMetadatas(stdout, output, "detNormalizedImfile", !simple)) {2410 psError(PS_ERR_UNKNOWN, false, "failed to print array");2411 psFree(output);2412 return false;2413 }2414 2415 psFree(output);2416 2417 return true;2418 }2419 2420 2421 static bool revertnormalizedimfileMode(pxConfig *config)2422 {2423 PS_ASSERT_PTR_NON_NULL(config, false);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 2431 psString query = pxDataGet("dettool_revertnormalizedimfile.sql");2432 if (!query) {2433 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2434 return false;2435 }2436 2437 if (psListLength(where->list)) {2438 psString whereClause = psDBGenerateWhereConditionSQL(where, "detNormalizedImfile");2439 psStringAppend(&query, " AND %s", whereClause);2440 psFree(whereClause);2441 }2442 psFree(where);2443 2444 if (!p_psDBRunQuery(config->dbh, query)) {2445 psError(PS_ERR_UNKNOWN, false, "database error");2446 psFree(query);2447 return false;2448 }2449 psFree(query);2450 2451 if (psDBAffectedRows(config->dbh) < 1) {2452 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");2453 return false;2454 }2455 2456 return true;2457 }2458 2459 static bool tonormalizedexpMode(pxConfig *config)2460 {2461 PS_ASSERT_PTR_NON_NULL(config, false);2462 2463 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);2464 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);2465 2466 psString query = pxDataGet("dettool_tonormalizedexp.sql");2467 if (!query) {2468 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2469 return false;2470 }2471 2472 // treat limit == 0 as "no limit"2473 if (limit) {2474 psString limitString = psDBGenerateLimitSQL(limit);2475 psStringAppend(&query, " %s", limitString);2476 psFree(limitString);2477 }2478 2479 if (!p_psDBRunQuery(config->dbh, query)) {2480 psError(PS_ERR_UNKNOWN, false, "database error");2481 psFree(query);2482 return false;2483 }2484 psFree(query);2485 2486 psArray *output = p_psDBFetchResult(config->dbh);2487 if (!output) {2488 psError(PS_ERR_UNKNOWN, false, "database error");2489 return false;2490 }2491 if (!psArrayLength(output)) {2492 psTrace("dettool", PS_LOG_INFO, "no rows found");2493 psFree(output);2494 return true;2495 }2496 2497 // negative simple so the default is true2498 if (!ippdbPrintMetadatas(stdout, output, "detPendingNormExp", !simple)) {2499 psError(PS_ERR_UNKNOWN, false, "failed to print array");2500 psFree(output);2501 return false;2502 }2503 2504 psFree(output);2505 2506 return true;2507 }2508 2509 static bool addnormalizedexpMode(pxConfig *config)2510 {2511 PS_ASSERT_PTR_NON_NULL(config, false);2512 2513 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required2514 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false);2515 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);2516 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false); // Required if code == 02517 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false);2518 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false);2519 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false);2520 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);2521 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false);2522 PXOPT_LOOKUP_F64(user_3, config->args, "-user_3", false, false);2523 PXOPT_LOOKUP_F64(user_4, config->args, "-user_4", false, false);2524 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false);2525 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false);2526 2527 psString query = pxDataGet("dettool_tonormalizedexp.sql");2528 if (!query) {2529 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2530 return false;2531 }2532 2533 // XXX in some other places, we put the arguments in the .sql and supply them to RunQuery2534 psStringAppend(&query, " WHERE det_id = %s AND iteration = %d", det_id, iteration);2535 2536 if (!p_psDBRunQuery(config->dbh, query)) {2537 psError(PS_ERR_UNKNOWN, false, "database error");2538 psFree(query);2539 return false;2540 }2541 psFree(query);2542 2543 psArray *output = p_psDBFetchResult(config->dbh);2544 if (!output) {2545 psError(PS_ERR_UNKNOWN, false, "database error");2546 return false;2547 }2548 if (!psArrayLength(output)) {2549 psTrace("dettool", PS_LOG_INFO, "no rows found");2550 psFree(output);2551 return true;2552 }2553 psFree(output);2554 2555 // insert the new row into the detProcessedImfile table2556 if (!detNormalizedExpInsert(config->dbh,2557 (psS64)atoll(det_id),2558 iteration,2559 recipe,2560 bg,2561 bg_stdev,2562 bg_mean_stdev,2563 user_1,2564 user_2,2565 user_3,2566 user_4,2567 user_5,2568 path_base,2569 code2570 )) {2571 psError(PS_ERR_UNKNOWN, false, "database error");2572 return false;2573 }2574 2575 return true;2576 }2577 2578 2579 static bool normalizedexpMode(pxConfig *config)2580 {2581 PS_ASSERT_PTR_NON_NULL(config, false);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 2588 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);2589 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);2590 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);2591 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);2600 psStringAppend(&query, " %s", whereClause);2601 psFree(whereClause);2602 }2603 psFree(where);2604 2605 if (faulted) {2606 // list only faulted rows2607 psStringAppend(&query, " %s", "AND detNormalizedExp.fault != 0");2608 } else {2609 // don't list faulted rows2610 psStringAppend(&query, " %s", "AND detNormalizedExp.fault = 0");2611 }2612 2613 // treat limit == 0 as "no limit"2614 if (limit) {2615 psString limitString = psDBGenerateLimitSQL(limit);2616 psStringAppend(&query, " %s", limitString);2617 psFree(limitString);2618 }2619 2620 if (!p_psDBRunQuery(config->dbh, query)) {2621 psError(PS_ERR_UNKNOWN, false, "database error");2622 psFree(query);2623 return false;2624 }2625 psFree(query);2626 2627 psArray *output = p_psDBFetchResult(config->dbh);2628 if (!output) {2629 psError(PS_ERR_UNKNOWN, false, "database error");2630 return false;2631 }2632 if (!psArrayLength(output)) {2633 psTrace("dettool", PS_LOG_INFO, "no rows found");2634 psFree(output);2635 return true;2636 }2637 2638 // negative simple so the default is true2639 if (!ippdbPrintMetadatas(stdout, output, "detNormalizedExp", !simple)) {2640 psError(PS_ERR_UNKNOWN, false, "failed to print array");2641 psFree(output);2642 return false;2643 }2644 2645 psFree(output);2646 2647 return true;2648 }2649 2650 2651 2652 static bool revertnormalizedexpMode(pxConfig *config)2653 {2654 PS_ASSERT_PTR_NON_NULL(config, false);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 2661 psString query = pxDataGet("dettool_revertnormalizedexp.sql");2662 if (!query) {2663 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2664 return false;2665 }2666 2667 if (psListLength(where->list)) {2668 psString whereClause = psDBGenerateWhereConditionSQL(where, "detNormalizedExp");2669 psStringAppend(&query, " AND %s", whereClause);2670 psFree(whereClause);2671 }2672 psFree(where);2673 2674 if (!p_psDBRunQuery(config->dbh, query)) {2675 psError(PS_ERR_UNKNOWN, false, "database error");2676 psFree(query);2677 return false;2678 }2679 psFree(query);2680 2681 if (psDBAffectedRows(config->dbh) < 1) {2682 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");2683 return false;2684 }2685 2686 return true;2687 }2688 2689 2690 static bool toresidimfileMode(pxConfig *config)2691 {2692 PS_ASSERT_PTR_NON_NULL(config, false);2693 2694 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);2695 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);2696 2697 psString query = pxDataGet("dettool_toresidimfile.sql");2698 if (!query) {2699 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2700 return false;2701 }2702 2703 // treat limit == 0 as "no limit"2704 if (limit) {2705 psString limitString = psDBGenerateLimitSQL(limit);2706 psStringAppend(&query, " %s", limitString);2707 psFree(limitString);2708 }2709 2710 if (!p_psDBRunQuery(config->dbh, query)) {2711 psError(PS_ERR_UNKNOWN, false, "database error");2712 psFree(query);2713 return false;2714 }2715 psFree(query);2716 2717 psArray *output = p_psDBFetchResult(config->dbh);2718 if (!output) {2719 psError(PS_ERR_UNKNOWN, false, "database error");2720 return false;2721 }2722 if (!psArrayLength(output)) {2723 psTrace("dettool", PS_LOG_INFO, "no rows found");2724 psFree(output);2725 return true;2726 }2727 2728 // negative simple so the default is true2729 if (!ippdbPrintMetadatas(stdout, output, "detPendingResidImfile", !simple)) {2730 psError(PS_ERR_UNKNOWN, false, "failed to print array");2731 psFree(output);2732 return false;2733 }2734 2735 psFree(output);2736 2737 return true;2738 }2739 2740 2741 static bool addresidimfileMode(pxConfig *config)2742 {2743 PS_ASSERT_PTR_NON_NULL(config, false);2744 2745 2746 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required2747 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false);2748 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false); // required2749 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false); // required2750 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);2751 PXOPT_LOOKUP_STR(uri, config->args, "-uri", (code == 0), false); // Required if code == 02752 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false); // Required if code == 02753 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false);2754 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false);2755 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false);2756 PXOPT_LOOKUP_F64(bg_skewness, config->args, "-bg_skewness", false, false);2757 PXOPT_LOOKUP_F64(bg_kurtosis, config->args, "-bg_kurtosis", false, false);2758 PXOPT_LOOKUP_F64(bin_stdev, config->args, "-bin_stdev", false, false);2759 PXOPT_LOOKUP_F64(fringe_0, config->args, "-fringe_0", false, false);2760 PXOPT_LOOKUP_F64(fringe_1, config->args, "-fringe_1", false, false);2761 PXOPT_LOOKUP_F64(fringe_2, config->args, "-fringe_2", false, false);2762 PXOPT_LOOKUP_F64(fringe_resid_0, config->args, "-fringe_resid_0", false, false);2763 PXOPT_LOOKUP_F64(fringe_resid_1, config->args, "-fringe_resid_1", false, false);2764 PXOPT_LOOKUP_F64(fringe_resid_2, config->args, "-fringe_resid_2", false, false);2765 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);2766 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false);2767 PXOPT_LOOKUP_F64(user_3, config->args, "-user_3", false, false);2768 PXOPT_LOOKUP_F64(user_4, config->args, "-user_4", false, false);2769 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false);2770 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false);2771 2772 if (!detResidImfileInsert(config->dbh,2773 (psS64)atoll(det_id),2774 iteration,2775 (psS64)atoll(exp_id),2776 class_id,2777 uri,2778 recipe,2779 bg,2780 bg_stdev,2781 bg_mean_stdev,2782 bg_skewness,2783 bg_kurtosis,2784 bin_stdev,2785 fringe_0,2786 fringe_1,2787 fringe_2,2788 fringe_resid_0,2789 fringe_resid_1,2790 fringe_resid_2,2791 user_1,2792 user_2,2793 user_3,2794 user_4,2795 user_5,2796 path_base,2797 code2798 )) {2799 psError(PS_ERR_UNKNOWN, false, "database error");2800 return false;2801 }2802 2803 return true;2804 }2805 2806 2807 static bool residimfileMode(pxConfig *config)2808 {2809 PS_ASSERT_PTR_NON_NULL(config, false);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 2818 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);2819 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);2820 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);2821 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.state2829 char *value = NULL;2830 bool status;2831 if ((value = psMetadataLookupStr(&status, config->args, "-select_state"))) {2832 psStringAppend(&query, " detRun.state = '%s'", value);2833 } else {2834 psStringAppend(&query, " detRun.state = 'run'");2835 }2836 2837 if (psListLength(where->list)) {2838 psString whereClause = psDBGenerateWhereConditionSQL(where, "detResidImfile");2839 psStringAppend(&query, " AND %s", whereClause);2840 psFree(whereClause);2841 }2842 psFree(where);2843 2844 if (faulted) {2845 // list only faulted rows2846 psStringAppend(&query, " %s", "AND detResidImfile.fault != 0");2847 } else {2848 // don't list faulted rows2849 psStringAppend(&query, " %s", "AND detResidImfile.fault = 0");2850 }2851 2852 // treat limit == 0 as "no limit"2853 if (limit) {2854 psString limitString = psDBGenerateLimitSQL(limit);2855 psStringAppend(&query, " %s", limitString);2856 psFree(limitString);2857 }2858 2859 if (!p_psDBRunQuery(config->dbh, query)) {2860 psError(PS_ERR_UNKNOWN, false, "database error");2861 psFree(query);2862 return false;2863 }2864 psFree(query);2865 2866 psArray *output = p_psDBFetchResult(config->dbh);2867 if (!output) {2868 psError(PS_ERR_UNKNOWN, false, "database error");2869 return false;2870 }2871 if (!psArrayLength(output)) {2872 psTrace("dettool", PS_LOG_INFO, "no rows found");2873 psFree(output);2874 return true;2875 }2876 2877 // negative simple so the default is true2878 if (!ippdbPrintMetadatas(stdout, output, "rawResidImfile", !simple)) {2879 psError(PS_ERR_UNKNOWN, false, "failed to print array");2880 psFree(output);2881 return false;2882 }2883 2884 psFree(output);2885 2886 return true;2887 }2888 2889 2890 static bool revertresidimfileMode(pxConfig *config)2891 {2892 PS_ASSERT_PTR_NON_NULL(config, false);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 2901 psString query = pxDataGet("dettool_revertresidimfile.sql");2902 if (!query) {2903 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2904 return false;2905 }2906 2907 if (psListLength(where->list)) {2908 psString whereClause = psDBGenerateWhereConditionSQL(where, "detResidImfile");2909 psStringAppend(&query, " AND %s", whereClause);2910 psFree(whereClause);2911 }2912 psFree(where);2913 2914 if (!p_psDBRunQuery(config->dbh, query)) {2915 psError(PS_ERR_UNKNOWN, false, "database error");2916 psFree(query);2917 return false;2918 }2919 psFree(query);2920 2921 if (psDBAffectedRows(config->dbh) < 1) {2922 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");2923 return false;2924 }2925 2926 return true;2927 }2928 2929 2930 /*2931 The SQL returns a list of exposures for which all component class ids have had residuals2932 created. This list includes the detrend id, iteration, exposure id, detrend type, and2933 whether the exposure was included in the stack for this iteration.2934 */2935 2936 static bool toresidexpMode(pxConfig *config)2937 {2938 PS_ASSERT_PTR_NON_NULL(config, false);2939 2940 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);2941 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);2942 2943 psString query = pxDataGet("dettool_toresidexp.sql");2944 if (!query) {2945 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");2946 return false;2947 }2948 2949 // treat limit == 0 as "no limit"2950 if (limit) {2951 psString limitString = psDBGenerateLimitSQL(limit);2952 psStringAppend(&query, " %s", limitString);2953 psFree(limitString);2954 }2955 2956 if (!p_psDBRunQuery(config->dbh, query)) {2957 psError(PS_ERR_UNKNOWN, false, "database error");2958 psFree(query);2959 return false;2960 }2961 psFree(query);2962 2963 psArray *output = p_psDBFetchResult(config->dbh);2964 if (!output) {2965 psError(PS_ERR_UNKNOWN, false, "database error");2966 return false;2967 }2968 if (!psArrayLength(output)) {2969 psTrace("dettool", PS_LOG_INFO, "no rows found");2970 psFree(output);2971 return true;2972 }2973 2974 // negative simple so the default is true2975 if (!ippdbPrintMetadatas(stdout, output, "detPendingResidExp", !simple)) {2976 psError(PS_ERR_UNKNOWN, false, "failed to print array");2977 psFree(output);2978 return false;2979 }2980 2981 psFree(output);2982 2983 return true;2984 }2985 2986 /*2987 The SQL returns a list of exposures for which all component class ids have had residuals2988 created. This list includes the detrend id, iteration, exposure id, detrend type, and2989 whether the exposure was included in the stack for this iteration.2990 */2991 2992 static bool addresidexpMode(pxConfig *config)2993 {2994 PS_ASSERT_PTR_NON_NULL(config, false);2995 2996 // limit search by det_id, iteration, exp_id2997 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); // required3003 PXOPT_LOOKUP_S32(iteration, config->args, "-iteration", false, false);3004 PXOPT_LOOKUP_STR(exp_id, config->args, "-exp_id", true, false); // required3005 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);3006 PXOPT_LOOKUP_STR(recipe, config->args, "-recip", (code == 0), false); // Required if code == 03007 PXOPT_LOOKUP_F64(bg, config->args, "-bg", false, false);3008 PXOPT_LOOKUP_F64(bg_stdev, config->args, "-bg_stdev", false, false);3009 PXOPT_LOOKUP_F64(bg_mean_stdev, config->args, "-bg_mean_stdev", false, false);3010 PXOPT_LOOKUP_F64(bg_skewness, config->args, "-bg_skewness", false, false);3011 PXOPT_LOOKUP_F64(bg_kurtosis, config->args, "-bg_kurtosis", false, false);3012 PXOPT_LOOKUP_F64(bin_stdev, config->args, "-bin_stdev", false, false);3013 PXOPT_LOOKUP_F64(fringe_0, config->args, "-fringe_0", false, false);3014 PXOPT_LOOKUP_F64(fringe_1, config->args, "-fringe_1", false, false);3015 PXOPT_LOOKUP_F64(fringe_2, config->args, "-fringe_2", false, false);3016 PXOPT_LOOKUP_F64(fringe_resid_0, config->args, "-fringe_resid_0", false, false);3017 PXOPT_LOOKUP_F64(fringe_resid_1, config->args, "-fringe_resid_1", false, false);3018 PXOPT_LOOKUP_F64(fringe_resid_2, config->args, "-fringe_resid_2", false, false);3019 PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);3020 PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false);3021 PXOPT_LOOKUP_F64(user_3, config->args, "-user_3", false, false);3022 PXOPT_LOOKUP_F64(user_4, config->args, "-user_4", false, false);3023 PXOPT_LOOKUP_F64(user_5, config->args, "-user_5", false, false);3024 PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", false, false);3025 PXOPT_LOOKUP_BOOL(reject, config->args, "-reject", false);3026 3027 psString query = pxDataGet("dettool_toresidexp.sql");3028 if (!query) {3029 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");3030 return false;3031 }3032 3033 if (psListLength(where->list)) {3034 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);3035 psStringAppend(&query, " WHERE %s", whereClause);3036 psFree(whereClause);3037 }3038 psFree(where);3039 3040 if (!p_psDBRunQuery(config->dbh, query)) {3041 psError(PS_ERR_UNKNOWN, false, "database error");3042 psFree(query);3043 return false;3044 }3045 psFree(query);3046 3047 psArray *output = p_psDBFetchResult(config->dbh);3048 if (!output) {3049 psError(PS_ERR_UNKNOWN, false, "database error");3050 return false;3051 }3052 if (!psArrayLength(output)) {3053 // XXX check psError here3054 psError(PS_ERR_UNKNOWN, false, "no detResidImfile rows found");3055 psFree(output);3056 return false;3057 }3058 psFree(output);3059 3060 if (!detResidExpInsert(config->dbh,3061 (psS64)atoll(det_id),3062 iteration,3063 (psS64)atoll(exp_id),3064 recipe,3065 bg,3066 bg_stdev,3067 bg_mean_stdev,3068 bg_skewness,3069 bg_kurtosis,3070 bin_stdev,3071 fringe_0,3072 fringe_1,3073 fringe_2,3074 fringe_resid_0,3075 fringe_resid_1,3076 fringe_resid_2,3077 user_1,3078 user_2,3079 user_3,3080 user_4,3081 user_5,3082 path_base,3083 !reject,3084 code3085 )) {3086 psError(PS_ERR_UNKNOWN, false, "database error");3087 return false;3088 }3089 3090 return true;3091 }3092 3093 static bool residexpMode(pxConfig *config)3094 {3095 PS_ASSERT_PTR_NON_NULL(config, false);3096 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);3105 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);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");3116 psStringAppend(&query, " AND %s", whereClause);3117 psFree(whereClause);3118 }3119 psFree(where);3120 3121 if (faulted) {3122 // list only faulted rows3123 psStringAppend(&query, " %s", "AND detResidExp.fault != 0");3124 } else {3125 // don't list faulted rows3126 psStringAppend(&query, " %s", "AND detResidExp.fault = 0");3127 }3128 3129 // list only accepted rows3130 // XXX the usage of this flag is unclear : -reject means "accepted"?3131 if (reject) {3132 psStringAppend(&query, " %s", "AND detResidExp.accept != 0");3133 }3134 3135 // treat limit == 0 as "no limit"3136 if (limit) {3137 psString limitString = psDBGenerateLimitSQL(limit);3138 psStringAppend(&query, " %s", limitString);3139 psFree(limitString);3140 }3141 3142 if (!p_psDBRunQuery(config->dbh, query)) {3143 psError(PS_ERR_UNKNOWN, false, "database error");3144 psFree(query);3145 return false;3146 }3147 psFree(query);3148 3149 psArray *output = p_psDBFetchResult(config->dbh);3150 if (!output) {3151 psError(PS_ERR_UNKNOWN, false, "database error");3152 return false;3153 }3154 if (!psArrayLength(output)) {3155 psTrace("dettool", PS_LOG_INFO, "no rows found");3156 psFree(output);3157 return true;3158 }3159 3160 // negative simple so the default is true3161 if (!ippdbPrintMetadatas(stdout, output, "detResidExp", !simple)) {3162 psError(PS_ERR_UNKNOWN, false, "failed to print array");3163 psFree(output);3164 return false;3165 }3166 3167 psFree(output);3168 3169 return true;3170 }3171 3172 3173 static bool revertresidexpMode(pxConfig *config)3174 {3175 PS_ASSERT_PTR_NON_NULL(config, false);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 3183 psString query = pxDataGet("dettool_revertresidexp.sql");3184 if (!query) {3185 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");3186 return false;3187 }3188 3189 if (psListLength(where->list)) {3190 psString whereClause = psDBGenerateWhereConditionSQL(where, "detResidExp");3191 psStringAppend(&query, " AND %s", whereClause);3192 psFree(whereClause);3193 }3194 psFree(where);3195 3196 if (!p_psDBRunQuery(config->dbh, query)) {3197 psError(PS_ERR_UNKNOWN, false, "database error");3198 psFree(query);3199 return false;3200 }3201 psFree(query);3202 3203 if (psDBAffectedRows(config->dbh) < 1) {3204 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");3205 return false;3206 }3207 3208 return true;3209 }3210 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_id3219 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 set3225 // copy everything but det_id, iteration, & exp_id from the args and3226 // remove the '-' prefix3227 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 !'d3235 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) which3255 * have completed all residexps.3256 */3257 3258 static bool todetrunsummaryMode(pxConfig *config)3259 {3260 PS_ASSERT_PTR_NON_NULL(config, false);3261 3262 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);3263 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);3264 3265 psString query = pxDataGet("dettool_todetrunsummary.sql");3266 if (!query) {3267 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");3268 return false;3269 }3270 3271 // treat limit == 0 as "no limit"3272 if (limit) {3273 psString limitString = psDBGenerateLimitSQL(limit);3274 psStringAppend(&query, " %s", limitString);3275 psFree(limitString);3276 }3277 3278 if (!p_psDBRunQuery(config->dbh, query)) {3279 psError(PS_ERR_UNKNOWN, false, "database error");3280 psFree(query);3281 return false;3282 }3283 psFree(query);3284 3285 psArray *output = p_psDBFetchResult(config->dbh);3286 if (!output) {3287 psError(PS_ERR_UNKNOWN, false, "database error");3288 return false;3289 }3290 if (!psArrayLength(output)) {3291 psTrace("dettool", PS_LOG_INFO, "no rows found");3292 psFree(output);3293 return true;3294 }3295 3296 // negative simple so the default is true3297 if (!ippdbPrintMetadatas(stdout, output, "detRejectExp", !simple)) {3298 psError(PS_ERR_UNKNOWN, false, "failed to print array");3299 psFree(output);3300 return false;3301 }3302 3303 psFree(output);3304 3305 return true;3306 }3307 3308 // this function is used to generate the detrunSummary entries used below3309 // 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 row3316 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 // optional3328 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 values3333 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 code3344 );3345 }3346 3347 static bool adddetrunsummaryMode(pxConfig *config)3348 {3349 PS_ASSERT_PTR_NON_NULL(config, false);3350 3351 // build a query to search by det_id, iteration, exp_id3352 psMetadata *where = psMetadataAlloc();3353 PXOPT_COPY_STR(config->args, where, "-det_id", "det_id", "==");3354 PXOPT_COPY_S32(config->args, where, "-iteration", "iteration", "==");3355 3356 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required3357 PXOPT_LOOKUP_BOOL(again, config->args, "-again", false);3358 3359 // The values supplied as arguments on the command (eg, -bg) are parsed3360 // by mdToDetRunSummary below.3361 // XXX why is there ever more than one?3362 3363 psString query = pxDataGet("dettool_find_completed_runs.sql");3364 if (!query) {3365 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");3366 return false;3367 }3368 3369 if (psListLength(where->list)) {3370 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);3371 psStringAppend(&query, " WHERE %s", whereClause);3372 psFree(whereClause);3373 }3374 psFree(where);3375 3376 if (!p_psDBRunQuery(config->dbh, query)) {3377 psError(PS_ERR_UNKNOWN, false, "database error");3378 psFree(query);3379 return false;3380 }3381 psFree(query);3382 3383 psArray *output = p_psDBFetchResult(config->dbh);3384 if (!output) {3385 psError(PS_ERR_UNKNOWN, false, "database error");3386 return false;3387 }3388 if (!psArrayLength(output)) {3389 psTrace("dettool", PS_LOG_INFO, "no rows found");3390 psFree(output);3391 return true;3392 }3393 3394 // start a transaction so it's all rows or nothing3395 if (!psDBTransaction(config->dbh)) {3396 psError(PS_ERR_UNKNOWN, false, "database error");3397 psFree(output);3398 return false;3399 }3400 3401 // XXX why is there ever more than one result here?3402 for (long i = 0; i < psArrayLength(output); i++) {3403 psMetadata *row = output->data[i];3404 // convert metadata into a detResidExp object3405 detRunSummaryRow *runSummary = mdToDetRunSummary(config, row);3406 if (!runSummary) {3407 if (!psDBRollback(config->dbh)) {3408 psError(PS_ERR_UNKNOWN, false, "database error");3409 }3410 psError(PS_ERR_UNKNOWN, false, "failed to convert metadata to detResidExp");3411 psFree(output);3412 return false;3413 }3414 // insert detResidExp object into the database3415 if (!detRunSummaryInsertObject(config->dbh, runSummary)) {3416 if (!psDBRollback(config->dbh)) {3417 psError(PS_ERR_UNKNOWN, false, "database error");3418 }3419 psError(PS_ERR_UNKNOWN, false, "database error");3420 psFree(runSummary);3421 psFree(output);3422 return false;3423 }3424 psFree(runSummary);3425 }3426 3427 psFree(output);3428 3429 // XXX this logic does not deal with the case of -code being set3430 // XXX it should be an error for -again and -code to both be set3431 if (again) {3432 if (!startNewIteration(config, (psS64)atoll(det_id))) {3433 if (!psDBRollback(config->dbh)) {3434 psError(PS_ERR_UNKNOWN, false, "database error");3435 }3436 psError(PS_ERR_UNKNOWN, false, "failed to start new iteration");3437 return false;3438 }3439 } else {3440 // set detRun.state to stop3441 if (!setDetRunState(config, (psS64)atoll(det_id), "stop")) {3442 if (!psDBRollback(config->dbh)) {3443 psError(PS_ERR_UNKNOWN, false, "database error");3444 }3445 psError(PS_ERR_UNKNOWN, false, "failed to set detRun.state");3446 return false;3447 }3448 }3449 3450 if (!psDBCommit(config->dbh)) {3451 psError(PS_ERR_UNKNOWN, false, "database error");3452 return false;3453 }3454 return true;3455 }3456 3457 static bool detrunsummaryMode(pxConfig *config)3458 {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", "==");3464 3465 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);3466 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);3467 PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);3468 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");3478 psStringAppend(&query, " AND %s", whereClause);3479 psFree(whereClause);3480 }3481 psFree(where);3482 3483 if (faulted) {3484 // list only faulted rows3485 psStringAppend(&query, " %s", "AND detRunSummary.fault != 0");3486 } else {3487 // don't list faulted rows3488 psStringAppend(&query, " %s", "AND detRunSummary.fault = 0");3489 }3490 3491 // treat limit == 0 as "no limit"3492 if (limit) {3493 psString limitString = psDBGenerateLimitSQL(limit);3494 psStringAppend(&query, " %s", limitString);3495 psFree(limitString);3496 }3497 3498 if (!p_psDBRunQuery(config->dbh, query)) {3499 psError(PS_ERR_UNKNOWN, false, "database error");3500 psFree(query);3501 return false;3502 }3503 psFree(query);3504 3505 psArray *output = p_psDBFetchResult(config->dbh);3506 if (!output) {3507 psError(PS_ERR_UNKNOWN, false, "database error");3508 return false;3509 }3510 if (!psArrayLength(output)) {3511 psTrace("dettool", PS_LOG_INFO, "no rows found");3512 psFree(output);3513 return true;3514 }3515 3516 // negative simple so the default is true3517 if (!ippdbPrintMetadatas(stdout, output, "rawDetrendImfile", !simple)) {3518 psError(PS_ERR_UNKNOWN, false, "failed to print array");3519 psFree(output);3520 return false;3521 }3522 3523 psFree(output);3524 3525 return true;3526 }3527 3528 3529 static bool revertdetrunsummaryMode(pxConfig *config)3530 {3531 PS_ASSERT_PTR_NON_NULL(config, false);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 3538 psString query = pxDataGet("dettool_revertdetrunsummary.sql");3539 if (!query) {3540 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");3541 return false;3542 }3543 3544 if (psListLength(where->list)) {3545 psString whereClause = psDBGenerateWhereConditionSQL(where, "detRunSummary");3546 psStringAppend(&query, " AND %s", whereClause);3547 psFree(whereClause);3548 }3549 psFree(where);3550 3551 if (!p_psDBRunQuery(config->dbh, query)) {3552 psError(PS_ERR_UNKNOWN, false, "database error");3553 psFree(query);3554 return false;3555 }3556 psFree(query);3557 3558 if (psDBAffectedRows(config->dbh) < 1) {3559 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");3560 return false;3561 }3562 3563 return true;3564 }3565 3566 3567 static bool updatedetrunsummaryMode(pxConfig *config)3568 {3569 PS_ASSERT_PTR_NON_NULL(config, false);3570 3571 PXOPT_LOOKUP_STR(det_id, config->args, "-det_id", true, false); // required3572 PXOPT_LOOKUP_BOOL(accept, config->args, "-accept", false);3573 PXOPT_LOOKUP_BOOL(reject, config->args, "-reject", false);3574 3575 if (accept && reject) {3576 psError(PS_ERR_UNKNOWN, true, "-accept and -reject are exclusive");3577 return false;3578 }3579 3580 if (!(accept || reject)) {3581 psError(PS_ERR_UNKNOWN, true, "either -accept or -reject is required");3582 return false;3583 }3584 3585 char *query = "UPDATE detRunSummary SET accept = %d WHERE det_id = %"PRId64;3586 if (!p_psDBRunQuery(config->dbh, query, accept, (psS64)atoll(det_id))) {3587 psError(PS_ERR_UNKNOWN, false, "database error");3588 return false;3589 }3590 3591 return true;3592 }3593 3594 3595 1225 static bool updatedetrunMode(pxConfig *config) 3596 1226 { 3597 1227 PS_ASSERT_PTR_NON_NULL(config, false); 3598 1228 3599 PXOPT_LOOKUP_S TR(det_id, config->args, "-det_id", true, false); // required1229 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); // required 3600 1230 PXOPT_LOOKUP_BOOL(again, config->args, "-again", false); 3601 1231 PXOPT_LOOKUP_STR(state, config->args, "-state", false, false); … … 3613 1243 if (state) { 3614 1244 // set detRun.state to state 3615 return setDetRunState(config, (psS64)atoll(det_id), state);1245 return setDetRunState(config, det_id, state); 3616 1246 } 3617 1247 3618 1248 // else 3619 1249 // -again 3620 if (!startNewIteration(config, (psS64)atoll(det_id))) {1250 if (!startNewIteration(config, det_id)) { 3621 1251 psError(PS_ERR_UNKNOWN, false, "failed to start new iteration"); 3622 1252 return false; … … 3627 1257 3628 1258 // used by updatedetrunMode 3629 staticbool startNewIteration(pxConfig *config, psS64 det_id)1259 bool startNewIteration(pxConfig *config, psS64 det_id) 3630 1260 { 3631 1261 PS_ASSERT_PTR_NON_NULL(config, false); … … 3739 1369 3740 1370 // det_id is required 3741 PXOPT_LOOKUP_S TR(det_id, config->args, "-det_id", true, false);1371 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); 3742 1372 3743 1373 // we have to support multipe exp_ids … … 3784 1414 3785 1415 // add the det_id & iteration == 0 to the where clause 3786 if (!psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", 3787 (psS64)atoll(det_id))) { 1416 if (!psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", det_id)) { 3788 1417 psError(PS_ERR_UNKNOWN, false, "failed to add item det_id"); 3789 1418 psFree(where); … … 3822 1451 3823 1452 // up the detRuns iteration count 3824 psS32 newIteration = incrementIteration(config, (psS64)atoll(det_id));1453 psS32 newIteration = incrementIteration(config, det_id); 3825 1454 if (!newIteration) { 3826 1455 // rollback … … 3846 1475 } 3847 1476 // invalid exp_id 3848 psError(PS_ERR_UNKNOWN, false, "exp_id %s is invalid for det_id % s",1477 psError(PS_ERR_UNKNOWN, false, "exp_id %s is invalid for det_id %" PRId64, 3849 1478 (char *)mItem->data.V, det_id); 3850 1479 psFree(iter); … … 3853 1482 } 3854 1483 detInputExpRow *newInputExp = detInputExpRowAlloc( 3855 (psS64)atoll(det_id),1484 det_id, 3856 1485 newIteration, 3857 1486 inputExp->exp_id, … … 3912 1541 PXOPT_LOOKUP_TIME(use_begin, config->args, "-use_begin", false, false); 3913 1542 PXOPT_LOOKUP_TIME(use_end, config->args, "-use_end", false, false); 3914 PXOPT_LOOKUP_S TR(parent, config->args, "-parent", false, false);1543 PXOPT_LOOKUP_S64(parent, config->args, "-parent", false, false); 3915 1544 PXOPT_LOOKUP_STR(label, config->args, "-label", false, false); 3916 1545 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); … … 3950 1579 solang_max, 3951 1580 label, // label 3952 parent ? (psS64)atoll(parent) : 01581 parent 3953 1582 )) { 3954 1583 psError(PS_ERR_UNKNOWN, false, "database error"); … … 4001 1630 PS_ASSERT_PTR_NON_NULL(config, false); 4002 1631 4003 PXOPT_LOOKUP_S TR(det_id, config->args, "-det_id", true, false); // required1632 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); // required 4004 1633 PXOPT_LOOKUP_STR(class_id, config->args, "-class_id", true, false); // required 4005 1634 PXOPT_LOOKUP_STR(uri, config->args, "-uri", true, false); // required … … 4015 1644 4016 1645 if (!detRegisteredImfileInsert(config->dbh, 4017 (psS64)atoll(det_id), 4018 0, // the iteration is fixed at 0 4019 class_id, 4020 uri, 4021 bg, 4022 bg_stdev, 4023 bg_mean_stdev, 4024 user_1, 4025 user_2, 4026 user_3, 4027 user_4, 4028 user_5, 4029 path_base, 4030 0 // fault code 4031 )) { 1646 det_id, 1647 0, // the iteration is fixed at 0 1648 class_id, 1649 uri, 1650 bg, 1651 bg_stdev, 1652 bg_mean_stdev, 1653 user_1, 1654 user_2, 1655 user_3, 1656 user_4, 1657 user_5, 1658 path_base, 1659 "full", 1660 0 // fault code 1661 )) { 4032 1662 psError(PS_ERR_UNKNOWN, false, "database error"); 4033 1663 return false; … … 4075 1705 } 4076 1706 4077 staticbool setDetRunState(pxConfig *config, psS64 det_id, const char *state)1707 bool setDetRunState(pxConfig *config, psS64 det_id, const char *state) 4078 1708 { 4079 1709 PS_ASSERT_PTR_NON_NULL(config, false); … … 4103 1733 } 4104 1734 4105 static bool isValidMode(pxConfig *config, const char *mode) 1735 bool isValidDataState (const char *data_state) { 1736 1737 // check that state is a valid string value 1738 if (!strncmp(data_state, "run", 4)) return true; 1739 if (!strncmp(data_state, "stop", 5)) return true; 1740 if (!strncmp(data_state, "drop", 5)) return true; 1741 if (!strncmp(data_state, "register", 4)) return true; 1742 1743 psError(PS_ERR_UNKNOWN, true, "invalid data state: %s", data_state); 1744 return false; 1745 } 1746 1747 bool isValidMode(pxConfig *config, const char *mode) 4106 1748 { 4107 1749 PS_ASSERT_PTR_NON_NULL(config, false); … … 4122 1764 } 4123 1765 1766 1767 bool setProcessedImfileDataState(pxConfig *config, psS64 det_id, psS64 exp_id, const char *class_id, const char *data_state) 1768 { 1769 PS_ASSERT_PTR_NON_NULL(config, false); 1770 PS_ASSERT_PTR_NON_NULL(data_state, false); 1771 PS_ASSERT_PTR_NON_NULL(class_id, false); 1772 1773 if (!isValidDataState (data_state)) return false; 1774 1775 char *query = "UPDATE detProcessedImfile SET data_state = '%s'" 1776 " WHERE det_id = %" PRId64 1777 " AND exp_id = %" PRId64 1778 " AND class_id = '%s'"; 1779 if (!p_psDBRunQuery(config->dbh, query, data_state, det_id, exp_id, class_id)) { 1780 psError(PS_ERR_UNKNOWN, false, 1781 "failed to change state for det_id %" PRId64 ", exp_id %" PRId64 ", class_id %s", 1782 det_id, exp_id, class_id); 1783 return false; 1784 } 1785 1786 return true; 1787 } 1788 1789 bool setProcessedExpDataState(pxConfig *config, psS64 det_id, psS64 exp_id, const char *data_state) 1790 { 1791 PS_ASSERT_PTR_NON_NULL(config, false); 1792 PS_ASSERT_PTR_NON_NULL(data_state, false); 1793 1794 if (!isValidDataState (data_state)) return false; 1795 1796 char *query = "UPDATE detProcessedExp SET data_state = '%s'" 1797 " WHERE det_id = %" PRId64 1798 " AND exp_id = %" PRId64; 1799 if (!p_psDBRunQuery(config->dbh, query, data_state, det_id, exp_id)) { 1800 psError(PS_ERR_UNKNOWN, false, 1801 "failed to change state for det_id %" PRId64 ", exp_id %" PRId64, 1802 det_id, exp_id); 1803 return false; 1804 } 1805 1806 return true; 1807 } 1808 1809 1810 bool setStackedImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state) 1811 { 1812 PS_ASSERT_PTR_NON_NULL(config, false); 1813 PS_ASSERT_PTR_NON_NULL(class_id, false); 1814 PS_ASSERT_PTR_NON_NULL(data_state, false); 1815 1816 if (!isValidDataState (data_state)) return false; 1817 1818 char *query = "UPDATE detStackedImfile SET data_state = '%s'" 1819 " WHERE det_id = %" PRId64 1820 " AND iteration = %" PRId32 1821 " AND class_id = %s"; 1822 if (!p_psDBRunQuery(config->dbh, query, data_state, det_id, iteration, class_id)) { 1823 psError(PS_ERR_UNKNOWN, false, 1824 "failed to change state for det_id %" PRId64 ", iteration %" PRId32 "class_id %s", 1825 det_id, iteration, class_id); 1826 return false; 1827 } 1828 1829 return true; 1830 } 1831 1832 bool setNormStatImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state) 1833 { 1834 PS_ASSERT_PTR_NON_NULL(config, false); 1835 PS_ASSERT_PTR_NON_NULL(class_id, false); 1836 PS_ASSERT_PTR_NON_NULL(data_state, false); 1837 1838 if (!isValidDataState (data_state)) return false; 1839 1840 char *query = "UPDATE detNormalizedStatImfile SET data_state = '%s'" 1841 " WHERE det_id = %" PRId64 1842 " AND iteration = %" PRId32 1843 " AND class_id = %s"; 1844 if (!p_psDBRunQuery(config->dbh, query, data_state, det_id, iteration)) { 1845 psError(PS_ERR_UNKNOWN, false, 1846 "failed to change state for det_id %" PRId64 ", iteration %" PRId32, 1847 det_id, iteration); 1848 return false; 1849 } 1850 1851 return true; 1852 } 1853 1854 bool setNormImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state) 1855 { 1856 PS_ASSERT_PTR_NON_NULL(config, false); 1857 PS_ASSERT_PTR_NON_NULL(class_id, false); 1858 PS_ASSERT_PTR_NON_NULL(data_state, false); 1859 1860 if (!isValidDataState (data_state)) return false; 1861 1862 char *query = "UPDATE detNormalizedImfile SET data_state = '%s'" 1863 " WHERE det_id = %" PRId64 1864 " AND iteration = %" PRId32 1865 " AND class_id = %s"; 1866 if (!p_psDBRunQuery(config->dbh, query, data_state, det_id, iteration, class_id)) { 1867 psError(PS_ERR_UNKNOWN, false, 1868 "failed to change state for det_id %" PRId64 ", iteration %" PRId32 " class %s", 1869 det_id, iteration, class_id); 1870 return false; 1871 } 1872 1873 return true; 1874 } 1875 1876 bool setNormExpDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *data_state) 1877 { 1878 PS_ASSERT_PTR_NON_NULL(config, false); 1879 PS_ASSERT_PTR_NON_NULL(data_state, false); 1880 1881 if (!isValidDataState (data_state)) return false; 1882 1883 char *query = "UPDATE detNormalizedExp SET data_state = '%s'" 1884 " WHERE det_id = %" PRId64 1885 " AND iteration = %" PRId32; 1886 if (!p_psDBRunQuery(config->dbh, query, data_state, det_id, iteration)) { 1887 psError(PS_ERR_UNKNOWN, false, 1888 "failed to change state for det_id %" PRId64 ", iteration %" PRId32, 1889 det_id, iteration); 1890 return false; 1891 } 1892 1893 return true; 1894 } 1895 1896 bool setResidImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, psS64 exp_id, const char *class_id, const char *data_state) 1897 { 1898 PS_ASSERT_PTR_NON_NULL(config, false); 1899 PS_ASSERT_PTR_NON_NULL(data_state, false); 1900 PS_ASSERT_PTR_NON_NULL(class_id, false); 1901 1902 if (!isValidDataState (data_state)) return false; 1903 1904 char *query = "UPDATE detResidImfile SET data_state = '%s'" 1905 " WHERE det_id = %" PRId64 1906 " AND iteration = %" PRId32 1907 " AND exp_id = %" PRId64 1908 " AND class_id = '%s'"; 1909 if (!p_psDBRunQuery(config->dbh, query, data_state, det_id, iteration, exp_id, class_id)) { 1910 psError(PS_ERR_UNKNOWN, false, 1911 "failed to change state for det_id %" PRId64 ", iteration %" PRId32 ", exp_id %" PRId64 ", class_id %s", 1912 det_id, iteration, exp_id, class_id); 1913 return false; 1914 } 1915 1916 return true; 1917 } 1918 1919 bool setResidExpDataState(pxConfig *config, psS64 det_id, psS32 iteration, psS64 exp_id, const char *data_state) 1920 { 1921 PS_ASSERT_PTR_NON_NULL(config, false); 1922 PS_ASSERT_PTR_NON_NULL(data_state, false); 1923 1924 if (!isValidDataState (data_state)) return false; 1925 1926 char *query = "UPDATE detResidExp SET data_state = '%s'" 1927 " WHERE det_id = %" PRId64 1928 " AND iteration = %" PRId32 1929 " AND exp_id = %" PRId64; 1930 if (!p_psDBRunQuery(config->dbh, query, data_state, det_id, iteration, exp_id)) { 1931 psError(PS_ERR_UNKNOWN, false, 1932 "failed to change state for det_id %" PRId64 ", iteration %" PRId32 ", exp_id %" PRId64, 1933 det_id, iteration, exp_id); 1934 return false; 1935 } 1936 1937 return true; 1938 } 4124 1939 4125 1940 #if 0 -
trunk/ippTools/src/dettool.h
r18561 r19092 41 41 DETTOOL_MODE_INPUT, 42 42 DETTOOL_MODE_RAW, 43 43 44 DETTOOL_MODE_TOPROCESSEDIMFILE, 44 45 DETTOOL_MODE_ADDPROCESSEDIMFILE, 45 46 DETTOOL_MODE_PROCESSEDIMFILE, 46 47 DETTOOL_MODE_REVERTPROCESSEDIMFILE, 48 DETTOOL_MODE_UPDATEPROCESSEDIMFILE, 49 DETTOOL_MODE_PENDINGCLEANUP_PROCESSEDIMFILE, 50 DETTOOL_MODE_DONECLEANUP_PROCESSEDIMFILE, 51 47 52 DETTOOL_MODE_TOPROCESSEDEXP, 48 53 DETTOOL_MODE_ADDPROCESSEDEXP, 49 54 DETTOOL_MODE_PROCESSEDEXP, 50 55 DETTOOL_MODE_REVERTPROCESSEDEXP, 56 DETTOOL_MODE_UPDATEPROCESSEDEXP, 57 DETTOOL_MODE_PENDINGCLEANUP_PROCESSEDEXP, 58 DETTOOL_MODE_DONECLEANUP_PROCESSEDEXP, 59 51 60 DETTOOL_MODE_TOSTACKED, 52 61 DETTOOL_MODE_ADDSTACKED, 53 62 DETTOOL_MODE_STACKED, 54 63 DETTOOL_MODE_REVERTSTACKED, 64 DETTOOL_MODE_UPDATESTACKED, 65 DETTOOL_MODE_PENDINGCLEANUP_STACKED, 66 DETTOOL_MODE_DONECLEANUP_STACKED, 67 55 68 DETTOOL_MODE_TONORMALIZEDSTAT, 56 69 DETTOOL_MODE_ADDNORMALIZEDSTAT, 57 70 DETTOOL_MODE_NORMALIZEDSTAT, 58 71 DETTOOL_MODE_REVERTNORMALIZEDSTAT, 72 DETTOOL_MODE_UPDATENORMALIZEDSTAT, 73 DETTOOL_MODE_PENDINGCLEANUP_NORMALIZEDSTAT, 74 DETTOOL_MODE_DONECLEANUP_NORMALIZEDSTAT, 75 59 76 DETTOOL_MODE_TONORMALIZE, 60 77 DETTOOL_MODE_ADDNORMALIZEDIMFILE, 61 78 DETTOOL_MODE_NORMALIZEDIMFILE, 62 79 DETTOOL_MODE_REVERTNORMALIZEDIMFILE, 80 DETTOOL_MODE_UPDATENORMALIZEDIMFILE, 81 DETTOOL_MODE_PENDINGCLEANUP_NORMALIZEDIMFILE, 82 DETTOOL_MODE_DONECLEANUP_NORMALIZEDIMFILE, 83 63 84 DETTOOL_MODE_TONORMALIZEDEXP, 64 85 DETTOOL_MODE_ADDNORMALIZEDEXP, 65 86 DETTOOL_MODE_NORMALIZEDEXP, 66 87 DETTOOL_MODE_REVERTNORMALIZEDEXP, 88 DETTOOL_MODE_UPDATENORMALIZEDEXP, 89 DETTOOL_MODE_PENDINGCLEANUP_NORMALIZEDEXP, 90 DETTOOL_MODE_DONECLEANUP_NORMALIZEDEXP, 91 67 92 DETTOOL_MODE_TORESIDIMFILE, 68 93 DETTOOL_MODE_ADDRESIDIMFILE, 69 94 DETTOOL_MODE_RESIDIMFILE, 70 95 DETTOOL_MODE_REVERTRESIDIMFILE, 96 DETTOOL_MODE_UPDATERESIDIMFILE, 97 DETTOOL_MODE_PENDINGCLEANUP_RESIDIMFILE, 98 DETTOOL_MODE_DONECLEANUP_RESIDIMFILE, 99 71 100 DETTOOL_MODE_TORESIDEXP, 72 101 DETTOOL_MODE_ADDRESIDEXP, 73 102 DETTOOL_MODE_RESIDEXP, 74 103 DETTOOL_MODE_REVERTRESIDEXP, 104 DETTOOL_MODE_UPDATERESIDEXP, 105 DETTOOL_MODE_PENDINGCLEANUP_RESIDEXP, 106 DETTOOL_MODE_DONECLEANUP_RESIDEXP, 107 75 108 DETTOOL_MODE_TODETRUNSUMMARY, 76 109 DETTOOL_MODE_ADDDETRUNSUMMARY, 77 110 DETTOOL_MODE_DETRUNSUMMARY, 78 111 DETTOOL_MODE_REVERTDETRUNSUMMARY, 79 DETTOOL_MODE_UPDATERESIDEXP,80 112 DETTOOL_MODE_UPDATEDETRUNSUMMARY, 81 113 DETTOOL_MODE_UPDATEDETRUN, … … 92 124 bool tocorrectimfileMode(pxConfig *config); 93 125 bool addcorrectimfileMode(pxConfig *config); 126 94 127 // register 95 128 bool register_detrend_imfileMode(pxConfig *config); 96 129 130 // processedimfile 131 bool toprocessedimfileMode(pxConfig *config); 132 bool addprocessedimfileMode(pxConfig *config); 133 bool processedimfileMode(pxConfig *config); 134 bool revertprocessedimfileMode(pxConfig *config); 135 bool updateprocessedimfileMode(pxConfig *config); 136 bool pendingcleanup_processedimfileMode(pxConfig *config); 137 bool donecleanup_processedimfileMode(pxConfig *config); 138 139 // processedexp 140 bool toprocessedexpMode(pxConfig *config); 141 bool addprocessedexpMode(pxConfig *config); 142 bool processedexpMode(pxConfig *config); 143 bool revertprocessedexpMode(pxConfig *config); 144 bool updateprocessedexpMode(pxConfig *config); 145 bool pendingcleanup_processedexpMode(pxConfig *config); 146 bool donecleanup_processedexpMode(pxConfig *config); 147 148 // stackedimfile 149 bool tostackedMode(pxConfig *config); 150 bool addstackedMode(pxConfig *config); 151 bool stackedMode(pxConfig *config); 152 bool revertstackedMode(pxConfig *config); 153 bool updatestackedMode(pxConfig *config); 154 bool pendingcleanup_stackedMode(pxConfig *config); 155 bool donecleanup_stackedMode(pxConfig *config); 156 157 // normalizedstat 158 bool tonormalizedstatMode(pxConfig *config); 159 bool addnormalizedstatMode(pxConfig *config); 160 bool normalizedstatMode(pxConfig *config); 161 bool revertnormalizedstatMode(pxConfig *config); 162 bool updatenormalizedstatMode(pxConfig *config); 163 bool pendingcleanup_normalizedstatMode(pxConfig *config); 164 bool donecleanup_normalizedstatMode(pxConfig *config); 165 166 // normalizedimfile 167 bool tonormalizeMode(pxConfig *config); 168 bool addnormalizedimfileMode(pxConfig *config); 169 bool normalizedimfileMode(pxConfig *config); 170 bool revertnormalizedimfileMode(pxConfig *config); 171 bool updatenormalizedimfileMode(pxConfig *config); 172 bool pendingcleanup_normalizedimfileMode(pxConfig *config); 173 bool donecleanup_normalizedimfileMode(pxConfig *config); 174 175 // normalizedexp 176 bool tonormalizedexpMode(pxConfig *config); 177 bool addnormalizedexpMode(pxConfig *config); 178 bool normalizedexpMode(pxConfig *config); 179 bool revertnormalizedexpMode(pxConfig *config); 180 bool updatenormalizedexpMode(pxConfig *config); 181 bool pendingcleanup_normalizedexpMode(pxConfig *config); 182 bool donecleanup_normalizedexpMode(pxConfig *config); 183 184 // residimfile 185 bool toresidimfileMode(pxConfig *config); 186 bool addresidimfileMode(pxConfig *config); 187 bool residimfileMode(pxConfig *config); 188 bool revertresidimfileMode(pxConfig *config); 189 bool updateresidimfileMode(pxConfig *config); 190 bool pendingcleanup_residimfileMode(pxConfig *config); 191 bool donecleanup_residimfileMode(pxConfig *config); 192 193 // residexp 194 bool toresidexpMode(pxConfig *config); 195 bool addresidexpMode(pxConfig *config); 196 bool residexpMode(pxConfig *config); 197 bool revertresidexpMode(pxConfig *config); 198 bool updateresidexpMode(pxConfig *config); 199 bool pendingcleanup_residexpMode(pxConfig *config); 200 bool donecleanup_residexpMode(pxConfig *config); 201 202 // detrunsummary 203 bool todetrunsummaryMode(pxConfig *config); 204 bool adddetrunsummaryMode(pxConfig *config); 205 bool detrunsummaryMode(pxConfig *config); 206 bool revertdetrunsummaryMode(pxConfig *config); 207 bool updatedetrunsummaryMode(pxConfig *config); 208 209 // other utilities 210 bool startNewIteration(pxConfig *config, psS64 det_id); 211 bool setDetRunState(pxConfig *config, psS64 det_id, const char *state); 212 bool isValidDataState (const char *data_state); 213 bool isValidMode(pxConfig *config, const char *mode); 214 215 // functions to set the 'data_state' for stages 216 bool setProcessedImfileDataState(pxConfig *config, psS64 det_id, psS64 exp_id, const char *class_id, const char *data_state); 217 bool setProcessedExpDataState(pxConfig *config, psS64 det_id, psS64 exp_id, const char *data_state); 218 bool setStackedImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state); 219 bool setNormStatImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state); 220 bool setNormImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *class_id, const char *data_state); 221 bool setNormExpDataState(pxConfig *config, psS64 det_id, psS32 iteration, const char *data_state); 222 bool setResidImfileDataState(pxConfig *config, psS64 det_id, psS32 iteration, psS64 exp_id, const char *class_id, const char *data_state); 223 bool setResidExpDataState(pxConfig *config, psS64 det_id, psS32 iteration, psS64 exp_id, const char *data_state); 224 97 225 #endif // DETTOOL_H -
trunk/ippTools/src/dettoolConfig.c
r18938 r19092 41 41 // XXX EAM : is this used? does it make sense? 42 42 psMetadata *pendingArgs = psMetadataAlloc(); 43 psMetadataAddS tr(pendingArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", NULL);43 psMetadataAddS64(pendingArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 44 44 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exposure type", NULL); 45 45 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-inst", 0, "search by camera", NULL); … … 51 51 // -definebytag 52 52 psMetadata *definebytagArgs = psMetadataAlloc(); 53 psMetadataAddS tr(definebytagArgs, PS_LIST_TAIL, "-exp_id", PS_META_DUPLICATE_OK, "include this exposure (multiple OK, required)", NULL);53 psMetadataAddS64(definebytagArgs, PS_LIST_TAIL, "-exp_id", PS_META_DUPLICATE_OK, "include this exposure (multiple OK, required)", 0); 54 54 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-det_type", 0, "define the type of detrend run (required)", NULL); 55 55 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-mode", 0, "define the mode of this detrend run", "master"); … … 132 132 // -definebydetrun 133 133 psMetadata *definebydetrunArgs = psMetadataAlloc(); 134 psMetadataAddS tr(definebydetrunArgs, PS_LIST_TAIL, "-det_id", 0, "det ID to base a new detRun on (required)", NULL);134 psMetadataAddS64(definebydetrunArgs, PS_LIST_TAIL, "-det_id", 0, "det ID to base a new detRun on (required)", 0); 135 135 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_det_type", 0, "define the type of detrend run", NULL); 136 136 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_mode", 0, "define the mode of this detrend run", "master"); … … 163 163 // -makecorrection 164 164 psMetadata *makecorrectionArgs = psMetadataAlloc(); 165 psMetadataAddS tr(makecorrectionArgs, PS_LIST_TAIL, "-det_id", 0, "det ID to be corrected (required)", NULL);165 psMetadataAddS64(makecorrectionArgs, PS_LIST_TAIL, "-det_id", 0, "det ID to be corrected (required)", 0); 166 166 psMetadataAddBool(makecorrectionArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 167 167 … … 173 173 // -tocorrectimfile 174 174 psMetadata *tocorrectimfileArgs = psMetadataAlloc(); 175 psMetadataAddS tr(tocorrectimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);175 psMetadataAddS64(tocorrectimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 176 176 psMetadataAddU64(tocorrectimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 177 177 psMetadataAddBool(tocorrectimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 179 179 // -addcorrectimfile 180 180 psMetadata *addcorrectimfileArgs = psMetadataAlloc(); 181 psMetadataAddS tr(addcorrectimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);181 psMetadataAddS64(addcorrectimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 182 182 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID (required)", NULL); 183 183 psMetadataAddStr(addcorrectimfileArgs, PS_LIST_TAIL, "-uri", 0, "define resid file URI", NULL); … … 195 195 psMetadata *runsArgs = psMetadataAlloc(); 196 196 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-det_type", 0, "search for type of detrend run", NULL); 197 psMetadataAddS tr(runsArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);197 psMetadataAddS64(runsArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 198 198 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-inst", 0, "search for camera (instrument)", NULL); 199 199 psMetadataAddStr(runsArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); … … 215 215 // -input 216 216 psMetadata *inputArgs = psMetadataAlloc(); 217 psMetadataAddS tr(inputArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);217 psMetadataAddS64(inputArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 218 218 psMetadataAddS32(inputArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 219 219 psMetadataAddS64(inputArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", 0); … … 226 226 // -toprocessedimfile 227 227 psMetadata *toprocessedimfileArgs = psMetadataAlloc(); 228 psMetadataAddS tr(toprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);229 psMetadataAddS tr(toprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", NULL);228 psMetadataAddS64(toprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 229 psMetadataAddS64(toprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", 0); 230 230 psMetadataAddStr(toprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 231 231 psMetadataAddU64(toprocessedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); … … 234 234 // -addprocessedimfile 235 235 psMetadata *addprocessedimfileArgs = psMetadataAlloc(); 236 psMetadataAddS tr(addprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);237 psMetadataAddS tr(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "define exp ID (required)", NULL);236 psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 237 psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "define exp ID (required)", 0); 238 238 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); 239 239 psMetadataAddS16(addprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); … … 255 255 // -processedimfile 256 256 psMetadata *processedimfileArgs = psMetadataAlloc(); 257 psMetadataAddS tr(processedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);258 psMetadataAddS tr(processedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", NULL);257 psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 258 psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", 0); 259 259 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 260 260 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-select_state", 0, "search for state", NULL); … … 265 265 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 266 266 267 // XXX these don't seem to be used anymore268 // 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);270 271 267 // -revertprocessedimfile 272 268 psMetadata *revertprocessedimfileArgs = psMetadataAlloc(); 273 psMetadataAddS tr(revertprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);274 psMetadataAddS tr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", NULL);269 psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID (required)", 0); 270 psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 275 271 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 276 272 psMetadataAddS16(revertprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 273 274 // -updateprocessedimfile 275 psMetadata *updateprocessedimfileArgs = psMetadataAlloc(); 276 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 277 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 278 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 279 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-data_state", 0, "search for telescope", NULL); 280 281 // -pendingcleanup_processedimfile 282 psMetadata *pendingcleanup_processedimfileArgs = psMetadataAlloc(); 283 psMetadataAddBool(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 284 psMetadataAddU64(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 285 psMetadataAddS64(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 286 psMetadataAddS64(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 287 psMetadataAddStr(pendingcleanup_processedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 288 289 // -donecleanup_processedimfile 290 psMetadata *donecleanup_processedimfileArgs = psMetadataAlloc(); 291 psMetadataAddBool(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 292 psMetadataAddU64(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 293 psMetadataAddS64(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 294 psMetadataAddS64(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 295 psMetadataAddStr(donecleanup_processedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 277 296 278 297 // -toprocessedexp … … 283 302 // -addproccessedexp 284 303 psMetadata *addprocessedexpArgs = psMetadataAlloc(); 285 psMetadataAddS tr(addprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);286 psMetadataAddS tr(addprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "define detrend ID (required)", NULL);304 psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 305 psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "define detrend ID (required)", 0); 287 306 psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-recip", 0, "define recipe", NULL); 288 307 psMetadataAddF64(addprocessedexpArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); … … 302 321 // -proccessedexp 303 322 psMetadata *processedexpArgs = psMetadataAlloc(); 304 psMetadataAddS tr(processedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID", NULL);305 psMetadataAddS tr(processedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp ID", NULL);323 psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID", 0); 324 psMetadataAddS64(processedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp ID", 0); 306 325 psMetadataAddU64(processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 307 326 psMetadataAddBool(processedexpArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); … … 310 329 // -revertprocessedexp 311 330 psMetadata *revertprocessedexpArgs = psMetadataAlloc(); 312 psMetadataAddS tr(revertprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL);313 psMetadataAddS tr(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", NULL);331 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", 0); 332 psMetadataAddS64(revertprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 314 333 psMetadataAddS16(revertprocessedexpArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 334 335 // -updateprocessedexp 336 psMetadata *updateprocessedexpArgs = psMetadataAlloc(); 337 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 338 psMetadataAddS64(updateprocessedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 339 psMetadataAddStr(updateprocessedexpArgs, PS_LIST_TAIL, "-data_state", 0, "search for telescope", NULL); 340 341 // -pendingcleanup_processedexp 342 psMetadata *pendingcleanup_processedexpArgs = psMetadataAlloc(); 343 psMetadataAddBool(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 344 psMetadataAddU64(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 345 psMetadataAddS64(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 346 psMetadataAddS64(pendingcleanup_processedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 347 348 // -donecleanup_processedexp 349 psMetadata *donecleanup_processedexpArgs = psMetadataAlloc(); 350 psMetadataAddBool(donecleanup_processedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 351 psMetadataAddU64(donecleanup_processedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 352 psMetadataAddS64(donecleanup_processedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 353 psMetadataAddS64(donecleanup_processedexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 315 354 316 355 // -tostacked … … 321 360 // -addstacked 322 361 psMetadata *addstackedArgs = psMetadataAlloc(); 323 psMetadataAddS tr(addstackedArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);362 psMetadataAddS64(addstackedArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 324 363 psMetadataAddS32(addstackedArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number (required)", 0); 325 364 psMetadataAddStr(addstackedArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); … … 338 377 // -stacked 339 378 psMetadata *stackedArgs = psMetadataAlloc(); 340 psMetadataAddS tr(stackedArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);379 psMetadataAddS64(stackedArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 341 380 psMetadataAddS32(stackedArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 342 381 psMetadataAddStr(stackedArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); … … 348 387 // -revertstacked 349 388 psMetadata *revertstackedArgs= psMetadataAlloc(); 350 psMetadataAddS tr(revertstackedArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID (required)", NULL);389 psMetadataAddS64(revertstackedArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID (required)", 0); 351 390 psMetadataAddS32(revertstackedArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 352 391 psMetadataAddStr(revertstackedArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 353 392 psMetadataAddS16(revertstackedArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 393 394 // -updatestacked 395 psMetadata *updatestackedArgs = psMetadataAlloc(); 396 psMetadataAddS64(updatestackedArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 397 psMetadataAddS32(updatestackedArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 398 psMetadataAddStr(updatestackedArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 399 psMetadataAddStr(updatestackedArgs, PS_LIST_TAIL, "-data_state", 0, "search for telescope", NULL); 400 401 // -pendingcleanup_stacked 402 psMetadata *pendingcleanup_stackedArgs = psMetadataAlloc(); 403 psMetadataAddBool(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 404 psMetadataAddU64(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 405 psMetadataAddS64(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 406 psMetadataAddS32(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 407 psMetadataAddStr(pendingcleanup_stackedArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 408 409 // -donecleanup_stacked 410 psMetadata *donecleanup_stackedArgs = psMetadataAlloc(); 411 psMetadataAddBool(donecleanup_stackedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 412 psMetadataAddU64(donecleanup_stackedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 413 psMetadataAddS64(donecleanup_stackedArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 414 psMetadataAddS32(donecleanup_stackedArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 415 psMetadataAddStr(donecleanup_stackedArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 354 416 355 417 // -tonormalizedstat … … 360 422 // -addnormalizedstat 361 423 psMetadata *addnormstatArgs = psMetadataAlloc(); 362 psMetadataAddS tr(addnormstatArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);424 psMetadataAddS64(addnormstatArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 363 425 psMetadataAddS32(addnormstatArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 364 426 psMetadataAddStr(addnormstatArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); … … 368 430 // -normalizedstat 369 431 psMetadata *normalizedstatArgs = psMetadataAlloc(); 370 psMetadataAddS tr(normalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID", NULL);432 psMetadataAddS64(normalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID", 0); 371 433 psMetadataAddS32(normalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 372 434 psMetadataAddStr(normalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); … … 377 439 // -revertnormalizedstat 378 440 psMetadata *revertnormalizedstatArgs= psMetadataAlloc(); 379 psMetadataAddS tr(revertnormalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL);441 psMetadataAddS64(revertnormalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", 0); 380 442 psMetadataAddS32(revertnormalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 381 443 psMetadataAddStr(revertnormalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 382 444 psMetadataAddS16(revertnormalizedstatArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 445 446 // -updatenormalizedstat 447 psMetadata *updatenormalizedstatArgs = psMetadataAlloc(); 448 psMetadataAddS64(updatenormalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 449 psMetadataAddS32(updatenormalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 450 psMetadataAddStr(updatenormalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 451 psMetadataAddStr(updatenormalizedstatArgs, PS_LIST_TAIL, "-data_state", 0, "search for telescope", NULL); 452 453 // -pendingcleanup_normalizedstat 454 psMetadata *pendingcleanup_normalizedstatArgs = psMetadataAlloc(); 455 psMetadataAddBool(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 456 psMetadataAddU64(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 457 psMetadataAddS64(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 458 psMetadataAddS32(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 459 psMetadataAddStr(pendingcleanup_normalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 460 461 // -donecleanup_normalizedstat 462 psMetadata *donecleanup_normalizedstatArgs = psMetadataAlloc(); 463 psMetadataAddBool(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 464 psMetadataAddU64(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 465 psMetadataAddS64(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 466 psMetadataAddS32(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 467 psMetadataAddStr(donecleanup_normalizedstatArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 383 468 384 469 // -tonormalize … … 389 474 // -addnormalizedimfile 390 475 psMetadata *addnormalizedimfileArgs = psMetadataAlloc(); 391 psMetadataAddS tr(addnormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);476 psMetadataAddS64(addnormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 392 477 psMetadataAddS32(addnormalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 393 478 psMetadataAddStr(addnormalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); … … 406 491 // -normalizedimfile 407 492 psMetadata *normalizedimfileArgs = psMetadataAlloc(); 408 psMetadataAddS tr(normalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);493 psMetadataAddS64(normalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 409 494 psMetadataAddS32(normalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 410 495 psMetadataAddStr(normalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); … … 416 501 // -revertnormalizedimfile 417 502 psMetadata *revertnormalizedimfileArgs = psMetadataAlloc(); 418 psMetadataAddS tr(revertnormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL);503 psMetadataAddS64(revertnormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", 0); 419 504 psMetadataAddS32(revertnormalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 420 505 psMetadataAddStr(revertnormalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 421 506 psMetadataAddS16(revertnormalizedimfileArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 507 508 // -updatenormalizedimfile 509 psMetadata *updatenormalizedimfileArgs = psMetadataAlloc(); 510 psMetadataAddS64(updatenormalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 511 psMetadataAddS32(updatenormalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 512 psMetadataAddStr(updatenormalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 513 psMetadataAddStr(updatenormalizedimfileArgs, PS_LIST_TAIL, "-data_state", 0, "search for telescope", NULL); 514 515 // -pendingcleanup_normalizedimfile 516 psMetadata *pendingcleanup_normalizedimfileArgs = psMetadataAlloc(); 517 psMetadataAddBool(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 518 psMetadataAddU64(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 519 psMetadataAddS64(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 520 psMetadataAddS32(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 521 psMetadataAddStr(pendingcleanup_normalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 522 523 // -donecleanup_normalizedimfile 524 psMetadata *donecleanup_normalizedimfileArgs = psMetadataAlloc(); 525 psMetadataAddBool(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 526 psMetadataAddU64(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 527 psMetadataAddS64(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 528 psMetadataAddS32(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 529 psMetadataAddStr(donecleanup_normalizedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 422 530 423 531 // -tonormalizedexp … … 428 536 // -addnormalizedexp 429 537 psMetadata *addnormalizedexpArgs = psMetadataAlloc(); 430 psMetadataAddS tr(addnormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);538 psMetadataAddS64(addnormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 431 539 psMetadataAddS32(addnormalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 432 540 psMetadataAddS16(addnormalizedexpArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); … … 444 552 // -normalizedexp 445 553 psMetadata *normalizedexpArgs = psMetadataAlloc(); 446 psMetadataAddS tr(normalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID", NULL);554 psMetadataAddS64(normalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID", 0); 447 555 psMetadataAddS32(normalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 448 556 psMetadataAddStr(normalizedexpArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL); … … 453 561 // -revertnormalizedexp 454 562 psMetadata *revertnormalizedexpArgs = psMetadataAlloc(); 455 psMetadataAddS tr(revertnormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL);563 psMetadataAddS64(revertnormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", 0); 456 564 psMetadataAddS32(revertnormalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 457 565 psMetadataAddS16(revertnormalizedexpArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 566 567 // -updatenormalizedexp 568 psMetadata *updatenormalizedexpArgs = psMetadataAlloc(); 569 psMetadataAddS64(updatenormalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 570 psMetadataAddS32(updatenormalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 571 psMetadataAddStr(updatenormalizedexpArgs, PS_LIST_TAIL, "-data_state", 0, "search for telescope", NULL); 572 573 // -pendingcleanup_normalizedexp 574 psMetadata *pendingcleanup_normalizedexpArgs = psMetadataAlloc(); 575 psMetadataAddBool(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 576 psMetadataAddU64(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 577 psMetadataAddS64(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 578 psMetadataAddS32(pendingcleanup_normalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 579 580 // -donecleanup_normalizedexp 581 psMetadata *donecleanup_normalizedexpArgs = psMetadataAlloc(); 582 psMetadataAddBool(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 583 psMetadataAddU64(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 584 psMetadataAddS64(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 585 psMetadataAddS32(donecleanup_normalizedexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 458 586 459 587 // -toresidimfile … … 464 592 // -addresidimfile 465 593 psMetadata *addresidimfileArgs = psMetadataAlloc(); 466 psMetadataAddS tr(addresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);594 psMetadataAddS64(addresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 467 595 psMetadataAddS32(addresidimfileArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 468 psMetadataAddS tr(addresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "define detrend ID (required)", NULL);596 psMetadataAddS64(addresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "define detrend ID (required)", 0); 469 597 psMetadataAddStr(addresidimfileArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); 470 598 psMetadataAddS16(addresidimfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); … … 492 620 // -residimfile 493 621 psMetadata *residimfileArgs = psMetadataAlloc(); 494 psMetadataAddS tr(residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);622 psMetadataAddS64(residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 495 623 psMetadataAddS32(residimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 496 psMetadataAddS tr(residimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", NULL);624 psMetadataAddS64(residimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", 0); 497 625 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 498 626 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL); … … 504 632 // -revertresidimfile 505 633 psMetadata *revertresidimfileArgs = psMetadataAlloc(); 506 psMetadataAddS tr(revertresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL);634 psMetadataAddS64(revertresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", 0); 507 635 psMetadataAddS32(revertresidimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 508 psMetadataAddS tr(revertresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", NULL);636 psMetadataAddS64(revertresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", 0); 509 637 psMetadataAddStr(revertresidimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 510 638 psMetadataAddS16(revertresidimfileArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 639 640 // -updateresidimfile 641 psMetadata *updateresidimfileArgs = psMetadataAlloc(); 642 psMetadataAddS64(updateresidimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 643 psMetadataAddS32(updateresidimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 644 psMetadataAddS64(updateresidimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 645 psMetadataAddStr(updateresidimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 646 psMetadataAddStr(updateresidimfileArgs, PS_LIST_TAIL, "-data_state", 0, "search for telescope", NULL); 647 648 // -pendingcleanup_residimfile 649 psMetadata *pendingcleanup_residimfileArgs = psMetadataAlloc(); 650 psMetadataAddBool(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 651 psMetadataAddU64(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 652 psMetadataAddS64(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 653 psMetadataAddS32(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 654 psMetadataAddS64(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 655 psMetadataAddStr(pendingcleanup_residimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 656 657 // -donecleanup_residimfile 658 psMetadata *donecleanup_residimfileArgs = psMetadataAlloc(); 659 psMetadataAddBool(donecleanup_residimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 660 psMetadataAddU64(donecleanup_residimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 661 psMetadataAddS64(donecleanup_residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search by chip ID", 0); 662 psMetadataAddS32(donecleanup_residimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 663 psMetadataAddS64(donecleanup_residimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 664 psMetadataAddStr(donecleanup_residimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by exp_name", NULL); 511 665 512 666 // -toresidexp … … 517 671 // -addresidexp 518 672 psMetadata *addresidexpArgs = psMetadataAlloc(); 519 psMetadataAddS tr(addresidexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);673 psMetadataAddS64(addresidexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 520 674 psMetadataAddS32(addresidexpArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 521 psMetadataAddS tr(addresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, "define detrend ID (required)", NULL);675 psMetadataAddS64(addresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, "define detrend ID (required)", 0); 522 676 psMetadataAddS16(addresidexpArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 523 677 psMetadataAddStr(addresidexpArgs, PS_LIST_TAIL, "-recip", 0, "define recipe", NULL); … … 544 698 // -residexp 545 699 psMetadata *residexpArgs = psMetadataAlloc(); 546 psMetadataAddS tr(residexpArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);700 psMetadataAddS64(residexpArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 547 701 psMetadataAddS32(residexpArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 548 psMetadataAddS tr(residexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", NULL);702 psMetadataAddS64(residexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search for exp ID", 0); 549 703 psMetadataAddStr(residexpArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL); 550 704 psMetadataAddBool(residexpArgs, PS_LIST_TAIL, "-reject", 0, "search for acceptable residuals", false); … … 555 709 // -revertresidexp 556 710 psMetadata *revertresidexpArgs = psMetadataAlloc(); 557 psMetadataAddS tr(revertresidexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL);711 psMetadataAddS64(revertresidexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", 0); 558 712 psMetadataAddS32(revertresidexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 559 psMetadataAddS tr(revertresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", NULL);713 psMetadataAddS64(revertresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", 0); 560 714 psMetadataAddS16(revertresidexpArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 561 715 562 716 // -updateresidexp 563 717 psMetadata *updateresidexpArgs = psMetadataAlloc(); 564 psMetadataAddS tr(updateresidexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID", NULL);718 psMetadataAddS64(updateresidexpArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID", 0); 565 719 psMetadataAddS32(updateresidexpArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 566 psMetadataAddS tr(updateresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, "define exp ID", NULL);720 psMetadataAddS64(updateresidexpArgs, PS_LIST_TAIL, "-exp_id", 0, "define exp ID", 0); 567 721 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-recip", 0, "define recipe", NULL); 568 722 psMetadataAddF64(updateresidexpArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); … … 571 725 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 572 726 psMetadataAddBool(updateresidexpArgs, PS_LIST_TAIL, "-reject", 0, "exposure is not to be stacked in the next iteration", false); 727 psMetadataAddStr(updateresidexpArgs, PS_LIST_TAIL, "-data_state", 0, "search for telescope", NULL); 728 729 // -pendingcleanup_residexp 730 psMetadata *pendingcleanup_residexpArgs = psMetadataAlloc(); 731 psMetadataAddBool(pendingcleanup_residexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 732 psMetadataAddU64(pendingcleanup_residexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 733 psMetadataAddS64(pendingcleanup_residexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", 0); 734 psMetadataAddS32(pendingcleanup_residexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 735 psMetadataAddS64(pendingcleanup_residexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", 0); 736 737 // -donecleanup_residexp 738 psMetadata *donecleanup_residexpArgs = psMetadataAlloc(); 739 psMetadataAddBool(donecleanup_residexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 740 psMetadataAddU64(donecleanup_residexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 741 psMetadataAddS64(donecleanup_residexpArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", 0); 742 psMetadataAddS32(donecleanup_residexpArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 743 psMetadataAddS64(donecleanup_residexpArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", 0); 573 744 574 745 // -todetrunsummary … … 579 750 // -adddetrunsummary 580 751 psMetadata *adddetrunsummaryArgs = psMetadataAlloc(); 581 psMetadataAddS tr(adddetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);752 psMetadataAddS64(adddetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 582 753 psMetadataAddS32(adddetrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, "define iteration number", 0); 583 754 psMetadataAddF64(adddetrunsummaryArgs, PS_LIST_TAIL, "-bg", 0, "define exposure background", NAN); … … 590 761 // -detrunsummary 591 762 psMetadata *detrunsummaryArgs = psMetadataAlloc(); 592 psMetadataAddS tr(detrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", NULL);763 psMetadataAddS64(detrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 593 764 psMetadataAddS32(detrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 594 765 psMetadataAddU64(detrunsummaryArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); … … 599 770 // -revertdetrunsummary 600 771 psMetadata *revertdetrunsummaryArgs = psMetadataAlloc(); 601 psMetadataAddS tr(revertdetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", NULL);772 psMetadataAddS64(revertdetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "search by detrend ID (required)", 0); 602 773 psMetadataAddS32(revertdetrunsummaryArgs, PS_LIST_TAIL, "-iteration", 0, "search by iteration number", 0); 603 774 psMetadataAddS16(revertdetrunsummaryArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); … … 605 776 // -updatedetrunsummary 606 777 psMetadata *updatedetrunsummaryArgs = psMetadataAlloc(); 607 psMetadataAddS tr(updatedetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend master for detrend ID (required)", NULL);778 psMetadataAddS64(updatedetrunsummaryArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend master for detrend ID (required)", 0); 608 779 psMetadataAddBool(updatedetrunsummaryArgs, PS_LIST_TAIL, "-accept", 0, "declare that this detrun iteration is accepted as a master", false); 609 780 psMetadataAddBool(updatedetrunsummaryArgs, PS_LIST_TAIL, "-reject", 0, "reject this detrun iteration as a master", false); … … 611 782 // -updatedetrun 612 783 psMetadata *updatedetrunArgs = psMetadataAlloc(); 613 psMetadataAddS tr(updatedetrunArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend master for detrend ID (required)", NULL);784 psMetadataAddS64(updatedetrunArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend master for detrend ID (required)", 0); 614 785 psMetadataAddBool(updatedetrunArgs, PS_LIST_TAIL, "-again", 0, "start a new iteration of this detrend run", false); 615 786 psMetadataAddStr(updatedetrunArgs, PS_LIST_TAIL, "-state", 0, "set the state of this detrend run", false); … … 617 788 // -rerun 618 789 psMetadata *rerunArgs = psMetadataAlloc(); 619 psMetadataAddS tr(rerunArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend master for detrend ID (required)", NULL);620 psMetadataAddS tr(rerunArgs, PS_LIST_TAIL, "-exp_id", PS_META_DUPLICATE_OK, "include this exposure (multiple OK, required)", NULL);790 psMetadataAddS64(rerunArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend master for detrend ID (required)", 0); 791 psMetadataAddS64(rerunArgs, PS_LIST_TAIL, "-exp_id", PS_META_DUPLICATE_OK, "include this exposure (multiple OK, required)", 0); 621 792 622 793 // -register_detrend … … 644 815 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-use_begin", 0, "start of detrend run applicable period", NULL); 645 816 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-use_end", 0, "end of detrend run applicable period", NULL); 646 psMetadataAddS tr(register_detrendArgs, PS_LIST_TAIL, "-parent", 0, "define parent det_id", NULL);817 psMetadataAddS64(register_detrendArgs, PS_LIST_TAIL, "-parent", 0, "define parent det_id", 0); 647 818 psMetadataAddStr(register_detrendArgs, PS_LIST_TAIL, "-label", 0, "define detrun label", NULL); 648 819 psMetadataAddBool(register_detrendArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); … … 650 821 // -register_detrend_imfile 651 822 psMetadata *register_detrend_imfileArgs = psMetadataAlloc(); 652 psMetadataAddS tr(register_detrend_imfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", NULL);823 psMetadataAddS64(register_detrend_imfileArgs, PS_LIST_TAIL, "-det_id", 0, "define detrend ID (required)", 0); 653 824 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID (required)", NULL); 654 825 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-uri", 0, "define resid file URI (required)", NULL); … … 680 851 PXOPT_ADD_MODE("-childlessrun", "", DETTOOL_MODE_CHILDLESSRUN, childlessrunArgs); 681 852 PXOPT_ADD_MODE("-input", "", DETTOOL_MODE_INPUT, inputArgs); 682 PXOPT_ADD_MODE("-toprocessedimfile", "", DETTOOL_MODE_TOPROCESSEDIMFILE, toprocessedimfileArgs); 683 PXOPT_ADD_MODE("-addprocessedimfile", "", DETTOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs); 684 PXOPT_ADD_MODE("-processedimfile", "", DETTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs); 685 PXOPT_ADD_MODE("-revertprocessedimfile", "", DETTOOL_MODE_REVERTPROCESSEDIMFILE, revertprocessedimfileArgs); 853 854 PXOPT_ADD_MODE("-toprocessedimfile", "", DETTOOL_MODE_TOPROCESSEDIMFILE, toprocessedimfileArgs); 855 PXOPT_ADD_MODE("-addprocessedimfile", "", DETTOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs); 856 PXOPT_ADD_MODE("-processedimfile", "", DETTOOL_MODE_PROCESSEDIMFILE, processedimfileArgs); 857 PXOPT_ADD_MODE("-revertprocessedimfile", "", DETTOOL_MODE_REVERTPROCESSEDIMFILE, revertprocessedimfileArgs); 858 PXOPT_ADD_MODE("-updateprocessedimfile", "", DETTOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileArgs); 859 PXOPT_ADD_MODE("-pendingcleanup_processedimfile", "", DETTOOL_MODE_PENDINGCLEANUP_PROCESSEDIMFILE, pendingcleanup_processedimfileArgs); 860 PXOPT_ADD_MODE("-donecleanup_processedimfile", "", DETTOOL_MODE_DONECLEANUP_PROCESSEDIMFILE, donecleanup_processedimfileArgs); 861 686 862 PXOPT_ADD_MODE("-toprocessedexp", "", DETTOOL_MODE_TOPROCESSEDEXP, toprocessedexpArgs); 687 863 PXOPT_ADD_MODE("-addprocessedexp", "", DETTOOL_MODE_ADDPROCESSEDEXP, addprocessedexpArgs); 864 PXOPT_ADD_MODE("-processedexp", "", DETTOOL_MODE_PROCESSEDEXP, processedexpArgs); 688 865 PXOPT_ADD_MODE("-revertprocessedexp", "", DETTOOL_MODE_REVERTPROCESSEDEXP, revertprocessedexpArgs); 689 PXOPT_ADD_MODE("-processedexp", "", DETTOOL_MODE_PROCESSEDEXP, processedexpArgs); 866 PXOPT_ADD_MODE("-updateprocessedexp", "", DETTOOL_MODE_UPDATEPROCESSEDEXP, updateprocessedexpArgs); 867 PXOPT_ADD_MODE("-pendingcleanup_processedexp", "", DETTOOL_MODE_PENDINGCLEANUP_PROCESSEDEXP, pendingcleanup_processedexpArgs); 868 PXOPT_ADD_MODE("-donecleanup_processedexp", "", DETTOOL_MODE_DONECLEANUP_PROCESSEDEXP, donecleanup_processedexpArgs); 869 690 870 PXOPT_ADD_MODE("-tostacked", "", DETTOOL_MODE_TOSTACKED, tostackedArgs); 691 871 PXOPT_ADD_MODE("-addstacked", "", DETTOOL_MODE_ADDSTACKED, addstackedArgs); 692 872 PXOPT_ADD_MODE("-stacked", "", DETTOOL_MODE_STACKED, stackedArgs); 693 873 PXOPT_ADD_MODE("-revertstacked", "", DETTOOL_MODE_REVERTSTACKED, revertstackedArgs); 874 PXOPT_ADD_MODE("-updatestacked", "", DETTOOL_MODE_UPDATESTACKED, updatestackedArgs); 875 PXOPT_ADD_MODE("-pendingcleanup_stacked", "", DETTOOL_MODE_PENDINGCLEANUP_STACKED, pendingcleanup_stackedArgs); 876 PXOPT_ADD_MODE("-donecleanup_stacked", "", DETTOOL_MODE_DONECLEANUP_STACKED, donecleanup_stackedArgs); 877 878 PXOPT_ADD_MODE("-tonormalizedstat", "", DETTOOL_MODE_TONORMALIZEDSTAT, tonormalizedstatArgs); 879 PXOPT_ADD_MODE("-addnormalizedstat", "", DETTOOL_MODE_ADDNORMALIZEDSTAT, addnormstatArgs); 880 PXOPT_ADD_MODE("-normalizedstat", "", DETTOOL_MODE_NORMALIZEDSTAT, normalizedstatArgs); 881 PXOPT_ADD_MODE("-revertnormalizedstat", "", DETTOOL_MODE_REVERTNORMALIZEDSTAT, revertnormalizedstatArgs); 882 PXOPT_ADD_MODE("-updatenormalizedstat", "", DETTOOL_MODE_UPDATENORMALIZEDSTAT, updatenormalizedstatArgs); 883 PXOPT_ADD_MODE("-pendingcleanup_normalizedstat", "", DETTOOL_MODE_PENDINGCLEANUP_NORMALIZEDSTAT, pendingcleanup_normalizedstatArgs); 884 PXOPT_ADD_MODE("-donecleanup_normalizedstat", "", DETTOOL_MODE_DONECLEANUP_NORMALIZEDSTAT, donecleanup_normalizedstatArgs); 885 694 886 PXOPT_ADD_MODE("-tonormalize", "", DETTOOL_MODE_TONORMALIZE, tonormalizeArgs); 695 PXOPT_ADD_MODE("-addnormalizedstat", "", DETTOOL_MODE_ADDNORMALIZEDSTAT, addnormstatArgs);696 PXOPT_ADD_MODE("-normalizedstat", "", DETTOOL_MODE_NORMALIZEDSTAT, normalizedstatArgs);697 PXOPT_ADD_MODE("-revertnormalizedstat", "", DETTOOL_MODE_REVERTNORMALIZEDSTAT, revertnormalizedstatArgs);698 699 PXOPT_ADD_MODE("-tonormalizedstat", "", DETTOOL_MODE_TONORMALIZEDSTAT, tonormalizedstatArgs);700 887 PXOPT_ADD_MODE("-addnormalizedimfile", "", DETTOOL_MODE_ADDNORMALIZEDIMFILE,addnormalizedimfileArgs); 701 888 PXOPT_ADD_MODE("-normalizedimfile","", DETTOOL_MODE_NORMALIZEDIMFILE, normalizedimfileArgs); 702 889 PXOPT_ADD_MODE("-revertnormalizedimfile","", DETTOOL_MODE_REVERTNORMALIZEDIMFILE, revertnormalizedimfileArgs); 890 PXOPT_ADD_MODE("-updatenormalizedimfile","", DETTOOL_MODE_UPDATENORMALIZEDIMFILE, updatenormalizedimfileArgs); 891 PXOPT_ADD_MODE("-pendingcleanup_normalizedimfile", "", DETTOOL_MODE_PENDINGCLEANUP_NORMALIZEDIMFILE, pendingcleanup_normalizedimfileArgs); 892 PXOPT_ADD_MODE("-donecleanup_normalizedimfile", "", DETTOOL_MODE_DONECLEANUP_NORMALIZEDIMFILE, donecleanup_normalizedimfileArgs); 893 703 894 PXOPT_ADD_MODE("-tonormalizedexp", "", DETTOOL_MODE_TONORMALIZEDEXP, tonormalizedexpArgs); 704 895 PXOPT_ADD_MODE("-addnormalizedexp", "", DETTOOL_MODE_ADDNORMALIZEDEXP, addnormalizedexpArgs); 705 896 PXOPT_ADD_MODE("-normalizedexp", "", DETTOOL_MODE_NORMALIZEDEXP, normalizedexpArgs); 706 897 PXOPT_ADD_MODE("-revertnormalizedexp","", DETTOOL_MODE_REVERTNORMALIZEDEXP, revertnormalizedexpArgs); 898 PXOPT_ADD_MODE("-updatenormalizedexp","", DETTOOL_MODE_UPDATENORMALIZEDEXP, updatenormalizedexpArgs); 899 PXOPT_ADD_MODE("-pendingcleanup_normalizedexp", "", DETTOOL_MODE_PENDINGCLEANUP_NORMALIZEDEXP, pendingcleanup_normalizedexpArgs); 900 PXOPT_ADD_MODE("-donecleanup_normalizedexp", "", DETTOOL_MODE_DONECLEANUP_NORMALIZEDEXP, donecleanup_normalizedexpArgs); 901 707 902 PXOPT_ADD_MODE("-toresidimfile", "", DETTOOL_MODE_TORESIDIMFILE, toresidimfileArgs); 708 903 PXOPT_ADD_MODE("-addresidimfile", "", DETTOOL_MODE_ADDRESIDIMFILE, addresidimfileArgs); 709 904 PXOPT_ADD_MODE("-residimfile", "", DETTOOL_MODE_RESIDIMFILE, residimfileArgs); 710 905 PXOPT_ADD_MODE("-revertresidimfile", "", DETTOOL_MODE_REVERTRESIDIMFILE, revertresidimfileArgs); 906 PXOPT_ADD_MODE("-updateresidimfile", "", DETTOOL_MODE_UPDATERESIDIMFILE, updateresidimfileArgs); 907 PXOPT_ADD_MODE("-pendingcleanup_residimfile", "", DETTOOL_MODE_PENDINGCLEANUP_RESIDIMFILE, pendingcleanup_residimfileArgs); 908 PXOPT_ADD_MODE("-donecleanup_residimfile", "", DETTOOL_MODE_DONECLEANUP_RESIDIMFILE, donecleanup_residimfileArgs); 909 711 910 PXOPT_ADD_MODE("-toresidexp", "", DETTOOL_MODE_TORESIDEXP, toresidexpArgs); 712 911 PXOPT_ADD_MODE("-addresidexp", "", DETTOOL_MODE_ADDRESIDEXP, addresidexpArgs); 713 912 PXOPT_ADD_MODE("-residexp", "", DETTOOL_MODE_RESIDEXP, residexpArgs); 714 913 PXOPT_ADD_MODE("-revertresidexp", "", DETTOOL_MODE_REVERTRESIDEXP, revertresidexpArgs); 914 PXOPT_ADD_MODE("-updateresidexp", "", DETTOOL_MODE_UPDATERESIDEXP, updateresidexpArgs); 915 PXOPT_ADD_MODE("-pendingcleanup_residexp", "", DETTOOL_MODE_PENDINGCLEANUP_RESIDEXP, pendingcleanup_residexpArgs); 916 PXOPT_ADD_MODE("-donecleanup_residexp", "", DETTOOL_MODE_DONECLEANUP_RESIDEXP, donecleanup_residexpArgs); 917 715 918 PXOPT_ADD_MODE("-todetrunsummary", "", DETTOOL_MODE_TODETRUNSUMMARY, todetrunsummaryArgs); 716 PXOPT_ADD_MODE("-updateresidexp", "", DETTOOL_MODE_UPDATERESIDEXP,updateresidexpArgs);717 919 PXOPT_ADD_MODE("-adddetrunsummary", "", DETTOOL_MODE_ADDDETRUNSUMMARY,adddetrunsummaryArgs); 718 920 PXOPT_ADD_MODE("-detrunsummary", "", DETTOOL_MODE_DETRUNSUMMARY,detrunsummaryArgs); 719 921 PXOPT_ADD_MODE("-revertdetrunsummary", "", DETTOOL_MODE_REVERTDETRUNSUMMARY, revertdetrunsummaryArgs); 720 922 PXOPT_ADD_MODE("-updatedetrunsummary", "", DETTOOL_MODE_UPDATEDETRUNSUMMARY, updatedetrunsummaryArgs); 923 721 924 PXOPT_ADD_MODE("-updatedetrun", "", DETTOOL_MODE_UPDATEDETRUN, updatedetrunArgs); 722 925 PXOPT_ADD_MODE("-rerun", "", DETTOOL_MODE_RERUN, rerunArgs); -
trunk/ippTools/src/dettool_correction.c
r18561 r19092 24 24 PS_ASSERT_PTR_NON_NULL(config, false); 25 25 26 PXOPT_LOOKUP_S TR(det_id, config->args, "-det_id", true, false); // required26 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); // required 27 27 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); // optional 28 28 29 29 // build the needed where 30 30 psMetadata *where = psMetadataAlloc(); 31 psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", (psS64)atoll(det_id));31 psMetadataAddS64(where, PS_LIST_TAIL, "det_id", 0, "==", det_id); 32 32 psArray *runs = detRunSelectRowObjects(config->dbh, where, 1); 33 33 psFree (where); -
trunk/ippTools/src/difftool.c
r19038 r19092 41 41 static bool definepoprunMode(pxConfig *config); 42 42 static bool definebyqueryMode(pxConfig *config); 43 static bool pendingcleanuprunMode(pxConfig *config); 44 static bool pendingcleanupskyfileMode(pxConfig *config); 45 static bool donecleanupMode(pxConfig *config); 43 46 44 47 static bool setdiffRunState(pxConfig *config, psS64 diff_id, const char *state); … … 62 65 63 66 switch (config->mode) { 64 MODECASE(DIFFTOOL_MODE_DEFINERUN, definerunMode); 65 MODECASE(DIFFTOOL_MODE_UPDATERUN, updaterunMode); 66 MODECASE(DIFFTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileMode); 67 MODECASE(DIFFTOOL_MODE_INPUTSKYFILE, inputskyfileMode); 68 MODECASE(DIFFTOOL_MODE_TODIFFSKYFILE, todiffskyfileMode); 69 MODECASE(DIFFTOOL_MODE_ADDDIFFSKYFILE, adddiffskyfileMode); 70 MODECASE(DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileMode); 71 MODECASE(DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileMode); 72 MODECASE(DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunMode); 73 MODECASE(DIFFTOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 67 MODECASE(DIFFTOOL_MODE_DEFINERUN, definerunMode); 68 MODECASE(DIFFTOOL_MODE_UPDATERUN, updaterunMode); 69 MODECASE(DIFFTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileMode); 70 MODECASE(DIFFTOOL_MODE_INPUTSKYFILE, inputskyfileMode); 71 MODECASE(DIFFTOOL_MODE_TODIFFSKYFILE, todiffskyfileMode); 72 MODECASE(DIFFTOOL_MODE_ADDDIFFSKYFILE, adddiffskyfileMode); 73 MODECASE(DIFFTOOL_MODE_DIFFSKYFILE, diffskyfileMode); 74 MODECASE(DIFFTOOL_MODE_REVERTDIFFSKYFILE, revertdiffskyfileMode); 75 MODECASE(DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunMode); 76 MODECASE(DIFFTOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 77 MODECASE(DIFFTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); 78 MODECASE(DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileMode); 79 MODECASE(DIFFTOOL_MODE_DONECLEANUP, donecleanupMode); 74 80 default: 75 81 psAbort("invalid option (this should not happen)"); … … 259 265 260 266 if (count == 2) { 261 if (!setdiffRunState(config, diff_id, " run")) {267 if (!setdiffRunState(config, diff_id, "new")) { 262 268 if (!psDBRollback(config->dbh)) { 263 269 psError(PS_ERR_UNKNOWN, false, "database error"); … … 496 502 } 497 503 498 if (!setdiffRunState(config, diff_id, " stop")) {504 if (!setdiffRunState(config, diff_id, "full")) { 499 505 if (!psDBRollback(config->dbh)) { 500 506 psError(PS_ERR_UNKNOWN, false, "database error"); … … 696 702 697 703 // check that state is a valid string value 698 if (!( 699 (strncmp(state, "run", 4) == 0) 700 || (strncmp(state, "stop", 5) == 0) 701 || (strncmp(state, "reg", 4) == 0) 702 ) 703 ) { 704 psError(PS_ERR_UNKNOWN, false, 705 "invalid diffRun state: %s", state); 704 if (!pxIsValidState(state)) { 705 psError(PS_ERR_UNKNOWN, false, "invalid diffRun state: %s", state); 706 706 return false; 707 707 } … … 1008 1008 return true; 1009 1009 } 1010 1011 static bool pendingcleanuprunMode(pxConfig *config) 1012 { 1013 PS_ASSERT_PTR_NON_NULL(config, NULL); 1014 1015 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1016 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1017 1018 psMetadata *where = psMetadataAlloc(); 1019 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1020 1021 psString query = pxDataGet("difftool_pendingcleanuprun.sql"); 1022 if (!query) { 1023 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1024 return false; 1025 } 1026 1027 if (where && psListLength(where->list)) { 1028 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1029 psStringAppend(&query, " AND %s", whereClause); 1030 psFree(whereClause); 1031 } 1032 psFree(where); 1033 1034 // treat limit == 0 as "no limit" 1035 if (limit) { 1036 psString limitString = psDBGenerateLimitSQL(limit); 1037 psStringAppend(&query, " %s", limitString); 1038 psFree(limitString); 1039 } 1040 1041 if (!p_psDBRunQuery(config->dbh, query)) { 1042 psError(PS_ERR_UNKNOWN, false, "database error"); 1043 psFree(query); 1044 return false; 1045 } 1046 psFree(query); 1047 1048 psArray *output = p_psDBFetchResult(config->dbh); 1049 if (!output) { 1050 psError(PS_ERR_UNKNOWN, false, "database error"); 1051 return false; 1052 } 1053 if (!psArrayLength(output)) { 1054 psTrace("difftool", PS_LOG_INFO, "no rows found"); 1055 psFree(output); 1056 return true; 1057 } 1058 1059 // negative simple so the default is true 1060 if (!ippdbPrintMetadatas(stdout, output, "diffPendingCleanupRun", !simple)) { 1061 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1062 psFree(output); 1063 return false; 1064 } 1065 1066 psFree(output); 1067 1068 return true; 1069 } 1070 1071 1072 static bool pendingcleanupskyfileMode(pxConfig *config) 1073 { 1074 PS_ASSERT_PTR_NON_NULL(config, NULL); 1075 1076 PXOPT_LOOKUP_S64(diff_id, config->args, "-diff_id", false, false); 1077 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1078 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1079 1080 psMetadata *where = psMetadataAlloc(); 1081 if (diff_id) { 1082 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 1083 } 1084 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1085 1086 psString query = pxDataGet("difftool_pendingcleanupskyfile.sql"); 1087 if (!query) { 1088 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1089 return false; 1090 } 1091 1092 if (where && psListLength(where->list)) { 1093 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1094 psStringAppend(&query, " AND %s", whereClause); 1095 psFree(whereClause); 1096 } 1097 psFree(where); 1098 1099 // treat limit == 0 as "no limit" 1100 if (limit) { 1101 psString limitString = psDBGenerateLimitSQL(limit); 1102 psStringAppend(&query, " %s", limitString); 1103 psFree(limitString); 1104 } 1105 1106 if (!p_psDBRunQuery(config->dbh, query)) { 1107 psError(PS_ERR_UNKNOWN, false, "database error"); 1108 psFree(query); 1109 return false; 1110 } 1111 psFree(query); 1112 1113 psArray *output = p_psDBFetchResult(config->dbh); 1114 if (!output) { 1115 psError(PS_ERR_UNKNOWN, false, "database error"); 1116 return false; 1117 } 1118 if (!psArrayLength(output)) { 1119 psTrace("difftool", PS_LOG_INFO, "no rows found"); 1120 psFree(output); 1121 return true; 1122 } 1123 1124 // negative simple so the default is true 1125 if (!ippdbPrintMetadatas(stdout, output, "diffPendingCleanupSkyfile", !simple)) { 1126 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1127 psFree(output); 1128 return false; 1129 } 1130 1131 psFree(output); 1132 return true; 1133 } 1134 1135 1136 static bool donecleanupMode(pxConfig *config) 1137 { 1138 PS_ASSERT_PTR_NON_NULL(config, NULL); 1139 1140 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1141 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1142 1143 psMetadata *where = psMetadataAlloc(); 1144 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1145 1146 psString query = pxDataGet("difftool_donecleanup.sql"); 1147 if (!query) { 1148 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1149 return false; 1150 } 1151 1152 if (where && psListLength(where->list)) { 1153 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1154 psStringAppend(&query, " AND %s", whereClause); 1155 psFree(whereClause); 1156 } 1157 psFree(where); 1158 1159 // treat limit == 0 as "no limit" 1160 if (limit) { 1161 psString limitString = psDBGenerateLimitSQL(limit); 1162 psStringAppend(&query, " %s", limitString); 1163 psFree(limitString); 1164 } 1165 1166 if (!p_psDBRunQuery(config->dbh, query)) { 1167 psError(PS_ERR_UNKNOWN, false, "database error"); 1168 psFree(query); 1169 return false; 1170 } 1171 psFree(query); 1172 1173 psArray *output = p_psDBFetchResult(config->dbh); 1174 if (!output) { 1175 psError(PS_ERR_UNKNOWN, false, "database error"); 1176 return false; 1177 } 1178 if (!psArrayLength(output)) { 1179 psTrace("difftool", PS_LOG_INFO, "no rows found"); 1180 psFree(output); 1181 return true; 1182 } 1183 1184 // negative simple so the default is true 1185 if (!ippdbPrintMetadatas(stdout, output, "diffDoneCleanup", !simple)) { 1186 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1187 psFree(output); 1188 return false; 1189 } 1190 1191 psFree(output); 1192 return true; 1193 } -
trunk/ippTools/src/difftool.h
r18093 r19092 35 35 DIFFTOOL_MODE_DEFINEPOPRUN, 36 36 DIFFTOOL_MODE_DEFINEBYQUERY, 37 DIFFTOOL_MODE_PENDINGCLEANUPRUN, 38 DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE, 39 DIFFTOOL_MODE_DONECLEANUP, 37 40 } difftoolMode; 38 41 -
trunk/ippTools/src/difftoolConfig.c
r18976 r19092 140 140 psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 141 141 142 // -pendingcleanuprun 143 psMetadata *pendingcleanuprunArgs = psMetadataAlloc(); 144 psMetadataAddStr(pendingcleanuprunArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 145 psMetadataAddBool(pendingcleanuprunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 146 psMetadataAddU64(pendingcleanuprunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 147 148 // -pendingcleanupskyfile 149 psMetadata *pendingcleanupskyfileArgs = psMetadataAlloc(); 150 psMetadataAddStr(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 151 psMetadataAddS64(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-diff_id", 0, "search by diff ID", 0); 152 psMetadataAddBool(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 153 psMetadataAddU64(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 154 155 // -donecleanup 156 psMetadata *donecleanupArgs = psMetadataAlloc(); 157 psMetadataAddStr(donecleanupArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 158 psMetadataAddBool(donecleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 159 psMetadataAddU64(donecleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 160 142 161 psFree(now); 143 162 … … 155 174 PXOPT_ADD_MODE("-definepoprun", "", DIFFTOOL_MODE_DEFINEPOPRUN, definepoprunArgs); 156 175 PXOPT_ADD_MODE("-definebyquery", "", DIFFTOOL_MODE_DEFINEBYQUERY, definebyqueryArgs); 176 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", DIFFTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs); 177 PXOPT_ADD_MODE("-pendingcleanupskyfile", "show runs that need to be cleaned up", DIFFTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileArgs); 178 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", DIFFTOOL_MODE_DONECLEANUP, donecleanupArgs); 157 179 158 180 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/faketool.c
r18686 r19092 45 45 static bool unmaskedMode(pxConfig *config); 46 46 static bool unblockMode(pxConfig *config); 47 static bool pendingcleanuprunMode(pxConfig *config); 48 static bool pendingcleanupimfileMode(pxConfig *config); 49 static bool donecleanupMode(pxConfig *config); 47 50 48 51 static bool fakeProcessedCompleteExp(pxConfig *config); … … 65 68 66 69 switch (config->mode) { 67 MODECASE(FAKETOOL_MODE_DEFINEBYQUERY, definebyqueryMode);70 MODECASE(FAKETOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 68 71 MODECASE(FAKETOOL_MODE_UPDATERUN, updaterunMode); 69 72 MODECASE(FAKETOOL_MODE_PENDINGEXP, pendingexpMode); … … 72 75 MODECASE(FAKETOOL_MODE_PROCESSEDIMFILE, processedimfileMode); 73 76 MODECASE(FAKETOOL_MODE_REVERTPROCESSEDIMFILE, revertprocessedimfileMode); 74 MODECASE(FAKETOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileMode);77 MODECASE(FAKETOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileMode); 75 78 MODECASE(FAKETOOL_MODE_BLOCK, blockMode); 76 79 MODECASE(FAKETOOL_MODE_MASKED, maskedMode); 77 80 MODECASE(FAKETOOL_MODE_UNMASKED, unmaskedMode); 78 81 MODECASE(FAKETOOL_MODE_UNBLOCK, unblockMode); 82 MODECASE(FAKETOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); 83 MODECASE(FAKETOOL_MODE_PENDINGCLEANUPIMFILE, pendingcleanupimfileMode); 84 MODECASE(FAKETOOL_MODE_DONECLEANUP, donecleanupMode); 79 85 default: 80 86 psAbort("invalid option (this should not happen)"); … … 854 860 } 855 861 862 static bool pendingcleanuprunMode(pxConfig *config) 863 { 864 PS_ASSERT_PTR_NON_NULL(config, NULL); 865 866 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 867 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 868 869 psMetadata *where = psMetadataAlloc(); 870 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 871 872 psString query = pxDataGet("faketool_pendingcleanuprun.sql"); 873 if (!query) { 874 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 875 return false; 876 } 877 878 if (where && psListLength(where->list)) { 879 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 880 psStringAppend(&query, " AND %s", whereClause); 881 psFree(whereClause); 882 } 883 psFree(where); 884 885 // treat limit == 0 as "no limit" 886 if (limit) { 887 psString limitString = psDBGenerateLimitSQL(limit); 888 psStringAppend(&query, " %s", limitString); 889 psFree(limitString); 890 } 891 892 if (!p_psDBRunQuery(config->dbh, query)) { 893 psError(PS_ERR_UNKNOWN, false, "database error"); 894 psFree(query); 895 return false; 896 } 897 psFree(query); 898 899 psArray *output = p_psDBFetchResult(config->dbh); 900 if (!output) { 901 psError(PS_ERR_UNKNOWN, false, "database error"); 902 return false; 903 } 904 if (!psArrayLength(output)) { 905 psTrace("faketool", PS_LOG_INFO, "no rows found"); 906 psFree(output); 907 return true; 908 } 909 910 // negative simple so the default is true 911 if (!ippdbPrintMetadatas(stdout, output, "fakePendingCleanupRun", !simple)) { 912 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 913 psFree(output); 914 return false; 915 } 916 917 psFree(output); 918 919 return true; 920 } 921 922 923 static bool pendingcleanupimfileMode(pxConfig *config) 924 { 925 PS_ASSERT_PTR_NON_NULL(config, NULL); 926 927 PXOPT_LOOKUP_S64(fake_id, config->args, "-fake_id", false, false); 928 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 929 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 930 931 psMetadata *where = psMetadataAlloc(); 932 if (fake_id) { 933 PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "=="); 934 } 935 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 936 937 psString query = pxDataGet("faketool_pendingcleanupimfile.sql"); 938 if (!query) { 939 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 940 return false; 941 } 942 943 if (where && psListLength(where->list)) { 944 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 945 psStringAppend(&query, " AND %s", whereClause); 946 psFree(whereClause); 947 } 948 psFree(where); 949 950 // treat limit == 0 as "no limit" 951 if (limit) { 952 psString limitString = psDBGenerateLimitSQL(limit); 953 psStringAppend(&query, " %s", limitString); 954 psFree(limitString); 955 } 956 957 if (!p_psDBRunQuery(config->dbh, query)) { 958 psError(PS_ERR_UNKNOWN, false, "database error"); 959 psFree(query); 960 return false; 961 } 962 psFree(query); 963 964 psArray *output = p_psDBFetchResult(config->dbh); 965 if (!output) { 966 psError(PS_ERR_UNKNOWN, false, "database error"); 967 return false; 968 } 969 if (!psArrayLength(output)) { 970 psTrace("faketool", PS_LOG_INFO, "no rows found"); 971 psFree(output); 972 return true; 973 } 974 975 // negative simple so the default is true 976 if (!ippdbPrintMetadatas(stdout, output, "fakePendingCleanupImfile", !simple)) { 977 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 978 psFree(output); 979 return false; 980 } 981 982 psFree(output); 983 984 return true; 985 } 986 987 988 static bool donecleanupMode(pxConfig *config) 989 { 990 PS_ASSERT_PTR_NON_NULL(config, NULL); 991 992 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 993 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 994 995 psMetadata *where = psMetadataAlloc(); 996 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 997 998 psString query = pxDataGet("faketool_donecleanup.sql"); 999 if (!query) { 1000 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1001 return false; 1002 } 1003 1004 if (where && psListLength(where->list)) { 1005 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1006 psStringAppend(&query, " AND %s", whereClause); 1007 psFree(whereClause); 1008 } 1009 psFree(where); 1010 1011 // treat limit == 0 as "no limit" 1012 if (limit) { 1013 psString limitString = psDBGenerateLimitSQL(limit); 1014 psStringAppend(&query, " %s", limitString); 1015 psFree(limitString); 1016 } 1017 1018 if (!p_psDBRunQuery(config->dbh, query)) { 1019 psError(PS_ERR_UNKNOWN, false, "database error"); 1020 psFree(query); 1021 return false; 1022 } 1023 psFree(query); 1024 1025 psArray *output = p_psDBFetchResult(config->dbh); 1026 if (!output) { 1027 psError(PS_ERR_UNKNOWN, false, "database error"); 1028 return false; 1029 } 1030 if (!psArrayLength(output)) { 1031 psTrace("faketool", PS_LOG_INFO, "no rows found"); 1032 psFree(output); 1033 return true; 1034 } 1035 1036 // negative simple so the default is true 1037 if (!ippdbPrintMetadatas(stdout, output, "fakeDoneCleanup", !simple)) { 1038 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1039 psFree(output); 1040 return false; 1041 } 1042 1043 psFree(output); 1044 1045 return true; 1046 } 856 1047 857 1048 static bool fakeProcessedCompleteExp(pxConfig *config) … … 889 1080 890 1081 fakeRunRow *fakeRun = fakeRunObjectFromMetadata(row); 891 // set fakeRun.state to ' stop'892 if (!pxfakeRunSetState(config, fakeRun->fake_id, " stop")) {1082 // set fakeRun.state to 'full' 1083 if (!pxfakeRunSetState(config, fakeRun->fake_id, "full")) { 893 1084 psError(PS_ERR_UNKNOWN, false, "failed to change fakeRun.state for fake_id: %" PRId64, fakeRun->fake_id); 894 1085 psFree(fakeRun); -
trunk/ippTools/src/faketool.h
r18093 r19092 38 38 FAKETOOL_MODE_UNBLOCK, 39 39 FAKETOOL_MODE_RETRYPROCESSEDIMFILE, 40 FAKETOOL_MODE_PENDINGCLEANUP, 40 FAKETOOL_MODE_PENDINGCLEANUPRUN, 41 FAKETOOL_MODE_PENDINGCLEANUPIMFILE, 41 42 FAKETOOL_MODE_DONECLEANUP, 42 43 } FAKETOOLMode; -
trunk/ippTools/src/faketoolConfig.c
r18687 r19092 47 47 psMetadata *queueArgs = psMetadataAlloc(); 48 48 // XXX need to allow multiple exp_ids 49 psMetadataAddS64(queueArgs, PS_LIST_TAIL, "-exp_id", 0, 50 "search by exp_id", 0); 51 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_name", 0, 52 "search by exp_name", NULL); 53 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-inst", 0, 54 "search for camera", NULL); 55 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-telescope", 0, 56 "search for telescope", NULL); 57 psMetadataAddTime(queueArgs, PS_LIST_TAIL, "-dateobs_begin", 0, 58 "search for exposures by time (>=)", NULL); 59 psMetadataAddTime(queueArgs, PS_LIST_TAIL, "-dateobs_end", 0, 60 "search for exposures by time (<)", NULL); 61 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_tag", 0, 62 "search by exp_tag", NULL); 63 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_type", 0, 64 "search by exp_type", "object"); 65 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-filelevel", 0, 66 "search by filelevel", NULL); 67 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-reduction", 0, 68 "search by reduction class", NULL); 69 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-filter", 0, 70 "search for filter", NULL); 71 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-airmass_min", 0, 72 "define min airmass", NAN); 73 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-airmass_max", 0, 74 "define max airmass", NAN); 75 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-ra_min", 0, 76 "define min", NAN); 77 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-ra_max", 0, 78 "define max", NAN); 79 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-decl_min", 0, 80 "define min", NAN); 81 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-decl_max", 0, 82 "define max", NAN); 83 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-exp_time_min", 0, 84 "define min", NAN); 85 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-exp_time_max", 0, 86 "define max", NAN); 87 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, 88 "define max fraction of saturated pixels", NAN); 89 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, 90 "define min fraction of saturated pixels", NAN); 91 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_min", 0, 92 "define max", NAN); 93 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_max", 0, 94 "define max", NAN); 95 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, 96 "define max", NAN); 97 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, 98 "define max", NAN); 99 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, 100 "define max", NAN); 101 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, 102 "define max", NAN); 103 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-alt_min", 0, 104 "define min", NAN); 105 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-alt_max", 0, 106 "define max", NAN); 107 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-az_min", 0, 108 "define min", NAN); 109 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-az_max", 0, 110 "define max", NAN); 111 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, 112 "define min ccd tempature", NAN); 113 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, 114 "define max ccd tempature", NAN); 115 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-posang_min", 0, 116 "define min rotator position angle", NAN); 117 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-posang_max", 0, 118 "define max rotator position angle", NAN); 119 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-object", 0, 120 "search by exposure object", NULL); 121 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-solang_min", 0, 122 "define min solar angle", NAN); 123 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-solang_max", 0, 124 "define max solar angle", NAN); 125 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_workdir", 0, 126 "define workdir", NULL); 127 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_label", 0, 128 "define label", NULL); 129 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_reduction", 0, 130 "define reduction class", NULL); 131 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_expgroup", 0, 132 "define exposure group", NULL); 133 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_dvodb", 0, 134 "define DVO db", NULL); 135 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_tess_id", 0, 136 "define tessellation identifier", NULL); 137 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_end_stage", 0, 138 "define end stage", NULL); 139 psMetadataAddBool(queueArgs, PS_LIST_TAIL, "-pretend", 0, 140 "do not actually modify the database", false); 141 psMetadataAddBool(queueArgs, PS_LIST_TAIL, "-all", 0, 142 "allow everything to be queued without search terms", false); 49 psMetadataAddS64(queueArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 50 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); 51 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); 52 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 53 psMetadataAddTime(queueArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 54 psMetadataAddTime(queueArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 55 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 56 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", "object"); 57 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); 58 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 59 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 60 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 61 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 62 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-ra_min", 0, "define min", NAN); 63 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-ra_max", 0, "define max", NAN); 64 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-decl_min", 0, "define min", NAN); 65 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-decl_max", 0, "define max", NAN); 66 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min", NAN); 67 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max", NAN); 68 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "define max fraction of saturated pixels", NAN); 69 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "define min fraction of saturated pixels", NAN); 70 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_min", 0, "define max", NAN); 71 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_max", 0, "define max", NAN); 72 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, "define max", NAN); 73 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, "define max", NAN); 74 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "define max", NAN); 75 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "define max", NAN); 76 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-alt_min", 0, "define min", NAN); 77 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-alt_max", 0, "define max", NAN); 78 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-az_min", 0, "define min", NAN); 79 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-az_max", 0, "define max", NAN); 80 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 81 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 82 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 83 psMetadataAddF64(queueArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 84 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 85 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 86 psMetadataAddF32(queueArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 87 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_workdir", 0, "define workdir", NULL); 88 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_label", 0, "define label", NULL); 89 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class", NULL); 90 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_expgroup", 0, "define exposure group", NULL); 91 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_dvodb", 0, "define DVO db", NULL); 92 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_tess_id", 0, "define tessellation identifier", NULL); 93 psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_end_stage", 0, "define end stage", NULL); 94 psMetadataAddBool(queueArgs, PS_LIST_TAIL, "-pretend", 0, "do not actually modify the database", false); 95 psMetadataAddBool(queueArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 143 96 144 97 145 98 // -updaterun 146 99 psMetadata *updaterunArgs = psMetadataAlloc(); 147 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-fake_id", 0, 148 "search by fake ID", 0); 149 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-exp_id", 0, 150 "search by exp_id", 0); 151 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_name", 0, 152 "search by exp_name", NULL); 153 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-inst", 0, 154 "search for camera", NULL); 155 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-telescope", 0, 156 "search for telescope", NULL); 157 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, 158 "search for exposures by time (>=)", NULL); 159 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_end", 0, 160 "search for exposures by time (<)", NULL); 161 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_tag", 0, 162 "search by exp_tag", NULL); 163 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_type", 0, 164 "search by exp_type", "object"); 165 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filelevel", 0, 166 "search by filelevel", NULL); 167 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, 168 "search by reduction class", NULL); 169 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filter", 0, 170 "search for filter", NULL); 171 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-airmass_min", 0, 172 "define min airmass", NAN); 173 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-airmass_max", 0, 174 "define max airmass", NAN); 175 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_min", 0, 176 "define min", NAN); 177 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_max", 0, 178 "define max", NAN); 179 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_min", 0, 180 "define min", NAN); 181 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_max", 0, 182 "define max", NAN); 183 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_min", 0, 184 "define min", NAN); 185 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_max", 0, 186 "define max", NAN); 187 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, 188 "define max fraction of saturated pixels", NAN); 189 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, 190 "define min fraction of saturated pixels", NAN); 191 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_min", 0, 192 "define max", NAN); 193 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_max", 0, 194 "define max", NAN); 195 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, 196 "define max", NAN); 197 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, 198 "define max", NAN); 199 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, 200 "define max", NAN); 201 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, 202 "define max", NAN); 203 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_min", 0, 204 "define min", NAN); 205 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_max", 0, 206 "define max", NAN); 207 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_min", 0, 208 "define min", NAN); 209 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_max", 0, 210 "define max", NAN); 211 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, 212 "define min ccd tempature", NAN); 213 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, 214 "define max ccd tempature", NAN); 215 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_min", 0, 216 "define min rotator position angle", NAN); 217 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_max", 0, 218 "define max rotator position angle", NAN); 219 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-object", 0, 220 "search by exposure object", NULL); 221 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_min", 0, 222 "define min solar angle", NAN); 223 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_max", 0, 224 "define max solar angle", NAN); 225 226 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, 227 "set state", NULL); 228 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, 229 "set label", NULL); 230 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, 231 "allow everything to be queued without search terms", false); 100 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-fake_id", 0, "search by fake ID", 0); 101 psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 102 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); 103 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); 104 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 105 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 106 psMetadataAddTime(updaterunArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 107 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 108 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", "object"); 109 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); 110 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 111 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 112 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 113 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 114 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_min", 0, "define min", NAN); 115 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ra_max", 0, "define max", NAN); 116 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_min", 0, "define min", NAN); 117 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-decl_max", 0, "define max", NAN); 118 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min", NAN); 119 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max", NAN); 120 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "define max fraction of saturated pixels", NAN); 121 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "define min fraction of saturated pixels", NAN); 122 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_min", 0, "define max", NAN); 123 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_max", 0, "define max", NAN); 124 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, "define max", NAN); 125 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, "define max", NAN); 126 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "define max", NAN); 127 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "define max", NAN); 128 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_min", 0, "define min", NAN); 129 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-alt_max", 0, "define max", NAN); 130 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_min", 0, "define min", NAN); 131 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-az_max", 0, "define max", NAN); 132 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_min", 0, "define min ccd tempature", NAN); 133 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-ccd_temp_max", 0, "define max ccd tempature", NAN); 134 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 135 psMetadataAddF64(updaterunArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 136 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 137 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 138 psMetadataAddF32(updaterunArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 139 140 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0, "set state", NULL); 141 psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0, "set label", NULL); 142 psMetadataAddBool(updaterunArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 232 143 233 144 // -pendingexp 234 145 psMetadata *pendingexpArgs = psMetadataAlloc(); 235 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-fake_id", 0, 236 "search by fake ID", 0); 237 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-cam_id", 0, 238 "search by camtool ID", 0); 239 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-chip_id", 0, 240 "search by chiptool ID", 0); 241 psMetadataAddU64(pendingexpArgs, PS_LIST_TAIL, "-limit", 0, 242 "limit result set to N items", 0); 243 psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-simple", 0, 244 "use the simple output format", false); 146 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-fake_id", 0, "search by fake ID", 0); 147 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-cam_id", 0, "search by camtool ID", 0); 148 psMetadataAddS64(pendingexpArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chiptool ID", 0); 149 psMetadataAddU64(pendingexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 150 psMetadataAddBool(pendingexpArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 245 151 246 152 // -pendingimfile 247 153 psMetadata *pendingimfileArgs = psMetadataAlloc(); 248 psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-fake_id", 0, 249 "search by fake ID", 0); 250 psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 251 "search by exposure ID", 0); 252 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class_id", 0, 253 "search by class ID", NULL); 254 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-inst", 0, 255 "search by camera of interest", NULL); 256 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-filter", 0, 257 "search by filter of interest", NULL); 258 psMetadataAddU64(pendingimfileArgs, PS_LIST_TAIL, "-limit", 0, 259 "limit result set to N items", 0); 260 psMetadataAddBool(pendingimfileArgs, PS_LIST_TAIL, "-simple", 0, 261 "use the simple output format", false); 154 psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-fake_id", 0, "search by fake ID", 0); 155 psMetadataAddS64(pendingimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 156 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 157 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-inst", 0, "search by camera of interest", NULL); 158 psMetadataAddStr(pendingimfileArgs, PS_LIST_TAIL, "-filter", 0, "search by filter of interest", NULL); 159 psMetadataAddU64(pendingimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 160 psMetadataAddBool(pendingimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 262 161 263 162 // -addprocessedimfile 264 163 psMetadata *addprocessedimfileArgs = psMetadataAlloc(); 265 psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-fake_id", 0, 266 "define fake ID (required)", 0); 267 psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 268 "define exposure ID (required)", 0); 269 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, 270 "define class ID (required)", NULL); 271 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-uri", 0, 272 "define URL", NULL); 273 psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-dtime_fake", 0, 274 "define elapsed time for detrend (seconds)", NAN); 275 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-hostname", 0, 276 "define hostname", NULL); 277 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-path_base", 0, 278 "define base output location", NULL); 279 psMetadataAddS16(addprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, 280 "set fault code", 0); 164 psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-fake_id", 0, "define fake ID (required)", 0); 165 psMetadataAddS64(addprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure ID (required)", 0); 166 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID (required)", NULL); 167 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-uri", 0, "define URL", NULL); 168 psMetadataAddF32(addprocessedimfileArgs, PS_LIST_TAIL, "-dtime_fake", 0, "define elapsed time for detrend (seconds)", NAN); 169 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-hostname", 0, "define hostname", NULL); 170 psMetadataAddStr(addprocessedimfileArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 171 psMetadataAddS16(addprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 281 172 282 173 // -processedimfile 283 174 psMetadata *processedimfileArgs = psMetadataAlloc(); 284 psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-fake_id", 0, 285 "define fake ID", 0); 286 psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 287 "define exposure ID", 0); 288 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-class_id", 0, 289 "define class ID", NULL); 290 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-inst", 0, 291 "define camera of interest", NULL); 292 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-filter", 0, 293 "define filter of interest", NULL); 294 psMetadataAddU64(processedimfileArgs, PS_LIST_TAIL, "-limit", 0, 295 "limit result set to N items", 0); 296 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-faulted", 0, 297 "only return imfiles with a fault status set", false); 298 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-simple", 0, 299 "use the simple output format", false); 175 psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-fake_id", 0, "define fake ID", 0); 176 psMetadataAddS64(processedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure ID", 0); 177 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID", NULL); 178 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-inst", 0, "define camera of interest", NULL); 179 psMetadataAddStr(processedimfileArgs, PS_LIST_TAIL, "-filter", 0, "define filter of interest", NULL); 180 psMetadataAddU64(processedimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 181 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 182 psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 300 183 301 184 // -updateprocessedimfile 302 185 psMetadata *updateprocessedimfileArgs = psMetadataAlloc(); 303 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-fake_id", 0, 304 "search by fake ID", 0); 305 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 306 "search by exposure ID", 0); 307 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, 308 "search by class ID", NULL); 309 psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, 310 "set fault code (required)", 0); 186 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-fake_id", 0, "search by fake ID", 0); 187 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exposure ID", 0); 188 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 189 psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code (required)", 0); 311 190 312 191 // -revertprocessedimfile 313 192 psMetadata *revertprocessedimfileArgs = psMetadataAlloc(); 314 psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-fake_id", 0, 315 "search by fake ID", 0); 316 psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, 317 "search by exp_id", 0); 318 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_name", 0, 319 "search by exp_name", NULL); 320 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-inst", 0, 321 "search for camera", NULL); 322 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-telescope", 0, 323 "search for telescope", NULL); 324 psMetadataAddTime(revertprocessedimfileArgs, PS_LIST_TAIL, "-dateobs_begin", 0, 325 "search for exposures by time (>=)", NULL); 326 psMetadataAddTime(revertprocessedimfileArgs, PS_LIST_TAIL, "-dateobs_end", 0, 327 "search for exposures by time (<)", NULL); 328 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_tag", 0, 329 "search by exp_tag", NULL); 330 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_type", 0, 331 "search by exp_type", "object"); 332 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-filelevel", 0, 333 "search by filelevel", NULL); 334 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-reduction", 0, 335 "search by reduction class", NULL); 336 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-filter", 0, 337 "search for filter", NULL); 338 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-airmass_min", 0, 339 "define min airmass", NAN); 340 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-airmass_max", 0, 341 "define max airmass", NAN); 342 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-ra_min", 0, 343 "define min", NAN); 344 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-ra_max", 0, 345 "define max", NAN); 346 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-decl_min", 0, 347 "define min", NAN); 348 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-decl_max", 0, 349 "define max", NAN); 350 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_time_min", 0, 351 "define min", NAN); 352 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_time_max", 0, 353 "define max", NAN); 354 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, 355 "define max fraction of saturated pixels", NAN); 356 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, 357 "define min fraction of saturated pixels", NAN); 358 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_min", 0, 359 "define max", NAN); 360 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_max", 0, 361 "define max", NAN); 362 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, 363 "define max", NAN); 364 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, 365 "define max", NAN); 366 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, 367 "define max", NAN); 368 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, 369 "define max", NAN); 370 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-alt_min", 0, 371 "define min", NAN); 372 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-alt_max", 0, 373 "define max", NAN); 374 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-az_min", 0, 375 "define min", NAN); 376 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-az_max", 0, 377 "define max", NAN); 378 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-ccd_temp_min",0, 379 "define min ccd tempature", NAN); 380 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-ccd_temp_max",0, 381 "define max ccd tempature", NAN); 382 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-posang_min", 0, 383 "define min rotator position angle", NAN); 384 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-posang_max", 0, 385 "define max rotator position angle", NAN); 386 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-object", 0, 387 "search by exposure object", NULL); 388 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-solang_min", 0, 389 "define min solar angle", NAN); 390 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-solang_max", 0, 391 "define max solar angle", NAN); 392 393 psMetadataAddBool(revertprocessedimfileArgs, PS_LIST_TAIL, "-all", 0, 394 "allow everything to be queued without search terms", false); 395 psMetadataAddS16(revertprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, 396 "search by fault code", 0); 193 psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-fake_id", 0, "search by fake ID", 0); 194 psMetadataAddS64(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by exp_id", 0); 195 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_name", 0, "search by exp_name", NULL); 196 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-inst", 0, "search for camera", NULL); 197 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-telescope", 0, "search for telescope", NULL); 198 psMetadataAddTime(revertprocessedimfileArgs, PS_LIST_TAIL, "-dateobs_begin", 0, "search for exposures by time (>=)", NULL); 199 psMetadataAddTime(revertprocessedimfileArgs, PS_LIST_TAIL, "-dateobs_end", 0, "search for exposures by time (<)", NULL); 200 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_tag", 0, "search by exp_tag", NULL); 201 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_type", 0, "search by exp_type", "object"); 202 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-filelevel", 0, "search by filelevel", NULL); 203 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-reduction", 0, "search by reduction class", NULL); 204 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-filter", 0, "search for filter", NULL); 205 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-airmass_min", 0, "define min airmass", NAN); 206 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-airmass_max", 0, "define max airmass", NAN); 207 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-ra_min", 0, "define min", NAN); 208 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-ra_max", 0, "define max", NAN); 209 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-decl_min", 0, "define min", NAN); 210 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-decl_max", 0, "define max", NAN); 211 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_time_min", 0, "define min", NAN); 212 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-exp_time_max", 0, "define max", NAN); 213 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-sat_pixel_frac_min", 0, "define max fraction of saturated pixels", NAN); 214 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-sat_pixel_frac_max", 0, "define min fraction of saturated pixels", NAN); 215 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_min", 0, "define max", NAN); 216 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_max", 0, "define max", NAN); 217 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_stdev_min", 0, "define max", NAN); 218 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_stdev_max", 0, "define max", NAN); 219 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev_min", 0, "define max", NAN); 220 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-bg_mean_stdev_max", 0, "define max", NAN); 221 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-alt_min", 0, "define min", NAN); 222 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-alt_max", 0, "define max", NAN); 223 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-az_min", 0, "define min", NAN); 224 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-az_max", 0, "define max", NAN); 225 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-ccd_temp_min",0, "define min ccd tempature", NAN); 226 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-ccd_temp_max",0, "define max ccd tempature", NAN); 227 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-posang_min", 0, "define min rotator position angle", NAN); 228 psMetadataAddF64(revertprocessedimfileArgs, PS_LIST_TAIL, "-posang_max", 0, "define max rotator position angle", NAN); 229 psMetadataAddStr(revertprocessedimfileArgs, PS_LIST_TAIL, "-object", 0, "search by exposure object", NULL); 230 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-solang_min", 0, "define min solar angle", NAN); 231 psMetadataAddF32(revertprocessedimfileArgs, PS_LIST_TAIL, "-solang_max", 0, "define max solar angle", NAN); 232 233 psMetadataAddBool(revertprocessedimfileArgs, PS_LIST_TAIL, "-all", 0, "allow everything to be queued without search terms", false); 234 psMetadataAddS16(revertprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 397 235 398 236 // -block 399 237 psMetadata *blockArgs = psMetadataAlloc(); 400 psMetadataAddStr(blockArgs, PS_LIST_TAIL, "-label", 0, 401 "name of a label to mask out (required)", NULL); 238 psMetadataAddStr(blockArgs, PS_LIST_TAIL, "-label", 0, "name of a label to mask out (required)", NULL); 402 239 403 240 // -masked 404 241 psMetadata *maskedArgs = psMetadataAlloc(); 405 psMetadataAddStr(maskedArgs, PS_LIST_TAIL, "-label", 0, 406 "list blocks for specified label", NULL); 407 psMetadataAddBool(maskedArgs, PS_LIST_TAIL, "-simple", 0, 408 "use the simple output format", false); 409 psMetadataAddU64(maskedArgs, PS_LIST_TAIL, "-limit", 0, 410 "limit result set to N items", 0); 242 psMetadataAddStr(maskedArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 243 psMetadataAddBool(maskedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 244 psMetadataAddU64(maskedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 411 245 412 246 // -unmasked 413 247 psMetadata *unmaskedArgs = psMetadataAlloc(); 414 psMetadataAddStr(unmaskedArgs, PS_LIST_TAIL, "-label", 0, 415 "restrict to specified label", NULL); 416 psMetadataAddBool(unmaskedArgs, PS_LIST_TAIL, "-simple", 0, 417 "use the simple output format", false); 418 psMetadataAddU64(unmaskedArgs, PS_LIST_TAIL, "-limit", 0, 419 "limit result set to N items", 0); 248 psMetadataAddStr(unmaskedArgs, PS_LIST_TAIL, "-label", 0, "restrict to specified label", NULL); 249 psMetadataAddBool(unmaskedArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 250 psMetadataAddU64(unmaskedArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 420 251 421 252 // -unblock 422 253 psMetadata *unblockArgs = psMetadataAlloc(); 423 psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label", 0, 424 "name of a label to unmask (required)", NULL); 254 psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label", 0, "name of a label to unmask (required)", NULL); 255 256 // -pendingcleanuprun 257 psMetadata *pendingcleanuprunArgs = psMetadataAlloc(); 258 psMetadataAddStr(pendingcleanuprunArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 259 psMetadataAddBool(pendingcleanuprunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 260 psMetadataAddU64(pendingcleanuprunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 261 262 // -pendingcleanupimfile 263 psMetadata *pendingcleanupimfileArgs = psMetadataAlloc(); 264 psMetadataAddStr(pendingcleanupimfileArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 265 psMetadataAddS64(pendingcleanupimfileArgs, PS_LIST_TAIL, "-fake_id", 0, "search by chip ID", 0); 266 psMetadataAddBool(pendingcleanupimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 267 psMetadataAddU64(pendingcleanupimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 268 269 // -donecleanup 270 psMetadata *donecleanupArgs = psMetadataAlloc(); 271 psMetadataAddStr(donecleanupArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 272 psMetadataAddBool(donecleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 273 psMetadataAddU64(donecleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 425 274 426 275 psMetadata *argSets = psMetadataAlloc(); 427 276 psMetadata *modes = psMetadataAlloc(); 428 277 429 PXOPT_ADD_MODE("-definebyquery", "create runs from raw exposures", 430 FAKETOOL_MODE_DEFINEBYQUERY, queueArgs); 431 PXOPT_ADD_MODE("-updaterun", "change fake run properties", 432 FAKETOOL_MODE_UPDATERUN, updaterunArgs); 433 PXOPT_ADD_MODE("-pendingexp", "show pending exposures", 434 FAKETOOL_MODE_PENDINGEXP, pendingexpArgs); 435 PXOPT_ADD_MODE("-pendingimfile", "show pending imfiles", 436 FAKETOOL_MODE_PENDINGIMFILE, pendingimfileArgs); 437 PXOPT_ADD_MODE("-addprocessedimfile", "add a processed imfile", 438 FAKETOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs); 439 PXOPT_ADD_MODE("-processedimfile", "show processed imfiles", 440 FAKETOOL_MODE_PROCESSEDIMFILE, processedimfileArgs); 441 PXOPT_ADD_MODE("-updateprocessedimfile","change procesed imfile properties", FAKETOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileArgs); 442 PXOPT_ADD_MODE("-revertprocessedimfile", "undo a processed imfile", 443 FAKETOOL_MODE_REVERTPROCESSEDIMFILE, revertprocessedimfileArgs); 444 PXOPT_ADD_MODE("-block", "set a label block", FAKETOOL_MODE_BLOCK, blockArgs); 445 PXOPT_ADD_MODE("-masked", "show blocked labels", FAKETOOL_MODE_MASKED, maskedArgs); 446 PXOPT_ADD_MODE("-unmasked", "", FAKETOOL_MODE_UNMASKED, unmaskedArgs); 447 PXOPT_ADD_MODE("-unblock", "remove a label block", FAKETOOL_MODE_UNBLOCK, unblockArgs); 278 PXOPT_ADD_MODE("-definebyquery", "create runs from raw exposures", FAKETOOL_MODE_DEFINEBYQUERY, queueArgs); 279 PXOPT_ADD_MODE("-updaterun", "change fake run properties", FAKETOOL_MODE_UPDATERUN, updaterunArgs); 280 PXOPT_ADD_MODE("-pendingexp", "show pending exposures", FAKETOOL_MODE_PENDINGEXP, pendingexpArgs); 281 PXOPT_ADD_MODE("-pendingimfile", "show pending imfiles", FAKETOOL_MODE_PENDINGIMFILE, pendingimfileArgs); 282 PXOPT_ADD_MODE("-addprocessedimfile", "add a processed imfile", FAKETOOL_MODE_ADDPROCESSEDIMFILE, addprocessedimfileArgs); 283 PXOPT_ADD_MODE("-processedimfile", "show processed imfiles", FAKETOOL_MODE_PROCESSEDIMFILE, processedimfileArgs); 284 PXOPT_ADD_MODE("-updateprocessedimfile","change procesed imfile properties", FAKETOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileArgs); 285 PXOPT_ADD_MODE("-revertprocessedimfile", "undo a processed imfile", FAKETOOL_MODE_REVERTPROCESSEDIMFILE, revertprocessedimfileArgs); 286 PXOPT_ADD_MODE("-block", "set a label block", FAKETOOL_MODE_BLOCK, blockArgs); 287 PXOPT_ADD_MODE("-masked", "show blocked labels", FAKETOOL_MODE_MASKED, maskedArgs); 288 PXOPT_ADD_MODE("-unmasked", "", FAKETOOL_MODE_UNMASKED, unmaskedArgs); 289 PXOPT_ADD_MODE("-unblock", "remove a label block", FAKETOOL_MODE_UNBLOCK, unblockArgs); 290 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", FAKETOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs); 291 PXOPT_ADD_MODE("-pendingcleanupimfile", "show runs that need to be cleaned up", FAKETOOL_MODE_PENDINGCLEANUPIMFILE, pendingcleanupimfileArgs); 292 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", FAKETOOL_MODE_DONECLEANUP, donecleanupArgs); 448 293 449 294 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/pxcam.c
r17171 r19092 35 35 36 36 // check that state is a valid string value 37 if (!( 38 (strncmp(state, "run", 4) == 0) 39 || (strncmp(state, "stop", 5) == 0) 40 || (strncmp(state, "reg", 4) == 0) 41 ) 42 ) { 37 if (!pxIsValidState(state)) { 43 38 psError(PS_ERR_UNKNOWN, false, 44 39 "invalid camRun state: %s", state); … … 63 58 64 59 // check that state is a valid string value 65 if (!( 66 (strncmp(state, "run", 4) == 0) 67 || (strncmp(state, "stop", 5) == 0) 68 || (strncmp(state, "reg", 4) == 0) 69 ) 70 ) { 60 if (!pxIsValidState(state)) { 71 61 psError(PS_ERR_UNKNOWN, false, 72 62 "invalid chipRun state: %s", state); … … 108 98 return true; 109 99 } 110 111 100 112 101 bool pxcamRunSetLabelByQuery(pxConfig *config, psMetadata *where, const char *label) … … 162 151 // different on 32/64 163 152 if (!p_psDBRunQuery(config->dbh, query, 164 " run", // state153 "new", // state 165 154 workdir ? workdir : "NULL", 166 155 "dirty", //workdir_state -
trunk/ippTools/src/pxfake.c
r17938 r19092 35 35 36 36 // check that state is a valid string value 37 if (!( 38 (strncmp(state, "run", 4) == 0) 39 || (strncmp(state, "stop", 5) == 0) 40 || (strncmp(state, "reg", 4) == 0) 41 ) 42 ) { 37 if (!pxIsValidState(state)) { 43 38 psError(PS_ERR_UNKNOWN, false, 44 39 "invalid fakeRun state: %s", state); … … 63 58 64 59 // check that state is a valid string value 65 if (!( 66 (strncmp(state, "run", 4) == 0) 67 || (strncmp(state, "stop", 5) == 0) 68 || (strncmp(state, "reg", 4) == 0) 69 ) 70 ) { 60 if (!pxIsValidState(state)) { 71 61 psError(PS_ERR_UNKNOWN, false, 72 62 "invalid fakeRun state: %s", state); … … 164 154 // different on 32/64 165 155 if (!p_psDBRunQuery(config->dbh, query, 166 " run", // state156 "new", // state 167 157 workdir ? workdir : "NULL", 168 158 label ? label : "NULL", -
trunk/ippTools/src/pxtools.c
r18075 r19092 29 29 { 30 30 PS_ASSERT_PTR_NON_NULL(state, false); 31 32 // XXX replace strncmp with strcmp 31 33 32 34 if (!((strncmp(state, "new", 4) == 0) 35 || (strncmp(state, "reg", 3) == 0) 33 36 || (strncmp(state, "full", 5) == 0) 34 37 || (strncmp(state, "goto_cleaned", 8) == 0) -
trunk/ippTools/src/pxwarp.c
r18479 r19092 35 35 36 36 // check that state is a valid string value 37 if (!( 38 (strncmp(state, "run", 4) == 0) 39 || (strncmp(state, "stop", 5) == 0) 40 || (strncmp(state, "reg", 4) == 0) 41 ) 42 ) { 43 psError(PS_ERR_UNKNOWN, false, 44 "invalid warpRun state: %s", state); 37 if (!pxIsValidState(state)) { 38 psError(PS_ERR_UNKNOWN, false, "invalid warpRun state: %s", state); 45 39 return false; 46 40 } … … 63 57 64 58 // check that state is a valid string value 65 if (!( 66 (strncmp(state, "run", 4) == 0) 67 || (strncmp(state, "stop", 5) == 0) 68 || (strncmp(state, "reg", 4) == 0) 69 ) 70 ) { 71 psError(PS_ERR_UNKNOWN, false, 72 "invalid chipRun state: %s", state); 59 if (!pxIsValidState(state)) { 60 psError(PS_ERR_UNKNOWN, false, "invalid chipRun state: %s", state); 73 61 return false; 74 62 } … … 152 140 fake_id, 153 141 "warp", // mode 154 " run", // state142 "new", // state 155 143 workdir, 156 144 "dirty", // workdir_state -
trunk/ippTools/src/stacktool.c
r19029 r19092 40 40 static bool sumskyfileMode(pxConfig *config); 41 41 static bool revertsumskyfileMode(pxConfig *config); 42 static bool pendingcleanuprunMode(pxConfig *config); 43 static bool pendingcleanupskyfileMode(pxConfig *config); 44 static bool donecleanupMode(pxConfig *config); 42 45 43 46 static bool setstackRunState(pxConfig *config, psS64 stack_id, const char *state); … … 61 64 62 65 switch (config->mode) { 63 MODECASE(STACKTOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 64 MODECASE(STACKTOOL_MODE_DEFINERUN, definerunMode); 65 MODECASE(STACKTOOL_MODE_UPDATERUN, updaterunMode); 66 MODECASE(STACKTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileMode); 67 MODECASE(STACKTOOL_MODE_INPUTSKYFILE, inputskyfileMode); 68 MODECASE(STACKTOOL_MODE_TOSUM, tosumMode); 69 MODECASE(STACKTOOL_MODE_ADDSUMSKYFILE, addsumskyfileMode); 70 MODECASE(STACKTOOL_MODE_SUMSKYFILE, sumskyfileMode); 71 MODECASE(STACKTOOL_MODE_REVERTSUMSKYFILE, revertsumskyfileMode); 66 MODECASE(STACKTOOL_MODE_DEFINEBYQUERY, definebyqueryMode); 67 MODECASE(STACKTOOL_MODE_DEFINERUN, definerunMode); 68 MODECASE(STACKTOOL_MODE_UPDATERUN, updaterunMode); 69 MODECASE(STACKTOOL_MODE_ADDINPUTSKYFILE, addinputskyfileMode); 70 MODECASE(STACKTOOL_MODE_INPUTSKYFILE, inputskyfileMode); 71 MODECASE(STACKTOOL_MODE_TOSUM, tosumMode); 72 MODECASE(STACKTOOL_MODE_ADDSUMSKYFILE, addsumskyfileMode); 73 MODECASE(STACKTOOL_MODE_SUMSKYFILE, sumskyfileMode); 74 MODECASE(STACKTOOL_MODE_REVERTSUMSKYFILE, revertsumskyfileMode); 75 MODECASE(STACKTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); 76 MODECASE(STACKTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileMode); 77 MODECASE(STACKTOOL_MODE_DONECLEANUP, donecleanupMode); 72 78 default: 73 79 psAbort("invalid option (this should not happen)"); … … 288 294 289 295 // create a new stackRun for this stack 290 stackRunRow *run = stackRunRowAlloc(0, "run", workdir, NULL, registered, skycell_id, tess_id, filter); 296 stackRunRow *run = stackRunRowAlloc( 297 0, // ID 298 "new", // state 299 workdir, 300 NULL, // workdir_state 301 registered, 302 skycell_id, 303 tess_id, 304 filter); 305 291 306 if (!stackRunInsertObject(config->dbh, run)) { 292 307 if (!psDBRollback(config->dbh)) { … … 343 358 if (!stackRunPrintObjects(stdout, list, !simple)) { 344 359 psError(PS_ERR_UNKNOWN, false, "failed to print object"); 345 return false;346 }347 360 psFree(list); 361 return false; 362 } 348 363 psFree(list); 349 350 364 return true; 351 365 } … … 374 388 } 375 389 376 stackRunRow *run = stackRunRowAlloc(0, "run", workdir, NULL, registered, skycell_id, tess_id, filter); 390 stackRunRow *run = stackRunRowAlloc( 391 0, // ID 392 "new", // state 393 workdir, 394 NULL, // workdir_state 395 registered, 396 skycell_id, 397 tess_id, 398 filter); 399 377 400 if (!run) { 378 401 psError(PS_ERR_UNKNOWN, false, "failed to alloc stackRun object"); … … 667 690 } 668 691 669 if (!setstackRunState(config, stack_id, " stop")) {692 if (!setstackRunState(config, stack_id, "full")) { 670 693 if (!psDBRollback(config->dbh)) { 671 694 psError(PS_ERR_UNKNOWN, false, "database error"); … … 869 892 870 893 // check that state is a valid string value 871 if (!( 872 (strncmp(state, "run", 4) == 0) 873 || (strncmp(state, "stop", 5) == 0) 874 || (strncmp(state, "reg", 4) == 0) 875 ) 876 ) { 877 psError(PS_ERR_UNKNOWN, false, 878 "invalid warpRun state: %s", state); 894 if (!pxIsValidState(state)) { 895 psError(PS_ERR_UNKNOWN, false, "invalid stackRun state: %s", state); 879 896 return false; 880 897 } … … 889 906 return true; 890 907 } 908 909 static bool pendingcleanuprunMode(pxConfig *config) 910 { 911 PS_ASSERT_PTR_NON_NULL(config, NULL); 912 913 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 914 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 915 916 psMetadata *where = psMetadataAlloc(); 917 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 918 919 psString query = pxDataGet("stacktool_pendingcleanuprun.sql"); 920 if (!query) { 921 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 922 return false; 923 } 924 925 if (where && psListLength(where->list)) { 926 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 927 psStringAppend(&query, " AND %s", whereClause); 928 psFree(whereClause); 929 } 930 psFree(where); 931 932 // treat limit == 0 as "no limit" 933 if (limit) { 934 psString limitString = psDBGenerateLimitSQL(limit); 935 psStringAppend(&query, " %s", limitString); 936 psFree(limitString); 937 } 938 939 if (!p_psDBRunQuery(config->dbh, query)) { 940 psError(PS_ERR_UNKNOWN, false, "database error"); 941 psFree(query); 942 return false; 943 } 944 psFree(query); 945 946 psArray *output = p_psDBFetchResult(config->dbh); 947 if (!output) { 948 psError(PS_ERR_UNKNOWN, false, "database error"); 949 return false; 950 } 951 if (!psArrayLength(output)) { 952 psTrace("stacktool", PS_LOG_INFO, "no rows found"); 953 psFree(output); 954 return true; 955 } 956 957 // negative simple so the default is true 958 if (!ippdbPrintMetadatas(stdout, output, "stackPendingCleanupRun", !simple)) { 959 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 960 psFree(output); 961 return false; 962 } 963 964 psFree(output); 965 966 return true; 967 } 968 969 static bool pendingcleanupskyfileMode(pxConfig *config) 970 { 971 PS_ASSERT_PTR_NON_NULL(config, NULL); 972 973 PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", false, false); 974 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 975 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 976 977 psMetadata *where = psMetadataAlloc(); 978 if (stack_id) { 979 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); 980 } 981 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 982 983 psString query = pxDataGet("stacktool_pendingcleanupskyfile.sql"); 984 if (!query) { 985 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 986 return false; 987 } 988 989 if (where && psListLength(where->list)) { 990 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 991 psStringAppend(&query, " AND %s", whereClause); 992 psFree(whereClause); 993 } 994 psFree(where); 995 996 // treat limit == 0 as "no limit" 997 if (limit) { 998 psString limitString = psDBGenerateLimitSQL(limit); 999 psStringAppend(&query, " %s", limitString); 1000 psFree(limitString); 1001 } 1002 1003 if (!p_psDBRunQuery(config->dbh, query)) { 1004 psError(PS_ERR_UNKNOWN, false, "database error"); 1005 psFree(query); 1006 return false; 1007 } 1008 psFree(query); 1009 1010 psArray *output = p_psDBFetchResult(config->dbh); 1011 if (!output) { 1012 psError(PS_ERR_UNKNOWN, false, "database error"); 1013 return false; 1014 } 1015 if (!psArrayLength(output)) { 1016 psTrace("stacktool", PS_LOG_INFO, "no rows found"); 1017 psFree(output); 1018 return true; 1019 } 1020 1021 // negative simple so the default is true 1022 if (!ippdbPrintMetadatas(stdout, output, "stackPendingCleanupSkyfile", !simple)) { 1023 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1024 psFree(output); 1025 return false; 1026 } 1027 1028 psFree(output); 1029 1030 return true; 1031 } 1032 1033 1034 static bool donecleanupMode(pxConfig *config) 1035 { 1036 PS_ASSERT_PTR_NON_NULL(config, NULL); 1037 1038 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1039 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1040 1041 psMetadata *where = psMetadataAlloc(); 1042 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1043 1044 psString query = pxDataGet("stacktool_donecleanup.sql"); 1045 if (!query) { 1046 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1047 return false; 1048 } 1049 1050 if (where && psListLength(where->list)) { 1051 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1052 psStringAppend(&query, " AND %s", whereClause); 1053 psFree(whereClause); 1054 } 1055 psFree(where); 1056 1057 // treat limit == 0 as "no limit" 1058 if (limit) { 1059 psString limitString = psDBGenerateLimitSQL(limit); 1060 psStringAppend(&query, " %s", limitString); 1061 psFree(limitString); 1062 } 1063 1064 if (!p_psDBRunQuery(config->dbh, query)) { 1065 psError(PS_ERR_UNKNOWN, false, "database error"); 1066 psFree(query); 1067 return false; 1068 } 1069 psFree(query); 1070 1071 psArray *output = p_psDBFetchResult(config->dbh); 1072 if (!output) { 1073 psError(PS_ERR_UNKNOWN, false, "database error"); 1074 return false; 1075 } 1076 if (!psArrayLength(output)) { 1077 psTrace("stacktool", PS_LOG_INFO, "no rows found"); 1078 psFree(output); 1079 return true; 1080 } 1081 1082 // negative simple so the default is true 1083 if (!ippdbPrintMetadatas(stdout, output, "stackDoneCleanup", !simple)) { 1084 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1085 psFree(output); 1086 return false; 1087 } 1088 1089 psFree(output); 1090 1091 return true; 1092 } -
trunk/ippTools/src/stacktool.h
r18093 r19092 34 34 STACKTOOL_MODE_SUMSKYFILE, 35 35 STACKTOOL_MODE_REVERTSUMSKYFILE, 36 STACKTOOL_MODE_PENDINGCLEANUPRUN, 37 STACKTOOL_MODE_PENDINGCLEANUPSKYFILE, 38 STACKTOOL_MODE_DONECLEANUP, 36 39 } stacktoolMode; 37 40 -
trunk/ippTools/src/stacktoolConfig.c
r18976 r19092 136 136 psMetadataAddS16(revertsumskyfileArgs, PS_LIST_TAIL, "-code", 0, "search by fault code", 0); 137 137 138 // -pendingcleanuprun 139 psMetadata *pendingcleanuprunArgs = psMetadataAlloc(); 140 psMetadataAddStr(pendingcleanuprunArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 141 psMetadataAddBool(pendingcleanuprunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 142 psMetadataAddU64(pendingcleanuprunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 143 144 // -pendingcleanupskyfile 145 psMetadata *pendingcleanupskyfileArgs = psMetadataAlloc(); 146 psMetadataAddStr(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 147 psMetadataAddS64(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-stack_id", 0, "search by stack ID", 0); 148 psMetadataAddBool(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 149 psMetadataAddU64(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 150 151 // -donecleanup 152 psMetadata *donecleanupArgs = psMetadataAlloc(); 153 psMetadataAddStr(donecleanupArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 154 psMetadataAddBool(donecleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 155 psMetadataAddU64(donecleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 156 138 157 psFree(now); 139 158 … … 150 169 PXOPT_ADD_MODE("-sumskyfile", "list results of stackRun", STACKTOOL_MODE_SUMSKYFILE, sumskyfileArgs); 151 170 PXOPT_ADD_MODE("-revertsumskyfile","", STACKTOOL_MODE_REVERTSUMSKYFILE, revertsumskyfileArgs); 171 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", STACKTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs); 172 PXOPT_ADD_MODE("-pendingcleanupskyfile", "show runs that need to be cleaned up", STACKTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileArgs); 173 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", STACKTOOL_MODE_DONECLEANUP, donecleanupArgs); 152 174 153 175 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/warptool.c
r18976 r19092 46 46 static bool maskedMode(pxConfig *config); 47 47 static bool unblockMode(pxConfig *config); 48 static bool pendingcleanuprunMode(pxConfig *config); 49 static bool pendingcleanupwarpMode(pxConfig *config); 50 static bool donecleanupMode(pxConfig *config); 48 51 49 52 static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile); … … 69 72 70 73 switch (config->mode) { 71 MODECASE(WARPTOOL_MODE_DEFINERUN, definerunMode); 72 MODECASE(WARPTOOL_MODE_UPDATERUN, updaterunMode); 73 MODECASE(WARPTOOL_MODE_EXP, expMode); 74 MODECASE(WARPTOOL_MODE_IMFILE, imfileMode); 75 MODECASE(WARPTOOL_MODE_TOOVERLAP, tooverlapMode); 76 MODECASE(WARPTOOL_MODE_ADDOVERLAP, addoverlapMode); 77 MODECASE(WARPTOOL_MODE_SCMAP, scmapMode); 78 MODECASE(WARPTOOL_MODE_TOWARPED, towarpedMode); 79 MODECASE(WARPTOOL_MODE_ADDWARPED, addwarpedMode); 80 MODECASE(WARPTOOL_MODE_WARPED, warpedMode); 81 MODECASE(WARPTOOL_MODE_REVERTWARPED, revertwarpedMode); 82 MODECASE(WARPTOOL_MODE_BLOCK, blockMode); 83 MODECASE(WARPTOOL_MODE_MASKED, maskedMode); 84 MODECASE(WARPTOOL_MODE_UNBLOCK, unblockMode); 74 MODECASE(WARPTOOL_MODE_DEFINERUN, definerunMode); 75 MODECASE(WARPTOOL_MODE_UPDATERUN, updaterunMode); 76 MODECASE(WARPTOOL_MODE_EXP, expMode); 77 MODECASE(WARPTOOL_MODE_IMFILE, imfileMode); 78 MODECASE(WARPTOOL_MODE_TOOVERLAP, tooverlapMode); 79 MODECASE(WARPTOOL_MODE_ADDOVERLAP, addoverlapMode); 80 MODECASE(WARPTOOL_MODE_SCMAP, scmapMode); 81 MODECASE(WARPTOOL_MODE_TOWARPED, towarpedMode); 82 MODECASE(WARPTOOL_MODE_ADDWARPED, addwarpedMode); 83 MODECASE(WARPTOOL_MODE_WARPED, warpedMode); 84 MODECASE(WARPTOOL_MODE_REVERTWARPED, revertwarpedMode); 85 MODECASE(WARPTOOL_MODE_BLOCK, blockMode); 86 MODECASE(WARPTOOL_MODE_MASKED, maskedMode); 87 MODECASE(WARPTOOL_MODE_UNBLOCK, unblockMode); 88 MODECASE(WARPTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunMode); 89 MODECASE(WARPTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupwarpMode); 90 MODECASE(WARPTOOL_MODE_DONECLEANUP, donecleanupMode); 85 91 86 92 default: … … 131 137 fake_id, 132 138 mode, 133 " run", // state139 "new", // state 134 140 workdir, 135 141 "dirty", // workdir_state … … 1122 1128 } 1123 1129 1124 1125 1130 static bool unblockMode(pxConfig *config) 1126 1131 { … … 1139 1144 } 1140 1145 1146 static bool pendingcleanuprunMode(pxConfig *config) 1147 { 1148 PS_ASSERT_PTR_NON_NULL(config, NULL); 1149 1150 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1151 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1152 1153 psMetadata *where = psMetadataAlloc(); 1154 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1155 1156 psString query = pxDataGet("warptool_pendingcleanuprun.sql"); 1157 if (!query) { 1158 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1159 return false; 1160 } 1161 1162 if (where && psListLength(where->list)) { 1163 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1164 psStringAppend(&query, " AND %s", whereClause); 1165 psFree(whereClause); 1166 } 1167 psFree(where); 1168 1169 // treat limit == 0 as "no limit" 1170 if (limit) { 1171 psString limitString = psDBGenerateLimitSQL(limit); 1172 psStringAppend(&query, " %s", limitString); 1173 psFree(limitString); 1174 } 1175 1176 if (!p_psDBRunQuery(config->dbh, query)) { 1177 psError(PS_ERR_UNKNOWN, false, "database error"); 1178 psFree(query); 1179 return false; 1180 } 1181 psFree(query); 1182 1183 psArray *output = p_psDBFetchResult(config->dbh); 1184 if (!output) { 1185 psError(PS_ERR_UNKNOWN, false, "database error"); 1186 return false; 1187 } 1188 if (!psArrayLength(output)) { 1189 psTrace("warptool", PS_LOG_INFO, "no rows found"); 1190 psFree(output); 1191 return true; 1192 } 1193 1194 // negative simple so the default is true 1195 if (!ippdbPrintMetadatas(stdout, output, "warpPendingCleanupRun", !simple)) { 1196 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1197 psFree(output); 1198 return false; 1199 } 1200 1201 psFree(output); 1202 1203 return true; 1204 } 1205 1206 1207 static bool pendingcleanupwarpMode(pxConfig *config) 1208 { 1209 PS_ASSERT_PTR_NON_NULL(config, NULL); 1210 1211 PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", false, false); 1212 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1213 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1214 1215 psMetadata *where = psMetadataAlloc(); 1216 if (warp_id) { 1217 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 1218 } 1219 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1220 1221 psString query = pxDataGet("warptool_pendingcleanupskyfile.sql"); 1222 if (!query) { 1223 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1224 return false; 1225 } 1226 1227 if (where && psListLength(where->list)) { 1228 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1229 psStringAppend(&query, " AND %s", whereClause); 1230 psFree(whereClause); 1231 } 1232 psFree(where); 1233 1234 // treat limit == 0 as "no limit" 1235 if (limit) { 1236 psString limitString = psDBGenerateLimitSQL(limit); 1237 psStringAppend(&query, " %s", limitString); 1238 psFree(limitString); 1239 } 1240 1241 if (!p_psDBRunQuery(config->dbh, query)) { 1242 psError(PS_ERR_UNKNOWN, false, "database error"); 1243 psFree(query); 1244 return false; 1245 } 1246 psFree(query); 1247 1248 psArray *output = p_psDBFetchResult(config->dbh); 1249 if (!output) { 1250 psError(PS_ERR_UNKNOWN, false, "database error"); 1251 return false; 1252 } 1253 if (!psArrayLength(output)) { 1254 psTrace("warptool", PS_LOG_INFO, "no rows found"); 1255 psFree(output); 1256 return true; 1257 } 1258 1259 // negative simple so the default is true 1260 if (!ippdbPrintMetadatas(stdout, output, "warpPendingCleanupWarp", !simple)) { 1261 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1262 psFree(output); 1263 return false; 1264 } 1265 1266 psFree(output); 1267 1268 return true; 1269 } 1270 1271 1272 static bool donecleanupMode(pxConfig *config) 1273 { 1274 PS_ASSERT_PTR_NON_NULL(config, NULL); 1275 1276 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1277 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 1278 1279 psMetadata *where = psMetadataAlloc(); 1280 PXOPT_COPY_STR(config->args, where, "-label", "label", "=="); 1281 1282 psString query = pxDataGet("warptool_donecleanup.sql"); 1283 if (!query) { 1284 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1285 return false; 1286 } 1287 1288 if (where && psListLength(where->list)) { 1289 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 1290 psStringAppend(&query, " AND %s", whereClause); 1291 psFree(whereClause); 1292 } 1293 psFree(where); 1294 1295 // treat limit == 0 as "no limit" 1296 if (limit) { 1297 psString limitString = psDBGenerateLimitSQL(limit); 1298 psStringAppend(&query, " %s", limitString); 1299 psFree(limitString); 1300 } 1301 1302 if (!p_psDBRunQuery(config->dbh, query)) { 1303 psError(PS_ERR_UNKNOWN, false, "database error"); 1304 psFree(query); 1305 return false; 1306 } 1307 psFree(query); 1308 1309 psArray *output = p_psDBFetchResult(config->dbh); 1310 if (!output) { 1311 psError(PS_ERR_UNKNOWN, false, "database error"); 1312 return false; 1313 } 1314 if (!psArrayLength(output)) { 1315 psTrace("warptool", PS_LOG_INFO, "no rows found"); 1316 psFree(output); 1317 return true; 1318 } 1319 1320 // negative simple so the default is true 1321 if (!ippdbPrintMetadatas(stdout, output, "warpDoneCleanup", !simple)) { 1322 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1323 psFree(output); 1324 return false; 1325 } 1326 1327 psFree(output); 1328 1329 return true; 1330 } 1141 1331 1142 1332 static bool isValidMode(pxConfig *config, const char *mode) -
trunk/ippTools/src/warptool.h
r17145 r19092 41 41 WARPTOOL_MODE_MASKED, 42 42 WARPTOOL_MODE_UNBLOCK, 43 WARPTOOL_MODE_PENDINGCLEANUPRUN, 44 WARPTOOL_MODE_PENDINGCLEANUPSKYFILE, 45 WARPTOOL_MODE_DONECLEANUP, 43 46 } warptoolMode; 44 47 -
trunk/ippTools/src/warptoolConfig.c
r18976 r19092 252 252 psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label", 0, "name of a label to unmask (required)", NULL); 253 253 254 // -pendingcleanuprun 255 psMetadata *pendingcleanuprunArgs = psMetadataAlloc(); 256 psMetadataAddStr(pendingcleanuprunArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 257 psMetadataAddBool(pendingcleanuprunArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 258 psMetadataAddU64(pendingcleanuprunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 259 260 // -pendingcleanupskyfile 261 psMetadata *pendingcleanupskyfileArgs = psMetadataAlloc(); 262 psMetadataAddStr(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 263 psMetadataAddS64(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "search by warp ID", 0); 264 psMetadataAddBool(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 265 psMetadataAddU64(pendingcleanupskyfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 266 267 // -donecleanup 268 psMetadata *donecleanupArgs = psMetadataAlloc(); 269 psMetadataAddStr(donecleanupArgs, PS_LIST_TAIL, "-label", 0, "list blocks for specified label", NULL); 270 psMetadataAddBool(donecleanupArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 271 psMetadataAddU64(donecleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 272 254 273 psFree(now); 255 274 psMetadata *argSets = psMetadataAlloc(); … … 267 286 PXOPT_ADD_MODE("-warped", "", WARPTOOL_MODE_WARPED, warpedArgs); 268 287 PXOPT_ADD_MODE("-revertwarped", "", WARPTOOL_MODE_REVERTWARPED, revertwarpedArgs); 269 PXOPT_ADD_MODE("-block", "set a label block", WARPTOOL_MODE_BLOCK, blockArgs); 270 PXOPT_ADD_MODE("-masked", "show blocked lables", WARPTOOL_MODE_MASKED, maskedArgs); 271 PXOPT_ADD_MODE("-unblock", "remove a label block", WARPTOOL_MODE_UNBLOCK, unblockArgs); 288 PXOPT_ADD_MODE("-block", "set a label block", WARPTOOL_MODE_BLOCK, blockArgs); 289 PXOPT_ADD_MODE("-masked", "show blocked lables", WARPTOOL_MODE_MASKED, maskedArgs); 290 PXOPT_ADD_MODE("-unblock", "remove a label block", WARPTOOL_MODE_UNBLOCK, unblockArgs); 291 PXOPT_ADD_MODE("-pendingcleanuprun", "show runs that need to be cleaned up", WARPTOOL_MODE_PENDINGCLEANUPRUN, pendingcleanuprunArgs); 292 PXOPT_ADD_MODE("-pendingcleanupskyfile", "show runs that need to be cleaned up", WARPTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileArgs); 293 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", WARPTOOL_MODE_DONECLEANUP, donecleanupArgs); 272 294 273 295 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note:
See TracChangeset
for help on using the changeset viewer.
