IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 28, 2014, 2:25:02 PM (12 years ago)
Author:
bills
Message:

add releasetool -setrelstackcalibratedfromskycal which for a given release and skycal identifier
(label, data_group, or skycal_id)
copies the zero point information from the skycalResult into the corresponding relStack(s) identified
relStack.stack_id = skycalRun.stack_id
For now only do this if the relStacks are in state processed. May want to revisit this in the
future so that say, skycal can be rerun.

File:
1 edited

Legend:

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

    r37122 r37131  
    4747static bool definerelstackMode(pxConfig *config);
    4848static bool updaterelstackMode(pxConfig *config);
     49static bool setrelstackcalibratedfromskycalMode(pxConfig *config);
    4950static bool listrelstackMode(pxConfig *config);
    5051static bool deleterelstackMode(pxConfig *config);
     
    8788        MODECASE(RELEASETOOL_MODE_DEFINERELSTACK,   definerelstackMode);
    8889        MODECASE(RELEASETOOL_MODE_UPDATERELSTACK,   updaterelstackMode);
     90        MODECASE(RELEASETOOL_MODE_SETRELSTACKCALIBRATEDFROMSKYCAL, setrelstackcalibratedfromskycalMode);
    8991        MODECASE(RELEASETOOL_MODE_LISTRELSTACK,     listrelstackMode);
    9092        MODECASE(RELEASETOOL_MODE_DELETERELSTACK,   deleterelstackMode);
     
    10901092    return false;
    10911093}
     1094static bool setrelstackcalibratedfromskycalMode(pxConfig *config)
     1095{
     1096    PS_ASSERT_PTR_NON_NULL(config, NULL);
     1097
     1098    psMetadata *where = psMetadataAlloc();
     1099
     1100    PXOPT_COPY_STR(config->args, where, "-skycal_label", "skycalRun.label", "==");
     1101    PXOPT_COPY_STR(config->args, where, "-skycal_data_group", "skycalRun.data_group", "LIKE");
     1102    PXOPT_COPY_S64(config->args, where, "-skycal_id",  "skycalRun.skycal_id", "==");
     1103    if (!psListLength(where->list)) {
     1104        psError(PXTOOLS_ERR_CONFIG, false, "at least one of -skycal_label, -skycal_data_group, or -skycal_id is required");
     1105        return false;
     1106    }
     1107
     1108    PXOPT_COPY_STR(config->args, where, "-tess_id",    "stackRun.tess_id", "==");
     1109    PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "==");
     1110    pxskycellAddWhere(config, where);
     1111
     1112    // insure that at least one of these is supplied to select the release
     1113    PXOPT_LOOKUP_S64(rel_id, config->args,      "-rel_id", false, false);
     1114    PXOPT_LOOKUP_STR(release_name, config->args, "-release_name", false, false);
     1115    if (!rel_id && !release_name) {
     1116        psError(PXTOOLS_ERR_CONFIG, true, "either -rel_id or -release_name is required");
     1117        return false;
     1118    }
     1119
     1120    // limit query to the target release. (Note: this will select nothing if release_name and rel_id don't match)
     1121    // note: we add these after above to insure that search args are supplied
     1122    PXOPT_COPY_STR(config->args, where, "-release_name", "ippRelease.release_name", "==");
     1123    PXOPT_COPY_S32(config->args, where, "-rel_id", "ippRelease.rel_id", "==");
     1124
     1125    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1126
     1127    psString query = pxDataGet("releasetool_setrelstackcalibratedfromskycal.sql");
     1128    if (!query) {
     1129        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1130        psFree(where);
     1131        return false;
     1132    }
     1133
     1134    // Add in the where conditions
     1135    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1136    psStringAppend(&query, "\nAND %s", whereClause);
     1137    psFree(whereClause);
     1138
     1139    if (limit) {
     1140        psString limitString = psDBGenerateLimitSQL(limit);
     1141        psStringAppend(&query, " %s", limitString);
     1142        psFree(limitString);
     1143    }
     1144
     1145    if (!p_psDBRunQuery(config->dbh, query)) {
     1146        psError(PS_ERR_UNKNOWN, false, "database error");
     1147        psFree(query);
     1148        return false;
     1149    }
     1150    psFree(query);
     1151
     1152    psU64 affected = psDBAffectedRows(config->dbh);
     1153    psLogMsg("releasetool", PS_LOG_INFO, "Updated %" PRIu64 " relStack rows", affected);
     1154
     1155    return true;
     1156}
     1157
    10921158static bool deleterelstackMode(pxConfig *config)
    10931159{
Note: See TracChangeset for help on using the changeset viewer.