IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 7, 2007, 6:23:18 PM (19 years ago)
Author:
jhoblitt
Message:

flesh out magictool -inputskyfile

File:
1 edited

Legend:

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

    r15501 r15504  
    431431{
    432432    PS_ASSERT_PTR_NON_NULL(config, false);
     433
     434    bool status = false;
     435    psU64 limit = psMetadataLookupU64(&status, config->args, "-limit");
     436    if (!status) {
     437        psError(PXTOOLS_ERR_PROG, false, "failed to lookup value for -limit");
     438        return false;
     439    }
     440
     441    // find all rawImfiles matching the default query
     442    psString query = pxDataGet("magictool_inputskyfile.sql");
     443    if (!query) {
     444        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     445        return false;
     446    }
     447
     448    if (config->where) {
     449        psString whereClause = psDBGenerateWhereConditionSQL(config->where, "magicInputSkyfile");
     450        psStringAppend(&query, " AND %s", whereClause);
     451        psFree(whereClause);
     452    }
     453
     454    // treat limit == 0 as "no limit"
     455    if (limit) {
     456        psString limitString = psDBGenerateLimitSQL(limit);
     457        psStringAppend(&query, " %s", limitString);
     458        psFree(limitString);
     459    }
     460
     461    if (!p_psDBRunQuery(config->dbh, query)) {
     462        psError(PS_ERR_UNKNOWN, false, "database error");
     463        psFree(query);
     464        return false;
     465    }
     466    psFree(query);
     467
     468    psArray *output = p_psDBFetchResult(config->dbh);
     469    if (!output) {
     470        psErrorCode err = psErrorCodeLast();
     471        switch (err) {
     472            case PS_ERR_DB_CLIENT:
     473                psError(PXTOOLS_ERR_SYS, false, "database error");
     474            case PS_ERR_DB_SERVER:
     475                psError(PXTOOLS_ERR_PROG, false, "database error");
     476            default:
     477                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     478        }
     479
     480        return false;
     481    }
     482    if (!psArrayLength(output)) {
     483        psTrace("warptool", PS_LOG_INFO, "no rows found");
     484        psFree(output);
     485        return true;
     486    }
     487
     488    bool simple = false;
     489    {
     490        bool status = false;
     491        simple = psMetadataLookupBool(&status, config->args, "-simple");
     492        if (!status) {
     493            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -simple");
     494            return false;
     495        }
     496    }
     497
     498    if (psArrayLength(output)) {
     499        if (!convertIdToStr(output)) {
     500            psError(PS_ERR_UNKNOWN, false, "failed to convert id fields into a strings");
     501            psFree(output);
     502            return false;
     503        }
     504
     505        // negative simple so the default is true
     506        if (!ippdbPrintMetadatas(stdout, output, "magicInputSkyfile", !simple)) {
     507            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     508            psFree(output);
     509            return false;
     510        }
     511    }
     512
     513    psFree(output);
     514
    433515    return true;
    434516}
Note: See TracChangeset for help on using the changeset viewer.