- Timestamp:
- Apr 10, 2012, 10:13:17 AM (14 years ago)
- Location:
- trunk/ippTools
- Files:
-
- 1 added
- 4 edited
-
share/Makefile.am (modified) (1 diff)
-
share/sctool_list.sql (added)
-
src/sctool.c (modified) (3 diffs)
-
src/sctool.h (modified) (1 diff)
-
src/sctoolConfig.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/share/Makefile.am
r33525 r33744 450 450 vptool_pendingrun.sql \ 451 451 vptool_processedcell.sql \ 452 vptool_revertrun.sql 452 vptool_revertrun.sql \ 453 sctool_list.sql 453 454 -
trunk/ippTools/src/sctool.c
r33720 r33744 35 35 36 36 static bool defineskycellsMode(pxConfig *config); 37 static bool listMode(pxConfig *config); 37 38 38 39 # define MODECASE(caseName, func) \ … … 53 54 54 55 switch (config->mode) { 55 MODECASE(SCTOOL_MODE_DEFINESKYCELLS, defineskycellsMode); 56 MODECASE(SCTOOL_MODE_DEFINESKYCELLS, defineskycellsMode); 57 MODECASE(SCTOOL_MODE_LIST, listMode); 56 58 default: 57 59 psAbort("invalid option (this should not happen)"); … … 131 133 return true; 132 134 } 135 static bool listMode(pxConfig *config) 136 { 137 PS_ASSERT_PTR_NON_NULL(config, NULL); 138 139 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 140 PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false); 141 psMetadata *where = psMetadataAlloc(); 142 143 PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell.skycell_id", "LIKE"); 144 PXOPT_COPY_STR(config->args, where, "-tess_id", "skycell.tess_id", "LIKE"); 145 PXOPT_COPY_F32(config->args, where, "-ra_min", "skycell.radeg", ">="); 146 PXOPT_COPY_F32(config->args, where, "-dec_min", "skycell.decdeg", ">="); 147 PXOPT_COPY_F32(config->args, where, "-ra_max", "skycell.radeg", "<"); 148 PXOPT_COPY_F32(config->args, where, "-dec_max", "skycell.decdeg", "<"); 149 PXOPT_COPY_F32(config->args, where, "-glong_min", "skycell.glong", ">="); 150 PXOPT_COPY_F32(config->args, where, "-glat_min", "skycell.glat", ">="); 151 PXOPT_COPY_F32(config->args, where, "-glong_max", "skycell.glong", "<"); 152 PXOPT_COPY_F32(config->args, where, "-glat_max", "skycell.glat", "<"); 153 154 psString query = pxDataGet("sctool_list.sql"); 155 if (!query) { 156 psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement"); 157 return false; 158 } 159 160 if (!psListLength(where->list)) { 161 psError(PXTOOLS_ERR_CONFIG, false, "search paramters are required\n"); 162 psFree(where); 163 return false; 164 } 165 psString whereClause = psDBGenerateWhereConditionSQL(where, NULL); 166 psStringAppend(&query, " WHERE %s", whereClause); 167 psFree(whereClause); 168 169 if (limit) { 170 psString limitString = psDBGenerateLimitSQL(limit); 171 psStringAppend(&query, " %s", limitString); 172 psFree(limitString); 173 } 174 175 if (!p_psDBRunQuery(config->dbh, query)) { 176 psError(PS_ERR_UNKNOWN, false, "database error"); 177 psFree(query); 178 return false; 179 } 180 psFree(query); 181 182 psArray *output = p_psDBFetchResult(config->dbh); 183 if (!output) { 184 psError(PS_ERR_UNKNOWN, false, "database error"); 185 return false; 186 } 187 188 if (!psArrayLength(output)) { 189 psTrace("sctool", PS_LOG_INFO, "no rows found"); 190 psFree(output); 191 return true; 192 } 193 194 if (!ippdbPrintMetadatas(stdout, output, "skycell", !simple)) { 195 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 196 psFree(output); 197 return false; 198 } 199 200 psFree(output); 201 202 203 return true; 204 } -
trunk/ippTools/src/sctool.h
r33720 r33744 26 26 SCTOOL_MODE_NONE = 0x0, 27 27 SCTOOL_MODE_DEFINESKYCELLS, 28 SCTOOL_MODE_LIST, 28 29 } sctoolMode; 29 30 -
trunk/ippTools/src/sctoolConfig.c
r33730 r33744 48 48 psMetadataAddStr(defineskycellsArgs, PS_LIST_TAIL, "-input", 0, "file containing skycell data (required)", NULL); 49 49 50 // -list 51 psMetadata *listArgs = psMetadataAlloc(); 52 psMetadataAddStr(listArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell_id (LIKE comparision)", NULL); 53 psMetadataAddStr(listArgs, PS_LIST_TAIL, "-tess_id", 0, "search by tess_id (LIKE comparision)", NULL); 54 psMetadataAddF32(listArgs, PS_LIST_TAIL, "-ra_min", 0, "search by right ascension (degrees)", NAN); 55 psMetadataAddF32(listArgs, PS_LIST_TAIL, "-dec_min", 0, "search by declination (degrees)", NAN); 56 psMetadataAddF32(listArgs, PS_LIST_TAIL, "-ra_max", 0, "search by right ascension (degrees)", NAN); 57 psMetadataAddF32(listArgs, PS_LIST_TAIL, "-dec_max", 0, "search by declination (degrees)", NAN); 58 psMetadataAddF32(listArgs, PS_LIST_TAIL, "-glong_min", 0, "search by galactic longitude (degrees)", NAN); 59 psMetadataAddF32(listArgs, PS_LIST_TAIL, "-glat_min", 0, "search by galactic latitude (degrees)", NAN); 60 psMetadataAddF32(listArgs, PS_LIST_TAIL, "-glong_max", 0, "search by galactic longitude (degrees)", NAN); 61 psMetadataAddF32(listArgs, PS_LIST_TAIL, "-glat_max", 0, "search by galactic latitude (degrees)", NAN); 62 psMetadataAddU64(listArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 63 psMetadataAddBool(listArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 64 50 65 psMetadata *argSets = psMetadataAlloc(); 51 66 psMetadata *modes = psMetadataAlloc(); 52 67 53 PXOPT_ADD_MODE("-defineskycells", "insert skycells from mdc file", SCTOOL_MODE_DEFINESKYCELLS, defineskycellsArgs); 68 PXOPT_ADD_MODE("-defineskycells", "insert skycells from mdc file", SCTOOL_MODE_DEFINESKYCELLS, defineskycellsArgs); 69 PXOPT_ADD_MODE("-list", "list skycell parameters", SCTOOL_MODE_LIST, listArgs); 54 70 55 71 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note:
See TracChangeset
for help on using the changeset viewer.
