IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Aug 12, 2014, 3:55:38 PM (12 years ago)
Author:
eugene
Message:

merge changes from trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20140717/ippTools/src/releasetool.c

    r37075 r37242  
    4444static bool updaterelexpMode(pxConfig *config);
    4545static bool listrelexpMode(pxConfig *config);
     46static bool deleterelexpMode(pxConfig *config);
    4647static bool definerelstackMode(pxConfig *config);
    4748static bool updaterelstackMode(pxConfig *config);
     49static bool setrelstackcalibratedfromskycalMode(pxConfig *config);
    4850static bool listrelstackMode(pxConfig *config);
     51static bool deleterelstackMode(pxConfig *config);
    4952static bool summaryMode(pxConfig *config);
    5053static bool definerelgroupMode(pxConfig *config);
     
    8184        MODECASE(RELEASETOOL_MODE_UPDATERELEXP,     updaterelexpMode);
    8285        MODECASE(RELEASETOOL_MODE_LISTRELEXP,       listrelexpMode);
     86        MODECASE(RELEASETOOL_MODE_DELETERELEXP,     deleterelexpMode);
    8387
    8488        MODECASE(RELEASETOOL_MODE_DEFINERELSTACK,   definerelstackMode);
    8589        MODECASE(RELEASETOOL_MODE_UPDATERELSTACK,   updaterelstackMode);
     90        MODECASE(RELEASETOOL_MODE_SETRELSTACKCALIBRATEDFROMSKYCAL, setrelstackcalibratedfromskycalMode);
    8691        MODECASE(RELEASETOOL_MODE_LISTRELSTACK,     listrelstackMode);
     92        MODECASE(RELEASETOOL_MODE_DELETERELSTACK,   deleterelstackMode);
    8793        MODECASE(RELEASETOOL_MODE_SUMMARY,          summaryMode);
    8894
     
    817823
    818824    psFree(output);
     825
     826    return true;
     827}
     828
     829static bool deleterelexpMode(pxConfig *config)
     830{
     831    PS_ASSERT_PTR_NON_NULL(config, false);
     832
     833    PXOPT_LOOKUP_S64(relexp_id, config->args,   "-relexp_id", false, false);
     834    // If relexp_id is supplied that is all that we need
     835    if (!relexp_id) {
     836        // Otherwise we need to identify the release ...
     837        PXOPT_LOOKUP_STR(release_name, config->args, "-release_name", false, false);
     838        PXOPT_LOOKUP_S32(rel_id, config->args,      "-rel_id", false, false);
     839
     840        if (!release_name && !rel_id) {
     841            psError(PXTOOLS_ERR_CONFIG, true, "at least one of -relexp_id, -release_name, or -rel_id is required\n");
     842            return false;
     843        }
     844        // ... and the exposure
     845        PXOPT_LOOKUP_STR(label, config->args,       "-label", false, false);
     846        PXOPT_LOOKUP_S64(cam_id, config->args,      "-cam_id", false, false);
     847        PXOPT_LOOKUP_S64(exp_id, config->args,      "-exp_id", false, false);
     848        PXOPT_LOOKUP_STR(exp_name, config->args,    "-exp_name", false, false);
     849        if (!label && !cam_id && !exp_id && !exp_name) {
     850            psError(PXTOOLS_ERR_CONFIG, true, "at least one of -label, -cam_id, -exp_id, -exp_name is required\n");
     851            return false;
     852        }
     853    }
     854
     855    psMetadata *where = psMetadataAlloc();
     856
     857    PXOPT_COPY_S32(config->args, where, "-relexp_id", "relExp.relexp_id", "==");
     858    PXOPT_COPY_STR(config->args, where, "-label",  "camRun.label", "==");
     859    PXOPT_COPY_S64(config->args, where, "-cam_id", "relExp.cam_id", "==");
     860    PXOPT_COPY_S64(config->args, where, "-exp_id", "relExp.exp_id", "==");
     861    PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "==");
     862
     863    PXOPT_COPY_S32(config->args, where, "-rel_id",  "relExp.rel_id", "==");
     864    PXOPT_COPY_STR(config->args, where, "-release_name", "ippRelease.release_name", "==");
     865
     866    psString query = pxDataGet("releasetool_deleterelexp.sql");
     867
     868    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     869    psStringAppend(&query, "\n    AND %s", whereClause);
     870    psFree(whereClause);
     871
     872    if (!p_psDBRunQuery(config->dbh, query)) {
     873        psError(PS_ERR_UNKNOWN, false, "database error");
     874        psFree(query);
     875        return false;
     876    }
     877
     878    psU64 affected = psDBAffectedRows(config->dbh);
     879    psLogMsg("releasetool", PS_LOG_INFO, "Deleted %" PRIu64 " relExp rows", affected);
     880
     881
     882    psFree(query);
    819883
    820884    return true;
     
    10281092    return false;
    10291093}
     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    PXOPT_LOOKUP_BOOL(replace, config->args, "-replace", false);
     1127
     1128    psString query = pxDataGet("releasetool_setrelstackcalibratedfromskycal.sql");
     1129    if (!query) {
     1130        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1131        psFree(where);
     1132        return false;
     1133    }
     1134
     1135    if (replace) {
     1136        // don't cut on relStack.state
     1137        psStringAppend(&query, "\nWHERE ");;
     1138    } else {
     1139        // normal path only update rows in state processed
     1140        psStringAppend(&query, "\nWHERE relStack.state = 'processed'\nAND ");;
     1141    }
     1142       
     1143    // Add in the where conditions
     1144    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1145    psStringAppend(&query, "%s", whereClause);
     1146    psFree(whereClause);
     1147
     1148    if (limit) {
     1149        psString limitString = psDBGenerateLimitSQL(limit);
     1150        psStringAppend(&query, " %s", limitString);
     1151        psFree(limitString);
     1152    }
     1153
     1154    if (!p_psDBRunQuery(config->dbh, query)) {
     1155        psError(PS_ERR_UNKNOWN, false, "database error");
     1156        psFree(query);
     1157        return false;
     1158    }
     1159    psFree(query);
     1160
     1161    psU64 affected = psDBAffectedRows(config->dbh);
     1162    psLogMsg("releasetool", PS_LOG_INFO, "Updated %" PRIu64 " relStack rows", affected);
     1163
     1164    return true;
     1165}
     1166
     1167static bool deleterelstackMode(pxConfig *config)
     1168{
     1169    PS_ASSERT_PTR_NON_NULL(config, false);
     1170
     1171    PXOPT_LOOKUP_S64(relstack_id, config->args,   "-relstack_id", false, false);
     1172    // If relexp_id is supplied that is all that we need
     1173    if (!relstack_id) {
     1174        // Otherwise we need to identify the release ...
     1175        PXOPT_LOOKUP_STR(release_name, config->args, "-release_name", false, false);
     1176        PXOPT_LOOKUP_S32(rel_id, config->args,      "-rel_id", false, false);
     1177
     1178        if (!release_name && !rel_id) {
     1179            psError(PXTOOLS_ERR_CONFIG, true, "at least one of -relstack_id, -release_name, or -rel_id is required\n");
     1180            return false;
     1181        }
     1182        // ... and the Stack
     1183        PXOPT_LOOKUP_STR(label, config->args,       "-label", false, false);
     1184        PXOPT_LOOKUP_S64(stack_id, config->args,    "-stack_id", false, false);
     1185        if (!label && !stack_id) {
     1186            psError(PXTOOLS_ERR_CONFIG, true, "at least one of -label and  -stack_id is required\n");
     1187            return false;
     1188        }
     1189    }
     1190
     1191    psMetadata *where = psMetadataAlloc();
     1192
     1193    PXOPT_COPY_S32(config->args, where, "-relstack_id", "relStack.relstack_id", "==");
     1194    PXOPT_COPY_STR(config->args, where, "-label", "stackRun.label", "==");
     1195    PXOPT_COPY_S64(config->args, where, "-stack_id", "relStack.stack_id", "==");
     1196
     1197    PXOPT_COPY_S32(config->args, where, "-rel_id", "relStack.rel_id", "==");
     1198    PXOPT_COPY_STR(config->args, where, "-release_name", "ippRelease.release_name", "==");
     1199
     1200    psString query = pxDataGet("releasetool_deleterelstack.sql");
     1201
     1202    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1203    psStringAppend(&query, "\n    AND %s", whereClause);
     1204    psFree(whereClause);
     1205
     1206    if (!p_psDBRunQuery(config->dbh, query)) {
     1207        psError(PS_ERR_UNKNOWN, false, "database error");
     1208        psFree(query);
     1209        return false;
     1210    }
     1211
     1212    psU64 affected = psDBAffectedRows(config->dbh);
     1213    psLogMsg("releasetool", PS_LOG_INFO, "Deleted %" PRIu64 " relStack rows", affected);
     1214
     1215
     1216    psFree(query);
     1217
     1218    return true;
     1219}
    10301220
    10311221static bool listrelstackMode(pxConfig *config)
     
    10521242
    10531243    PXOPT_COPY_STR(config->args, where, "-surveyName",  "survey.surveyName", "LIKE");
    1054     PXOPT_COPY_S32(config->args, where, "-rel_id",      "relExp.rel_id", "==");
     1244    PXOPT_COPY_S32(config->args, where, "-rel_id",      "relStack.rel_id", "==");
    10551245    pxskycellAddWhere(config, where);
    10561246
Note: See TracChangeset for help on using the changeset viewer.