IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28412


Ignore:
Timestamp:
Jun 18, 2010, 4:29:36 PM (16 years ago)
Author:
Paul Price
Message:

Add 'data' mode to diffphottool to get output data details.

Location:
trunk/ippTools
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/share/Makefile.am

    r28375 r28412  
    338338        diffphottool_pending.sql \
    339339        diffphottool_advance.sql \
    340         diffphottool_revert.sql
     340        diffphottool_revert.sql \
     341        diffphottool_data.sql
  • trunk/ippTools/src/diffphottool.c

    r28387 r28412  
    3838static bool advanceMode(pxConfig *config);
    3939static bool revertMode(pxConfig *config);
     40static bool dataMode(pxConfig *config);
    4041
    4142# define MODECASE(caseName, func) \
     
    6465        MODECASE(DIFFPHOTTOOL_MODE_ADVANCE,   advanceMode);
    6566        MODECASE(DIFFPHOTTOOL_MODE_REVERT,    revertMode);
     67        MODECASE(DIFFPHOTTOOL_MODE_DATA,      dataMode);
    6668
    6769        default:
     
    490492}
    491493
     494static bool dataMode(pxConfig *config)
     495{
     496    PS_ASSERT_PTR_NON_NULL(config, false);
     497
     498    psMetadata *where = psMetadataAlloc();
     499
     500    PXOPT_COPY_S64(config->args, where,  "-diff_phot_id", "diff_phot_id", "==");
     501    PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "==");
     502
     503    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     504    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     505
     506    psString query = pxDataGet("diffphottool_data.sql");
     507    if (!query) {
     508        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     509        return false;
     510    }
     511
     512    if (psListLength(where->list)) {
     513        psString clause = psDBGenerateWhereConditionSQL(where, NULL);
     514        psStringAppend(&query, "\nWHERE %s", clause);
     515        psFree(clause);
     516    }
     517    psFree(where);
     518
     519    if (limit) {
     520        psString limitString = psDBGenerateLimitSQL(limit);
     521        psStringAppend(&query, "\n%s", limitString);
     522        psFree(limitString);
     523    }
     524
     525    if (!p_psDBRunQuery(config->dbh, query)) {
     526        psError(psErrorCodeLast(), false, "database error");
     527        psFree(query);
     528        return false;
     529    }
     530    psFree(query);
     531
     532    psArray *output = p_psDBFetchResult(config->dbh);
     533    if (!output) {
     534        psError(psErrorCodeLast(), false, "database error");
     535        return false;
     536    }
     537    if (!psArrayLength(output)) {
     538        psTrace("diffphottool", PS_LOG_INFO, "no rows found");
     539        psFree(output);
     540        return true;
     541    }
     542
     543    if (!ippdbPrintMetadatas(stdout, output, "diffPhotSkyfile", !simple)) {
     544        psError(psErrorCodeLast(), false, "failed to print array");
     545        psFree(output);
     546        return false;
     547    }
     548    psFree(output);
     549
     550    return true;
     551}
     552
  • trunk/ippTools/src/diffphottool.h

    r28343 r28412  
    3232    DIFFPHOTTOOL_MODE_ADVANCE,
    3333    DIFFPHOTTOOL_MODE_REVERT,
     34    DIFFPHOTTOOL_MODE_DATA,
    3435} diffphottoolMode;
    3536
  • trunk/ippTools/src/diffphottoolConfig.c

    r28363 r28412  
    115115    psMetadataAddBool(revertArgs, PS_LIST_TAIL, "-all", 0, "allow no search terms", 0);
    116116
     117    // -data
     118    psMetadata *dataArgs = psMetadataAlloc();
     119    psMetadataAddS64(dataArgs, PS_LIST_TAIL, "-diff_phot_id", 0, "search by diffphot ID", 0);
     120    psMetadataAddStr(dataArgs, PS_LIST_TAIL, "-skycell_id", 0, "search by skycell ID", NULL);
     121    psMetadataAddU64(dataArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);
     122    psMetadataAddBool(dataArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
     123
    117124    psFree(now);
    118125
     
    127134    PXOPT_ADD_MODE("-advance",   "", DIFFPHOTTOOL_MODE_ADVANCE,   advanceArgs);
    128135    PXOPT_ADD_MODE("-revert",    "", DIFFPHOTTOOL_MODE_REVERT,    revertArgs);
     136    PXOPT_ADD_MODE("-data",      "", DIFFPHOTTOOL_MODE_DATA,      dataArgs);
    129137
    130138    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note: See TracChangeset for help on using the changeset viewer.