Changeset 23310
- Timestamp:
- Mar 12, 2009, 3:42:47 PM (17 years ago)
- Location:
- trunk/ippTools/src
- Files:
-
- 30 edited
-
camtool.c (modified) (3 diffs)
-
camtool.h (modified) (1 diff)
-
camtoolConfig.c (modified) (2 diffs)
-
chiptool.c (modified) (11 diffs)
-
chiptool.h (modified) (2 diffs)
-
chiptoolConfig.c (modified) (4 diffs)
-
dettool.c (modified) (5 diffs)
-
dettool.h (modified) (1 diff)
-
dettoolConfig.c (modified) (7 diffs)
-
difftool.c (modified) (3 diffs)
-
difftool.h (modified) (1 diff)
-
difftoolConfig.c (modified) (2 diffs)
-
faketool.c (modified) (6 diffs)
-
faketool.h (modified) (2 diffs)
-
faketoolConfig.c (modified) (4 diffs)
-
flatcorr.c (modified) (3 diffs)
-
flatcorr.h (modified) (1 diff)
-
flatcorrConfig.c (modified) (2 diffs)
-
pxadmin.c (modified) (3 diffs)
-
pxadmin.h (modified) (1 diff)
-
pxadminConfig.c (modified) (3 diffs)
-
regtool.c (modified) (3 diffs)
-
regtool.h (modified) (1 diff)
-
regtoolConfig.c (modified) (2 diffs)
-
stacktool.c (modified) (3 diffs)
-
stacktool.h (modified) (1 diff)
-
stacktoolConfig.c (modified) (2 diffs)
-
warptool.c (modified) (6 diffs)
-
warptool.h (modified) (1 diff)
-
warptoolConfig.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/camtool.c
r21443 r23310 44 44 static bool pendingcleanupexpMode(pxConfig *config); 45 45 static bool donecleanupMode(pxConfig *config); 46 static bool exportrunMode(pxConfig *config); 47 static bool importrunMode(pxConfig *config); 46 48 47 49 # define MODECASE(caseName, func) \ … … 77 79 MODECASE(CAMTOOL_MODE_PENDINGCLEANUPEXP, pendingcleanupexpMode); 78 80 MODECASE(CAMTOOL_MODE_DONECLEANUP, donecleanupMode); 81 MODECASE(CAMTOOL_MODE_EXPORTRUN, exportrunMode); 82 MODECASE(CAMTOOL_MODE_IMPORTRUN, importrunMode); 79 83 default: 80 84 psAbort("invalid option (this should not happen)"); … … 1081 1085 return true; 1082 1086 } 1087 1088 bool exportrunMode(pxConfig *config) 1089 { 1090 typedef struct ExportTable { 1091 char tableName[80]; 1092 char sqlFilename[80]; 1093 } ExportTable; 1094 1095 int numExportTables = 2; 1096 1097 PS_ASSERT_PTR_NON_NULL(config, NULL); 1098 1099 PXOPT_LOOKUP_S64(det_id, config->args, "-cam_id", true, false); 1100 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 1101 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1102 1103 FILE *f = fopen (outfile, "w"); 1104 if (f == NULL) { 1105 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 1106 return false; 1107 } 1108 1109 psMetadata *where = psMetadataAlloc(); 1110 PXOPT_COPY_S64(config->args, where, "-cam_id", "cam_id", "=="); 1111 1112 ExportTable tables [] = { 1113 {"camRun", "camtool_export_run.sql"}, 1114 {"camProcessedExp", "camtool_export_processed_exp.sql"}, 1115 }; 1116 1117 for (int i=0; i < numExportTables; i++) { 1118 psString query = pxDataGet(tables[i].sqlFilename); 1119 if (!query) { 1120 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1121 return false; 1122 } 1123 1124 if (where && psListLength(where->list)) { 1125 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1126 psStringAppend(&query, " %s", whereClause); 1127 psFree(whereClause); 1128 } 1129 1130 // treat limit == 0 as "no limit" 1131 if (limit) { 1132 psString limitString = psDBGenerateLimitSQL(limit); 1133 psStringAppend(&query, " %s", limitString); 1134 psFree(limitString); 1135 } 1136 1137 if (!p_psDBRunQuery(config->dbh, query)) { 1138 psError(PS_ERR_UNKNOWN, false, "database error"); 1139 psFree(query); 1140 return false; 1141 } 1142 psFree(query); 1143 1144 psArray *output = p_psDBFetchResult(config->dbh); 1145 if (!output) { 1146 psError(PS_ERR_UNKNOWN, false, "database error"); 1147 return false; 1148 } 1149 if (!psArrayLength(output)) { 1150 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1151 psFree(output); 1152 return true; 1153 } 1154 1155 // we must write the export table in non-simple (true) format 1156 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) { 1157 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1158 psFree(output); 1159 return false; 1160 } 1161 psFree(output); 1162 } 1163 1164 fclose (f); 1165 1166 return true; 1167 } 1168 1169 bool importrunMode(pxConfig *config) 1170 { 1171 unsigned int nFail; 1172 1173 PS_ASSERT_PTR_NON_NULL(config, NULL); 1174 1175 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 1176 1177 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1178 1179 fprintf (stdout, "---- input ----\n"); 1180 psMetadataPrint (stderr, input, 1); 1181 1182 psMetadataItem *item = psMetadataLookup (input, "camRun"); 1183 psAssert (item, "entry not in input?"); 1184 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1185 1186 psMetadataItem *entry = psListGet (item->data.list, 0); 1187 assert (entry); 1188 assert (entry->type == PS_DATA_METADATA); 1189 camRunRow *camRun = camRunObjectFromMetadata (entry->data.md); 1190 camRunInsertObject (config->dbh, camRun); 1191 1192 // fprintf (stdout, "---- cam run ----\n"); 1193 // psMetadataPrint (stderr, entry->data.md, 1); 1194 1195 item = psMetadataLookup (input, "camProcessedImfile"); 1196 psAssert (item, "entry not in input?"); 1197 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1198 1199 for (int i = 0; i < item->data.list->n; i++) { 1200 psMetadataItem *entry = psListGet (item->data.list, i); 1201 assert (entry); 1202 assert (entry->type == PS_DATA_METADATA); 1203 camProcessedExpRow *camProcessedExp = camProcessedExpObjectFromMetadata (entry->data.md); 1204 camProcessedExpInsertObject (config->dbh, camProcessedExp); 1205 1206 // fprintf (stdout, "---- row %d ----\n", i); 1207 // psMetadataPrint (stderr, entry->data.md, 1); 1208 } 1209 1210 return true; 1211 } -
trunk/ippTools/src/camtool.h
r19092 r23310 39 39 CAMTOOL_MODE_PENDINGCLEANUPEXP, 40 40 CAMTOOL_MODE_DONECLEANUP, 41 CAMTOOL_MODE_EXPORTRUN, 42 CAMTOOL_MODE_IMPORTRUN 41 43 } camtoolMode; 42 44 -
trunk/ippTools/src/camtoolConfig.c
r20276 r23310 228 228 psMetadataAddU64(donecleanupArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 229 229 230 // -exportrun 231 psMetadata *exportrunArgs = psMetadataAlloc(); 232 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-cam_id", 0, "export this camera ID (required)", 0); 233 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL); 234 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 235 236 // -importrun 237 psMetadata *importrunArgs = psMetadataAlloc(); 238 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 239 240 230 241 psMetadata *argSets = psMetadataAlloc(); 231 242 psMetadata *modes = psMetadataAlloc(); … … 245 256 PXOPT_ADD_MODE("-pendingcleanupexp", "show exposures for cleanup runs", CAMTOOL_MODE_PENDINGCLEANUPEXP, pendingcleanupexpArgs); 246 257 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", CAMTOOL_MODE_DONECLEANUP, donecleanupArgs); 258 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", CAMTOOL_MODE_EXPORTRUN, exportrunArgs); 259 PXOPT_ADD_MODE("-importrun", "import run from metadata file", CAMTOOL_MODE_IMPORTRUN, importrunArgs); 247 260 248 261 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/chiptool.c
r23281 r23310 42 42 static bool revertprocessedimfileMode(pxConfig *config); 43 43 static bool updateprocessedimfileMode(pxConfig *config); 44 static bool advanceexpMode(pxConfig *config);44 static bool promoteexpMode(pxConfig *config); 45 45 static bool blockMode(pxConfig *config); 46 46 static bool maskedMode(pxConfig *config); … … 52 52 static bool runMode(pxConfig *config); 53 53 static bool tocleanedimfileMode(pxConfig *config); 54 // static bool tocleanedimfile_from_scrubbedMode(pxConfig *config);55 54 static bool tofullimfileMode(pxConfig *config); 56 55 static bool topurgedimfileMode(pxConfig *config); 57 56 static bool exportrunMode(pxConfig *config); 58 57 static bool importrunMode(pxConfig *config); 59 static bool change_imfile_data_state(pxConfig *config, psString data_state, psString run_state);60 58 61 59 # define MODECASE(caseName, func) \ … … 83 81 MODECASE(CHIPTOOL_MODE_REVERTPROCESSEDIMFILE, revertprocessedimfileMode); 84 82 MODECASE(CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileMode); 85 MODECASE(CHIPTOOL_MODE_ ADVANCEEXP, advanceexpMode);83 MODECASE(CHIPTOOL_MODE_PROMOTEEXP, promoteexpMode); 86 84 MODECASE(CHIPTOOL_MODE_BLOCK, blockMode); 87 85 MODECASE(CHIPTOOL_MODE_MASKED, maskedMode); … … 93 91 MODECASE(CHIPTOOL_MODE_RUN, runMode); 94 92 MODECASE(CHIPTOOL_MODE_TOCLEANEDIMFILE, tocleanedimfileMode); 95 // MODECASE(CHIPTOOL_MODE_TOCLEANEDIMFILE_FROM_SCRUBBED, tocleanedimfile_from_scrubbedMode);96 93 MODECASE(CHIPTOOL_MODE_TOFULLIMFILE, tofullimfileMode); 97 94 MODECASE(CHIPTOOL_MODE_TOPURGEDIMFILE, topurgedimfileMode); … … 652 649 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 653 650 PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "=="); 654 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false); 655 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 656 657 if (state && code) { 658 psError(PS_ERR_UNKNOWN, true, "only one of -set_state and -code may be supplied"); 659 return false; 660 } 661 662 if (state) { 663 // make sure that the state string is valid 664 if (!pxIsValidState(state)) { 665 psError(PXTOOLS_ERR_DATA, false, "%s is not a valid state", state); 666 return false; 667 } 668 if (!change_imfile_data_state(config, state, "unknown")) { 651 PXOPT_LOOKUP_S16(code, config->args, "-code", true, false); 652 653 if (!pxSetFaultCode(config->dbh, "chipProcessedImfile", where, code)) { 669 654 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 670 655 return false; 671 } 672 return true; 673 } 674 675 if (code) { 676 if (!pxSetFaultCode(config->dbh, "chipProcessedImfile", where, code)) { 677 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 678 return false; 679 } 680 psFree(where); 681 return true; 682 } 683 684 psError(PS_ERR_UNKNOWN, true, "one of -set_state or -code must be supplied"); 685 return false; 656 } 657 psFree(where); 658 659 return true; 686 660 } 687 661 … … 1104 1078 1105 1079 1106 static bool advanceexpMode(pxConfig *config)1080 static bool promoteexpMode(pxConfig *config) 1107 1081 { 1108 1082 PS_ASSERT_PTR_NON_NULL(config, false); … … 1219 1193 // shared code for the modes -tocleanedimfile -tofullimfile -topurgedimfile 1220 1194 1221 // XXX EAM : this function was enforcing only certain transitions with the SQL. However,1222 // this is getting fairly messy now that we have added a few additional target and1223 // destination states. I'm disabling these restrictions for now; is there are better way1224 // to enforce the allowed state transitions?1225 1226 1195 static bool change_imfile_data_state(pxConfig *config, psString data_state, psString run_state) 1227 1196 { … … 1239 1208 } 1240 1209 1241 // XXX this feature is disabled (run_state is ignored)1242 1210 // note only updates if chipRun.state = run_state 1243 1244 if (!p_psDBRunQueryF(config->dbh, query, data_state, chip_id, class_id)) { 1211 if (!p_psDBRunQueryF(config->dbh, query, data_state, chip_id, class_id, run_state)) { 1245 1212 psError(PS_ERR_UNKNOWN, false, "database error"); 1246 1213 // rollback … … 1289 1256 bool exportrunMode(pxConfig *config) 1290 1257 { 1291 PS_ASSERT_PTR_NON_NULL(config, NULL); 1292 1293 PXOPT_LOOKUP_S64(chip_id, config->args, "-chip_id", true, false); 1294 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 1295 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1296 1297 FILE *f = fopen (outfile, "w"); 1298 if (f == NULL) { 1299 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 1300 return false; 1301 } 1302 1303 psMetadata *where = psMetadataAlloc(); 1304 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 1305 1306 // *** extract the chipRun in this section *** 1307 psString query = pxDataGet("chiptool_export_run.sql"); 1258 typedef struct ExportTable { 1259 char tableName[80]; 1260 char sqlFilename[80]; 1261 } ExportTable; 1262 1263 int numExportTables = 3; 1264 1265 PS_ASSERT_PTR_NON_NULL(config, NULL); 1266 1267 PXOPT_LOOKUP_S64(det_id, config->args, "-chip_id", true, false); 1268 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 1269 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1270 1271 FILE *f = fopen (outfile, "w"); 1272 if (f == NULL) { 1273 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 1274 return false; 1275 } 1276 1277 psMetadata *where = psMetadataAlloc(); 1278 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 1279 1280 ExportTable tables [] = { 1281 {"chipRun", "chiptool_export_run.sql"}, 1282 {"chipImfile", "chiptool_export_imfile.sql"}, 1283 {"chipProcessedImfile", "chiptool_export_processed_imfile.sql"}, 1284 }; 1285 1286 1287 for (int i=0; i < numExportTables; i++) { 1288 psString query = pxDataGet(tables[i].sqlFilename); 1308 1289 if (!query) { 1309 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");1310 return false;1290 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1291 return false; 1311 1292 } 1312 1293 1313 1294 if (where && psListLength(where->list)) { 1314 psString whereClause = psDBGenerateWhereSQL(where, NULL);1315 psStringAppend(&query, " %s", whereClause);1316 psFree(whereClause);1295 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1296 psStringAppend(&query, " %s", whereClause); 1297 psFree(whereClause); 1317 1298 } 1318 1299 1319 1300 // treat limit == 0 as "no limit" 1320 1301 if (limit) { 1321 psString limitString = psDBGenerateLimitSQL(limit);1322 psStringAppend(&query, " %s", limitString);1323 psFree(limitString);1302 psString limitString = psDBGenerateLimitSQL(limit); 1303 psStringAppend(&query, " %s", limitString); 1304 psFree(limitString); 1324 1305 } 1325 1306 1326 1307 if (!p_psDBRunQuery(config->dbh, query)) { 1327 psError(PS_ERR_UNKNOWN, false, "database error");1328 psFree(query);1329 return false;1308 psError(PS_ERR_UNKNOWN, false, "database error"); 1309 psFree(query); 1310 return false; 1330 1311 } 1331 1312 psFree(query); … … 1333 1314 psArray *output = p_psDBFetchResult(config->dbh); 1334 1315 if (!output) { 1335 psError(PS_ERR_UNKNOWN, false, "database error");1336 return false;1316 psError(PS_ERR_UNKNOWN, false, "database error"); 1317 return false; 1337 1318 } 1338 1319 if (!psArrayLength(output)) { 1339 psTrace("chiptool", PS_LOG_INFO, "no rows found");1340 psFree(output);1341 return true;1320 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1321 psFree(output); 1322 return true; 1342 1323 } 1343 1324 1344 1325 // we must write the export table in non-simple (true) format 1345 if (!ippdbPrintMetadatas(f, output, "chipRun", true)) {1346 psError(PS_ERR_UNKNOWN, false, "failed to print array");1347 psFree(output);1348 return false;1326 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) { 1327 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1328 psFree(output); 1329 return false; 1349 1330 } 1350 1331 psFree(output); 1351 1352 // *** extract the chipProcessedImfile entries in this section *** 1353 query = pxDataGet("chiptool_export_imfiles.sql"); 1354 if (!query) { 1355 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1356 return false; 1357 } 1358 1359 if (where && psListLength(where->list)) { 1360 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1361 psStringAppend(&query, " %s", whereClause); 1362 psFree(whereClause); 1363 } 1364 psFree(where); 1365 1366 // treat limit == 0 as "no limit" 1367 if (limit) { 1368 psString limitString = psDBGenerateLimitSQL(limit); 1369 psStringAppend(&query, " %s", limitString); 1370 psFree(limitString); 1371 } 1372 1373 if (!p_psDBRunQuery(config->dbh, query)) { 1374 psError(PS_ERR_UNKNOWN, false, "database error"); 1375 psFree(query); 1376 return false; 1377 } 1378 psFree(query); 1379 1380 output = p_psDBFetchResult(config->dbh); 1381 if (!output) { 1382 psError(PS_ERR_UNKNOWN, false, "database error"); 1383 return false; 1384 } 1385 if (!psArrayLength(output)) { 1386 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 1387 psFree(output); 1388 return true; 1389 } 1390 1391 // we must write the export table in non-simple (true) format 1392 if (!ippdbPrintMetadatas(f, output, "chipProcessedImfiles", true)) { 1393 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1394 psFree(output); 1395 return false; 1396 } 1397 psFree(output); 1398 1399 fclose (f); 1400 1401 return true; 1402 } 1403 1332 } 1333 1334 fclose (f); 1335 1336 return true; 1337 } 1404 1338 1405 1339 bool importrunMode(pxConfig *config) 1406 1340 { 1407 1341 unsigned int nFail; 1342 1343 int numImportTables = 2; 1344 1345 char tables[2] [80] = {"chipImfile", "chipProcessedImfile"}; 1408 1346 1409 1347 PS_ASSERT_PTR_NON_NULL(config, NULL); … … 1416 1354 psMetadataPrint (stderr, input, 1); 1417 1355 1418 psMetadataItem *chipRunItem = psMetadataLookup (input, "chipRun"); 1419 psAssert (chipRunItem, "entry not in input?"); 1420 psAssert (chipRunItem->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1421 1422 psMetadataItem *chipRunEntry = psListGet (chipRunItem->data.list, 0); 1423 assert (chipRunEntry); 1424 assert (chipRunEntry->type == PS_DATA_METADATA); 1425 chipRunRow *chipRun = chipRunObjectFromMetadata (chipRunEntry->data.md); 1426 chipRunInsertObject (config->dbh, chipRun); 1427 1428 // fprintf (stdout, "---- chip run ----\n"); 1429 // psMetadataPrint (stderr, chipRunEntry->data.md, 1); 1430 1431 psMetadataItem *item = psMetadataLookup (input, "chipProcessedImfiles"); 1356 psMetadataItem *item = psMetadataLookup (input, "chipRun"); 1432 1357 psAssert (item, "entry not in input?"); 1433 1358 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1434 1359 1435 // XXX would be better to use the iterator? 1436 for (int i = 0; i < item->data.list->n; i++) { 1437 psMetadataItem *entry = psListGet (item->data.list, i); 1438 assert (entry); 1439 assert (entry->type == PS_DATA_METADATA); 1440 chipProcessedImfileRow *chipProcessedImfile = chipProcessedImfileObjectFromMetadata (entry->data.md); 1441 chipProcessedImfileInsertObject (config->dbh, chipProcessedImfile); 1442 1443 // fprintf (stdout, "---- row %d ----\n", i); 1444 // psMetadataPrint (stderr, entry->data.md, 1); 1360 psMetadataItem *entry = psListGet (item->data.list, 0); 1361 assert (entry); 1362 assert (entry->type == PS_DATA_METADATA); 1363 chipRunRow *chipRun = chipRunObjectFromMetadata (entry->data.md); 1364 chipRunInsertObject (config->dbh, chipRun); 1365 1366 // fprintf (stdout, "---- chip run ----\n"); 1367 // psMetadataPrint (stderr, entry->data.md, 1); 1368 1369 for (int i = 0; i < numImportTables; i++) { 1370 psMetadataItem *item = psMetadataLookup (input, tables[i]); 1371 psAssert (item, "entry not in input?"); 1372 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1373 1374 switch (i) { 1375 case 0: 1376 for (int i = 0; i < item->data.list->n; i++) { 1377 psMetadataItem *entry = psListGet (item->data.list, i); 1378 assert (entry); 1379 assert (entry->type == PS_DATA_METADATA); 1380 chipImfileRow *chipImfile = chipImfileObjectFromMetadata (entry->data.md); 1381 chipImfileInsertObject (config->dbh, chipImfile); 1382 1383 // fprintf (stdout, "---- row %d ----\n", i); 1384 // psMetadataPrint (stderr, entry->data.md, 1); 1385 } 1386 break; 1387 1388 case 1: 1389 for (int i = 0; i < item->data.list->n; i++) { 1390 psMetadataItem *entry = psListGet (item->data.list, i); 1391 assert (entry); 1392 assert (entry->type == PS_DATA_METADATA); 1393 chipProcessedImfileRow *chipProcessedImfile = chipProcessedImfileObjectFromMetadata (entry->data.md); 1394 chipProcessedImfileInsertObject (config->dbh, chipProcessedImfile); 1395 1396 // fprintf (stdout, "---- row %d ----\n", i); 1397 // psMetadataPrint (stderr, entry->data.md, 1); 1398 } 1399 break; 1400 } 1445 1401 } 1446 1402 -
trunk/ippTools/src/chiptool.h
r23281 r23310 32 32 CHIPTOOL_MODE_REVERTPROCESSEDIMFILE, 33 33 CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE, 34 CHIPTOOL_MODE_ ADVANCEEXP,34 CHIPTOOL_MODE_PROMOTEEXP, 35 35 CHIPTOOL_MODE_BLOCK, 36 36 CHIPTOOL_MODE_MASKED, … … 43 43 CHIPTOOL_MODE_RUN, 44 44 CHIPTOOL_MODE_TOCLEANEDIMFILE, 45 CHIPTOOL_MODE_TOCLEANEDIMFILE_FROM_SCRUBBED,46 45 CHIPTOOL_MODE_TOFULLIMFILE, 47 46 CHIPTOOL_MODE_TOPURGEDIMFILE, -
trunk/ippTools/src/chiptoolConfig.c
r23281 r23310 172 172 // -updateprocessedimfile 173 173 psMetadata *updateprocessedimfileArgs = psMetadataAlloc(); 174 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip ID", 0); 175 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 176 psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 177 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 178 179 // -advanceexp 180 psMetadata *advanceexpArgs = psMetadataAlloc(); 181 psMetadataAddS64(advanceexpArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip ID", 0); 182 psMetadataAddStr(advanceexpArgs, PS_LIST_TAIL, "-label", 0, "advance exposures for specified label", NULL); 183 psMetadataAddU64(advanceexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 174 psMetadataAddS64(updateprocessedimfileArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip ID", 0); 175 psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search by class ID", NULL); 176 psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code (required)", 0); 177 178 // -promoteexp 179 psMetadata *promoteexpArgs = psMetadataAlloc(); 180 psMetadataAddS64(promoteexpArgs, PS_LIST_TAIL, "-chip_id", 0, "search by chip ID", 0); 181 psMetadataAddStr(promoteexpArgs, PS_LIST_TAIL, "-label", 0, "promote exposures for specified label", NULL); 182 psMetadataAddU64(promoteexpArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 184 183 185 184 // -block … … 235 234 psMetadataAddStr(tocleanedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "class ID to update", NULL); 236 235 237 // // -tocleanedimfile_from_scrubbed238 // psMetadata *tocleanedimfile_from_scrubbedArgs = psMetadataAlloc();239 // psMetadataAddS64(tocleanedimfile_from_scrubbedArgs, PS_LIST_TAIL, "-chip_id", 0, "chip ID to update", 0);240 // psMetadataAddStr(tocleanedimfile_from_scrubbedArgs, PS_LIST_TAIL, "-class_id", 0, "class ID to update", NULL);241 //242 236 // -tofullimfile 243 237 psMetadata *tofullimfileArgs = psMetadataAlloc(); … … 271 265 PXOPT_ADD_MODE("-updateprocessedimfile","change procesed imfile properties", CHIPTOOL_MODE_UPDATEPROCESSEDIMFILE,updateprocessedimfileArgs); 272 266 PXOPT_ADD_MODE("-revertprocessedimfile","undo a processed imfile", CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,revertprocessedimfileArgs); 273 PXOPT_ADD_MODE("- advanceexp", "advance completed exposures", CHIPTOOL_MODE_ADVANCEEXP, advanceexpArgs);267 PXOPT_ADD_MODE("-promoteexp", "promote completed exposures", CHIPTOOL_MODE_PROMOTEEXP, promoteexpArgs); 274 268 PXOPT_ADD_MODE("-block", "set a label block", CHIPTOOL_MODE_BLOCK, blockArgs); 275 269 PXOPT_ADD_MODE("-masked", "show blocked labels", CHIPTOOL_MODE_MASKED, maskedArgs); … … 281 275 PXOPT_ADD_MODE("-run", "show runs", CHIPTOOL_MODE_RUN, runArgs); 282 276 PXOPT_ADD_MODE("-tocleanedimfile", "set imfile state to cleaned", CHIPTOOL_MODE_TOCLEANEDIMFILE, tocleanedimfileArgs); 283 // PXOPT_ADD_MODE("-tocleanedimfile_from_scrubbed", "set imfile state to cleaned (for goto_scrubbed)", CHIPTOOL_MODE_TOCLEANEDIMFILE_FROM_SCRUBBED, tocleanedimfile_from_scrubbedArgs);284 277 PXOPT_ADD_MODE("-tofullimfile", "set imfile state to full", CHIPTOOL_MODE_TOFULLIMFILE, tofullimfileArgs); 285 278 PXOPT_ADD_MODE("-topurgedimfile", "set imfile state to purged", CHIPTOOL_MODE_TOPURGEDIMFILE, topurgedimfileArgs); -
trunk/ippTools/src/dettool.c
r23259 r23310 28 28 static bool inputMode(pxConfig *config); 29 29 static bool rawMode(pxConfig *config); 30 static bool exportrunMode(pxConfig *config); 31 static bool importrunMode(pxConfig *config); 30 32 31 33 // run … … 46 48 } \ 47 49 break; 48 50 /* 51 typedef struct ExportTable { 52 char tableName[80]; 53 char sqlFilename[80]; 54 } ExportTable; 55 */ 49 56 int main(int argc, char **argv) 50 57 { … … 146 153 MODECASE(DETTOOL_MODE_REGISTER_DETREND, register_detrendMode); 147 154 MODECASE(DETTOOL_MODE_REGISTER_DETREND_IMFILE, register_detrend_imfileMode); 155 MODECASE(DETTOOL_MODE_EXPORTRUN, exportrunMode); 156 MODECASE(DETTOOL_MODE_IMPORTRUN, importrunMode); 148 157 default: 149 158 psAbort("invalid option (this should not happen)"); … … 578 587 // generate a random-valued vector, return an index sorted by the random values 579 588 psVector *randomVector = psVectorAlloc(detrendExps->n, PS_TYPE_F32); // random values 580 psRandom *rng = psRandomAllocSpecific(PS_RANDOM_TAUS, 0); 589 /* 590 * change due to PAP work on random number generator? 591 * psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 0); 592 */ 593 psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS); 581 594 for (int i = 0; i < randomVector->n; i++) { 582 595 randomVector->data.F32[i] = psRandomUniform(rng); … … 1996 2009 } 1997 2010 2011 bool exportrunMode(pxConfig *config) 2012 { 2013 typedef struct ExportTable { 2014 char tableName[80]; 2015 char sqlFilename[80]; 2016 } ExportTable; 2017 2018 int numExportTables = 12; 2019 2020 PS_ASSERT_PTR_NON_NULL(config, NULL); 2021 2022 PXOPT_LOOKUP_S64(det_id, config->args, "-det_id", true, false); 2023 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 2024 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 2025 2026 FILE *f = fopen (outfile, "w"); 2027 if (f == NULL) { 2028 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 2029 return false; 2030 } 2031 2032 psMetadata *where = psMetadataAlloc(); 2033 PXOPT_COPY_S64(config->args, where, "-det_id", "det_id", "=="); 2034 2035 ExportTable tables [] = { 2036 {"detInputExp", "dettool_export_input_exp.sql"}, 2037 {"detNormalizedExp", "dettool_export_normalized_exp.sql"}, 2038 {"detNormalizedImfile", "dettool_export_normalized_imfile.sql"}, 2039 {"detNormalizedStatImfile", "dettool_export_normalized_stat_imfile.sql"}, 2040 {"detProcessedExp", "dettool_export_processed_exp.sql"}, 2041 {"detProcessedImfile", "dettool_export_processed_imfile.sql"}, 2042 {"detRegisteredImfile", "dettool_export_registered_imfile.sql"}, 2043 {"detResidExp", "dettool_export_resid_exp.sql"}, 2044 {"detResidImfile", "dettool_export_resid_imfile.sql"}, 2045 {"detRun", "dettool_export_run.sql"}, 2046 {"detRunSummary", "dettool_export_run_summary.sql"}, 2047 {"detStackedImfile", "dettool_export_stacked_imfile.sql"}, 2048 }; 2049 2050 for (int i=0; i < numExportTables; i++) { 2051 psString query = pxDataGet(tables[i].sqlFilename); 2052 if (!query) { 2053 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 2054 return false; 2055 } 2056 2057 if (where && psListLength(where->list)) { 2058 psString whereClause = psDBGenerateWhereSQL(where, NULL); 2059 psStringAppend(&query, " %s", whereClause); 2060 psFree(whereClause); 2061 } 2062 2063 // treat limit == 0 as "no limit" 2064 if (limit) { 2065 psString limitString = psDBGenerateLimitSQL(limit); 2066 psStringAppend(&query, " %s", limitString); 2067 psFree(limitString); 2068 } 2069 2070 if (!p_psDBRunQuery(config->dbh, query)) { 2071 psError(PS_ERR_UNKNOWN, false, "database error"); 2072 psFree(query); 2073 return false; 2074 } 2075 psFree(query); 2076 2077 psArray *output = p_psDBFetchResult(config->dbh); 2078 if (!output) { 2079 psError(PS_ERR_UNKNOWN, false, "database error"); 2080 return false; 2081 } 2082 if (!psArrayLength(output)) { 2083 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 2084 psFree(output); 2085 return true; 2086 } 2087 2088 // we must write the export table in non-simple (true) format 2089 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) { 2090 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 2091 psFree(output); 2092 return false; 2093 } 2094 psFree(output); 2095 2096 } 2097 2098 fclose (f); 2099 2100 return true; 2101 } 2102 2103 bool importrunMode(pxConfig *config) 2104 { 2105 unsigned int nFail; 2106 2107 int numImportTables = 11; 2108 2109 char tables[11] [80] = {"detInputExp", "detNormalizedExp", 2110 "detNormalizedStatImfile", "detProcessedExp", "detProcessedImfile", 2111 "detRegisteredImfile", "detResidExp", "detResidImfile", 2112 "detNormalizedImfile", "detRunSummary", "detStackedImfile"}; 2113 2114 PS_ASSERT_PTR_NON_NULL(config, NULL); 2115 2116 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 2117 2118 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 2119 2120 fprintf (stdout, "---- input ----\n"); 2121 psMetadataPrint (stderr, input, 1); 2122 2123 psMetadataItem *item = psMetadataLookup (input, "detRun"); 2124 psAssert (item, "entry not in input?"); 2125 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 2126 2127 psMetadataItem *entry = psListGet (item->data.list, 0); 2128 assert (entry); 2129 assert (entry->type == PS_DATA_METADATA); 2130 detRunRow *detRun = detRunObjectFromMetadata (entry->data.md); 2131 detRunInsertObject (config->dbh, detRun); 2132 2133 // fprintf (stdout, "---- det run ----\n"); 2134 // psMetadataPrint (stderr, entry->data.md, 1); 2135 2136 for (int i = 0; i < numImportTables; i++) { 2137 item = psMetadataLookup (input, tables[i]); 2138 psAssert (item, "entry not in input?"); 2139 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 2140 2141 switch (i) { 2142 case 0: 2143 for (int i = 0; i < item->data.list->n; i++) { 2144 entry = psListGet (item->data.list, i); 2145 assert (entry); 2146 assert (entry->type == PS_DATA_METADATA); 2147 detInputExpRow *detInputExp = detInputExpObjectFromMetadata (entry->data.md); 2148 detInputExpInsertObject (config->dbh, detInputExp); 2149 2150 // fprintf (stdout, "---- row %d ----\n", i); 2151 // psMetadataPrint (stderr, entry->data.md, 1); 2152 } 2153 break; 2154 2155 case 1: 2156 for (int i = 0; i < item->data.list->n; i++) { 2157 entry = psListGet (item->data.list, i); 2158 assert (entry); 2159 assert (entry->type == PS_DATA_METADATA); 2160 detNormalizedExpRow *detNormalizedExp = detNormalizedExpObjectFromMetadata (entry->data.md); 2161 detNormalizedExpInsertObject (config->dbh, detNormalizedExp); 2162 2163 // fprintf (stdout, "---- row %d ----\n", i); 2164 // psMetadataPrint (stderr, entry->data.md, 1); 2165 } 2166 break; 2167 2168 case 2: 2169 for (int i = 0; i < item->data.list->n; i++) { 2170 entry = psListGet (item->data.list, i); 2171 assert (entry); 2172 assert (entry->type == PS_DATA_METADATA); 2173 detNormalizedStatImfileRow *detNormalizedStatImfile = detNormalizedStatImfileObjectFromMetadata (entry->data.md); 2174 detNormalizedStatImfileInsertObject (config->dbh, detNormalizedStatImfile); 2175 2176 // fprintf (stdout, "---- row %d ----\n", i); 2177 // psMetadataPrint (stderr, entry->data.md, 1); 2178 } 2179 break; 2180 2181 case 3: 2182 for (int i = 0; i < item->data.list->n; i++) { 2183 entry = psListGet (item->data.list, i); 2184 assert (entry); 2185 assert (entry->type == PS_DATA_METADATA); 2186 detProcessedExpRow *detProcessedExp = detProcessedExpObjectFromMetadata (entry->data.md); 2187 detProcessedExpInsertObject (config->dbh, detProcessedExp); 2188 2189 // fprintf (stdout, "---- row %d ----\n", i); 2190 // psMetadataPrint (stderr, entry->data.md, 1); 2191 } 2192 break; 2193 2194 case 4: 2195 for (int i = 0; i < item->data.list->n; i++) { 2196 entry = psListGet (item->data.list, i); 2197 assert (entry); 2198 assert (entry->type == PS_DATA_METADATA); 2199 detProcessedImfileRow *detProcessedImfile = detProcessedImfileObjectFromMetadata (entry->data.md); 2200 detProcessedImfileInsertObject (config->dbh, detProcessedImfile); 2201 2202 // fprintf (stdout, "---- row %d ----\n", i); 2203 // psMetadataPrint (stderr, entry->data.md, 1); 2204 } 2205 break; 2206 2207 case 5: 2208 for (int i = 0; i < item->data.list->n; i++) { 2209 entry = psListGet (item->data.list, i); 2210 assert (entry); 2211 assert (entry->type == PS_DATA_METADATA); 2212 detRegisteredImfileRow *detRegisteredImfile = detRegisteredImfileObjectFromMetadata (entry->data.md); 2213 detRegisteredImfileInsertObject (config->dbh, detRegisteredImfile); 2214 2215 // fprintf (stdout, "---- row %d ----\n", i); 2216 // psMetadataPrint (stderr, entry->data.md, 1); 2217 } 2218 break; 2219 2220 case 6: 2221 for (int i = 0; i < item->data.list->n; i++) { 2222 entry = psListGet (item->data.list, i); 2223 assert (entry); 2224 assert (entry->type == PS_DATA_METADATA); 2225 detResidExpRow *detResidExp = detResidExpObjectFromMetadata (entry->data.md); 2226 detResidExpInsertObject (config->dbh, detResidExp); 2227 2228 // fprintf (stdout, "---- row %d ----\n", i); 2229 // psMetadataPrint (stderr, entry->data.md, 1); 2230 } 2231 break; 2232 2233 case 7: 2234 for (int i = 0; i < item->data.list->n; i++) { 2235 entry = psListGet (item->data.list, i); 2236 assert (entry); 2237 assert (entry->type == PS_DATA_METADATA); 2238 detResidImfileRow *detResidImfile = detResidImfileObjectFromMetadata (entry->data.md); 2239 detResidImfileInsertObject (config->dbh, detResidImfile); 2240 2241 // fprintf (stdout, "---- row %d ----\n", i); 2242 // psMetadataPrint (stderr, entry->data.md, 1); 2243 } 2244 break; 2245 2246 case 8: 2247 for (int i = 0; i < item->data.list->n; i++) { 2248 entry = psListGet (item->data.list, i); 2249 assert (entry); 2250 assert (entry->type == PS_DATA_METADATA); 2251 detNormalizedImfileRow *detNormalizedImfile = detNormalizedImfileObjectFromMetadata (entry->data.md); 2252 detNormalizedImfileInsertObject (config->dbh, detNormalizedImfile); 2253 2254 // fprintf (stdout, "---- row %d ----\n", i); 2255 // psMetadataPrint (stderr, entry->data.md, 1); 2256 } 2257 break; 2258 2259 case 9: 2260 for (int i = 0; i < item->data.list->n; i++) { 2261 entry = psListGet (item->data.list, i); 2262 assert (entry); 2263 assert (entry->type == PS_DATA_METADATA); 2264 detRunSummaryRow *detRunSummary = detRunSummaryObjectFromMetadata (entry->data.md); 2265 detRunSummaryInsertObject (config->dbh, detRunSummary); 2266 2267 // fprintf (stdout, "---- row %d ----\n", i); 2268 // psMetadataPrint (stderr, entry->data.md, 1); 2269 } 2270 break; 2271 2272 case 10: 2273 for (int i = 0; i < item->data.list->n; i++) { 2274 entry = psListGet (item->data.list, i); 2275 assert (entry); 2276 assert (entry->type == PS_DATA_METADATA); 2277 detStackedImfileRow *detStackedImfile = detStackedImfileObjectFromMetadata (entry->data.md); 2278 detStackedImfileInsertObject (config->dbh, detStackedImfile); 2279 2280 // fprintf (stdout, "---- row %d ----\n", i); 2281 // psMetadataPrint (stderr, entry->data.md, 1); 2282 } 2283 break; 2284 } 2285 } 2286 2287 return true; 2288 } 2289 1998 2290 #if 0 1999 2291 // XXX this function was left in commented as this method may be useful in the -
trunk/ippTools/src/dettool.h
r19814 r23310 114 114 DETTOOL_MODE_RERUN, 115 115 DETTOOL_MODE_REGISTER_DETREND, 116 DETTOOL_MODE_REGISTER_DETREND_IMFILE 116 DETTOOL_MODE_REGISTER_DETREND_IMFILE, 117 118 DETTOOL_MODE_EXPORTRUN, 119 DETTOOL_MODE_IMPORTRUN 117 120 } dettoolMode; 118 121 -
trunk/ippTools/src/dettoolConfig.c
r23229 r23310 73 73 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-time_begin", 0, "detrend applies to exposures taken during this period", NULL); 74 74 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-time_end", 0, "detrend applies to exposures taken during this period", NULL); 75 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-use_begin", 0, "start of detrend run period (CURRENTLY NOT USED)", NULL);76 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-use_end", 0, "end of detrend run applicable period (CURRENTLY NOT USED)", NULL);75 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-use_begin", 0, "start of detrend run applicable period", NULL); 76 psMetadataAddTime(definebytagArgs, PS_LIST_TAIL, "-use_end", 0, "end of detrend run applicable period", NULL); 77 77 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-reduction", 0, "define reduction class for processing", NULL); 78 78 psMetadataAddStr(definebytagArgs, PS_LIST_TAIL, "-label", 0, "define detrun label", NULL); … … 104 104 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-time_begin", 0, "detrend applies to exposures taken during this period", NULL); 105 105 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-time_end", 0, "detrend applies to exposures taken during this period", NULL); 106 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-use_begin", 0, "start of detrend run applicable period (CURRENTLY NOT USED)", NULL);107 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-use_end", 0, "end of detrend run applicable period (CURRENTLY NOT USED)", NULL);106 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-use_begin", 0, "start of detrend run applicable period", NULL); 107 psMetadataAddTime(definebyqueryArgs, PS_LIST_TAIL, "-use_end", 0, "end of detrend run applicable period", NULL); 108 108 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_exp_type", 0, "search for exp_type", NULL); 109 109 psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-select_inst", 0, "search for camera", NULL); … … 159 159 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_time_begin", 0, "start of period to apply detrend too", NULL); 160 160 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_time_end", 0, "end of period to apply detrend too", NULL); 161 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_use_begin", 0, "start of detrend run applicable period (CURRENTLY NOT USED)", NULL);162 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_use_end", 0, "end of detrend run applicable period (CURRENTLY NOT USED)", NULL);161 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_use_begin", 0, "start of detrend run applicable period", NULL); 162 psMetadataAddTime(definebydetrunArgs, PS_LIST_TAIL, "-set_use_end", 0, "end of detrend run applicable period", NULL); 163 163 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_reduction", 0, "define reduction class for processing", NULL); 164 164 psMetadataAddStr(definebydetrunArgs, PS_LIST_TAIL, "-set_label", 0, "define detrun label", NULL); … … 640 640 // -residimfile 641 641 psMetadata *residimfileArgs = psMetadataAlloc(); 642 psMetadataAddS64(residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0);643 psMetadataAddS32(residimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0);644 psMetadataAddS64(residimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", 0);645 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL);646 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL);647 psMetadataAddU64(residimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);642 psMetadataAddS64(residimfileArgs, PS_LIST_TAIL, "-det_id", 0, "search for detrend ID", 0); 643 psMetadataAddS32(residimfileArgs, PS_LIST_TAIL, "-iteration", 0, "search for iteration number", 0); 644 psMetadataAddS64(residimfileArgs, PS_LIST_TAIL, "-exp_id", 0, "search by detrend ID", 0); 645 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-class_id", 0, "search for class ID", NULL); 646 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-recip", 0, "search for recipe", NULL); 647 psMetadataAddU64(residimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 648 648 psMetadataAddBool(residimfileArgs, PS_LIST_TAIL, "-faulted", 0, "only return imfiles with a fault status set", false); 649 649 psMetadataAddBool(residimfileArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false); 650 psMetadataAddBool(residimfileArgs, PS_LIST_TAIL, "-included", 0, "restrict results to exposures 'includeded' in the current iteration", false); 651 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-select_state", 0, "search for state", NULL); 650 psMetadataAddStr(residimfileArgs, PS_LIST_TAIL, "-select_state", 0, "search for state", NULL); 652 651 653 652 // -revertresidimfile … … 834 833 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-time_begin", 0, "detrend applies to exposures taken during this period", NULL); 835 834 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-time_end", 0, "detrend applies to exposures taken during this period", NULL); 836 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-use_begin", 0, "start of detrend run applicable period (CURRENTLY NOT USED)", NULL);837 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-use_end", 0, "end of detrend run applicable period (CURRENTLY NOT USED)", NULL);835 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-use_begin", 0, "start of detrend run applicable period", NULL); 836 psMetadataAddTime(register_detrendArgs, PS_LIST_TAIL, "-use_end", 0, "end of detrend run applicable period", NULL); 838 837 psMetadataAddS64(register_detrendArgs, PS_LIST_TAIL, "-ref_det_id", 0, "define reference det_id", 0); 839 838 psMetadataAddS32(register_detrendArgs, PS_LIST_TAIL, "-ref_iter", 0, "define reference iteration", -1); … … 856 855 psMetadataAddStr(register_detrend_imfileArgs, PS_LIST_TAIL, "-path_base", 0, "define base output location", NULL); 857 856 857 // -exportrun 858 psMetadata *exportrunArgs = psMetadataAlloc(); 859 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-det_id", 0, "export this detrend ID (required)", 0); 860 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL); 861 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 862 863 // -importrun 864 psMetadata *importrunArgs = psMetadataAlloc(); 865 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 866 867 858 868 psFree(now); 859 869 … … 948 958 PXOPT_ADD_MODE("-register_detrend", "", DETTOOL_MODE_REGISTER_DETREND, register_detrendArgs); 949 959 PXOPT_ADD_MODE("-register_detrend_imfile", "", DETTOOL_MODE_REGISTER_DETREND_IMFILE, register_detrend_imfileArgs); 960 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", DETTOOL_MODE_EXPORTRUN, exportrunArgs); 961 PXOPT_ADD_MODE("-importrun", "import run from metadata file", DETTOOL_MODE_IMPORTRUN, importrunArgs); 950 962 951 963 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/difftool.c
r21402 r23310 45 45 static bool donecleanupMode(pxConfig *config); 46 46 static bool updatediffskyfileMode(pxConfig *config); 47 static bool exportrunMode(pxConfig *config); 48 static bool importrunMode(pxConfig *config); 47 49 48 50 static bool setdiffRunState(pxConfig *config, psS64 diff_id, const char *state); … … 81 83 MODECASE(DIFFTOOL_MODE_DONECLEANUP, donecleanupMode); 82 84 MODECASE(DIFFTOOL_MODE_UPDATEDIFFSKYFILE, updatediffskyfileMode); 85 MODECASE(DIFFTOOL_MODE_EXPORTRUN, exportrunMode); 86 MODECASE(DIFFTOOL_MODE_IMPORTRUN, importrunMode); 83 87 default: 84 88 psAbort("invalid option (this should not happen)"); … … 1437 1441 } 1438 1442 1443 bool exportrunMode(pxConfig *config) 1444 { 1445 typedef struct ExportTable { 1446 char tableName[80]; 1447 char sqlFilename[80]; 1448 } ExportTable; 1449 1450 int numExportFiles = 3; 1451 1452 PS_ASSERT_PTR_NON_NULL(config, NULL); 1453 1454 PXOPT_LOOKUP_S64(det_id, config->args, "-diff_id", true, false); 1455 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 1456 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1457 1458 FILE *f = fopen (outfile, "w"); 1459 if (f == NULL) { 1460 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 1461 return false; 1462 } 1463 1464 psMetadata *where = psMetadataAlloc(); 1465 PXOPT_COPY_S64(config->args, where, "-diff_id", "diff_id", "=="); 1466 1467 ExportTable tables [] = { 1468 {"diffRun", "difftool_export_run.sql"}, 1469 {"diffInputSkyfile", "difftool_export_input_skyfile.sql"}, 1470 {"diffSkyfile", "difftool_export_skyfile.sql"}, 1471 }; 1472 1473 for (int i=0; i < numExportFiles; i++) { 1474 psString query = pxDataGet(tables[i].sqlFilename); 1475 if (!query) { 1476 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1477 return false; 1478 } 1479 1480 if (where && psListLength(where->list)) { 1481 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1482 psStringAppend(&query, " %s", whereClause); 1483 psFree(whereClause); 1484 } 1485 1486 // treat limit == 0 as "no limit" 1487 if (limit) { 1488 psString limitString = psDBGenerateLimitSQL(limit); 1489 psStringAppend(&query, " %s", limitString); 1490 psFree(limitString); 1491 } 1492 1493 if (!p_psDBRunQuery(config->dbh, query)) { 1494 psError(PS_ERR_UNKNOWN, false, "database error"); 1495 psFree(query); 1496 return false; 1497 } 1498 psFree(query); 1499 1500 psArray *output = p_psDBFetchResult(config->dbh); 1501 if (!output) { 1502 psError(PS_ERR_UNKNOWN, false, "database error"); 1503 return false; 1504 } 1505 if (!psArrayLength(output)) { 1506 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1507 psFree(output); 1508 return true; 1509 } 1510 1511 // we must write the export table in non-simple (true) format 1512 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) { 1513 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1514 psFree(output); 1515 return false; 1516 } 1517 psFree(output); 1518 } 1519 1520 fclose (f); 1521 1522 return true; 1523 } 1524 1525 bool importrunMode(pxConfig *config) 1526 { 1527 unsigned int nFail; 1528 1529 int numImportTables = 2; 1530 1531 char tables[2] [80] = {"diffInputSkyfile", "diffSkyfile"}; 1532 1533 PS_ASSERT_PTR_NON_NULL(config, NULL); 1534 1535 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 1536 1537 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1538 1539 fprintf (stdout, "---- input ----\n"); 1540 psMetadataPrint (stderr, input, 1); 1541 1542 psMetadataItem *item = psMetadataLookup (input, "diffRun"); 1543 psAssert (item, "entry not in input?"); 1544 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1545 1546 psMetadataItem *entry = psListGet (item->data.list, 0); 1547 assert (entry); 1548 assert (entry->type == PS_DATA_METADATA); 1549 diffRunRow *diffRun = diffRunObjectFromMetadata (entry->data.md); 1550 diffRunInsertObject (config->dbh, diffRun); 1551 1552 // fprintf (stdout, "---- diff run ----\n"); 1553 // psMetadataPrint (stderr, entry->data.md, 1); 1554 1555 for (int i = 0; i < numImportTables; i++) { 1556 item = psMetadataLookup (input, tables[i]); 1557 psAssert (item, "entry not in input?"); 1558 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1559 1560 switch (i) { 1561 case 0: 1562 for (int i = 0; i < item->data.list->n; i++) { 1563 entry = psListGet (item->data.list, i); 1564 assert (entry); 1565 assert (entry->type == PS_DATA_METADATA); 1566 diffInputSkyfileRow *diffInputSkyfile = diffInputSkyfileObjectFromMetadata (entry->data.md); 1567 diffInputSkyfileInsertObject (config->dbh, diffInputSkyfile); 1568 1569 // fprintf (stdout, "---- row %d ----\n", i); 1570 // psMetadataPrint (stderr, entry->data.md, 1); 1571 } 1572 break; 1573 1574 case 1: 1575 for (int i = 0; i < item->data.list->n; i++) { 1576 entry = psListGet (item->data.list, i); 1577 assert (entry); 1578 assert (entry->type == PS_DATA_METADATA); 1579 diffSkyfileRow *diffSkyfile = diffSkyfileObjectFromMetadata (entry->data.md); 1580 diffSkyfileInsertObject (config->dbh, diffSkyfile); 1581 1582 // fprintf (stdout, "---- row %d ----\n", i); 1583 // psMetadataPrint (stderr, entry->data.md, 1); 1584 } 1585 break; 1586 } 1587 } 1588 1589 return true; 1590 } -
trunk/ippTools/src/difftool.h
r19677 r23310 39 39 DIFFTOOL_MODE_DONECLEANUP, 40 40 DIFFTOOL_MODE_UPDATEDIFFSKYFILE, 41 DIFFTOOL_MODE_EXPORTRUN, 42 DIFFTOOL_MODE_IMPORTRUN 41 43 } difftoolMode; 42 44 -
trunk/ippTools/src/difftoolConfig.c
r21308 r23310 187 187 psMetadataAddS16(updatediffskyfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code (required)", 0); 188 188 189 // -exportrun 190 psMetadata *exportrunArgs = psMetadataAlloc(); 191 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-diff_id", 0, "export this diff ID (required)", 0); 192 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL); 193 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 194 195 // -importrun 196 psMetadata *importrunArgs = psMetadataAlloc(); 197 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 198 199 189 200 190 201 psFree(now); … … 207 218 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", DIFFTOOL_MODE_DONECLEANUP, donecleanupArgs); 208 219 PXOPT_ADD_MODE("-updatediffskyfile", "update fault code for a diffskyfile", DIFFTOOL_MODE_UPDATEDIFFSKYFILE, updatediffskyfileArgs); 220 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", DIFFTOOL_MODE_EXPORTRUN, exportrunArgs); 221 PXOPT_ADD_MODE("-importrun", "import run from metadata file", DIFFTOOL_MODE_IMPORTRUN, importrunArgs); 209 222 210 223 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/faketool.c
r23281 r23310 41 41 static bool revertprocessedimfileMode(pxConfig *config); 42 42 static bool updateprocessedimfileMode(pxConfig *config); 43 static bool advanceexpMode(pxConfig *config);43 static bool promoteexpMode(pxConfig *config); 44 44 static bool blockMode(pxConfig *config); 45 45 static bool maskedMode(pxConfig *config); … … 52 52 static bool tofullimfileMode(pxConfig *config); 53 53 static bool topurgedimfileMode(pxConfig *config); 54 static bool exportrunMode(pxConfig *config); 55 static bool importrunMode(pxConfig *config); 54 56 55 57 # define MODECASE(caseName, func) \ … … 78 80 MODECASE(FAKETOOL_MODE_REVERTPROCESSEDIMFILE, revertprocessedimfileMode); 79 81 MODECASE(FAKETOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileMode); 80 MODECASE(FAKETOOL_MODE_ ADVANCEEXP, advanceexpMode);82 MODECASE(FAKETOOL_MODE_PROMOTEEXP, promoteexpMode); 81 83 MODECASE(FAKETOOL_MODE_BLOCK, blockMode); 82 84 MODECASE(FAKETOOL_MODE_MASKED, maskedMode); … … 89 91 MODECASE(FAKETOOL_MODE_TOFULLIMFILE, tofullimfileMode); 90 92 MODECASE(FAKETOOL_MODE_TOPURGEDIMFILE, topurgedimfileMode); 93 MODECASE(FAKETOOL_MODE_EXPORTRUN, exportrunMode); 94 MODECASE(FAKETOOL_MODE_IMPORTRUN, importrunMode); 91 95 92 96 default: … … 1048 1052 } 1049 1053 1050 static bool advanceexpMode(pxConfig *config)1054 static bool promoteexpMode(pxConfig *config) 1051 1055 { 1052 1056 PS_ASSERT_PTR_NON_NULL(config, false); … … 1225 1229 return change_imfile_data_state(config, "purged", "goto_purged"); 1226 1230 } 1231 1232 bool exportrunMode(pxConfig *config) 1233 { 1234 typedef struct ExportTable { 1235 char tableName[80]; 1236 char sqlFilename[80]; 1237 } ExportTable; 1238 1239 int numExportTables = 2; 1240 1241 PS_ASSERT_PTR_NON_NULL(config, NULL); 1242 1243 PXOPT_LOOKUP_S64(det_id, config->args, "-fake_id", true, false); 1244 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 1245 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1246 1247 FILE *f = fopen (outfile, "w"); 1248 if (f == NULL) { 1249 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 1250 return false; 1251 } 1252 1253 psMetadata *where = psMetadataAlloc(); 1254 PXOPT_COPY_S64(config->args, where, "-fake_id", "fake_id", "=="); 1255 1256 ExportTable tables [] = { 1257 {"fakeRun", "faketool_export_run.sql"}, 1258 {"fakeProcessedImfile", "faketool_export_processed_imfile.sql"}, 1259 }; 1260 1261 for (int i=0; i < numExportTables; i++) { 1262 psString query = pxDataGet(tables[i].sqlFilename); 1263 if (!query) { 1264 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1265 return false; 1266 } 1267 1268 if (where && psListLength(where->list)) { 1269 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1270 psStringAppend(&query, " %s", whereClause); 1271 psFree(whereClause); 1272 } 1273 1274 // treat limit == 0 as "no limit" 1275 if (limit) { 1276 psString limitString = psDBGenerateLimitSQL(limit); 1277 psStringAppend(&query, " %s", limitString); 1278 psFree(limitString); 1279 } 1280 1281 if (!p_psDBRunQuery(config->dbh, query)) { 1282 psError(PS_ERR_UNKNOWN, false, "database error"); 1283 psFree(query); 1284 return false; 1285 } 1286 psFree(query); 1287 1288 psArray *output = p_psDBFetchResult(config->dbh); 1289 if (!output) { 1290 psError(PS_ERR_UNKNOWN, false, "database error"); 1291 return false; 1292 } 1293 if (!psArrayLength(output)) { 1294 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1295 psFree(output); 1296 return true; 1297 } 1298 1299 // we must write the export table in non-simple (true) format 1300 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) { 1301 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1302 psFree(output); 1303 return false; 1304 } 1305 psFree(output); 1306 } 1307 1308 fclose (f); 1309 1310 return true; 1311 } 1312 1313 bool importrunMode(pxConfig *config) 1314 { 1315 unsigned int nFail; 1316 1317 PS_ASSERT_PTR_NON_NULL(config, NULL); 1318 1319 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 1320 1321 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1322 1323 fprintf (stdout, "---- input ----\n"); 1324 psMetadataPrint (stderr, input, 1); 1325 1326 psMetadataItem *item = psMetadataLookup (input, "fakeRun"); 1327 psAssert (item, "entry not in input?"); 1328 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1329 1330 psMetadataItem *entry = psListGet (item->data.list, 0); 1331 assert (entry); 1332 assert (entry->type == PS_DATA_METADATA); 1333 fakeRunRow *fakeRun = fakeRunObjectFromMetadata (entry->data.md); 1334 fakeRunInsertObject (config->dbh, fakeRun); 1335 1336 // fprintf (stdout, "---- fake run ----\n"); 1337 // psMetadataPrint (stderr, entry->data.md, 1); 1338 1339 item = psMetadataLookup (input, "fakeProcessedImfile"); 1340 psAssert (item, "entry not in input?"); 1341 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1342 1343 for (int i = 0; i < item->data.list->n; i++) { 1344 psMetadataItem *entry = psListGet (item->data.list, i); 1345 assert (entry); 1346 assert (entry->type == PS_DATA_METADATA); 1347 fakeProcessedImfileRow *fakeProcessedImfile = fakeProcessedImfileObjectFromMetadata (entry->data.md); 1348 fakeProcessedImfileInsertObject (config->dbh, fakeProcessedImfile); 1349 1350 // fprintf (stdout, "---- row %d ----\n", i); 1351 // psMetadataPrint (stderr, entry->data.md, 1); 1352 } 1353 1354 return true; 1355 } -
trunk/ippTools/src/faketool.h
r23281 r23310 33 33 FAKETOOL_MODE_REVERTPROCESSEDIMFILE, 34 34 FAKETOOL_MODE_UPDATEPROCESSEDIMFILE, 35 FAKETOOL_MODE_ ADVANCEEXP,35 FAKETOOL_MODE_PROMOTEEXP, 36 36 FAKETOOL_MODE_BLOCK, 37 37 FAKETOOL_MODE_MASKED, … … 45 45 FAKETOOL_MODE_TOFULLIMFILE, 46 46 FAKETOOL_MODE_TOPURGEDIMFILE, 47 FAKETOOL_MODE_EXPORTRUN, 48 FAKETOOL_MODE_IMPORTRUN 47 49 } FAKETOOLMode; 48 50 -
trunk/ippTools/src/faketoolConfig.c
r23281 r23310 242 242 243 243 244 // - advanceexp245 psMetadata * advanceexpArgs = psMetadataAlloc();246 psMetadataAddS64( advanceexpArgs, PS_LIST_TAIL, "-fake_id", 0, "search by fake ID", 0);247 psMetadataAddStr( advanceexpArgs, PS_LIST_TAIL, "-label", 0, "search by label ", NULL);248 psMetadataAddU64( advanceexpArgs, PS_LIST_TAIL, "-limit", 0, "limit exposures to advance to N items", 0);244 // -promoteexp 245 psMetadata *promoteexpArgs = psMetadataAlloc(); 246 psMetadataAddS64(promoteexpArgs, PS_LIST_TAIL, "-fake_id", 0, "search by fake ID", 0); 247 psMetadataAddStr(promoteexpArgs, PS_LIST_TAIL, "-label", 0, "search by label ", NULL); 248 psMetadataAddU64(promoteexpArgs, PS_LIST_TAIL, "-limit", 0, "limit exposures to promote to N items", 0); 249 249 250 250 // -block … … 301 301 psMetadataAddStr(topurgedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "class ID to update", NULL); 302 302 303 // -exportrun 304 psMetadata *exportrunArgs = psMetadataAlloc(); 305 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-fake_id", 0, "export this fake ID (required)", 0); 306 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL); 307 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 308 309 // -importrun 310 psMetadata *importrunArgs = psMetadataAlloc(); 311 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 312 313 303 314 304 315 … … 314 325 PXOPT_ADD_MODE("-updateprocessedimfile","change procesed imfile properties", FAKETOOL_MODE_UPDATEPROCESSEDIMFILE, updateprocessedimfileArgs); 315 326 PXOPT_ADD_MODE("-revertprocessedimfile", "undo a processed imfile", FAKETOOL_MODE_REVERTPROCESSEDIMFILE, revertprocessedimfileArgs); 316 PXOPT_ADD_MODE("- advanceexp", "advance completed exposoures", FAKETOOL_MODE_ADVANCEEXP, advanceexpArgs);327 PXOPT_ADD_MODE("-promoteexp", "promote completed exposoures", FAKETOOL_MODE_PROMOTEEXP, promoteexpArgs); 317 328 PXOPT_ADD_MODE("-block", "set a label block", FAKETOOL_MODE_BLOCK, blockArgs); 318 329 PXOPT_ADD_MODE("-masked", "show blocked labels", FAKETOOL_MODE_MASKED, maskedArgs); … … 325 336 PXOPT_ADD_MODE("-tofullimfile", "set imfile state to full", FAKETOOL_MODE_TOFULLIMFILE, tofullimfileArgs); 326 337 PXOPT_ADD_MODE("-topurgedimfile", "set imfile state to purged", FAKETOOL_MODE_TOPURGEDIMFILE, topurgedimfileArgs); 338 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", FAKETOOL_MODE_EXPORTRUN, exportrunArgs); 339 PXOPT_ADD_MODE("-importrun", "import run from metadata file", FAKETOOL_MODE_IMPORTRUN, importrunArgs); 327 340 328 341 -
trunk/ippTools/src/flatcorr.c
r21402 r23310 46 46 static bool inputexpMode(pxConfig *config); 47 47 static bool inputimfileMode(pxConfig *config); 48 static bool exportrunMode(pxConfig *config); 49 static bool importrunMode(pxConfig *config); 48 50 49 51 static bool setflatcorrRunState(pxConfig *config, psS64 corr_id, const char *state); … … 78 80 MODECASE(FLATCORR_MODE_INPUTEXP, inputexpMode); 79 81 MODECASE(FLATCORR_MODE_INPUTIMFILE, inputimfileMode); 82 MODECASE(FLATCORR_MODE_EXPORTRUN, exportrunMode); 83 MODECASE(FLATCORR_MODE_IMPORTRUN, importrunMode); 80 84 default: 81 85 psAbort("invalid option (this should not happen)"); … … 734 738 return true; 735 739 } 740 741 bool exportrunMode(pxConfig *config) 742 { 743 typedef struct ExportTable { 744 char tableName[80]; 745 char sqlFilename[80]; 746 } ExportTable; 747 748 int numExportTables = 3; 749 750 PS_ASSERT_PTR_NON_NULL(config, NULL); 751 752 PXOPT_LOOKUP_S64(det_id, config->args, "-corr_id", true, false); 753 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 754 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 755 756 FILE *f = fopen (outfile, "w"); 757 if (f == NULL) { 758 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 759 return false; 760 } 761 762 psMetadata *where = psMetadataAlloc(); 763 PXOPT_COPY_S64(config->args, where, "-coor_id", "corr_id", "=="); 764 765 ExportTable tables [] = { 766 {"flatcorrRun", "flatcorrtool_export_run.sql"}, 767 {"flatcorrCamLink", "flatcorrtool_export_cam_link.sql"}, 768 {"flatcorrChipLink", "flatcorr_export_chip_link.sql"}, 769 }; 770 771 for (int i=0; i < numExportTables; i++) { 772 psString query = pxDataGet(tables[i].sqlFilename); 773 if (!query) { 774 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 775 return false; 776 } 777 778 if (where && psListLength(where->list)) { 779 psString whereClause = psDBGenerateWhereSQL(where, NULL); 780 psStringAppend(&query, " %s", whereClause); 781 psFree(whereClause); 782 } 783 784 // treat limit == 0 as "no limit" 785 if (limit) { 786 psString limitString = psDBGenerateLimitSQL(limit); 787 psStringAppend(&query, " %s", limitString); 788 psFree(limitString); 789 } 790 791 if (!p_psDBRunQuery(config->dbh, query)) { 792 psError(PS_ERR_UNKNOWN, false, "database error"); 793 psFree(query); 794 return false; 795 } 796 psFree(query); 797 798 psArray *output = p_psDBFetchResult(config->dbh); 799 if (!output) { 800 psError(PS_ERR_UNKNOWN, false, "database error"); 801 return false; 802 } 803 if (!psArrayLength(output)) { 804 psTrace("regtool", PS_LOG_INFO, "no rows found"); 805 psFree(output); 806 return true; 807 } 808 809 // we must write the export table in non-simple (true) format 810 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) { 811 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 812 psFree(output); 813 return false; 814 } 815 psFree(output); 816 } 817 818 fclose (f); 819 820 return true; 821 } 822 823 bool importrunMode(pxConfig *config) 824 { 825 unsigned int nFail; 826 psMetadataItem *item, *entry; 827 828 int numImportTables = 3; 829 830 char tables[3] [80] = {"flatcorrRun", "flatcorrCamLink", "flatcorrChipLink"}; 831 832 PS_ASSERT_PTR_NON_NULL(config, NULL); 833 834 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 835 836 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 837 838 fprintf (stdout, "---- input ----\n"); 839 psMetadataPrint (stderr, input, 1); 840 841 for (int i = 0; i < numImportTables; i++) { 842 item = psMetadataLookup (input, tables[i]); 843 psAssert (item, "entry not in input?"); 844 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 845 846 entry = psListGet (item->data.list, 0); 847 assert (entry); 848 assert (entry->type == PS_DATA_METADATA); 849 850 switch (i) { 851 case 0: 852 { 853 flatcorrRunRow *flatcorrRun = flatcorrRunObjectFromMetadata (entry->data.md); 854 flatcorrRunInsertObject (config->dbh, flatcorrRun); 855 856 // fprintf (stdout, "---- flatcorr run ----\n"); 857 // psMetadataPrint (stderr, entry->data.md, 1); 858 break; 859 } 860 case 1: 861 { 862 flatcorrCamLinkRow *flatcorrCamLink = flatcorrCamLinkObjectFromMetadata (entry->data.md); 863 flatcorrCamLinkInsertObject (config->dbh, flatcorrCamLink); 864 865 // fprintf (stdout, "---- flatcorr cam link ----\n"); 866 // psMetadataPrint (stderr, entry->data.md, 1); 867 break; 868 } 869 case 2: 870 { 871 flatcorrChipLinkRow *flatcorrChipLink = flatcorrChipLinkObjectFromMetadata (entry->data.md); 872 flatcorrChipLinkInsertObject (config->dbh, flatcorrChipLink); 873 874 // fprintf (stdout, "---- flatcorr chip link ----\n"); 875 // psMetadataPrint (stderr, entry->data.md, 1); 876 break; 877 } 878 } 879 } 880 return true; 881 } -
trunk/ippTools/src/flatcorr.h
r20397 r23310 35 35 FLATCORR_MODE_UPDATERUN, 36 36 FLATCORR_MODE_INPUTEXP, 37 FLATCORR_MODE_INPUTIMFILE 37 FLATCORR_MODE_INPUTIMFILE, 38 FLATCORR_MODE_EXPORTRUN, 39 FLATCORR_MODE_IMPORTRUN 38 40 } flatcorrMode; 39 41 -
trunk/ippTools/src/flatcorrConfig.c
r20397 r23310 125 125 psMetadataAddU64(inputimfileArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 126 126 127 // -exportrun 128 psMetadata *exportrunArgs = psMetadataAlloc(); 129 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-corr_id", 0, "export this correction ID (required)", 0); 130 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL); 131 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 132 133 // -importrun 134 psMetadata *importrunArgs = psMetadataAlloc(); 135 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 136 137 127 138 psFree(now); 128 139 … … 141 152 PXOPT_ADD_MODE("-inputexp", "list exposures for a correction run", FLATCORR_MODE_INPUTEXP, inputexpArgs); 142 153 PXOPT_ADD_MODE("-inputimfile", "list imfiles for a chip run", FLATCORR_MODE_INPUTIMFILE, inputimfileArgs); 154 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", FLATCORR_MODE_EXPORTRUN, exportrunArgs); 155 PXOPT_ADD_MODE("-importrun", "import run from metadata file", FLATCORR_MODE_IMPORTRUN, importrunArgs); 143 156 144 157 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/pxadmin.c
r18927 r23310 29 29 30 30 bool createMode(pxConfig *config); 31 bool createMirrorMode(pxConfig *config); 31 32 bool deleteMode(pxConfig *config); 32 33 static bool runMultipleStatments(pxConfig *config, const char *query); … … 53 54 } 54 55 break; 56 case PXADMIN_MODE_CREATE_MIRROR: 57 if (!createMirrorMode(config)) { 58 goto FAIL; 59 } 60 break; 55 61 case PXADMIN_MODE_DELETE: 56 62 if (!deleteMode(config)) { … … 86 92 87 93 psString query = pxDataGet("pxadmin_create_tables.sql"); 94 if (!query) { 95 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 96 return false; 97 } 98 99 // BEGIN 100 if (!psDBTransaction(config->dbh)) { 101 psError(PS_ERR_UNKNOWN, false, "database error"); 102 return false; 103 } 104 105 if (!runMultipleStatments(config, query)) { 106 if (!psDBRollback(config->dbh)) { 107 psError(PS_ERR_UNKNOWN, false, "database error"); 108 } 109 psError(PS_ERR_UNKNOWN, false, "database error"); 110 psFree(query); 111 return false; 112 } 113 psFree(query); 114 115 // COMMIT 116 if (!psDBCommit(config->dbh)) { 117 psError(PS_ERR_UNKNOWN, false, "database error"); 118 return false; 119 } 120 121 return true; 122 } 123 124 125 bool createMirrorMode(pxConfig *config) 126 { 127 PS_ASSERT_PTR_NON_NULL(config, false); 128 129 psString query = pxDataGet("pxadmin_create_mirror_tables.sql"); 88 130 if (!query) { 89 131 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); -
trunk/ippTools/src/pxadmin.h
r9392 r23310 26 26 PXADMIN_MODE_NONE = 0x0, 27 27 PXADMIN_MODE_CREATE, 28 PXADMIN_MODE_CREATE_MIRROR, 28 29 PXADMIN_MODE_DELETE, 29 30 PXADMIN_MODE_RECREATE -
trunk/ippTools/src/pxadminConfig.c
r19062 r23310 31 31 fprintf (stderr, "\nPan-STARRS DataBase Admin Tool\n\n"); 32 32 fprintf (stderr, "Usage: %s [mode]\n", program); 33 fprintf (stderr, " [mode] : -create | - delete\n\n");33 fprintf (stderr, " [mode] : -create | -create-mirror | -delete\n\n"); 34 34 35 35 psMetadataItem *server = pmConfigUserSite(config->modules, "DBSERVER", PS_DATA_STRING); … … 87 87 config->mode = PXADMIN_MODE_CREATE; 88 88 } 89 if ((N = psArgumentGet(argc, argv, "-create-mirror"))) { 90 psArgumentRemove(N, &argc, argv); 91 if (config->mode) { 92 psAbort("only one mode selection is allowed"); 93 } 94 config->mode = PXADMIN_MODE_CREATE_MIRROR; 95 } 89 96 if ((N = psArgumentGet(argc, argv, "-delete"))) { 90 97 psArgumentRemove(N, &argc, argv); … … 105 112 psMetadataAddStr(arguments, PS_LIST_TAIL, "-create", 0, 106 113 "create all IPP tables", ""); 114 psMetadataAddStr(arguments, PS_LIST_TAIL, "-create-mirror", 0, 115 "mirror all IPP tables", ""); 107 116 psMetadataAddStr(arguments, PS_LIST_TAIL, "-delete", 0, 108 117 "delete all IPP tables", ""); -
trunk/ippTools/src/regtool.c
r21402 r23310 44 44 static bool updateprocessedexpMode(pxConfig *config); 45 45 static bool cleardupexpMode(pxConfig *config); 46 static bool exportrunMode(pxConfig *config); 47 static bool importrunMode(pxConfig *config); 46 48 47 49 # define MODECASE(caseName, func) \ … … 76 78 MODECASE(REGTOOL_MODE_UPDATEPROCESSEDEXP, updateprocessedexpMode); 77 79 MODECASE(REGTOOL_MODE_CLEARDUPEXP, cleardupexpMode); 80 MODECASE(CHIPTOOL_MODE_EXPORTRUN, exportrunMode); 81 MODECASE(CHIPTOOL_MODE_IMPORTRUN, importrunMode); 78 82 default: 79 83 psAbort("invalid option (this should not happen)"); … … 1107 1111 return true; 1108 1112 } 1113 1114 bool exportrunMode(pxConfig *config) 1115 { 1116 typedef struct ExportTable { 1117 char tableName[80]; 1118 char sqlFilename[80]; 1119 } ExportTable; 1120 1121 int numExportTables = 2; 1122 1123 PS_ASSERT_PTR_NON_NULL(config, NULL); 1124 1125 PXOPT_LOOKUP_S64(det_id, config->args, "-exp_id", true, false); 1126 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 1127 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1128 1129 FILE *f = fopen (outfile, "w"); 1130 if (f == NULL) { 1131 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 1132 return false; 1133 } 1134 1135 psMetadata *where = psMetadataAlloc(); 1136 PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "=="); 1137 1138 ExportTable tables [] = { 1139 {"rawExp", "regtool_export_raw__exp.sql"}, 1140 {"rawImfile", "regtool_export_raw_imfile.sql"}, 1141 }; 1142 1143 for (int i=0; i < numExportTables; i++) { 1144 psString query = pxDataGet(tables[i].sqlFilename); 1145 if (!query) { 1146 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1147 return false; 1148 } 1149 1150 if (where && psListLength(where->list)) { 1151 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1152 psStringAppend(&query, " %s", whereClause); 1153 psFree(whereClause); 1154 } 1155 1156 // treat limit == 0 as "no limit" 1157 if (limit) { 1158 psString limitString = psDBGenerateLimitSQL(limit); 1159 psStringAppend(&query, " %s", limitString); 1160 psFree(limitString); 1161 } 1162 1163 if (!p_psDBRunQuery(config->dbh, query)) { 1164 psError(PS_ERR_UNKNOWN, false, "database error"); 1165 psFree(query); 1166 return false; 1167 } 1168 psFree(query); 1169 1170 psArray *output = p_psDBFetchResult(config->dbh); 1171 if (!output) { 1172 psError(PS_ERR_UNKNOWN, false, "database error"); 1173 return false; 1174 } 1175 if (!psArrayLength(output)) { 1176 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1177 psFree(output); 1178 return true; 1179 } 1180 1181 // we must write the export table in non-simple (true) format 1182 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) { 1183 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1184 psFree(output); 1185 return false; 1186 } 1187 psFree(output); 1188 } 1189 1190 fclose (f); 1191 1192 return true; 1193 } 1194 1195 bool importrunMode(pxConfig *config) 1196 { 1197 unsigned int nFail; 1198 1199 PS_ASSERT_PTR_NON_NULL(config, NULL); 1200 1201 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 1202 1203 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1204 1205 fprintf (stdout, "---- input ----\n"); 1206 psMetadataPrint (stderr, input, 1); 1207 1208 psMetadataItem *item = psMetadataLookup (input, "rawExp"); 1209 psAssert (item, "entry not in input?"); 1210 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1211 1212 psMetadataItem *entry = psListGet (item->data.list, 0); 1213 assert (entry); 1214 assert (entry->type == PS_DATA_METADATA); 1215 rawExpRow *rawExp = rawExpObjectFromMetadata (entry->data.md); 1216 rawExpInsertObject (config->dbh, rawExp); 1217 1218 // fprintf (stdout, "---- raw exp ----\n"); 1219 // psMetadataPrint (stderr, entry->data.md, 1); 1220 1221 item = psMetadataLookup (input, "rawImfile"); 1222 psAssert (item, "entry not in input?"); 1223 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1224 1225 for (int i = 0; i < item->data.list->n; i++) { 1226 psMetadataItem *entry = psListGet (item->data.list, i); 1227 assert (entry); 1228 assert (entry->type == PS_DATA_METADATA); 1229 rawImfileRow *rawImfile = rawImfileObjectFromMetadata (entry->data.md); 1230 rawImfileInsertObject (config->dbh, rawImfile); 1231 1232 // fprintf (stdout, "---- row %d ----\n", i); 1233 // psMetadataPrint (stderr, entry->data.md, 1); 1234 } 1235 1236 return true; 1237 } 1238 -
trunk/ippTools/src/regtool.h
r18328 r23310 36 36 REGTOOL_MODE_UPDATEPROCESSEDEXP, 37 37 REGTOOL_MODE_CLEARDUPEXP, 38 REGTOOL_MODE_EXPORTRUN, 39 REGTOOL_MODE_IMPORTRUN 38 40 } regtoolMode; 39 41 -
trunk/ippTools/src/regtoolConfig.c
r20608 r23310 278 278 psMetadataAddS16(updatedprocessedexpArgs, PS_LIST_TAIL, "-code", 0, "set fault code (required)", INT16_MAX); 279 279 280 // -exportrun 281 psMetadata *exportrunArgs = psMetadataAlloc(); 282 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-exp_id", 0, "export this exposure ID (required)", 0); 283 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL); 284 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 285 286 // -importrun 287 psMetadata *importrunArgs = psMetadataAlloc(); 288 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 289 290 280 291 // -cleardupexp 281 292 psMetadata *cleardupexpArgs = psMetadataAlloc(); … … 295 306 PXOPT_ADD_MODE("-updateprocessedexp", "", REGTOOL_MODE_UPDATEPROCESSEDEXP, updatedprocessedexpArgs); 296 307 PXOPT_ADD_MODE("-cleardupexp", "", REGTOOL_MODE_CLEARDUPEXP, cleardupexpArgs); 308 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", REGTOOL_MODE_EXPORTRUN, exportrunArgs); 309 PXOPT_ADD_MODE("-importrun", "import run from metadata file", REGTOOL_MODE_IMPORTRUN, importrunArgs); 297 310 298 311 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/stacktool.c
r21402 r23310 44 44 static bool donecleanupMode(pxConfig *config); 45 45 static bool updatesumskyfileMode(pxConfig *config); 46 static bool exportrunMode(pxConfig *config); 47 static bool importrunMode(pxConfig *config); 46 48 47 49 static bool setstackRunState(pxConfig *config, psS64 stack_id, const char *state); … … 78 80 MODECASE(STACKTOOL_MODE_DONECLEANUP, donecleanupMode); 79 81 MODECASE(STACKTOOL_MODE_UPDATESUMSKYFILE, updatesumskyfileMode); 82 MODECASE(STACKTOOL_MODE_EXPORTRUN, exportrunMode); 83 MODECASE(STACKTOOL_MODE_IMPORTRUN, importrunMode); 80 84 default: 81 85 psAbort("invalid option (this should not happen)"); … … 1180 1184 } 1181 1185 1186 bool exportrunMode(pxConfig *config) 1187 { 1188 typedef struct ExportTable { 1189 char tableName[80]; 1190 char sqlFilename[80]; 1191 } ExportTable; 1192 1193 int numExportTables = 3; 1194 1195 PS_ASSERT_PTR_NON_NULL(config, NULL); 1196 1197 PXOPT_LOOKUP_S64(det_id, config->args, "-stack_id", true, false); 1198 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 1199 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1200 1201 FILE *f = fopen (outfile, "w"); 1202 if (f == NULL) { 1203 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 1204 return false; 1205 } 1206 1207 psMetadata *where = psMetadataAlloc(); 1208 PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "=="); 1209 1210 ExportTable tables [] = { 1211 {"stackRun", "stacktool_export_run.sql"}, 1212 {"stackInputSkyfile", "stacktool_export_input_skyfile.sql"}, 1213 {"stackSumSkyfile", "stacktool_export_sum_skyfile.sql"}, 1214 }; 1215 1216 for (int i=0; i < numExportTables; i++) { 1217 psString query = pxDataGet(tables[i].sqlFilename); 1218 if (!query) { 1219 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1220 return false; 1221 } 1222 1223 if (where && psListLength(where->list)) { 1224 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1225 psStringAppend(&query, " %s", whereClause); 1226 psFree(whereClause); 1227 } 1228 1229 // treat limit == 0 as "no limit" 1230 if (limit) { 1231 psString limitString = psDBGenerateLimitSQL(limit); 1232 psStringAppend(&query, " %s", limitString); 1233 psFree(limitString); 1234 } 1235 1236 if (!p_psDBRunQuery(config->dbh, query)) { 1237 psError(PS_ERR_UNKNOWN, false, "database error"); 1238 psFree(query); 1239 return false; 1240 } 1241 psFree(query); 1242 1243 psArray *output = p_psDBFetchResult(config->dbh); 1244 if (!output) { 1245 psError(PS_ERR_UNKNOWN, false, "database error"); 1246 return false; 1247 } 1248 if (!psArrayLength(output)) { 1249 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1250 psFree(output); 1251 return true; 1252 } 1253 psFree(output); 1254 } 1255 1256 fclose (f); 1257 1258 return true; 1259 } 1260 1261 bool importrunMode(pxConfig *config) 1262 { 1263 unsigned int nFail; 1264 1265 int numImportTables = 2; 1266 1267 char tables[2] [80] = {"stackInputSkyfile", "stackSumSkyfile"}; 1268 1269 PS_ASSERT_PTR_NON_NULL(config, NULL); 1270 1271 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 1272 1273 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1274 1275 fprintf (stdout, "---- input ----\n"); 1276 psMetadataPrint (stderr, input, 1); 1277 1278 psMetadataItem *item = psMetadataLookup (input, "stackRun"); 1279 psAssert (item, "entry not in input?"); 1280 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1281 1282 psMetadataItem *entry = psListGet (item->data.list, 0); 1283 assert (entry); 1284 assert (entry->type == PS_DATA_METADATA); 1285 stackRunRow *stackRun = stackRunObjectFromMetadata (entry->data.md); 1286 stackRunInsertObject (config->dbh, stackRun); 1287 1288 // fprintf (stdout, "---- stack run ----\n"); 1289 // psMetadataPrint (stderr, entry->data.md, 1); 1290 1291 for (int i = 0; i < numImportTables; i++) { 1292 psMetadataItem *item = psMetadataLookup (input, tables[i]); 1293 psAssert (item, "entry not in input?"); 1294 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1295 1296 switch (i) { 1297 case 0: 1298 for (int i = 0; i < item->data.list->n; i++) { 1299 entry = psListGet (item->data.list, i); 1300 assert (entry); 1301 assert (entry->type == PS_DATA_METADATA); 1302 stackInputSkyfileRow *stackInputSkyfile = stackInputSkyfileObjectFromMetadata (entry->data.md); 1303 stackInputSkyfileInsertObject (config->dbh, stackInputSkyfile); 1304 1305 // fprintf (stdout, "---- row %d ----\n", i); 1306 // psMetadataPrint (stderr, entry->data.md, 1); 1307 } 1308 break; 1309 1310 case 1: 1311 for (int i = 0; i < item->data.list->n; i++) { 1312 entry = psListGet (item->data.list, i); 1313 assert (entry); 1314 assert (entry->type == PS_DATA_METADATA); 1315 stackSumSkyfileRow *stackSumSkyfile = stackSumSkyfileObjectFromMetadata (entry->data.md); 1316 stackSumSkyfileInsertObject (config->dbh, stackSumSkyfile); 1317 1318 // fprintf (stdout, "---- row %d ----\n", i); 1319 // psMetadataPrint (stderr, entry->data.md, 1); 1320 } 1321 break; 1322 } 1323 } 1324 1325 return true; 1326 } -
trunk/ippTools/src/stacktool.h
r19676 r23310 38 38 STACKTOOL_MODE_DONECLEANUP, 39 39 STACKTOOL_MODE_UPDATESUMSKYFILE, 40 STACKTOOL_MODE_EXPORTRUN, 41 STACKTOOL_MODE_IMPORTRUN 40 42 } stacktoolMode; 41 43 -
trunk/ippTools/src/stacktoolConfig.c
r19931 r23310 187 187 psMetadataAddS16(updatesumskyfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code (required)", 0); 188 188 189 // -exportrun 190 psMetadata *exportrunArgs = psMetadataAlloc(); 191 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-stack_id", 0, "export this stack ID (required)", 0); 192 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL); 193 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 194 195 // -importrun 196 psMetadata *importrunArgs = psMetadataAlloc(); 197 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 198 199 189 200 psFree(now); 190 201 … … 205 216 PXOPT_ADD_MODE("-donecleanup", "show runs that have been cleaned", STACKTOOL_MODE_DONECLEANUP, donecleanupArgs); 206 217 PXOPT_ADD_MODE("-updatesumskyfile", "update fault code for sumskyfile", STACKTOOL_MODE_UPDATESUMSKYFILE, updatesumskyfileArgs); 218 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", STACKTOOL_MODE_EXPORTRUN, exportrunArgs); 219 PXOPT_ADD_MODE("-importrun", "import run from metadata file", STACKTOOL_MODE_IMPORTRUN, importrunArgs); 207 220 208 221 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) { -
trunk/ippTools/src/warptool.c
r23251 r23310 54 54 static bool tofullskyfileMode(pxConfig *config); 55 55 static bool updateskyfileMode(pxConfig *config); 56 57 static bool change_skyfile_data_state(pxConfig *config, psString data_state, psString run_state); 56 static bool exportrunMode(pxConfig *config); 57 static bool importrunMode(pxConfig *config); 58 58 59 static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile); 59 60 static bool isValidMode(pxConfig *config, const char *mode); … … 100 101 MODECASE(WARPTOOL_MODE_TOFULLSKYFILE, tofullskyfileMode); 101 102 MODECASE(WARPTOOL_MODE_UPDATESKYFILE, updateskyfileMode); 103 MODECASE(WARPTOOL_MODE_EXPORTRUN, exportrunMode); 104 MODECASE(WARPTOOL_MODE_IMPORTRUN, importrunMode); 102 105 103 106 default: … … 1271 1274 1272 1275 if (numUpdated < 1) { 1273 psError(PS_ERR_UNKNOWN, false, "should have affected at least 1 row");1276 psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row"); 1274 1277 if (!psDBRollback(config->dbh)) { 1275 1278 psError(PS_ERR_UNKNOWN, false, "database error"); … … 1605 1608 // shared code for the modes -tocleanedskyfile -tofullskyfile -topurgedskyfile 1606 1609 1607 // XXX EAM : this function was enforcing only certain transitions with the SQL. However,1608 // this is getting fairly messy now that we have added a few additional target and1609 // destination states. I'm disabling these restrictions for now; is there are better way1610 // to enforce the allowed state transitions?1611 1612 1610 static bool change_skyfile_data_state(pxConfig *config, psString data_state, psString run_state) 1613 1611 { … … 1625 1623 } 1626 1624 1627 // XXX this feature is disabled (run_state is ignored)1628 1625 // note only updates if warpRun.state = run_state 1629 1630 if (!p_psDBRunQueryF(config->dbh, query, data_state, warp_id, skycell_id)) { 1626 if (!p_psDBRunQueryF(config->dbh, query, data_state, warp_id, skycell_id, run_state)) { 1631 1627 psError(PS_ERR_UNKNOWN, false, "database error"); 1632 1628 // rollback … … 1676 1672 PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", true, false); 1677 1673 PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false); 1678 PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);1679 1674 PXOPT_LOOKUP_S16(code, config->args, "-code", false, false); 1680 1675 1681 if (state && code) { 1682 psError(PS_ERR_UNKNOWN, true, "only one of -set_state and -code may be supplied"); 1683 return false; 1684 } 1685 1686 if (state) { 1687 // make sure that the state string is valid 1688 if (!pxIsValidState(state)) { 1689 psError(PXTOOLS_ERR_DATA, false, "%s is not a valid state", state); 1690 return false; 1676 psString query = pxDataGet("warptool_updateskyfile.sql"); 1677 1678 if (!p_psDBRunQueryF(config->dbh, query, code, warp_id, skycell_id)) { 1679 psError(PS_ERR_UNKNOWN, false, "database error"); 1680 return false; 1681 } 1682 psFree(query); 1683 1684 return true; 1685 } 1686 1687 bool exportrunMode(pxConfig *config) 1688 { 1689 typedef struct ExportTable { 1690 char tableName[80]; 1691 char sqlFilename[80]; 1692 } ExportTable; 1693 1694 PS_ASSERT_PTR_NON_NULL(config, NULL); 1695 1696 PXOPT_LOOKUP_S64(det_id, config->args, "-warp_id", true, false); 1697 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 1698 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1699 1700 FILE *f = fopen (outfile, "w"); 1701 if (f == NULL) { 1702 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 1703 return false; 1704 } 1705 1706 psMetadata *where = psMetadataAlloc(); 1707 PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "=="); 1708 1709 ExportTable tables [] = { 1710 {"warpRun", "warptool_export_run.sql"}, 1711 {"warpImfile", "warptool_export_imfile.sql"}, 1712 {"warpSkyfile", "warptool_export_skyfile.sql"}, 1713 {"warpSkyCellMap", "warptool_export_sky_cell_map.sql"}, 1714 }; 1715 1716 1717 for (int i=0; i < sizeof(tables); i++) { 1718 psString query = pxDataGet(tables[i].sqlFilename); 1719 if (!query) { 1720 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1721 return false; 1691 1722 } 1692 if (!change_skyfile_data_state(config, state, "unknown")) { 1693 psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag"); 1694 return false; 1723 1724 if (where && psListLength(where->list)) { 1725 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1726 psStringAppend(&query, " %s", whereClause); 1727 psFree(whereClause); 1695 1728 } 1696 return true; 1697 } 1698 1699 if (code) { 1700 psString query = pxDataGet("warptool_updateskyfile.sql"); 1701 1702 if (!p_psDBRunQueryF(config->dbh, query, code, warp_id, skycell_id)) { 1703 psError(PS_ERR_UNKNOWN, false, "database error"); 1729 1730 // treat limit == 0 as "no limit" 1731 if (limit) { 1732 psString limitString = psDBGenerateLimitSQL(limit); 1733 psStringAppend(&query, " %s", limitString); 1734 psFree(limitString); 1735 } 1736 1737 if (!p_psDBRunQuery(config->dbh, query)) { 1738 psError(PS_ERR_UNKNOWN, false, "database error"); 1739 psFree(query); 1704 1740 return false; 1705 1741 } 1706 1742 psFree(query); 1707 return true; 1708 } 1709 1710 psError(PS_ERR_UNKNOWN, true, "one of -set_state or -code must be supplied"); 1711 return false; 1712 } 1743 1744 psArray *output = p_psDBFetchResult(config->dbh); 1745 if (!output) { 1746 psError(PS_ERR_UNKNOWN, false, "database error"); 1747 return false; 1748 } 1749 if (!psArrayLength(output)) { 1750 psTrace("regtool", PS_LOG_INFO, "no rows found"); 1751 psFree(output); 1752 return true; 1753 } 1754 1755 // we must write the export table in non-simple (true) format 1756 if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) { 1757 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1758 psFree(output); 1759 return false; 1760 } 1761 psFree(output); 1762 } 1763 1764 fclose (f); 1765 1766 return true; 1767 } 1768 1769 bool importrunMode(pxConfig *config) 1770 { 1771 unsigned int nFail; 1772 1773 int numImportTables = 3; 1774 1775 char tables[3] [80] = {"warpImfile", "warpSkyfile", "warpSkyCellMap"}; 1776 1777 PS_ASSERT_PTR_NON_NULL(config, NULL); 1778 1779 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 1780 1781 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1782 1783 fprintf (stdout, "---- input ----\n"); 1784 psMetadataPrint (stderr, input, 1); 1785 1786 psMetadataItem *item = psMetadataLookup (input, "warpRun"); 1787 psAssert (item, "entry not in input?"); 1788 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1789 1790 psMetadataItem *entry = psListGet (item->data.list, 0); 1791 assert (entry); 1792 assert (entry->type == PS_DATA_METADATA); 1793 warpRunRow *warpRun = warpRunObjectFromMetadata (entry->data.md); 1794 warpRunInsertObject (config->dbh, warpRun); 1795 1796 // fprintf (stdout, "---- warp run ----\n"); 1797 // psMetadataPrint (stderr, entry->data.md, 1); 1798 1799 for (int i = 0; i < numImportTables; i++) { 1800 item = psMetadataLookup (input, tables[i]); 1801 psAssert (item, "entry not in input?"); 1802 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1803 1804 switch (i) { 1805 case 0: 1806 for (int i = 0; i < item->data.list->n; i++) { 1807 entry = psListGet (item->data.list, i); 1808 assert (entry); 1809 assert (entry->type == PS_DATA_METADATA); 1810 warpImfileRow *warpImfile = warpImfileObjectFromMetadata (entry->data.md); 1811 warpImfileInsertObject (config->dbh, warpImfile); 1812 1813 // fprintf (stdout, "---- row %d ----\n", i); 1814 // psMetadataPrint (stderr, entry->data.md, 1); 1815 } 1816 break; 1817 1818 case 1: 1819 for (int i = 0; i < item->data.list->n; i++) { 1820 entry = psListGet (item->data.list, i); 1821 assert (entry); 1822 assert (entry->type == PS_DATA_METADATA); 1823 warpSkyfileRow *warpSkyfile = warpSkyfileObjectFromMetadata (entry->data.md); 1824 warpSkyfileInsertObject (config->dbh, warpSkyfile); 1825 1826 // fprintf (stdout, "---- row %d ----\n", i); 1827 // psMetadataPrint (stderr, entry->data.md, 1); 1828 } 1829 break; 1830 1831 case 2: 1832 for (int i = 0; i < item->data.list->n; i++) { 1833 entry = psListGet (item->data.list, i); 1834 assert (entry); 1835 assert (entry->type == PS_DATA_METADATA); 1836 warpSkyCellMapRow *warpSkyCellMap = warpSkyCellMapObjectFromMetadata (entry->data.md); 1837 warpSkyCellMapInsertObject (config->dbh, warpSkyCellMap); 1838 1839 // fprintf (stdout, "---- row %d ----\n", i); 1840 // psMetadataPrint (stderr, entry->data.md, 1); 1841 } 1842 break; 1843 } 1844 } 1845 return true; 1846 } -
trunk/ippTools/src/warptool.h
r19522 r23310 49 49 WARPTOOL_MODE_TOFULLSKYFILE, 50 50 WARPTOOL_MODE_UPDATESKYFILE, 51 WARPTOOL_MODE_EXPORTRUN, 52 WARPTOOL_MODE_IMPORTRUN 51 53 } warptoolMode; 52 54 -
trunk/ippTools/src/warptoolConfig.c
r23229 r23310 348 348 psMetadataAddStr(tofullskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 349 349 350 // - updateskyfile350 // -toupdateskyfile 351 351 psMetadata *updateskyfileArgs = psMetadataAlloc(); 352 psMetadataAddS64(updateskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,"warptool ID to update", 0);352 psMetadataAddS64(updateskyfileArgs, PS_LIST_TAIL, "-warp_id", 0, "warptool ID to update", 0); 353 353 psMetadataAddStr(updateskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL); 354 psMetadataAddS16(updateskyfileArgs, PS_LIST_TAIL, "-code", 0, "set fault code", 0); 355 psMetadataAddStr(updateskyfileArgs, PS_LIST_TAIL, "-set_state", 0, "set state", NULL); 354 psMetadataAddS16(updateskyfileArgs, PS_LIST_TAIL, "-code", 0, "new fault code", 0); 355 356 // -exportrun 357 psMetadata *exportrunArgs = psMetadataAlloc(); 358 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-warp_id", 0, "export this warp ID (required)", 0); 359 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL); 360 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 361 362 // -importrun 363 psMetadata *importrunArgs = psMetadataAlloc(); 364 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 365 356 366 357 367 psFree(now); … … 381 391 PXOPT_ADD_MODE("-tofullskyfile", "set skyfile as full (updated)", WARPTOOL_MODE_TOFULLSKYFILE, tofullskyfileArgs); 382 392 PXOPT_ADD_MODE("-updateskyfile", "update fault code for skyfile", WARPTOOL_MODE_UPDATESKYFILE, updateskyfileArgs); 393 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", WARPTOOL_MODE_EXPORTRUN, exportrunArgs); 394 PXOPT_ADD_MODE("-importrun", "import run from metadata file", WARPTOOL_MODE_IMPORTRUN, importrunArgs); 383 395 384 396 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note:
See TracChangeset
for help on using the changeset viewer.
