IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 5, 2008, 2:07:07 PM (18 years ago)
Author:
eugene
Message:

updates from HEAD

File:
1 edited

Legend:

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

    r18659 r18923  
    652652
    653653// Generate a single populated run
    654 static bool populatedrun(const char *workdir, // Working directory
     654static bool populatedrun(psArray *list, // List of runs, to print
     655                         const char *workdir, // Working directory
    655656                         const char *skycell_id, // Skycell identifier
    656657                         const char *tess_id, // Tessellation identifier
     
    759760    }
    760761
    761     if (!diffRunPrintObject(stdout, run, !simple)) {
    762             psError(PS_ERR_UNKNOWN, false, "failed to print object");
    763             psFree(run);
    764             return false;
     762    if (list) {
     763        psArrayAdd(list, list->n, run);
    765764    }
    766765
     
    782781    PXOPT_LOOKUP_S64(input_warp_id, config->args, "-input_warp_id", false, false);
    783782    PXOPT_LOOKUP_S64(input_stack_id, config->args, "-input_stack_id", false, false);
     783    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    784784
    785785    if (template_stack_id && template_warp_id) {
     
    803803    }
    804804
    805     return populatedrun(workdir, skycell_id, tess_id,
    806                         input_warp_id ? input_warp_id : PS_MAX_S64,
    807                         input_stack_id ? input_stack_id : PS_MAX_S64,
    808                         template_warp_id ? template_warp_id : PS_MAX_S64,
    809                         template_stack_id ? template_stack_id : PS_MAX_S64,
    810                         config);
     805    psArray *list = psArrayAllocEmpty(16); // List of runs, to print
     806
     807    if (!populatedrun(list, workdir, skycell_id, tess_id,
     808                      input_warp_id ? input_warp_id : PS_MAX_S64,
     809                      input_stack_id ? input_stack_id : PS_MAX_S64,
     810                      template_warp_id ? template_warp_id : PS_MAX_S64,
     811                      template_stack_id ? template_stack_id : PS_MAX_S64,
     812                      config)) {
     813        psError(PS_ERR_UNKNOWN, false, "failed to create populated diffRun");
     814        psFree(list);
     815        return false;
     816    }
     817
     818    if (!diffRunPrintObjects(stdout, list, !simple)) {
     819            psError(PS_ERR_UNKNOWN, false, "failed to print object");
     820            psFree(list);
     821            return false;
     822    }
     823    psFree(list);
    811824
    812825    return true;
     
    820833    psMetadata *where = psMetadataAlloc();
    821834
    822     PXOPT_COPY_S64(config->args, where,  "-diff_id", "diff_id", "==");
    823835    PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "==");
    824836    PXOPT_COPY_STR(config->args, where, "-skycell_id", "skycell_id", "==");
    825     PXOPT_COPY_STR(config->args, where,  "-tess_id", "tess_id", "==");
     837    PXOPT_COPY_STR(config->args, where, "-tess_id", "tess_id", "==");
     838    PXOPT_COPY_STR(config->args, where, "-filter", "filter", "==");
    826839    PXOPT_COPY_STR(config->args, where,  "-kind", "kind", "==");
     840    PXOPT_COPY_F32(config->args, where,  "-good_frac", "good_frac", ">=");
    827841    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required options
    828842    PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);
    829     PXOPT_LOOKUP_BOOL(template, config->args, "-template", false);
    830843    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     844    PXOPT_LOOKUP_BOOL(newTemplates, config->args, "-new-templates", false);
    831845
    832846    // find all things to queue
    833     psString query = pxDataGet("difftool_queue.sql");
     847    psString query = pxDataGet("difftool_definebyquery.sql");
    834848    if (!query) {
    835849        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     
    837851    }
    838852
    839     if (template) {
    840         // list only faulted rows
    841         psStringAppend(&query, " %s", " AND diffInputSkyfile.template != 0");
     853    if (newTemplates) {
     854        // Warps that haven't been diffed OR warps that can take a newer template in the diff
     855        psStringAppend(&query, " WHERE (diff_id IS NULL OR best_stack_id > current_stack_id)");
    842856    } else {
    843         // don't list faulted rows
    844         psStringAppend(&query, " %s",
    845                        " AND (diffInputSkyfile.template = 0 OR diffInputSkyfile.template IS NULL)");
     857        // Only warps that haven't been diffed
     858        psStringAppend(&query, " WHERE diff_id IS NULL");
    846859    }
    847860
    848861    if (psListLength(where->list)) {
    849         psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     862        psString whereClause = psDBGenerateWhereConditionSQL(where, "warpsToDiff");
    850863        psStringAppend(&query, " AND %s", whereClause);
    851864        psFree(whereClause);
     
    880893    }
    881894
     895    psArray *list = psArrayAllocEmpty(16); // List of runs, to print
    882896    long numGood = 0;                   // Number of good rows added
    883897    for (long i = 0; i < output->n; i++) {
     
    896910            continue;
    897911        }
    898         psS64 stack_id = psMetadataLookupS64(&mdok, row, "stack_id");
     912        psS64 stack_id = psMetadataLookupS64(&mdok, row, "best_stack_id");
    899913        if (!mdok) {
    900914            psWarning("stack_id not found --- ignoring row %ld", i);
     
    907921        }
    908922
    909         if (!populatedrun(workdir, skycell_id, tess_id, warp_id, PS_MAX_S64, PS_MAX_S64, stack_id, config)) {
     923        if (!populatedrun(list, workdir, skycell_id, tess_id, warp_id, PS_MAX_S64, PS_MAX_S64,
     924                          stack_id, config)) {
    910925            psWarning("Unable to add run for %s,%s,%" PRId64 ",%" PRId64, skycell_id, tess_id,
    911926                      warp_id, stack_id);
     
    916931        numGood++;
    917932    }
    918 
    919     psLogMsg("difftool", PS_LOG_INFO, "%ld runs added.", numGood);
    920 
    921933    psFree(output);
     934
     935    if (!diffRunPrintObjects(stdout, list, !simple)) {
     936        psError(PS_ERR_UNKNOWN, false, "failed to print object");
     937        psFree(list);
     938        return false;
     939    }
     940    psFree(list);
    922941
    923942    return true;
Note: See TracChangeset for help on using the changeset viewer.