IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 19522


Ignore:
Timestamp:
Sep 11, 2008, 3:25:25 PM (18 years ago)
Author:
bills
Message:

New modes to support goto_cleaned, goto_purged, and update processing

Location:
trunk/ippTools/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/warptool.c

    r19416 r19522  
    5050static bool pendingcleanupwarpMode(pxConfig *config);
    5151static bool donecleanupMode(pxConfig *config);
     52static bool tocleanedskyfileMode(pxConfig *config);
     53static bool topurgedskyfileMode(pxConfig *config);
     54static bool tofullskyfileMode(pxConfig *config);
     55static bool updateskyfileMode(pxConfig *config);
    5256
    5357static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile);
     
    9195        MODECASE(WARPTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupwarpMode);
    9296        MODECASE(WARPTOOL_MODE_DONECLEANUP,        donecleanupMode);
     97        MODECASE(WARPTOOL_MODE_TOCLEANEDSKYFILE,   tocleanedskyfileMode);
     98        MODECASE(WARPTOOL_MODE_TOPURGEDSKYFILE,    topurgedskyfileMode);
     99        MODECASE(WARPTOOL_MODE_TOFULLSKYFILE,      tofullskyfileMode);
     100        MODECASE(WARPTOOL_MODE_UPDATESKYFILE,      updateskyfileMode);
    93101
    94102        default:
     
    15021510    return true;
    15031511}
     1512
     1513// update warpSkyfile.data_state to given value.
     1514// afterwards, if all skfyiles in the run have the new state, update the state for the run as well
     1515// shared code for the modes -tocleanedskyfile -tofullskyfile -topurgedskyfile
     1516
     1517static bool change_skyfile_data_state(pxConfig *config, psString data_state, psString run_state)
     1518{
     1519    PS_ASSERT_PTR_NON_NULL(config, false);
     1520
     1521    // warp_id, skycell_id are required
     1522    PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", true, false);
     1523    PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false);
     1524
     1525    psString query = pxDataGet("warptool_change_skyfile_data_state.sql");
     1526
     1527    if (!psDBTransaction(config->dbh)) {
     1528        psError(PS_ERR_UNKNOWN, false, "database error");
     1529        return false;
     1530    }
     1531
     1532    // note only updates if warpRun.state = run_state
     1533    if (!p_psDBRunQuery(config->dbh, query, data_state, warp_id, skycell_id, run_state)) {
     1534        psError(PS_ERR_UNKNOWN, false, "database error");
     1535        // rollback
     1536        if (!psDBRollback(config->dbh)) {
     1537            psError(PS_ERR_UNKNOWN, false, "database error");
     1538        }
     1539        psError(PS_ERR_UNKNOWN, false, "database error");
     1540        return false;
     1541    }
     1542    psFree(query);
     1543
     1544    query = pxDataGet("warptool_change_run_state.sql");
     1545    if (!p_psDBRunQuery(config->dbh, query, data_state, warp_id, data_state)) {
     1546        // rollback
     1547        if (!psDBRollback(config->dbh)) {
     1548            psError(PS_ERR_UNKNOWN, false, "database error");
     1549        }
     1550        psError(PS_ERR_UNKNOWN, false, "database error");
     1551        return false;
     1552    }
     1553
     1554    if (!psDBCommit(config->dbh)) {
     1555        psError(PS_ERR_UNKNOWN, false, "database error");
     1556        return false;
     1557    }
     1558
     1559    return true;
     1560}
     1561static bool tocleanedskyfileMode(pxConfig *config)
     1562{
     1563    return change_skyfile_data_state(config, "cleaned", "goto_cleaned");
     1564}
     1565static bool tofullskyfileMode(pxConfig *config)
     1566{
     1567    return change_skyfile_data_state(config, "full", "update");
     1568}
     1569static bool topurgedskyfileMode(pxConfig *config)
     1570{
     1571    return change_skyfile_data_state(config, "purged", "goto_purged");
     1572}
     1573
     1574static bool updateskyfileMode(pxConfig *config)
     1575{
     1576    PS_ASSERT_PTR_NON_NULL(config, false);
     1577
     1578    // warp_id, skycell_id, code are required
     1579    PXOPT_LOOKUP_S64(warp_id, config->args, "-warp_id", true, false);
     1580    PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false);
     1581    PXOPT_LOOKUP_S16(code, config->args, "-code", false, false);
     1582
     1583    psString query = pxDataGet("warptool_updateskyfile.sql");
     1584
     1585    // note only updates if warpRun.state = run_state
     1586    if (!p_psDBRunQuery(config->dbh, query, code, warp_id, skycell_id)) {
     1587        psError(PS_ERR_UNKNOWN, false, "database error");
     1588        return false;
     1589    }
     1590    psFree(query);
     1591
     1592    return true;
     1593}
  • trunk/ippTools/src/warptool.h

    r19160 r19522  
    4545    WARPTOOL_MODE_PENDINGCLEANUPSKYFILE,
    4646    WARPTOOL_MODE_DONECLEANUP,
     47    WARPTOOL_MODE_TOCLEANEDSKYFILE,
     48    WARPTOOL_MODE_TOPURGEDSKYFILE,
     49    WARPTOOL_MODE_TOFULLSKYFILE,
     50    WARPTOOL_MODE_UPDATESKYFILE,
    4751} warptoolMode;
    4852
  • trunk/ippTools/src/warptoolConfig.c

    r19408 r19522  
    332332    psMetadataAddU64(donecleanupArgs, PS_LIST_TAIL, "-limit",  0,            "limit result set to N items", 0);
    333333
     334    // -tocleanedskyfile
     335    psMetadata *tocleanedskyfileArgs = psMetadataAlloc();
     336    psMetadataAddS64(tocleanedskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,    "warptool ID to update", 0);
     337    psMetadataAddStr(tocleanedskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL);
     338
     339    // -topurgedskyfile
     340    psMetadata *topurgedskyfileArgs = psMetadataAlloc();
     341    psMetadataAddS64(topurgedskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,    "warptool ID to update", 0);
     342    psMetadataAddStr(topurgedskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL);
     343
     344    // -tofullskyfile
     345    psMetadata *tofullskyfileArgs = psMetadataAlloc();
     346    psMetadataAddS64(tofullskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,    "warptool ID to update", 0);
     347    psMetadataAddStr(tofullskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL);
     348
     349    // -toupdateskyfile
     350    psMetadata *updateskyfileArgs = psMetadataAlloc();
     351    psMetadataAddS64(updateskyfileArgs, PS_LIST_TAIL, "-warp_id", 0,    "warptool ID to update", 0);
     352    psMetadataAddStr(updateskyfileArgs, PS_LIST_TAIL, "-skycell_id", 0, "skycell ID to update", NULL);
     353    psMetadataAddS16(updateskyfileArgs, PS_LIST_TAIL, "-code",  0,      "new fault code", 0);
     354
    334355    psFree(now);
    335356    psMetadata *argSets = psMetadataAlloc();
     
    354375    PXOPT_ADD_MODE("-pendingcleanupskyfile", "show runs that need to be cleaned up", WARPTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileArgs);
    355376    PXOPT_ADD_MODE("-donecleanup",           "show runs that have been cleaned",     WARPTOOL_MODE_DONECLEANUP,          donecleanupArgs);
     377    PXOPT_ADD_MODE("-tocleanedskyfile", "set skyfile as cleaned", WARPTOOL_MODE_TOCLEANEDSKYFILE, tocleanedskyfileArgs);
     378    PXOPT_ADD_MODE("-topurgedskyfile", "set skyfile as purged", WARPTOOL_MODE_TOPURGEDSKYFILE, topurgedskyfileArgs);
     379    PXOPT_ADD_MODE("-tofullskyfile", "set skyfile as full (updated)", WARPTOOL_MODE_TOFULLSKYFILE, tofullskyfileArgs);
     380    PXOPT_ADD_MODE("-updateskyfile", "update fault code for skyfile", WARPTOOL_MODE_UPDATESKYFILE, updateskyfileArgs);
    356381
    357382    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note: See TracChangeset for help on using the changeset viewer.