IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 18, 2009, 10:23:28 AM (17 years ago)
Author:
eugene
Message:

updated vysos branch from trunk

Location:
branches/eam_branches/20090820
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/20090820

  • branches/eam_branches/20090820/ippTools/src/warptool.c

    r25766 r25870  
    5858static bool exportrunMode(pxConfig *config);
    5959static bool importrunMode(pxConfig *config);
     60static bool runstateMode(pxConfig *config);
    6061
    6162static bool parseAndInsertSkyCellMap(pxConfig *config, const char *mapfile);
     
    108109        MODECASE(WARPTOOL_MODE_EXPORTRUN,          exportrunMode);
    109110        MODECASE(WARPTOOL_MODE_IMPORTRUN,          importrunMode);
     111        MODECASE(WARPTOOL_MODE_RUNSTATE,           runstateMode);
    110112
    111113        default:
     
    139141    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", true, false); // required
    140142    PXOPT_LOOKUP_STR(label, config->args, "-label", false, false);
     143    PXOPT_LOOKUP_STR(data_group, config->args, "-data_group", false, false);
     144    PXOPT_LOOKUP_STR(dist_group, config->args, "-dist_group", false, false);
     145    PXOPT_LOOKUP_STR(note, config->args, "-note", false, false);
    141146    PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false);
    142147    PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", true, false); // required (no default TESS)
     
    160165            "dirty",    // workdir_state
    161166            label,
     167            data_group ? data_group : label,
     168            dist_group,
    162169            dvodb,
    163170            tess_id,
     
    165172            end_stage,
    166173            registered,
    167             0       // magicked
     174            0,       // magicked
     175            note
    168176    );
    169177    if (!warpRun) {
     
    251259    PXOPT_LOOKUP_STR(workdir, config->args, "-set_workdir", false, false);
    252260    PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false);
     261    PXOPT_LOOKUP_STR(data_group, config->args, "-set_data_group", false, false);
     262    PXOPT_LOOKUP_STR(dist_group, config->args, "-set_dist_group", false, false);
    253263    PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb", false, false);
    254264    PXOPT_LOOKUP_STR(tess_id, config->args, "-set_tess_id", false, false);
    255265    PXOPT_LOOKUP_STR(reduction, config->args, "-set_reduction", false, false);
    256266    PXOPT_LOOKUP_STR(end_stage, config->args, "-set_end_stage", false, false);
     267    PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false);
    257268
    258269    PXOPT_LOOKUP_TIME(registered, config->args, "-registered", false, false);
     
    340351                                 workdir     ? workdir   : row->workdir,
    341352                                 label       ? label     : row->label,
     353                                 data_group  ? data_group: row->data_group,
     354                                 dist_group  ? dist_group: row->dist_group,
    342355                                 dvodb       ? dvodb     : row->dvodb,
    343356                                 tess_id     ? tess_id   : row->tess_id,
    344357                                 reduction   ? reduction : row->reduction,
    345                                  end_stage   ? end_stage : row->end_stage))
     358                                 end_stage   ? end_stage : row->end_stage,
     359                                 note))
    346360          {
    347361            psError(PS_ERR_UNKNOWN, false, "failed to trying to queue fake_id: %" PRId64, row->fake_id);
     
    371385    PXOPT_COPY_STR(config->args, where, "-label",     "warpRun.label",     "==");
    372386    PXOPT_COPY_STR(config->args, where, "-state",     "warpRun.state",     "==");
    373 
    374     if (!psListLength(where->list)
    375         && !psMetadataLookupBool(NULL, config->args, "-all")) {
     387    PXOPT_COPY_STR(config->args, where, "-data_group","warpRun.data_group",     "==");
     388    PXOPT_COPY_STR(config->args, where, "-dist_group","warpRun.dist_group",     "==");
     389
     390    if (!psListLength(where->list)) {
    376391        psFree(where);
    377         where = NULL;
    378392        psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
    379393        return false;
    380394    }
    381 
    382     PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);
    383     PXOPT_LOOKUP_STR(label, config->args, "-set_label", false, false);
    384 
    385     if ((!state) && (!label)) {
    386         psError(PXTOOLS_ERR_DATA, false, "parameters (-state or -label) are required");
    387         psFree(where);
    388         return false;
    389     }
    390 
    391     if (state) {
    392         // set warpRun.state to state
    393         if (!pxwarpRunSetStateByQuery(config, where, state)) {
    394             psFree(where);
    395             return false;
    396         }
    397     }
    398 
    399     if (label) {
    400         // set chipRun.label to label
    401         if (!pxwarpRunSetLabelByQuery(config, where, label)) {
    402             psFree(where);
    403             return false;
    404         }
    405     }
    406 
     395   
     396    psString query = psStringCopy("UPDATE warpRun JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id)");
     397
     398    // pxUpdateRun gets parameters from config->args and updates
     399    bool result = pxUpdateRun(config, where, &query, "warpRun", true);
     400
     401    psFree(query);
    407402    psFree(where);
    408403
    409     return true;
    410 }
    411 
     404    return result;
     405}
    412406
    413407static bool expMode(pxConfig *config)
     
    12041198    pxAddLabelSearchArgs (config, where, "-label",   "warpRun.label", "LIKE");
    12051199
    1206     PXOPT_LOOKUP_U64(magicked, config->args, "-magicked", false, false);
    1207     PXOPT_LOOKUP_BOOL(destreaked, config->args,     "-destreaked", false);
    1208     PXOPT_LOOKUP_BOOL(not_destreaked, config->args, "-not_destreaked", false);
    1209 
    12101200    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
    12111201
     
    12201210    }
    12211211
     1212    // generate where strings for arguments that require extra processing
     1213    // beyond PXOPT_COPY*
     1214    psString where2 = NULL;
     1215    if (!pxmagicAddWhere(config, &where2, "warpSkyfile")) {
     1216        psError(PXTOOLS_ERR_DATA, false, "pxMagicAddWhere failed");
     1217        return false;
     1218    }
     1219    if (!pxspaceAddWhere(config, &where2, "rawExp")) {
     1220        psError(PXTOOLS_ERR_DATA, false, "pxSpaceAddWhere failed");
     1221        return false;
     1222    }
     1223
    12221224    if (psListLength(where->list)) {
    12231225        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
    12241226        psStringAppend(&query, " AND %s", whereClause);
    12251227        psFree(whereClause);
    1226     } else if (!all) {
     1228    } else if (!all && !where2) {
    12271229        psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required");
    12281230        return false;
     
    12301232    psFree(where);
    12311233
    1232     if (not_destreaked) {
    1233         if (destreaked) {
    1234             psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -destreaked makes no sense");
    1235             return false;
    1236         }
    1237         if (magicked) {
    1238             psError(PXTOOLS_ERR_DATA, true, "providing -not_destreaked and -magicked makes no sense");
    1239             return false;
    1240         }
    1241         psStringAppend(&query, " AND warpSkyfile.magicked = 0");
    1242     }
    1243     if (destreaked) {
    1244         psStringAppend(&query, " AND warpSkyfile.magicked != 0");
     1234    if (where2) {
     1235        psStringAppend(&query, " %s", where2);
    12451236    }
    12461237
     
    17121703    PXOPT_LOOKUP_STR(skycell_id, config->args, "-skycell_id", true, false);
    17131704    PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false);
    1714 
    1715     psString query = pxDataGet("warptool_updateskyfile.sql");
    1716 
    1717     if (!p_psDBRunQueryF(config->dbh, query, fault, warp_id, skycell_id)) {
    1718         psError(PS_ERR_UNKNOWN, false, "database error");
    1719         return false;
    1720     }
    1721     psFree(query);
     1705    PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);
     1706
     1707    if (!state) {
     1708      psString query = pxDataGet("warptool_updateskyfile.sql");
     1709     
     1710      if (!p_psDBRunQueryF(config->dbh, query, fault, warp_id, skycell_id)) {
     1711        psError(PS_ERR_UNKNOWN, false, "database error");
     1712        return false;
     1713      }
     1714      psFree(query);
     1715    }
     1716    else {
     1717      if (strcmp(state,"error_cleaned") == 0) {
     1718        change_skyfile_data_state(config,"error_cleaned","goto_cleaned");
     1719      }
     1720      else if (strcmp(state, "error_scrubbed") == 0) {
     1721        change_skyfile_data_state(config,"error_scrubbed","goto_scrubbed");
     1722      }
     1723      else if (strcmp(state, "error_purged") == 0) {
     1724        change_skyfile_data_state(config,"error_purged","goto_purged");
     1725      }
     1726      else {
     1727        psError(PS_ERR_UNKNOWN, false, "unhandled state given");
     1728        return(false);
     1729      }
     1730    }
    17221731
    17231732    return true;
     
    17441753    }
    17451754
     1755    if (!pxExportVersion(config, f)) {
     1756        psError(PS_ERR_UNKNOWN, false, "failed to write dbversion output file");
     1757        return false;
     1758    }
    17461759    psMetadata *where = psMetadataAlloc();
    17471760    PXOPT_COPY_S64(config->args, where, "-warp_id", "warp_id", "==");
     
    18361849  psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false);
    18371850
    1838   fprintf (stdout, "---- input ----\n");
     1851#ifdef notdef
     1852  fprintf (stderr, "---- input ----\n");
    18391853  psMetadataPrint (stderr, input, 1);
     1854#endif
     1855
     1856  if (!pxCheckImportVersion(config, input)) {
     1857      psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed");
     1858      return false;
     1859  }
    18401860
    18411861  psMetadataItem *item = psMetadataLookup (input, "warpRun");
     
    19001920  return true;
    19011921}
     1922
     1923static bool runstateMode(pxConfig *config)
     1924{
     1925    PS_ASSERT_PTR_NON_NULL(config, false);
     1926
     1927    psMetadata *where = psMetadataAlloc();
     1928    PXOPT_COPY_S64(config->args, where, "-warp_id",    "warpRun.warp_id", "==");
     1929    PXOPT_COPY_S64(config->args, where, "-exp_id",     "rawExp.exp_id", "==");
     1930    PXOPT_COPY_STR(config->args, where, "-exp_name",   "rawExp.exp_name", "==");
     1931    pxAddLabelSearchArgs (config, where, "-label",     "warpRun.label", "LIKE");
     1932
     1933//    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     1934    PXOPT_LOOKUP_BOOL(no_magic, config->args, "-no_magic", false);
     1935
     1936    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1937    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1938
     1939    psString query = pxDataGet("warptool_runstate.sql");
     1940    if (!query) {
     1941        psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1942        return false;
     1943    }
     1944
     1945    if (psListLength(where->list)) {
     1946        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1947        psStringAppend(&query, " WHERE %s", whereClause);
     1948        psFree(whereClause);
     1949    } else {
     1950        psError(PXTOOLS_ERR_DATA, true, "search parameters or -all are required");
     1951        return false;
     1952    }
     1953    psFree(where);
     1954
     1955    // treat limit == 0 as "no limit"
     1956    if (limit) {
     1957        psString limitString = psDBGenerateLimitSQL(limit);
     1958        psStringAppend(&query, " %s", limitString);
     1959        psFree(limitString);
     1960    }
     1961
     1962    if (!p_psDBRunQuery(config->dbh, query)) {
     1963        psError(PS_ERR_UNKNOWN, false, "database error");
     1964        psFree(query);
     1965        return false;
     1966    }
     1967    psFree(query);
     1968
     1969    psArray *output = p_psDBFetchResult(config->dbh);
     1970    if (!output) {
     1971        psErrorCode err = psErrorCodeLast();
     1972        switch (err) {
     1973            case PS_ERR_DB_CLIENT:
     1974                psError(PXTOOLS_ERR_SYS, false, "database error");
     1975            case PS_ERR_DB_SERVER:
     1976                psError(PXTOOLS_ERR_PROG, false, "database error");
     1977            default:
     1978                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1979        }
     1980
     1981        return false;
     1982    }
     1983    if (!psArrayLength(output)) {
     1984        psTrace("warptool", PS_LOG_INFO, "no rows found");
     1985        psFree(output);
     1986        return true;
     1987    }
     1988
     1989    if (psArrayLength(output)) {
     1990        // negative simple so the default is true
     1991        if (!ippdbPrintMetadatas(stdout, output, "warpRunState", !simple)) {
     1992            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1993            psFree(output);
     1994            return false;
     1995        }
     1996    }
     1997
     1998    psFree(output);
     1999
     2000    return true;
     2001}
Note: See TracChangeset for help on using the changeset viewer.