Changeset 21521
- Timestamp:
- Feb 16, 2009, 5:05:45 PM (17 years ago)
- Location:
- trunk/ippTools
- Files:
-
- 2 added
- 4 edited
-
share/Makefile.am (modified) (1 diff)
-
share/chiptool_export_imfiles.sql (added)
-
share/chiptool_export_run.sql (added)
-
src/chiptool.c (modified) (5 diffs)
-
src/chiptool.h (modified) (1 diff)
-
src/chiptoolConfig.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/share/Makefile.am
r20973 r21521 21 21 chiptool_revertprocessedimfile.sql \ 22 22 chiptool_run.sql \ 23 chiptool_export_run.sql \ 24 chiptool_export_imfiles.sql \ 23 25 chiptool_unmasked.sql \ 24 26 detselect_search.sql \ -
trunk/ippTools/src/chiptool.c
r21463 r21521 54 54 static bool tofullimfileMode(pxConfig *config); 55 55 static bool topurgedimfileMode(pxConfig *config); 56 static bool exportrunMode(pxConfig *config); 57 static bool importrunMode(pxConfig *config); 56 58 57 59 # define MODECASE(caseName, func) \ … … 91 93 MODECASE(CHIPTOOL_MODE_TOFULLIMFILE, tofullimfileMode); 92 94 MODECASE(CHIPTOOL_MODE_TOPURGEDIMFILE, topurgedimfileMode); 95 MODECASE(CHIPTOOL_MODE_EXPORTRUN, exportrunMode); 96 MODECASE(CHIPTOOL_MODE_IMPORTRUN, importrunMode); 93 97 default: 94 98 psAbort("invalid option (this should not happen)"); … … 880 884 } 881 885 882 883 886 static bool pendingcleanupimfileMode(pxConfig *config) 884 887 { … … 1005 1008 return true; 1006 1009 } 1007 1008 1010 1009 1011 static bool runMode(pxConfig *config) … … 1251 1253 return change_imfile_data_state(config, "purged", "goto_purged"); 1252 1254 } 1255 1256 bool exportrunMode(pxConfig *config) 1257 { 1258 PS_ASSERT_PTR_NON_NULL(config, NULL); 1259 1260 PXOPT_LOOKUP_S64(chip_id, config->args, "-chip_id", true, false); 1261 PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true, false); 1262 PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false); 1263 1264 FILE *f = fopen (outfile, "w"); 1265 if (f == NULL) { 1266 psError(PS_ERR_UNKNOWN, false, "failed to open output file"); 1267 return false; 1268 } 1269 1270 psMetadata *where = psMetadataAlloc(); 1271 PXOPT_COPY_S64(config->args, where, "-chip_id", "chip_id", "=="); 1272 1273 // *** extract the chipRun in this section *** 1274 psString query = pxDataGet("chiptool_export_run.sql"); 1275 if (!query) { 1276 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1277 return false; 1278 } 1279 1280 if (where && psListLength(where->list)) { 1281 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1282 psStringAppend(&query, " %s", whereClause); 1283 psFree(whereClause); 1284 } 1285 1286 // treat limit == 0 as "no limit" 1287 if (limit) { 1288 psString limitString = psDBGenerateLimitSQL(limit); 1289 psStringAppend(&query, " %s", limitString); 1290 psFree(limitString); 1291 } 1292 1293 if (!p_psDBRunQuery(config->dbh, query)) { 1294 psError(PS_ERR_UNKNOWN, false, "database error"); 1295 psFree(query); 1296 return false; 1297 } 1298 psFree(query); 1299 1300 psArray *output = p_psDBFetchResult(config->dbh); 1301 if (!output) { 1302 psError(PS_ERR_UNKNOWN, false, "database error"); 1303 return false; 1304 } 1305 if (!psArrayLength(output)) { 1306 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 1307 psFree(output); 1308 return true; 1309 } 1310 1311 // we must write the export table in non-simple (true) format 1312 if (!ippdbPrintMetadatas(f, output, "chipRun", true)) { 1313 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1314 psFree(output); 1315 return false; 1316 } 1317 psFree(output); 1318 1319 // *** extract the chipProcessedImfile entries in this section *** 1320 query = pxDataGet("chiptool_export_imfiles.sql"); 1321 if (!query) { 1322 psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement"); 1323 return false; 1324 } 1325 1326 if (where && psListLength(where->list)) { 1327 psString whereClause = psDBGenerateWhereSQL(where, NULL); 1328 psStringAppend(&query, " %s", whereClause); 1329 psFree(whereClause); 1330 } 1331 psFree(where); 1332 1333 // treat limit == 0 as "no limit" 1334 if (limit) { 1335 psString limitString = psDBGenerateLimitSQL(limit); 1336 psStringAppend(&query, " %s", limitString); 1337 psFree(limitString); 1338 } 1339 1340 if (!p_psDBRunQuery(config->dbh, query)) { 1341 psError(PS_ERR_UNKNOWN, false, "database error"); 1342 psFree(query); 1343 return false; 1344 } 1345 psFree(query); 1346 1347 output = p_psDBFetchResult(config->dbh); 1348 if (!output) { 1349 psError(PS_ERR_UNKNOWN, false, "database error"); 1350 return false; 1351 } 1352 if (!psArrayLength(output)) { 1353 psTrace("chiptool", PS_LOG_INFO, "no rows found"); 1354 psFree(output); 1355 return true; 1356 } 1357 1358 // we must write the export table in non-simple (true) format 1359 if (!ippdbPrintMetadatas(f, output, "chipProcessedImfiles", true)) { 1360 psError(PS_ERR_UNKNOWN, false, "failed to print array"); 1361 psFree(output); 1362 return false; 1363 } 1364 psFree(output); 1365 1366 fclose (f); 1367 1368 return true; 1369 } 1370 1371 1372 bool importrunMode(pxConfig *config) 1373 { 1374 unsigned int nFail; 1375 1376 PS_ASSERT_PTR_NON_NULL(config, NULL); 1377 1378 PXOPT_LOOKUP_STR(infile, config->args, "-infile", true, false); 1379 1380 psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false); 1381 1382 fprintf (stdout, "---- input ----\n"); 1383 psMetadataPrint (stderr, input, 1); 1384 1385 psMetadataItem *chipRunItem = psMetadataLookup (input, "chipRun"); 1386 psAssert (chipRunItem, "entry not in input?"); 1387 psAssert (chipRunItem->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1388 1389 psMetadataItem *chipRunEntry = psListGet (chipRunItem->data.list, 0); 1390 assert (chipRunEntry); 1391 assert (chipRunEntry->type == PS_DATA_METADATA); 1392 chipRunRow *chipRun = chipRunObjectFromMetadata (chipRunEntry->data.md); 1393 chipRunInsertObject (config->dbh, chipRun); 1394 1395 // fprintf (stdout, "---- chip run ----\n"); 1396 // psMetadataPrint (stderr, chipRunEntry->data.md, 1); 1397 1398 psMetadataItem *item = psMetadataLookup (input, "chipProcessedImfiles"); 1399 psAssert (item, "entry not in input?"); 1400 psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?"); 1401 1402 // XXX would be better to use the iterator? 1403 for (int i = 0; i < item->data.list->n; i++) { 1404 psMetadataItem *entry = psListGet (item->data.list, i); 1405 assert (entry); 1406 assert (entry->type == PS_DATA_METADATA); 1407 chipProcessedImfileRow *chipProcessedImfile = chipProcessedImfileObjectFromMetadata (entry->data.md); 1408 chipProcessedImfileInsertObject (config->dbh, chipProcessedImfile); 1409 1410 // fprintf (stdout, "---- row %d ----\n", i); 1411 // psMetadataPrint (stderr, entry->data.md, 1); 1412 } 1413 1414 return true; 1415 } 1416 1417 -
trunk/ippTools/src/chiptool.h
r21463 r21521 44 44 CHIPTOOL_MODE_TOCLEANEDIMFILE, 45 45 CHIPTOOL_MODE_TOFULLIMFILE, 46 CHIPTOOL_MODE_TOPURGEDIMFILE 46 CHIPTOOL_MODE_TOPURGEDIMFILE, 47 CHIPTOOL_MODE_EXPORTRUN, 48 CHIPTOOL_MODE_IMPORTRUN 47 49 } chiptoolMode; 48 50 -
trunk/ippTools/src/chiptoolConfig.c
r21463 r21521 244 244 psMetadataAddStr(topurgedimfileArgs, PS_LIST_TAIL, "-class_id", 0, "class ID to update", NULL); 245 245 246 // -exportrun 247 psMetadata *exportrunArgs = psMetadataAlloc(); 248 // pxchipSetSearchArgs (exportrunArgs); XXX include search terms? 249 psMetadataAddS64(exportrunArgs, PS_LIST_TAIL, "-chip_id", 0, "export this chip ID (required)", 0); 250 psMetadataAddStr(exportrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL); 251 psMetadataAddU64(exportrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0); 252 253 // -importrun 254 psMetadata *importrunArgs = psMetadataAlloc(); 255 psMetadataAddStr(importrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL); 256 246 257 psMetadata *argSets = psMetadataAlloc(); 247 258 psMetadata *modes = psMetadataAlloc(); … … 264 275 PXOPT_ADD_MODE("-run", "show runs", CHIPTOOL_MODE_RUN, runArgs); 265 276 PXOPT_ADD_MODE("-tocleanedimfile", "set imfile state to cleaned", CHIPTOOL_MODE_TOCLEANEDIMFILE, tocleanedimfileArgs); 266 PXOPT_ADD_MODE("-tofullimfile", "set imfile state to full", CHIPTOOL_MODE_TOFULLIMFILE, tofullimfileArgs); 267 PXOPT_ADD_MODE("-topurgedimfile", "set imfile state to purged", CHIPTOOL_MODE_TOPURGEDIMFILE, topurgedimfileArgs); 277 PXOPT_ADD_MODE("-tofullimfile", "set imfile state to full", CHIPTOOL_MODE_TOFULLIMFILE, tofullimfileArgs); 278 PXOPT_ADD_MODE("-topurgedimfile", "set imfile state to purged", CHIPTOOL_MODE_TOPURGEDIMFILE, topurgedimfileArgs); 279 280 PXOPT_ADD_MODE("-exportrun", "export run for import on other database", CHIPTOOL_MODE_EXPORTRUN, exportrunArgs); 281 PXOPT_ADD_MODE("-importrun", "import run from metadata file", CHIPTOOL_MODE_IMPORTRUN, importrunArgs); 268 282 269 283 if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note:
See TracChangeset
for help on using the changeset viewer.
