IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 10, 2010, 6:28:51 PM (16 years ago)
Author:
watersc1
Message:

Skycell Summary and stack Association stuff should be finished. I'll merge and do final tests on monday.

Location:
branches/czw_branch/20100519
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/czw_branch/20100519

  • branches/czw_branch/20100519/ippTools/src

    • Property svn:ignore
      •  

        old new  
        3838stamp-h1
        3939warptool
        40 
         40staticskytool
  • branches/czw_branch/20100519/ippTools/src/stacktool.c

    r28245 r28304  
    3939static bool addsumskyfileMode(pxConfig *config);
    4040static bool sumskyfileMode(pxConfig *config);
     41static bool sassskyfileMode(pxConfig *config);
    4142static bool revertsumskyfileMode(pxConfig *config);
    4243static bool tosummaryMode(pxConfig *config);
     
    7778        MODECASE(STACKTOOL_MODE_ADDSUMSKYFILE,         addsumskyfileMode);
    7879        MODECASE(STACKTOOL_MODE_SUMSKYFILE,            sumskyfileMode);
     80        MODECASE(STACKTOOL_MODE_SASSSKYFILE,            sassskyfileMode);
    7981        MODECASE(STACKTOOL_MODE_REVERTSUMSKYFILE,      revertsumskyfileMode);
    8082        MODECASE(STACKTOOL_MODE_TOSUMMARY,             tosummaryMode);
     
    116118  psString idString = NULL;
    117119  psStringAppend(&idString, "%" PRId64, stack_id);
    118   psStringSubstitute(&select,idString, "@STACK_ID@");
     120  // Copy string to get around the issue with psStringSubstitute not believing
     121  // that select is a psString.
     122  psString rep = psStringCopy(select);
     123  psFree(select);
     124  select = rep;
     125  psStringSubstitute(&select, idString, "@STACK_ID@");
    119126  psFree(idString);
    120127
     
    143150    return(NULL);
    144151  }
    145   psMetadata *outrow = NULL;
     152  psMetadata *outrow = psMetadataAlloc();
    146153  for (long i = 0; i < output->n; i++) {
    147154    psMetadata *row = output->data[i];
    148     if (!psMetadataCopy(row,outrow)) {
    149       psError(PS_ERR_UNKNOWN, false, "Failed to copy row to return");
    150       return(NULL);
    151     }
    152   }
     155
     156    printf("%" PRId64 " %s %s %s %s\n",psMetadataLookupS64(NULL,row,"sass_id"),
     157           psMetadataLookupStr(NULL,row,"data_group"),
     158           psMetadataLookupStr(NULL,row,"tess_id"),
     159           psMetadataLookupStr(NULL,row,"filter"),
     160           psMetadataLookupStr(NULL,row,"projection_cell"));
     161
     162    if (psMetadataLookupS64(NULL,row,"sass_id") == PS_MAX_S64) {
     163      psMetadataAddS64(outrow,PS_LIST_TAIL,"sass_id",PS_META_REPLACE,"",0);
     164    }
     165    else {
     166      psMetadataAddS64(outrow,PS_LIST_TAIL,"sass_id",PS_META_REPLACE,"",psMetadataLookupS64(NULL,row,"sass_id"));
     167    }
     168    psMetadataAddStr(outrow,PS_LIST_TAIL,"data_group",PS_META_REPLACE,"",psMetadataLookupStr(NULL,row,"data_group"));
     169    psMetadataAddStr(outrow,PS_LIST_TAIL,"tess_id",PS_META_REPLACE,"",psMetadataLookupStr(NULL,row,"tess_id"));
     170    psMetadataAddStr(outrow,PS_LIST_TAIL,"filter",PS_META_REPLACE,"",psMetadataLookupStr(NULL,row,"filter"));
     171    psMetadataAddStr(outrow,PS_LIST_TAIL,"projection_cell",PS_META_REPLACE,"",
     172                     psMetadataLookupStr(NULL,row,"projection_cell"));
     173  }
     174  printf("%" PRId64 " %s %s %s %s\n",psMetadataLookupS64(NULL,outrow,"sass_id"),
     175         psMetadataLookupStr(NULL,outrow,"data_group"),
     176         psMetadataLookupStr(NULL,outrow,"tess_id"),
     177         psMetadataLookupStr(NULL,outrow,"filter"),
     178         psMetadataLookupStr(NULL,outrow,"projection_cell"));
     179 
     180
    153181  psFree(output);
    154182  stackAssociationRow *sassRow = stackAssociationObjectFromMetadata(outrow);
     
    10631091    psMetadata *where = psMetadataAlloc();
    10641092    PXOPT_COPY_S64(config->args, where, "-stack_id", "stackSumSkyfile.stack_id", "==");
    1065     PXOPT_COPY_S64(config->args, where, "-sass_id", "stackAssociationMap.sass_id", "==");
    10661093    PXOPT_COPY_STR(config->args, where, "-tess_id", "stackRun.tess_id", "==");
    10671094    PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "==");
     
    10821109
    10831110    psString query = pxDataGet("stacktool_sumskyfile.sql");
     1111    if (!query) {
     1112        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1113        return false;
     1114    }
     1115
     1116    if (psListLength(where->list)) {
     1117        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1118        psStringAppend(&query, " WHERE %s", whereClause);
     1119        psFree(whereClause);
     1120    } else if (!all) {
     1121        psError(PXTOOLS_ERR_CONFIG, true, "search parameters or -all are required");
     1122        return false;
     1123    }
     1124
     1125    psFree(where);
     1126
     1127    // treat limit == 0 as "no limit"
     1128    if (limit) {
     1129        psString limitString = psDBGenerateLimitSQL(limit);
     1130        psStringAppend(&query, " %s", limitString);
     1131        psFree(limitString);
     1132    }
     1133
     1134    if (!p_psDBRunQuery(config->dbh, query)) {
     1135        psError(PS_ERR_UNKNOWN, false, "database error");
     1136        psFree(query);
     1137        return false;
     1138    }
     1139    psFree(query);
     1140
     1141    psArray *output = p_psDBFetchResult(config->dbh);
     1142    if (!output) {
     1143        psErrorCode err = psErrorCodeLast();
     1144        switch (err) {
     1145            case PS_ERR_DB_CLIENT:
     1146                psError(PXTOOLS_ERR_SYS, false, "database error");
     1147            case PS_ERR_DB_SERVER:
     1148                psError(PXTOOLS_ERR_PROG, false, "database error");
     1149            default:
     1150                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1151        }
     1152
     1153        return false;
     1154    }
     1155    if (!psArrayLength(output)) {
     1156        psTrace("stacktool", PS_LOG_INFO, "no rows found");
     1157        psFree(output);
     1158        return true;
     1159    }
     1160
     1161    if (psArrayLength(output)) {
     1162        if (!ippdbPrintMetadatas(stdout, output, "stackSumSkyfile", !simple)) {
     1163            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1164            psFree(output);
     1165            return false;
     1166        }
     1167    }
     1168
     1169    psFree(output);
     1170
     1171    return true;
     1172}
     1173
     1174static bool sassskyfileMode(pxConfig *config)
     1175{
     1176    PS_ASSERT_PTR_NON_NULL(config, false);
     1177
     1178    psMetadata *where = psMetadataAlloc();
     1179    PXOPT_COPY_S64(config->args, where, "-sass_id", "stackAssociation.sass_id", "==");
     1180    PXOPT_COPY_STR(config->args, where, "-tess_id", "stackAssociation.tess_id", "==");
     1181    PXOPT_COPY_STR(config->args, where, "-projection_cell", "stackAssociation.projection_cell", "==");
     1182    PXOPT_COPY_STR(config->args, where, "-filter", "stackAssociation.filter", "LIKE");
     1183    PXOPT_COPY_STR(config->args, where, "-data_group", "stackAssociation.data_group", "LIKE");
     1184
     1185//  The following three selectors are incompatible with the sql so omit them
     1186//    PXOPT_COPY_S64(config->args, where, "-warp_id", "warpRun.warp_id", "==");
     1187//     PXOPT_COPY_S64(config->args, where, "-exp_id", "rawExp.exp_id", "==");
     1188//    PXOPT_COPY_STR(config->args, where, "-exp_name", "rawExp.exp_name", "==");
     1189
     1190    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     1191
     1192    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1193    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1194
     1195    psString query = pxDataGet("stacktool_sassskyfile.sql");
    10841196    if (!query) {
    10851197        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     
    13181430  PS_ASSERT_PTR_NON_NULL(config, NULL);
    13191431
    1320   PXOPT_LOOKUP_S64(stack_id, config->args, "-stack_id", true, false);
     1432  PXOPT_LOOKUP_S64(sass_id, config->args, "-sass_id", true, false);
    13211433  PXOPT_LOOKUP_STR(projection_cell, config->args, "-projection_cell", true, false);
    13221434  PXOPT_LOOKUP_STR(path_base, config->args, "-path_base", true, false);
     
    13271439    return(false);
    13281440  }
    1329   if (!p_psDBRunQueryF(config->dbh, query, stack_id, projection_cell, path_base)) {
     1441  if (!p_psDBRunQueryF(config->dbh, query, sass_id, projection_cell, path_base)) {
    13301442    psError(PS_ERR_UNKNOWN, false, "database error");
    13311443    psFree(query);
Note: See TracChangeset for help on using the changeset viewer.