IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 21, 2008, 12:12:59 PM (18 years ago)
Author:
eugene
Message:

adding cleanup mode functions (but not yet sql or cmd-line options); dropping guidetool

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20080719/ippTools/src/stacktool.c

    r18579 r18643  
    4040static bool sumskyfileMode(pxConfig *config);
    4141static bool revertsumskyfileMode(pxConfig *config);
     42static bool pendingcleanuprunMode(pxConfig *config);
     43static bool pendingcleanupskyfileMode(pxConfig *config);
     44static bool donecleanupMode(pxConfig *config);
    4245
    4346static bool setstackRunState(pxConfig *config, psS64 stack_id, const char *state);
     
    6164
    6265    switch (config->mode) {
    63         MODECASE(STACKTOOL_MODE_DEFINEBYQUERY,              definebyqueryMode);
    64         MODECASE(STACKTOOL_MODE_DEFINERUN,          definerunMode);
    65         MODECASE(STACKTOOL_MODE_UPDATERUN,          updaterunMode);
    66         MODECASE(STACKTOOL_MODE_ADDINPUTSKYFILE,    addinputskyfileMode);
    67         MODECASE(STACKTOOL_MODE_INPUTSKYFILE,       inputskyfileMode);
    68         MODECASE(STACKTOOL_MODE_TOSUM,              tosumMode);
    69         MODECASE(STACKTOOL_MODE_ADDSUMSKYFILE,      addsumskyfileMode);
    70         MODECASE(STACKTOOL_MODE_SUMSKYFILE,         sumskyfileMode);
    71         MODECASE(STACKTOOL_MODE_REVERTSUMSKYFILE,   revertsumskyfileMode);
     66        MODECASE(STACKTOOL_MODE_DEFINEBYQUERY,         definebyqueryMode);
     67        MODECASE(STACKTOOL_MODE_DEFINERUN,             definerunMode);
     68        MODECASE(STACKTOOL_MODE_UPDATERUN,             updaterunMode);
     69        MODECASE(STACKTOOL_MODE_ADDINPUTSKYFILE,       addinputskyfileMode);
     70        MODECASE(STACKTOOL_MODE_INPUTSKYFILE,          inputskyfileMode);
     71        MODECASE(STACKTOOL_MODE_TOSUM,                 tosumMode);
     72        MODECASE(STACKTOOL_MODE_ADDSUMSKYFILE,         addsumskyfileMode);
     73        MODECASE(STACKTOOL_MODE_SUMSKYFILE,            sumskyfileMode);
     74        MODECASE(STACKTOOL_MODE_REVERTSUMSKYFILE,      revertsumskyfileMode);
     75        MODECASE(STACKTOOL_MODE_PENDINGCLEANUPRUN,     pendingcleanuprunMode);
     76        MODECASE(STACKTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileMode);
     77        MODECASE(STACKTOOL_MODE_DONECLEANUP,           donecleanupMode);
    7278        default:
    7379            psAbort("invalid option (this should not happen)");
     
    802808    return true;
    803809}
     810
     811static bool pendingcleanuprunMode(pxConfig *config)
     812{
     813    PS_ASSERT_PTR_NON_NULL(config, NULL);
     814
     815    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     816    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     817
     818    psMetadata *where = psMetadataAlloc();
     819    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
     820
     821    psString query = pxDataGet("stacktool_pendingcleanuprun.sql");
     822    if (!query) {
     823        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     824        return false;
     825    }
     826
     827    if (where && psListLength(where->list)) {
     828        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     829        psStringAppend(&query, " AND %s", whereClause);
     830        psFree(whereClause);
     831    }
     832    psFree(where);
     833
     834    // treat limit == 0 as "no limit"
     835    if (limit) {
     836        psString limitString = psDBGenerateLimitSQL(limit);
     837        psStringAppend(&query, " %s", limitString);
     838        psFree(limitString);
     839    }
     840
     841    if (!p_psDBRunQuery(config->dbh, query)) {
     842        psError(PS_ERR_UNKNOWN, false, "database error");
     843        psFree(query);
     844        return false;
     845    }
     846    psFree(query);
     847
     848    psArray *output = p_psDBFetchResult(config->dbh);
     849    if (!output) {
     850        psError(PS_ERR_UNKNOWN, false, "database error");
     851        return false;
     852    }
     853    if (!psArrayLength(output)) {
     854        psTrace("stacktool", PS_LOG_INFO, "no rows found");
     855        psFree(output);
     856        return true;
     857    }
     858
     859    // negative simple so the default is true
     860    if (!ippdbPrintMetadatas(stdout, output, "stackPendingCleanupRun", !simple)) {
     861        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     862        psFree(output);
     863        return false;
     864    }
     865
     866    psFree(output);
     867
     868    return true;
     869}
     870
     871static bool pendingcleanupskyfileMode(pxConfig *config)
     872{
     873    PS_ASSERT_PTR_NON_NULL(config, NULL);
     874
     875    PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", false, false);
     876    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     877    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     878
     879    psMetadata *where = psMetadataAlloc();
     880    if (stack_id) {
     881        PXOPT_COPY_S64(config->args, where, "-stack_id", "stack_id", "==");
     882    }
     883    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
     884
     885    psString query = pxDataGet("stacktool_pendingcleanupskyfile.sql");
     886    if (!query) {
     887        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     888        return false;
     889    }
     890
     891    if (where && psListLength(where->list)) {
     892        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     893        psStringAppend(&query, " AND %s", whereClause);
     894        psFree(whereClause);
     895    }
     896    psFree(where);
     897
     898    // treat limit == 0 as "no limit"
     899    if (limit) {
     900        psString limitString = psDBGenerateLimitSQL(limit);
     901        psStringAppend(&query, " %s", limitString);
     902        psFree(limitString);
     903    }
     904
     905    if (!p_psDBRunQuery(config->dbh, query)) {
     906        psError(PS_ERR_UNKNOWN, false, "database error");
     907        psFree(query);
     908        return false;
     909    }
     910    psFree(query);
     911
     912    psArray *output = p_psDBFetchResult(config->dbh);
     913    if (!output) {
     914        psError(PS_ERR_UNKNOWN, false, "database error");
     915        return false;
     916    }
     917    if (!psArrayLength(output)) {
     918        psTrace("stacktool", PS_LOG_INFO, "no rows found");
     919        psFree(output);
     920        return true;
     921    }
     922
     923    // negative simple so the default is true
     924    if (!ippdbPrintMetadatas(stdout, output, "stackPendingCleanupSkyfile", !simple)) {
     925        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     926        psFree(output);
     927        return false;
     928    }
     929
     930    psFree(output);
     931
     932    return true;
     933}
     934
     935
     936static bool donecleanupMode(pxConfig *config)
     937{
     938    PS_ASSERT_PTR_NON_NULL(config, NULL);
     939
     940    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     941    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     942
     943    psMetadata *where = psMetadataAlloc();
     944    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
     945
     946    psString query = pxDataGet("stacktool_donecleanup.sql");
     947    if (!query) {
     948        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     949        return false;
     950    }
     951
     952    if (where && psListLength(where->list)) {
     953        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     954        psStringAppend(&query, " AND %s", whereClause);
     955        psFree(whereClause);
     956    }
     957    psFree(where);
     958
     959    // treat limit == 0 as "no limit"
     960    if (limit) {
     961        psString limitString = psDBGenerateLimitSQL(limit);
     962        psStringAppend(&query, " %s", limitString);
     963        psFree(limitString);
     964    }
     965
     966    if (!p_psDBRunQuery(config->dbh, query)) {
     967        psError(PS_ERR_UNKNOWN, false, "database error");
     968        psFree(query);
     969        return false;
     970    }
     971    psFree(query);
     972
     973    psArray *output = p_psDBFetchResult(config->dbh);
     974    if (!output) {
     975        psError(PS_ERR_UNKNOWN, false, "database error");
     976        return false;
     977    }
     978    if (!psArrayLength(output)) {
     979        psTrace("stacktool", PS_LOG_INFO, "no rows found");
     980        psFree(output);
     981        return true;
     982    }
     983
     984    // negative simple so the default is true
     985    if (!ippdbPrintMetadatas(stdout, output, "stackDoneCleanup", !simple)) {
     986        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     987        psFree(output);
     988        return false;
     989    }
     990
     991    psFree(output);
     992
     993    return true;
     994}
Note: See TracChangeset for help on using the changeset viewer.