Changeset 11204 for trunk/ippTools/src/detselect.c
- Timestamp:
- Jan 19, 2007, 4:34:35 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/detselect.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/detselect.c
r11099 r11204 68 68 { 69 69 PS_ASSERT_PTR_NON_NULL(config, false); 70 71 psMetadata *where = psMetadataAlloc(); 72 73 // airmass_min < airmass < airmass_max 74 { 75 bool status = false; 76 psF32 airmass = psMetadataLookupF32(&status, config->args, "-airmass"); 77 if (!status) { 78 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -airmass"); 79 psFree(where); 80 return false; 81 } 82 83 if (!isnan(airmass)) { 84 psMetadataAddF32(where, PS_LIST_TAIL, "airmass_min", 0, "<=", airmass); 85 psMetadataAddF32(where, PS_LIST_TAIL, "airmass_max", 0, ">=", airmass); 86 } 87 } 88 89 // exp_time_min < exp_time < exp_time_max 90 { 91 bool status = false; 92 psF32 exp_time = psMetadataLookupF32(&status, config->args, "-exp_time"); 93 if (!status) { 94 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_time"); 95 psFree(where); 96 return false; 97 } 98 99 if (!isnan(exp_time)) { 100 psMetadataAddF32(where, PS_LIST_TAIL, "exp_time_min", 0, "<=", exp_time); 101 psMetadataAddF32(where, PS_LIST_TAIL, "exp_time_max", 0, ">=", exp_time); 102 } 103 } 104 105 // ccd_temp_min < ccd_temp < ccd_temp_max 106 { 107 bool status = false; 108 psF32 ccd_temp = psMetadataLookupF32(&status, config->args, "-ccd_temp"); 109 if (!status) { 110 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -ccd_temp"); 111 psFree(where); 112 return false; 113 } 114 115 if (!isnan(ccd_temp)) { 116 psMetadataAddF32(where, PS_LIST_TAIL, "ccd_temp_min", 0, "<=", ccd_temp); 117 psMetadataAddF32(where, PS_LIST_TAIL, "ccd_temp_max", 0, ">=", ccd_temp); 118 } 119 } 120 121 { 122 bool status = false; 123 psF64 posang = psMetadataLookupF64(&status, config->args, "-posang"); 124 if (!status) { 125 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -posang"); 126 psFree(where); 127 return false; 128 } 129 130 if (!isnan(posang)) { 131 psMetadataAddF32(where, PS_LIST_TAIL, "posang_min", 0, "<=", posang); 132 psMetadataAddF32(where, PS_LIST_TAIL, "posang_max", 0, ">=", posang); 133 } 134 } 135 136 // time_begin < time < time_end 137 { 138 bool status = false; 139 psString timeStr = psMetadataLookupStr(&status, config->args, "-time"); 140 if (!status) { 141 psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -time"); 142 psFree(where); 143 return false; 144 } 145 146 if (timeStr) { 147 psTime *time = psTimeFromISO(timeStr, PS_TIME_UTC); 148 if (!time) { 149 psError(PS_ERR_UNKNOWN, false, "error in time format %s", timeStr); 150 psFree(where); 151 return false; 152 } 153 154 psMetadataAddTime(where, PS_LIST_TAIL, "time_begin", 0, "<=", time); 155 psMetadataAddTime(where, PS_LIST_TAIL, "time_end", 0, ">=", time); 156 psFree(time); 157 } 158 } 70 159 71 160 psString query = psStringCopy( … … 81 170 " AND detRunSummary.accept = 1" 82 171 ); 83 # if 084 psString query = psStringCopy(85 "SELECT DISTINCT"86 " detRunSummary.det_id,"87 " detRunSummary.iteration,"88 " rawImfile.class,"89 " detRun.det_type"90 // " detRun.state,"91 // " detRunSummary.accept,"92 // " rawExp.camera"93 " FROM detRun"94 " JOIN detRunSummary "95 " USING(det_id)"96 " JOIN detInputExp"97 " ON detRunSummary.det_id = detInputExp.det_id"98 " AND detRunSummary.iteration = detInputExp.iteration"99 " JOIN rawExp"100 " ON detInputExp.exp_tag = rawExp.exp_tag"101 " JOIN rawImfile"102 " ON rawExp.exp_tag = rawImfile.exp_tag"103 " WHERE"104 " detRun.state = 'stop'"105 " AND detRunSummary.accept = 1"106 // XXX the following entry is needed to exclude db mismatched107 // XXX these are caused by an error upstream and should be fixed108 // " AND detRun.det_type = rawExp.object"109 );110 # endif111 172 112 173 if (config->where) { … … 116 177 } 117 178 118 // XXX need to place in here the range constraints for range-based values: 119 // use_begin < time < use_end 120 // airmass_min < airmass < airmass_max 121 // ccd_temp_min < ccd_temp < ccd_temp_max 122 // exp_time_min < exp_time < exp_time_max 123 124 { 125 psString str = NULL; 126 bool status = false; 127 if ((str = psMetadataLookupStr(&status, config->args, "-det_type"))) { 128 psStringAppend(&query, " AND detRun.det_type = '%s'", str); 129 } 130 } 131 132 { 133 psString str = NULL; 134 bool status = false; 135 if ((str = psMetadataLookupStr(&status, config->args, "-filter"))) { 136 psStringAppend(&query, " AND detRun.filter = '%s'", str); 179 { 180 psString whereClause = psDBGenerateWhereConditionSQL(where, "detRun"); 181 psFree(where); 182 if (whereClause) { 183 psStringAppend(&query, " AND %s", whereClause); 184 psFree(whereClause); 137 185 } 138 186 } … … 141 189 // single detrend image which matches all criteria and has the latest 142 190 // insertion date 143 psStringAppend(&query, " LIMIT 1");191 psStringAppend(&query, " ORDER BY detRun.registered DESC LIMIT 1"); 144 192 145 193 if (!p_psDBRunQuery(config->dbh, query)) {
Note:
See TracChangeset
for help on using the changeset viewer.
