IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 27738


Ignore:
Timestamp:
Apr 23, 2010, 11:20:24 AM (16 years ago)
Author:
bills
Message:

Add -listrun mode.
Fix handling of magicked bits during update.
Various other changes to the 'list' modes to support the postage stamp server

Location:
trunk/ippTools
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/share/chiptool_change_imfile_data_state.sql

    r23384 r27738  
    33-- chip_id and class_id
    44UPDATE chipProcessedImfile
     5JOIN chipRun USING(chip_id, exp_id)
    56JOIN rawImfile USING(exp_id, class_id)
    67    SET
  • trunk/ippTools/share/chiptool_pendingcleanupimfile.sql

    r22751 r27738  
    1313    USING(chip_id)
    1414WHERE
    15     ((chipRun.state = 'goto_cleaned' AND chipProcessedImfile.data_state = 'full')
     15    ((chipRun.state = 'goto_cleaned' AND (chipProcessedImfile.data_state = 'full'
     16                                       OR chipProcessedImfile.data_state = 'update'))
    1617OR
    17     (chipRun.state = 'goto_scrubbed' AND chipProcessedImfile.data_state = 'full')
     18    (chipRun.state = 'goto_scrubbed' AND chipProcessedImfile.data_state != 'scrubbed')
    1819OR
    1920    (chipRun.state = 'goto_purged' AND chipProcessedImfile.data_state != 'purged'))
  • trunk/ippTools/share/chiptool_pendingimfile.sql

    r27391 r27738  
    3333    OR
    3434    (chipRun.state = 'update'
    35     AND chipProcessedImfile.data_state = 'update'))
    36 -- // Restriction to prevent the processing of bad chips. Not needed now.
    37 --     AND
    38 --     (rawImfile.class_id != 'XY15' AND
    39 --     rawImfile.class_id != 'XY32' AND
    40 --     rawImfile.class_id != 'XY45')
    41 
     35    AND chipProcessedImfile.data_state = 'update'
     36    AND chipProcessedImfile.fault = 0))
  • trunk/ippTools/share/chiptool_processedimfile.sql

    r26907 r27738  
    2222    rawExp.camera,
    2323    rawExp.telescope,
    24     rawExp.filelevel
     24    rawExp.filelevel,
     25    rawImfile.magicked AS raw_magicked,
     26    rawImfile.burntool_state,
     27    magicDSRun.state AS dsRun_state
    2528FROM chipRun
    2629JOIN chipImfile
     
    3033JOIN rawExp
    3134    ON chipProcessedImfile.exp_id = rawExp.exp_id
     35JOIN rawImfile
     36    ON rawExp.exp_id = rawImfile.exp_id
     37    AND chipProcessedImfile.class_id = rawImfile.class_id
     38LEFT JOIN magicDSRun
     39    ON stage_id = chip_id AND stage = 'chip' AND magicDSRun.re_place
  • trunk/ippTools/src/chiptool.c

    r27391 r27738  
    6060static bool runstateMode(pxConfig *config);
    6161static bool setimfiletoupdateMode(pxConfig *config);
     62static bool listrunMode(pxConfig *config);
    6263
    6364# define MODECASE(caseName, func) \
     
    103104        MODECASE(CHIPTOOL_MODE_RUNSTATE,                runstateMode);
    104105        MODECASE(CHIPTOOL_MODE_SETIMFILETOUPDATE,       setimfiletoupdateMode);
     106        MODECASE(CHIPTOOL_MODE_LISTRUN,                 listrunMode);
    105107        default:
    106108            psAbort("invalid option (this should not happen)");
     
    699701    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
    700702    PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);
     703    PXOPT_LOOKUP_BOOL(allfiles, config->args, "-allfiles", false);
     704    if (allfiles) {
     705        faulted = false;
     706    }
    701707
    702708    psMetadata *where = psMetadataAlloc();
     
    740746        // list only faulted rows
    741747        psStringAppend(&query, " %s", "AND chipProcessedImfile.fault != 0");
    742     } else {
     748    } else if (!allfiles) {
    743749        // don't list faulted rows
    744750        psStringAppend(&query, " %s", "AND chipProcessedImfile.fault = 0");
     
    14141420    }
    14151421
    1416     char *set_magicked_imfile = "";
    1417     char *set_magicked_run = "";
     1422    psString set_magicked_imfile = psStringCopy("");
     1423    psString set_magicked_run = psStringCopy("");
    14181424    if (!strcmp(data_state, "full")) {
    14191425        // if (chipProcessedImfile.magicked < 0 and rawImfile.magicked = 0) leave magicked unchanged. This will
     
    14211427        // otherwise copy magicked from the rawImfile
    14221428        // Same thing for chipRun/rawExp
    1423         set_magicked_imfile = "\n , chipProcessedImfile.magicked = IF((chipProcessedImfile.magicked < 0 AND rawImfile.magicked = 0), chipProcessedImfile.magicked, rawImfile.magicked)";
    1424         set_magicked_run = "\n , chipRun.magicked = IF((chipRun.magicked < 0 AND rawExp.magicked = 0), chipRun.magicked, rawExp.magicked)";
     1429        psStringAppend(&set_magicked_imfile, "\n , chipProcessedImfile.magicked = IF((chipProcessedImfile.magicked < 0"
     1430                                      " AND rawImfile.magicked = 0), chipProcessedImfile.magicked, rawImfile.magicked)");
     1431        psStringAppend(&set_magicked_run, "\n , chipRun.magicked = IF((chipRun.magicked < 0 AND rawExp.magicked = 0), "
     1432                                      " chipRun.magicked, rawExp.magicked)");
     1433
    14251434    } else if (!strcmp(data_state, "cleaned") || !strcmp(data_state, "purged")) {
    14261435        // if magicked is non-zero set it to -1
    1427         set_magicked_imfile = "\n, chipProcessedImfile.magicked = IF(chipProcessedImfile.magicked = 0, 0, -1)";
    1428         set_magicked_run = "\n, chipRun.magicked = IF(chipRun.magicked = 0, 0, -1)";
     1436        // Once one imfile has been cleaned, the chipRun is no longer 'magicked'
     1437        psStringAppend(&set_magicked_imfile, "\n, chipProcessedImfile.magicked = IF(chipProcessedImfile.magicked = 0, 0, -1),"
     1438                                             " chipRun.magicked = IF(chipRun.magicked = 0, 0, -1)");
    14291439    }
    14301440
     
    14401450    }
    14411451    psFree(query);
     1452    psFree(set_magicked_imfile);
     1453    psFree(set_magicked_run);
    14421454    if (psDBAffectedRows(config->dbh) < 1) {
    14431455        psError(PS_ERR_UNKNOWN, false, "should have affected atleast 1 row");
     
    17571769    return true;
    17581770}
     1771
     1772static bool listrunMode(pxConfig *config)
     1773{
     1774    PS_ASSERT_PTR_NON_NULL(config, NULL);
     1775
     1776    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1777    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1778    PXOPT_LOOKUP_BOOL(pstamp_order, config->args, "-pstamp_order", false);
     1779
     1780    psMetadata *where = psMetadataAlloc();
     1781    pxchipGetSearchArgs (config, where); // chipRun, chipProcessedImfile, rawExp
     1782    PXOPT_COPY_S64(config->args, where, "-chip_id", "chipRun.chip_id", "==");
     1783    PXOPT_COPY_STR(config->args, where, "-reduction", "chipRun.reduction", "==");
     1784    PXOPT_COPY_STR(config->args, where, "-state", "chipRun.state", "==");
     1785    pxAddLabelSearchArgs (config, where, "-label", "chipRun.label", "LIKE");
     1786    pxAddLabelSearchArgs (config, where, "-data_group", "chipRun.data_group", "LIKE");
     1787    pxAddLabelSearchArgs (config, where, "-dist_group", "chipRun.dist_group", "LIKE");
     1788    PXOPT_COPY_S64(config->args, where, "-magicked", "chipRun.magicked", "==");
     1789
     1790    psString where2 = NULL;
     1791    pxmagicAddWhere(config, &where2, "chipRun");
     1792    // add cuts on ra and decl if supplied
     1793    if (!pxspaceAddWhere(config, &where2, "rawExp")) {
     1794        psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed");
     1795        return false;
     1796    }
     1797
     1798    psString query = pxDataGet("chiptool_listrun.sql");
     1799    if (!query) {
     1800        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1801        return false;
     1802    }
     1803
     1804    if (psListLength(where->list)) {
     1805        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1806        psStringAppend(&query, " WHERE %s %s", whereClause, where2 ? where2 : "");
     1807        psFree(whereClause);
     1808    } else if (psMetadataLookupBool(NULL, config->args, "-all") || where2) {
     1809        psStringAppend(&query, " WHERE chipRun.chip_id IS NOT NULL %s", where2 ? where2 : "");
     1810    } else {
     1811        psFree(where);
     1812        psError(PXTOOLS_ERR_CONFIG, false, "search parameters (or -all) are required");
     1813        return false;
     1814    }
     1815    psFree(where);
     1816
     1817    if (pstamp_order) {
     1818        // put runs in order of exposure id with newest chip Runs first
     1819        // The postage stamp parser depends on this behavior
     1820        psStringAppend(&query, "\nORDER by exp_id, chip_id DESC");
     1821    }
     1822
     1823    // treat limit == 0 as "no limit"
     1824    if (limit) {
     1825        psString limitString = psDBGenerateLimitSQL(limit);
     1826        psStringAppend(&query, " %s", limitString);
     1827        psFree(limitString);
     1828    }
     1829
     1830    if (!p_psDBRunQuery(config->dbh, query)) {
     1831        psError(PS_ERR_UNKNOWN, false, "database error");
     1832        psFree(query);
     1833        return false;
     1834    }
     1835    psFree(query);
     1836
     1837    psArray *output = p_psDBFetchResult(config->dbh);
     1838    if (!output) {
     1839        psError(PS_ERR_UNKNOWN, false, "database error");
     1840        return false;
     1841    }
     1842    if (!psArrayLength(output)) {
     1843        psTrace("chiptool", PS_LOG_INFO, "no rows found");
     1844        psFree(output);
     1845        return true;
     1846    }
     1847
     1848    // negative simple so the default is true
     1849    if (!ippdbPrintMetadatas(stdout, output, "chipRun", !simple)) {
     1850        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1851        psFree(output);
     1852        return false;
     1853    }
     1854
     1855    psFree(output);
     1856
     1857    return true;
     1858}
  • trunk/ippTools/src/chiptoolConfig.c

    r27391 r27738  
    196196    psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-all",  0,            "list everything without search terms", false);
    197197    psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-faulted",  0,        "only return imfiles with a fault status set", false);
     198    psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-allfiles",  0,       "only all matching imfiles regardless of fault status", false);
    198199    psMetadataAddBool(processedimfileArgs, PS_LIST_TAIL, "-simple",  0,         "use the simple output format", false);
    199200
     
    216217    psMetadataAddS16(updateprocessedimfileArgs, PS_LIST_TAIL, "-fault",  0,            "set fault code (required)", 0);
    217218    psMetadataAddStr(updateprocessedimfileArgs, PS_LIST_TAIL, "-set_state", 0,         "set state", NULL);
     219
     220    // -processedExp
     221    psMetadata *listrunArgs = psMetadataAlloc();
     222    pxchipSetSearchArgs(listrunArgs);
     223    psMetadataAddS64(listrunArgs, PS_LIST_TAIL, "-chip_id",  0,         "search by  chip ID", 0);
     224    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-reduction",          0, "search by reduction class", NULL);
     225    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-label",  PS_META_DUPLICATE_OK, "search by chipRun label (LIKE comparison)", NULL);
     226    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-state",              0, "search by chipRun state", NULL);
     227    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-data_group",  PS_META_DUPLICATE_OK, "search by chipRun data_group (LIKE comparison)", NULL);
     228    psMetadataAddStr(listrunArgs,  PS_LIST_TAIL, "-dist_group",  PS_META_DUPLICATE_OK, "search by chipRun dist_group (LIKE comparison)", NULL);
     229    pxmagicAddArguments(listrunArgs);
     230
     231    psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-pstamp_order",  0,    "order results for postage stamp server", false);
     232    psMetadataAddU64(listrunArgs,  PS_LIST_TAIL, "-limit",  0,           "limit result set to N items", 0);
     233    psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-all",  0,            "list everything without search terms", false);
     234    psMetadataAddBool(listrunArgs, PS_LIST_TAIL, "-simple",  0,         "use the simple output format", false);
     235    pxspaceAddArguments(listrunArgs);
     236
    218237    // -block
    219238    psMetadata *blockArgs = psMetadataAlloc();
     
    328347    PXOPT_ADD_MODE("-revertprocessedimfile","undo a processed imfile",              CHIPTOOL_MODE_REVERTPROCESSEDIMFILE,revertprocessedimfileArgs);
    329348    PXOPT_ADD_MODE("-runstate",             "list the states of chip run",          CHIPTOOL_MODE_RUNSTATE,             runstateArgs);
     349    PXOPT_ADD_MODE("-listrun",              "list chipRuns",                        CHIPTOOL_MODE_LISTRUN,              listrunArgs);
    330350    PXOPT_ADD_MODE("-advanceexp",           "advance completed exposures",          CHIPTOOL_MODE_ADVANCEEXP,           advanceexpArgs);
    331351    PXOPT_ADD_MODE("-block",                "set a label block",                    CHIPTOOL_MODE_BLOCK,                blockArgs);
Note: See TracChangeset for help on using the changeset viewer.