- Timestamp:
- Mar 17, 2009, 12:08:50 PM (17 years ago)
- Location:
- branches/cnb_branches/cnb_branch_20090301
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ippTools/src/faketool.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/cnb_branches/cnb_branch_20090301
-
Property svn:mergeinfo
set to (toggle deleted branches)
/trunk merged eligible /branches/eam_branches/eam_branch_20090303 23158-23228
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
branches/cnb_branches/cnb_branch_20090301/ippTools/src/faketool.c
r21463 r23352 41 41 static bool revertprocessedimfileMode(pxConfig *config); 42 42 static bool updateprocessedimfileMode(pxConfig *config); 43 static bool promoteexpMode(pxConfig *config);43 static bool advanceexpMode(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_ PROMOTEEXP, promoteexpMode);82 MODECASE(FAKETOOL_MODE_ADVANCEEXP, advanceexpMode); 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 promoteexpMode(pxConfig *config)1054 static bool advanceexpMode(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 }
Note:
See TracChangeset
for help on using the changeset viewer.
