IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 21, 2014, 5:42:34 AM (12 years ago)
Author:
eugene
Message:

merge changes from trunk

Location:
branches/eam_branches/ps2-tc3-20130727
Files:
26 edited
6 copied

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ps2-tc3-20130727

  • branches/eam_branches/ps2-tc3-20130727/ippTools/src

    • Property svn:ignore
      •  

        old new  
        4747sctool
        4848releasetool
         49fftool
         50remotetool
         51
    • Property svn:mergeinfo deleted
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/Makefile.am

    r34913 r36680  
    3333        vptool \
    3434        sctool \
    35         releasetool
     35        releasetool \
     36        fftool \
     37        remotetool
    3638
    3739pkginclude_HEADERS = \
     
    8789        vptool.h \
    8890        sctool.h \
    89         releasetool.h
     91        releasetool.h \
     92        fftool.h \
     93        remotetool.h
    9094
    9195lib_LTLIBRARIES = libpxtools.la
     
    332336    releasetoolConfig.c
    333337
     338fftool_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(IPPDB_CFLAGS)
     339fftool_LDADD = $(PSLIB_LIBS) $(PSMODULES_LIBS) $(IPPDB_LIBS) libpxtools.la
     340fftool_SOURCES = \
     341    fftool.c \
     342    fftoolConfig.c
     343
     344remotetool_CFLAGS = $(PSLIB_CFLAGS) $(PSMODULES_CFLAGS) $(IPPDB_CFLAGS)
     345remotetool_LDADD  = $(PSLIB_LIBS)   $(PSMODULES_LIBS)   $(IPPDB_LIBS)   libpxtools.la
     346remotetool_SOURCES = \
     347    remotetool.c \
     348    remotetoolConfig.c
     349
    334350clean-local:
    335351        -rm -f TAGS
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/camtool.c

    • Property svn:mergeinfo deleted
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/camtoolConfig.c

    • Property svn:mergeinfo deleted
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/chiptool.c

    r35860 r36680  
    12551255
    12561256    psMetadata *where = psMetadataAlloc();
    1257     pxAddLabelSearchArgs (config, where, "-label", "label", "==");
     1257    pxAddLabelSearchArgs (config, where, "-label", "chipRun.label", "==");
    12581258
    12591259    psString query = pxDataGet("chiptool_pendingcleanuprun.sql");
     
    12691269    }
    12701270    psFree(where);
     1271
     1272    psStringAppend(&query, "\nORDER BY priority DESC, chip_id");
    12711273
    12721274    // treat limit == 0 as "no limit"
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/detselect.c

    r31058 r36680  
    2929static bool searchMode(pxConfig *config);
    3030static bool selectMode(pxConfig *config);
     31static bool showMode(pxConfig *config);
     32
    3133
    3234# define MODECASE(caseName, func) \
     
    5052        MODECASE(DETSELECT_MODE_SEARCH,        searchMode);
    5153        MODECASE(DETSELECT_MODE_SELECT,        selectMode);
     54        MODECASE(DETSELECT_MODE_SHOW,          showMode);
    5255        default:
    5356            psAbort("invalid option (this should not happen)");
     
    241244    return true;
    242245}
     246
     247static bool showMode(pxConfig *config)
     248{
     249    PS_ASSERT_PTR_NON_NULL(config, false);
     250
     251    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     252
     253    psMetadata *where = psMetadataAlloc();
     254
     255    PXOPT_COPY_STR(config->args, where, "-inst",      "camera", "==");
     256    PXOPT_COPY_STR(config->args, where, "-telescope", "telescope", "==");
     257    PXOPT_COPY_STR(config->args, where, "-det_type",  "det_type", "==");
     258    PXOPT_COPY_STR(config->args, where, "-type",      "det_type", "==");
     259
     260    psString query = pxDataGet("detselect_show.sql");
     261    if (!query) {
     262        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     263        return false;
     264    }
     265
     266    // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE
     267    if (where && psListLength(where->list)) {
     268        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     269        psStringAppend(&query, " AND %s", whereClause);
     270        psFree(whereClause);
     271    }
     272    psFree(where);
     273
     274    // we choose the single detrend image which matches all criteria and has
     275    // the latest insertion date
     276
     277    psStringAppend(&query, " ORDER BY registered DESC, iteration DESC");
     278
     279    if (!p_psDBRunQuery(config->dbh, query)) {
     280        psError(PS_ERR_UNKNOWN, false, "database error");
     281        psFree(query);
     282        return false;
     283    }
     284    psFree(query);
     285
     286    psArray *output = p_psDBFetchResult(config->dbh);
     287    if (!output) {
     288        psError(PS_ERR_UNKNOWN, false, "database error");
     289        return false;
     290    }
     291    if (!psArrayLength(output)) {
     292        // XXX check psError here
     293        psError(PS_ERR_UNKNOWN, false, "no detRun rows found");
     294        psFree(output);
     295        return true;
     296    }
     297
     298    // negative simple so the default is true
     299    if (!ippdbPrintMetadatas(stdout, output, "detRun", !simple)) {
     300        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     301        psFree(output);
     302        return false;
     303    }
     304
     305    psFree(output);
     306    return(true);
     307}
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/detselect.h

    r18561 r36680  
    2727    DETSELECT_MODE_SEARCH,
    2828    DETSELECT_MODE_SELECT,
     29    DETSELECT_MODE_SHOW
    2930} detselectMode;
    3031
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/detselectConfig.c

    r18561 r36680  
    6565    psMetadataAddStr(selectArgs, PS_LIST_TAIL, "-class_id", 0,                     "search by class ID", NULL);
    6666    psMetadataAddBool(selectArgs, PS_LIST_TAIL, "-simple",  0,                      "use the simple output format", false);
     67
     68    // -show
     69    psMetadata *showArgs = psMetadataAlloc();
     70    psMetadataAddStr(showArgs, PS_LIST_TAIL, "-inst",       0,       "search by camera", NULL);
     71    psMetadataAddStr(showArgs, PS_LIST_TAIL, "-telescope",  0,       "search by telescope", NULL);
     72    psMetadataAddStr(showArgs, PS_LIST_TAIL, "-det_type",   0,       "search by detrend type", NULL);
     73    psMetadataAddStr(showArgs, PS_LIST_TAIL, "-type",       0,       "search by detrend type (alias for -det_type)", NULL);
     74    psMetadataAddBool(showArgs, PS_LIST_TAIL, "-simple",     0,       "use the simple output format", false);
    6775   
    6876    psMetadata *argSets = psMetadataAlloc();
     
    7179    PXOPT_ADD_MODE("-search",  "search for an appropriate detrend", DETSELECT_MODE_SEARCH, searchArgs);
    7280    PXOPT_ADD_MODE("-select",  "retreive detrend information", DETSELECT_MODE_SELECT, selectArgs);
     81    PXOPT_ADD_MODE("-show",    "show all active detrends of this type with constraints", DETSELECT_MODE_SHOW, showArgs);
    7382
    7483    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/difftool.c

    r35558 r36680  
    12531253  PXOPT_LOOKUP_STR(note, config->args, "-set_note", false, false);
    12541254  PXOPT_LOOKUP_TIME(registered, config->args, "-set_registered", false, false);
     1255  PXOPT_LOOKUP_STR(warp_data_group, config->args, "-data_group", false, false);
    12551256 
    12561257  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     
    12601261
    12611262
     1263  if (!data_group) {
     1264    if (warp_data_group) {
     1265      data_group = warp_data_group;
     1266    }
     1267  }
     1268 
    12621269  // Get query file
    12631270  psString query = pxDataGet("difftool_definewarpstack.sql");
     
    13421349    if (!mdok) {
    13431350        psError(PXTOOLS_ERR_PROG, false, "exp_id not found");
     1351        if (!psDBRollback(config->dbh)) {
     1352          psError(PS_ERR_UNKNOWN, false, "database error");
     1353        }
     1354        return false;
     1355    }
     1356    psString warpDataGroup = psMetadataLookupStr(&mdok, row, "warpDataGroup");
     1357    if (!mdok) {
     1358        psError(PXTOOLS_ERR_PROG, false, "warpDataGroup not found");
    13441359        if (!psDBRollback(config->dbh)) {
    13451360          psError(PS_ERR_UNKNOWN, false, "database error");
     
    13841399                                        workdir,
    13851400                                        label,
    1386                                         data_group ? data_group : label,
     1401                                        data_group ? data_group : warpDataGroup,
    13871402                                        dist_group,
    13881403                                        reduction,
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/disttool.c

    r35193 r36680  
    375375        }
    376376        if (dist_group) {
    377             psStringAppend(&query, " AND (sticskyRun.dist_group = '%s')", dist_group);
     377            psStringAppend(&query, " AND (staticskyRun.dist_group = '%s')", dist_group);
    378378        }
    379379        // (static)sky stage doesn't require magic
     380        magic = false;
     381    } else if (!strcmp(stage, "skycal")) {
     382        query = pxDataGet("disttool_definebyquery_skycal.sql");
     383        if (!query) {
     384            psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     385            psFree(where);
     386            return false;
     387        }
     388
     389        if (label) {
     390            psStringAppend(&query, " AND (skycalRun.label = '%s')", label);
     391        }
     392        if (dist_group) {
     393            psStringAppend(&query, " AND (skycalRun.dist_group = '%s')", dist_group);
     394        }
     395        // skycal stage doesn't require magic
    380396        magic = false;
    381397    } else if (!strcmp(stage, "SSdiff")) {
     
    394410      if (dist_group) {
    395411        psStringAppend(&query, " AND (diffRun.dist_group = '%s') ", dist_group);
     412      }
     413
     414      magic = false;
     415    } else if (!strcmp(stage, "ff")) {
     416      runJoinStr = "fullForceRun.ff_id";
     417      query = pxDataGet("disttool_definebyquery_ff.sql");
     418      if (!query) {
     419        psError(PXTOOLS_ERR_SYS, false, "failed to retrieve SQL statement");
     420        psFree(where);
     421        return(false);
     422      }
     423
     424      if (label) {
     425        psStringAppend(&query, " AND (fullForceRun.label = '%s') ", label);
     426      }
     427      if (dist_group) {
     428        psStringAppend(&query, " AND (fullForceRun.dist_group = '%s') ", dist_group);
    396429      }
    397430
     
    661694    PXOPT_COPY_S64(config->args, where, "-stage_id", "stage_id", "==");
    662695    PXOPT_COPY_STR(config->args, where, "-label", "label", "==");
    663     PXOPT_COPY_STR(config->args, where, "-data_group", "data_group", "==");
     696    PXOPT_COPY_STR(config->args, where, "-data_group", "distRun.data_group", "LIKE");
    664697
    665698    // require data_group or dist_id to be supplied
     
    743776
    744777    query = "DELETE FROM distComponent where dist_id = %" PRId64;
    745     char *query2 =  "DELETE from rcDSFileset using distRun, rcDSFileset WHERE distRun.dist_id = rcDSFileset.dist_id AND rcDSFileset.state ='cleaned' AND dist_id = %" PRId64;
     778    char *query2 =  "DELETE from rcDSFileset using distRun, rcDSFileset WHERE distRun.dist_id = rcDSFileset.dist_id AND rcDSFileset.state ='cleaned' AND rcDSFileset.dist_id = %" PRId64;
    746779   
    747780    for (long i=0; i < psArrayLength(output); i++) {
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/disttoolConfig.c

    r35193 r36680  
    9191    // -startover
    9292    psMetadata *startoverArgs = psMetadataAlloc();
    93     psMetadataAddStr(startoverArgs, PS_LIST_TAIL, "-data_group",    0, "define data_group", NULL);
     93    psMetadataAddStr(startoverArgs, PS_LIST_TAIL, "-data_group",    0, "define data_group (LIKE comparison)", NULL);
    9494    psMetadataAddS64(startoverArgs, PS_LIST_TAIL, "-dist_id", 0, "search by dist_id", 0);
    9595    psMetadataAddStr(startoverArgs, PS_LIST_TAIL, "-stage",    0, "search by stage", NULL);
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/laptool.c

    r35568 r36680  
    11701170  // we only want projection cells which do not already of an entry
    11711171  psStringAppend(&query, "\nWHERE lapGroup.projection_cell IS NULL\n");
    1172   psStringAppend(&query, "\nORDER by projection_cell\n");
     1172  // Projection cell's don't have a convienient order. Queue runs in the order of lap_id
     1173  // psStringAppend(&query, "\nORDER by projection_cell\n");
     1174  psStringAppend(&query, "\nORDER by lap_id_0\n");
    11731175
    11741176  if (limit) {
     
    12891291    psFree(whereClause);
    12901292  }
     1293  psStringAppend(&query, "\nGROUP by projection_cell ORDER by MIN(lap_id)");
    12911294  if (limit) {
    12921295    psString limitString = psDBGenerateLimitSQL(limit);
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/magictool.c

    • Property svn:mergeinfo deleted
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/pstamptool.c

    r35673 r36680  
    14281428    psFree(where);
    14291429
    1430     psStringAppend(&query, " ORDER BY priority DESC, req_id, dep_id");
     1430    psStringAppend(&query, " GROUP BY dep_id ORDER BY priority DESC, MIN(req_id), dep_id");
    14311431
    14321432    // treat limit == 0 as "no limit"
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/regtool.c

    r34081 r36680  
    310310}
    311311
     312
     313// CZW: 2013-12-11 A bad exposure caused this code to fail to return any rows.
     314//      I don't clearly see any logic flaws, and so I fixed the issue by
     315//      retricting dateobs_begin to exclude this exposure.  Problem for
     316//      another day.
    312317static bool pendingburntoolimfileMode(pxConfig *config)
    313318{
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/regtoolConfig.c

    r32593 r36680  
    292292    psMetadataAddStr(processedexpArgs,  PS_LIST_TAIL, "-state",         0,            "search by exposure state", NULL);
    293293    psMetadataAddStr(processedexpArgs,  PS_LIST_TAIL, "-exp_tag",       0,            "search by exp_tag", NULL);
    294     psMetadataAddStr(processedexpArgs,  PS_LIST_TAIL, "-exp_type",      0,            "search by exp_type", "object");
     294    psMetadataAddStr(processedexpArgs,  PS_LIST_TAIL, "-exp_type",      0,            "search by exp_type", NULL);
    295295    psMetadataAddStr(processedexpArgs,  PS_LIST_TAIL, "-filelevel",     0,            "search by filelevel", NULL);
    296296    psMetadataAddStr(processedexpArgs,  PS_LIST_TAIL, "-reduction",     0,            "search by reduction class", NULL);
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/releasetool.c

    r35795 r36680  
    4747static bool updaterelstackMode(pxConfig *config);
    4848static bool listrelstackMode(pxConfig *config);
     49static bool summaryMode(pxConfig *config);
    4950static bool definerelgroupMode(pxConfig *config);
    5051static bool pendingrelgroupMode(pxConfig *config);
     
    8485        MODECASE(RELEASETOOL_MODE_UPDATERELSTACK,   updaterelstackMode);
    8586        MODECASE(RELEASETOOL_MODE_LISTRELSTACK,     listrelstackMode);
     87        MODECASE(RELEASETOOL_MODE_SUMMARY,          summaryMode);
    8688
    8789        MODECASE(RELEASETOOL_MODE_DEFINERELGROUP,   definerelgroupMode);
     
    180182    PS_ASSERT_PTR_NON_NULL(config, false);
    181183
    182     PXOPT_LOOKUP_S32(surveyID,    config->args, "-set_surveyID", true, false);
    183     PXOPT_LOOKUP_STR(release_name, config->args, "-set_release_name", true, false);
     184    PXOPT_LOOKUP_S32(surveyID,    config->args,   "-set_surveyID", true, false);
     185    PXOPT_LOOKUP_STR(release_name, config->args,  "-set_release_name", true, false);
    184186    PXOPT_LOOKUP_STR(release_state, config->args, "-set_release_state",  true, false);
    185     PXOPT_LOOKUP_S32(dataRelease, config->args, "-set_dataRelease", false, false);
    186     PXOPT_LOOKUP_S32(priority,    config->args, "-set_priority", false, false);
     187    PXOPT_LOOKUP_S32(dataRelease, config->args,   "-set_dataRelease", false, false);
     188    PXOPT_LOOKUP_S32(priority,    config->args,   "-set_priority", false, false);
     189    PXOPT_LOOKUP_STR(dvodb, config->args,         "-set_dvodb",  false, false);
     190    PXOPT_LOOKUP_STR(ubercal_file, config->args,  "-set_ubercal_file",  false, false);
    187191
    188192    if (!ippReleaseInsert(config->dbh,
     
    192196        release_state,
    193197        dataRelease,
    194         priority
     198        priority,
     199        dvodb,
     200        ubercal_file
    195201    )) {
    196202        psError(PS_ERR_UNKNOWN, false, "failed to insert ippRelease");
     
    215221    PXOPT_LOOKUP_S32(priority,         config->args, "-set_priority",  false, false);
    216222    PXOPT_LOOKUP_S32(dataRelease,      config->args, "-set_dataRelease",  false, false);
    217     if (!release_state && priority == 0 && dataRelease == -1) {
    218         psError(PXTOOLS_ERR_CONFIG, true, "at least one of -set_release_state -set_priority and -set_dataRelease is required\n");
     223    PXOPT_LOOKUP_STR(dvodb, config->args, "-set_dvodb",  false, false);
     224    PXOPT_LOOKUP_STR(ubercal_file, config->args, "-set_ubercal_file",  false, false);
     225    if (!release_state && priority == 0 && dataRelease == -1 && !dvodb && !ubercal_file) {
     226        psError(PXTOOLS_ERR_CONFIG, true, "at least one of -set_release_state -set_priority -set_dvodb -set_ubercal_file and -set_dataRelease is required\n");
    219227        return false;
    220228    }
     
    238246    if (dataRelease != -1) {
    239247        psStringAppend(&query, "%s dataRelease = %d", sep, dataRelease);
     248        sep = comma;
     249    }
     250    if (dvodb) {
     251        psStringAppend(&query, "%s dvodb = '%s'", sep, dvodb);
     252        sep = comma;
     253    }
     254    if (ubercal_file) {
     255        psStringAppend(&query, "%s ubercal_file = '%s'", sep, ubercal_file);
    240256        sep = comma;
    241257    }
     
    366382    PXOPT_LOOKUP_F32(user_zpt_obs, config->args,   "-set_zpt_obs", false, false);
    367383    PXOPT_LOOKUP_F32(user_zpt_stdev, config->args, "-set_zpt_stdev", false, false);
     384    PXOPT_LOOKUP_F32(mcal,     config->args, "-set_mcal",  false, false);
     385    PXOPT_LOOKUP_S32(ubercal_dist, config->args, "-set_ubercal_dist", false, false);
    368386    PXOPT_LOOKUP_STR(path_base, config->args, "-set_path_base", false, false);
    369387    PXOPT_LOOKUP_S16(fault, config->args,     "-set_fault", false, false);
     
    456474            zpt_obs,
    457475            zpt_stdev,
     476            mcal,
     477            ubercal_dist,
    458478            path_base,
    459479            fault,
     
    496516    PXOPT_LOOKUP_STR(state,    config->args, "-set_state",  false, false);
    497517    PXOPT_LOOKUP_U32(flags,    config->args, "-set_flags",  false, false);
    498     PXOPT_LOOKUP_STR(path_base, config->args, "-set_path_base", false, false);
     518    PXOPT_LOOKUP_STR(path_base,config->args, "-set_path_base", false, false);
    499519    PXOPT_LOOKUP_F32(zpt_obs,  config->args, "-set_zpt_obs",  false, false);
    500520    PXOPT_LOOKUP_F32(zpt_stdev,config->args, "-set_zpt_stdev",  false, false);
     521    PXOPT_LOOKUP_F32(mcal,     config->args, "-set_mcal",  false, false);
    501522    PXOPT_LOOKUP_S16(fault,    config->args, "-set_fault",  false, false);
     523    PXOPT_LOOKUP_S32(ubercal_dist, config->args, "-set_ubercal_dist", false, false);
    502524    PXOPT_LOOKUP_BOOL(clearfault, config->args, "-clearfault",  false);
    503     if (!state && !flags && !path_base && !isfinite(zpt_obs) && !isfinite(zpt_stdev) && !fault && !clearfault) {
     525    if (!state && !flags && !path_base && !isfinite(zpt_obs) && !isfinite(zpt_stdev) &&!isfinite(mcal)
     526        && !fault && !clearfault && !ubercal_dist) {
    504527        psError(PXTOOLS_ERR_CONFIG, true, "must set at least one column\n");
    505528        return false;
     
    557580        sep = comma;
    558581    }
     582    if (isfinite(mcal)) {
     583        psStringAppend(&query, "%s relExp.mcal = %f", sep, mcal);
     584        sep = comma;
     585    }
     586    if (ubercal_dist) {
     587        psStringAppend(&query, "%s relExp.ubercal_dist = %d", sep, ubercal_dist);
     588        sep = comma;
     589    }
    559590
    560591    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     
    569600
    570601    psU64 affected = psDBAffectedRows(config->dbh);
    571     psLogMsg("releasetool", PS_LOG_INFO, "Updated %" PRIu64 " ippReleases", affected);
     602    psLogMsg("releasetool", PS_LOG_INFO, "Updated %" PRIu64 " relExp rows", affected);
    572603
    573604
     
    10491080
    10501081    if (priority_order) {
    1051         psStringAppend(&query, "\nAND priority > 0 order by stack_id, priority DESC");
     1082        psStringAppend(&query, "\nAND priority > 0 order by priority DESC, stack_id");
     1083    }
     1084
     1085    if (limit) {
     1086        psString limitString = psDBGenerateLimitSQL(limit);
     1087        psStringAppend(&query, " %s", limitString);
     1088        psFree(limitString);
     1089    }
     1090
     1091    if (!p_psDBRunQuery(config->dbh, query)) {
     1092        psError(PS_ERR_UNKNOWN, false, "database error");
     1093        psFree(query);
     1094        return false;
     1095    }
     1096    psFree(query);
     1097
     1098    psArray *output = p_psDBFetchResult(config->dbh);
     1099    if (!output) {
     1100        psError(PS_ERR_UNKNOWN, false, "database error");
     1101        return false;
     1102    }
     1103
     1104    if (!psArrayLength(output)) {
     1105        psTrace("releasetool", PS_LOG_INFO, "no rows found");
     1106        psFree(output);
     1107        return true;
     1108    }
     1109
     1110    if (!ippdbPrintMetadatas(stdout, output, "relStack", !simple)) {
     1111        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1112        psFree(output);
     1113        return false;
     1114    }
     1115
     1116    psFree(output);
     1117
     1118    return true;
     1119}
     1120static bool summaryMode(pxConfig *config)
     1121{
     1122    PS_ASSERT_PTR_NON_NULL(config, NULL);
     1123
     1124    psMetadata *where = psMetadataAlloc();
     1125
     1126    PXOPT_COPY_S64(config->args, where, "-sass_id",     "stackAssociation.sass_id", "==");
     1127    PXOPT_COPY_S64(config->args, where, "-relstack_id", "relStack.relstack_id", "==");
     1128    PXOPT_COPY_S64(config->args, where, "-stack_id",    "relStack.stack_id", "==");
     1129//    PXOPT_COPY_S64(config->args, where, "-skycal_id",   "relStack.skycal_id", "==");
     1130    PXOPT_COPY_S64(config->args, where, "-relstack_id", "relStack.relstack_id", "==");
     1131    PXOPT_COPY_STR(config->args, where, "-release_name", "ippRelease.release_name", "LIKE");
     1132    pxAddLabelSearchArgs(config, where, "-release_state","ippRelease.state", "==");
     1133//    PXOPT_COPY_STR(config->args, where, "-state",       "relStack.state", "==");
     1134    PXOPT_COPY_STR(config->args, where, "-filter",      "relStack.filter", "LIKE");
     1135//    PXOPT_COPY_F32(config->args, where, "-mjd_min",    "stackSumSkyfile.mjd_obs", ">=");
     1136//    PXOPT_COPY_F32(config->args, where, "-mjd_max",    "stackSumSkyfile.mjd_obs", "<=");
     1137    PXOPT_COPY_STR(config->args, where, "-tess_id",     "relStack.tess_id", "==");
     1138    PXOPT_COPY_STR(config->args, where, "-skycell_id",  "relStack.skycell_id", "LIKE");
     1139    PXOPT_COPY_STR(config->args, where, "-projection_cell",  "stackAssociation.projection_cell", "LIKE");
     1140    PXOPT_COPY_STR(config->args, where, "-stack_data_group",  "stackRun.data_group", "LIKE");
     1141    PXOPT_COPY_STR(config->args, where, "-data_group",  "stackAssociation.data_group", "LIKE");
     1142//    PXOPT_COPY_STR(config->args, where, "-skycal_data_group", "skycalRun.data_group", "LIKE");
     1143
     1144    PXOPT_COPY_STR(config->args, where, "-surveyName",  "survey.surveyName", "LIKE");
     1145    PXOPT_COPY_S32(config->args, where, "-rel_id",      "relExp.rel_id", "==");
     1146    pxskycellAddWhere(config, where);
     1147
     1148//    PXOPT_COPY_F32(config->args, where, "-fwhm_min",    "IFNULL(skycalResult.fwhm_major, 999)", ">=");
     1149//    PXOPT_COPY_F32(config->args, where, "-fwhm_max",    "IFNULL(skycalResult.fwhm_major, 0)", "<=");
     1150
     1151    PXOPT_LOOKUP_BOOL(priority_order, config->args, "-priority_order", false);
     1152
     1153    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1154    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1155
     1156    pxAddLabelSearchArgs (config, where, "-stack_type", "relStack.stack_type", "==");
     1157
     1158    psString query = pxDataGet("releasetool_summary.sql");
     1159    if (!query) {
     1160        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1161        return false;
     1162    }
     1163
     1164    if (psListLength(where->list)) {
     1165        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1166        psStringAppend(&query, "\nWHERE %s", whereClause);
     1167        psFree(whereClause);
     1168    } else {
     1169        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required\n");
     1170        psFree(where);
     1171        return false;
     1172    }
     1173
     1174    if (priority_order) {
     1175        psStringAppend(&query, "\nAND priority > 0 order by priority DESC, stack_id");
    10521176    }
    10531177
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/releasetool.h

    r35213 r36680  
    3838    RELEASETOOL_MODE_TOCALIBSTACK,
    3939    RELEASETOOL_MODE_LISTRELSTACK,
     40    RELEASETOOL_MODE_SUMMARY,
    4041    RELEASETOOL_MODE_DEFINERELGROUP,
    4142    RELEASETOOL_MODE_PENDINGRELGROUP,
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/releasetoolConfig.c

    r35795 r36680  
    6464    psMetadataAddStr(definereleaseArgs, PS_LIST_TAIL, "-set_release_state", 0, "define release state", NULL);
    6565    psMetadataAddS32(definereleaseArgs, PS_LIST_TAIL, "-set_priority", 0,      "define release priority", 0);
     66    psMetadataAddStr(definereleaseArgs, PS_LIST_TAIL, "-set_dvodb", 0,         "define dvo db name", NULL);
     67    psMetadataAddStr(definereleaseArgs, PS_LIST_TAIL, "-set_ubercal_file", 0,  "define ubercal file name", NULL);
    6668
    6769    // -uptdaterelease
     
    7577    psMetadataAddS32(updatereleaseArgs, PS_LIST_TAIL, "-set_priority", 0,       "define new release priority", 0);
    7678    psMetadataAddS32(updatereleaseArgs, PS_LIST_TAIL, "-set_dataRelease", 0,    "define data release", -1);
     79    psMetadataAddStr(updatereleaseArgs, PS_LIST_TAIL, "-set_dvodb", 0,         "define new dvo db name", NULL);
     80    psMetadataAddStr(updatereleaseArgs, PS_LIST_TAIL, "-set_ubercal_file", 0,  "define new ubercal file name", NULL);
    7781
    7882
     
    108112    psMetadataAddF32(definerelexpArgs,  PS_LIST_TAIL, "-set_zpt_obs", 0,    "define zero point", NAN);
    109113    psMetadataAddF32(definerelexpArgs,  PS_LIST_TAIL, "-set_zpt_stdev", 0,  "define zero point stdev", NAN);
     114    psMetadataAddF32(definerelexpArgs,  PS_LIST_TAIL, "-set_mcal", 0,       "define mcal", NAN);
     115    psMetadataAddS32(definerelexpArgs,  PS_LIST_TAIL, "-set_ubercal_dist", 0,  "define ubercal dist", 0);
    110116    psMetadataAddStr(definerelexpArgs,  PS_LIST_TAIL, "-set_path_base", 0,  "define state", NULL);
    111117    psMetadataAddS16(definerelexpArgs,  PS_LIST_TAIL, "-set_fault", 0,      "define fault", 0);
     
    126132    psMetadataAddF32(updaterelexpArgs,  PS_LIST_TAIL, "-set_zpt_obs", 0,    "define new zero point", NAN);
    127133    psMetadataAddF32(updaterelexpArgs,  PS_LIST_TAIL, "-set_zpt_stdev", 0,  "define new zero point stdev", NAN);
     134    psMetadataAddF32(updaterelexpArgs,  PS_LIST_TAIL, "-set_mcal", 0,       "define mcal", NAN);
     135    psMetadataAddS32(updaterelexpArgs,  PS_LIST_TAIL, "-set_ubercal_dist", 0, "define new ubercal dist", 0);
    128136    psMetadataAddStr(updaterelexpArgs,  PS_LIST_TAIL, "-set_path_base", 0,  "define path_base", NULL);
    129137    psMetadataAddS16(updaterelexpArgs,  PS_LIST_TAIL, "-set_fault", 0,      "define new fault", 0);
     
    240248    psMetadataAddBool(listrelstackArgs, PS_LIST_TAIL, "-simple",      0, "use the simple output format", false);
    241249
     250    // -summary
     251    psMetadata *summaryArgs = psMetadataAlloc();
     252    psMetadataAddS64(summaryArgs, PS_LIST_TAIL,  "-sass_id", 0,   "select by released SASS ID", 0);
     253    psMetadataAddS64(summaryArgs, PS_LIST_TAIL,  "-relstack_id", 0,   "select by released exposure ID", 0);
     254    psMetadataAddS64(summaryArgs, PS_LIST_TAIL,  "-stack_id", 0,   "select by stack ID", 0);
     255//    psMetadataAddS64(summaryArgs, PS_LIST_TAIL,  "-skycal_id", 0,   "select by skycal ID", 0);
     256    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-release_name", 0, "select by release name (LIKE comparision)", NULL);
     257    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-release_state", PS_META_DUPLICATE_OK, "select by release state", NULL);
     258//    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-state", 0,        "select by released stack state", NULL);
     259
     260    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-filter", 0,       "select by filter name (LIKE comparison)", NULL);
     261
     262    pxskycellAddArguments(summaryArgs);
     263
     264    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-tess_id", 0, "select by tess_id", NULL);
     265    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-skycell_id", 0, "select by skycell_id (LIKE comparision)", NULL);
     266    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-projection_cell", 0, "select by projection_cell (LIKE comparision)", NULL);
     267    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-stack_type", PS_META_DUPLICATE_OK, "select by stack_type", NULL);
     268
     269    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-stack_data_group", 0, "select by stackRun.data_group (LIKE comparison)", NULL);
     270    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-data_group", 0, "select by stackAsociation.data_group (LIKE comparison)", NULL);
     271
     272    psMetadataAddStr(summaryArgs,  PS_LIST_TAIL, "-surveyName", 0, "select by survey name (LIKE comparision)", NULL);
     273    psMetadataAddS64(summaryArgs,  PS_LIST_TAIL, "-rel_id", 0, "select by release ID", 0);
     274
     275    psMetadataAddBool(summaryArgs, PS_LIST_TAIL, "-priority_order",   0, "order by release priority", false);
     276
     277    psMetadataAddU64(summaryArgs,  PS_LIST_TAIL, "-limit",       0, "limit result set to N items", 0);
     278    psMetadataAddBool(summaryArgs, PS_LIST_TAIL, "-simple",      0, "use the simple output format", false);
    242279
    243280    // -definerelgroup
     
    314351    PXOPT_ADD_MODE("-definerelstack",     "define a released stack",    RELEASETOOL_MODE_DEFINERELSTACK,  definerelstackArgs);
    315352    PXOPT_ADD_MODE("-listrelstack",       "list released stacks",      RELEASETOOL_MODE_LISTRELSTACK,    listrelstackArgs);
     353    PXOPT_ADD_MODE("-summary",            "list stackSummaryes for released stacks", RELEASETOOL_MODE_SUMMARY,    summaryArgs);
    316354
    317355    PXOPT_ADD_MODE("-definerelgroup",     "define a group of exposures", RELEASETOOL_MODE_DEFINERELGROUP,  definerelgroupArgs);
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/stacktool.c

    r35856 r36680  
    4444static bool tosummaryMode(pxConfig *config);
    4545static bool addsummaryMode(pxConfig *config);
     46static bool revertsummaryMode(pxConfig *config);
     47static bool summaryMode(pxConfig *config);
    4648static bool pendingcleanuprunMode(pxConfig *config);
    4749static bool pendingcleanupskyfileMode(pxConfig *config);
     
    8486        MODECASE(STACKTOOL_MODE_TOSUMMARY,             tosummaryMode);
    8587        MODECASE(STACKTOOL_MODE_ADDSUMMARY,            addsummaryMode);
     88        MODECASE(STACKTOOL_MODE_REVERTSUMMARY,         revertsummaryMode);
     89        MODECASE(STACKTOOL_MODE_SUMMARY,               summaryMode);
    8690        MODECASE(STACKTOOL_MODE_PENDINGCLEANUPRUN,     pendingcleanuprunMode);
    8791        MODECASE(STACKTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileMode);
     
    748752    PXOPT_COPY_S64(config->args, where, "-stack_id",  "stackRun.stack_id",   "==");
    749753    PXOPT_COPY_STR(config->args, where, "-label",     "stackRun.label",     "==");
     754    PXOPT_COPY_STR(config->args, where, "-data_group", "stackRun.data_group", "==");
    750755    PXOPT_COPY_STR(config->args, where, "-state",     "stackRun.state",     "==");
    751756    PXOPT_COPY_S64(config->args, where, "-sass_id",   "stackAssociationMap.sass_id",  "==");
     
    15671572}
    15681573
     1574static bool revertsummaryMode(pxConfig *config) {
     1575  PS_ASSERT_PTR_NON_NULL(config, NULL);
     1576  PXOPT_LOOKUP_S64(sass_id, config->args, "-sass_id", true, false);
     1577
     1578  psString query = pxDataGet("stacktool_revertsummary.sql");
     1579  if (!query) {
     1580    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1581    return(false);
     1582  }
     1583  if (!p_psDBRunQueryF(config->dbh, query, sass_id)) {
     1584    psError(PS_ERR_UNKNOWN, false, "database error");
     1585    psFree(query);
     1586    return(false);
     1587  }
     1588  psS64 numUpdated = psDBAffectedRows(config->dbh);
     1589
     1590  if (numUpdated != 1) {
     1591    psError(PS_ERR_UNKNOWN, false, "should have affected 1 row");
     1592    psFree(query);
     1593    return(false);
     1594  }
     1595  psLogMsg("stacktool", PS_LOG_INFO, "Deleted %ld rows", numUpdated);
     1596 
     1597  psFree(query);
     1598
     1599  return(true);
     1600}
     1601
     1602static bool summaryMode(pxConfig *config)
     1603{
     1604    PS_ASSERT_PTR_NON_NULL(config, false);
     1605
     1606    psMetadata *where = psMetadataAlloc();
     1607    PXOPT_COPY_S64(config->args, where, "-sass_id", "stackSummary.sass_id", "==");
     1608    PXOPT_COPY_STR(config->args, where, "-projection_cell", "stackAssociation.projection_cell", "==");
     1609    PXOPT_COPY_STR(config->args, where, "-tess_id", "stackAssociation.tess_id", "LIKE");
     1610    PXOPT_COPY_STR(config->args, where, "-filter", "stackAssociation.filter", "LIKE");
     1611    PXOPT_COPY_S64(config->args, where, "-stack_id", "stackSumSkyfile.stack_id", "==");
     1612    pxAddLabelSearchArgs(config, where, "-data_group", "stackAssociation.data_group", "LIKE");
     1613    PXOPT_COPY_STR(config->args, where, "-skycell_id", "stackRun.skycell_id", "LIKE");
     1614//    PXOPT_COPY_STR(config->args, where, "-state", "stackRun.state", "==");
     1615    pxAddLabelSearchArgs(config, where, "-label", "stackRun.label", "LIKE");
     1616//    PXOPT_COPY_S16(config->args, where, "-fault", "stackSumSkyfile.fault", "==");
     1617//    PXOPT_COPY_F64(config->args, where, "-mjd_obs_begin", "stackSumSkyfile.mjd_obs", ">=");
     1618//    PXOPT_COPY_F64(config->args, where, "-mjd_obs_end", "stackSumSkyfile.mjd_obs", "<=");
     1619//    PXOPT_COPY_S16(config->args, where, "-background_model","stackSumSkyfile.background_model", "==");
     1620
     1621//    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
     1622
     1623    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1624    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1625
     1626    psString query = pxDataGet("stacktool_summary.sql");
     1627    if (!query) {
     1628        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1629        return false;
     1630    }
     1631
     1632    if (psListLength(where->list)) {
     1633        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1634        psStringAppend(&query, " WHERE %s", whereClause);
     1635        psFree(whereClause);
     1636    } else {
     1637        psError(PXTOOLS_ERR_CONFIG, true, "search parameters are required");
     1638        return false;
     1639    }
     1640
     1641    psFree(where);
     1642
     1643    // treat limit == 0 as "no limit"
     1644    if (limit) {
     1645        psString limitString = psDBGenerateLimitSQL(limit);
     1646        psStringAppend(&query, " %s", limitString);
     1647        psFree(limitString);
     1648    }
     1649
     1650    if (!p_psDBRunQuery(config->dbh, query)) {
     1651        psError(PS_ERR_UNKNOWN, false, "database error");
     1652        psFree(query);
     1653        return false;
     1654    }
     1655    psFree(query);
     1656
     1657    psArray *output = p_psDBFetchResult(config->dbh);
     1658    if (!output) {
     1659        psErrorCode err = psErrorCodeLast();
     1660        switch (err) {
     1661            case PS_ERR_DB_CLIENT:
     1662                psError(PXTOOLS_ERR_SYS, false, "database error");
     1663            case PS_ERR_DB_SERVER:
     1664                psError(PXTOOLS_ERR_PROG, false, "database error");
     1665            default:
     1666                psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1667        }
     1668
     1669        return false;
     1670    }
     1671    if (!psArrayLength(output)) {
     1672        psTrace("stacktool", PS_LOG_INFO, "no rows found");
     1673        psFree(output);
     1674        return true;
     1675    }
     1676
     1677    if (psArrayLength(output)) {
     1678        if (!ippdbPrintMetadatas(stdout, output, "stackSummary", !simple)) {
     1679            psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1680            psFree(output);
     1681            return false;
     1682        }
     1683    }
     1684
     1685    psFree(output);
     1686
     1687    return true;
     1688}
     1689
    15691690static bool pendingcleanuprunMode(pxConfig *config)
    15701691{
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/stacktool.h

    r34800 r36680  
    3838    STACKTOOL_MODE_TOSUMMARY,
    3939    STACKTOOL_MODE_ADDSUMMARY,
     40    STACKTOOL_MODE_REVERTSUMMARY,
     41    STACKTOOL_MODE_SUMMARY,
    4042    STACKTOOL_MODE_PENDINGCLEANUPRUN,
    4143    STACKTOOL_MODE_PENDINGCLEANUPSKYFILE,
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/stacktoolConfig.c

    r35122 r36680  
    121121    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-state", 0,            "search by state", NULL);
    122122    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-label", 0,            "search by label", 0);
     123    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-data_group", 0,       "search by data_group", 0);
    123124    psMetadataAddS16(updaterunArgs, PS_LIST_TAIL, "-fault",  0,           "search by fault code", 0);
    124125    psMetadataAddS64(updaterunArgs, PS_LIST_TAIL, "-sass_id", 0,          "search by stack association ID", 0);
     
    264265    psMetadataAddStr(addsummaryArgs, PS_LIST_TAIL, "-path_base", 0,     "set summary path base", NULL);
    265266
     267    // -revertsummary
     268    psMetadata *revertsummaryArgs = psMetadataAlloc();
     269    psMetadataAddS64(revertsummaryArgs, PS_LIST_TAIL, "-sass_id", 0,   "search by stack association ID", 0);
     270   
     271    // -summary
     272    psMetadata *summaryArgs = psMetadataAlloc();
     273    psMetadataAddS64(summaryArgs, PS_LIST_TAIL, "-sass_id", 0,  "search by stack association ID", 0);
     274    psMetadataAddS64(summaryArgs, PS_LIST_TAIL, "-stack_id", 0,  "search by stack ID", 0);
     275    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-tess_id", 0,   "search by tessellation ID", NULL);
     276    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-projection_cell", 0,   "search by projection cell ID", NULL);
     277//    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-state", 0,     "search by state", NULL);
     278    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-filter", 0,    "search by filter (LIKE comparison)", NULL);
     279    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-label", PS_META_DUPLICATE_OK, "search by stackRun label (LIKE comparison)", NULL);
     280    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-data_group", PS_META_DUPLICATE_OK, "search by stackAssociation data_group (LIKE comparison)", NULL);
     281    psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-skycell_id", 0,   "search by skycell ID", NULL);
     282//     psMetadataAddStr(summaryArgs, PS_LIST_TAIL, "-dist_group", PS_META_DUPLICATE_OK, "search by stackRun dist_group (LIKE comparison)", NULL);
     283
     284//    psMetadataAddBool(summaryArgs, PS_LIST_TAIL, "-all",  0,             "search without arguments", false);
     285    psMetadataAddU64(summaryArgs, PS_LIST_TAIL,  "-limit",  0,            "limit result set to N items", 0);
     286    psMetadataAddBool(summaryArgs, PS_LIST_TAIL, "-simple",  0,          "use the simple output format", false);
     287
    266288    // -pendingcleanuprun
    267289    psMetadata *pendingcleanuprunArgs = psMetadataAlloc();
     
    317339    PXOPT_ADD_MODE("-addsumskyfile",   "", STACKTOOL_MODE_ADDSUMSKYFILE,   addsumskyfileArgs);
    318340    PXOPT_ADD_MODE("-sumskyfile",      "list results of stackRun", STACKTOOL_MODE_SUMSKYFILE,      sumskyfileArgs);
    319     PXOPT_ADD_MODE("-sassskyfile",      "list results of stackAssociation", STACKTOOL_MODE_SASSSKYFILE,      sassskyfileArgs);
     341
    320342    PXOPT_ADD_MODE("-revertsumskyfile","", STACKTOOL_MODE_REVERTSUMSKYFILE,      revertsumskyfileArgs);
     343    PXOPT_ADD_MODE("-updatesumskyfile",      "update fault code for sumskyfile",     STACKTOOL_MODE_UPDATESUMSKYFILE,          updatesumskyfileArgs);
     344
    321345    PXOPT_ADD_MODE("-pendingcleanuprun",     "show runs that need to be cleaned up", STACKTOOL_MODE_PENDINGCLEANUPRUN,    pendingcleanuprunArgs);
    322346    PXOPT_ADD_MODE("-pendingcleanupskyfile", "show runs that need to be cleaned up", STACKTOOL_MODE_PENDINGCLEANUPSKYFILE, pendingcleanupskyfileArgs);
    323347    PXOPT_ADD_MODE("-donecleanup",           "show runs that have been cleaned",     STACKTOOL_MODE_DONECLEANUP,          donecleanupArgs);
    324     PXOPT_ADD_MODE("-updatesumskyfile",      "update fault code for sumskyfile",     STACKTOOL_MODE_UPDATESUMSKYFILE,          updatesumskyfileArgs);
     348
     349    PXOPT_ADD_MODE("-sassskyfile",      "list results of stackAssociation", STACKTOOL_MODE_SASSSKYFILE,      sassskyfileArgs);
    325350    PXOPT_ADD_MODE("-tosummary",            "show runs that can be summarized", STACKTOOL_MODE_TOSUMMARY, tosummaryArgs);
     351    PXOPT_ADD_MODE("-summary",              "show runs that have been summarized", STACKTOOL_MODE_SUMMARY, summaryArgs);
    326352    PXOPT_ADD_MODE("-addsummary",           "add entry to the summary table", STACKTOOL_MODE_ADDSUMMARY, addsummaryArgs);
     353    PXOPT_ADD_MODE("-revertsummary",        "revert entry in the summary table", STACKTOOL_MODE_REVERTSUMMARY, revertsummaryArgs);
     354   
    327355    PXOPT_ADD_MODE("-exportrun",            "export run for import on other database", STACKTOOL_MODE_EXPORTRUN, exportrunArgs);
    328356    PXOPT_ADD_MODE("-importrun",            "import run from metadata file",           STACKTOOL_MODE_IMPORTRUN, importrunArgs);
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/staticskytool.c

    r35194 r36680  
    5050static bool revertskycalresultMode(pxConfig *config);
    5151static bool updateskycalresultMode(pxConfig *config);
     52static bool exportskycalrunMode(pxConfig *config);
     53static bool importskycalrunMode(pxConfig *config);
    5254
    5355static bool setstaticskyRunState(pxConfig *config, psS64 sky_id, const char *state);
     
    8890        MODECASE(STATICSKYTOOL_MODE_REVERTSKYCALRESULT,revertskycalresultMode);
    8991        MODECASE(STATICSKYTOOL_MODE_SKYCALRESULT,      skycalresultMode);
     92        MODECASE(STATICSKYTOOL_MODE_EXPORTSKYCALRUN,   exportskycalrunMode);
     93        MODECASE(STATICSKYTOOL_MODE_IMPORTSKYCALRUN,   importskycalrunMode);
    9094        default:
    9195            psAbort("invalid option (this should not happen)");
     
    895899bool importrunMode(pxConfig *config)
    896900{
    897 # if (0)
    898   unsigned int nFail;
    899 
    900   int numImportTables = 2;
    901 
    902   char tables[2] [80] = {"stackInputSkyfile", "stackSumSkyfile"};
     901  return false;
     902}
     903
     904bool exportskycalrunMode(pxConfig *config)
     905{
     906  typedef struct ExportTable {
     907    char tableName[80];
     908    char sqlFilename[80];
     909  } ExportTable;
     910
     911  int numExportTables = 2;
    903912
    904913  PS_ASSERT_PTR_NON_NULL(config, NULL);
    905914
    906   PXOPT_LOOKUP_STR(infile, config->args, "-infile", true,  false);
    907 
    908   psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false);
    909 
    910 #ifdef notdef
    911   fprintf (stderr, "---- input ----\n");
    912   psMetadataPrint (stderr, input, 1);
    913 #endif
    914 
    915   if (!pxCheckImportVersion(config, input)) {
    916       psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed");
     915  // XXX unused PXOPT_LOOKUP_S64(det_id, config->args, "-sky_id", true,  false);
     916  PXOPT_LOOKUP_STR(outfile, config->args, "-outfile", true,  false);
     917  PXOPT_LOOKUP_BOOL(clean, config->args, "-clean", false);
     918  PXOPT_LOOKUP_U64(limit,   config->args, "-limit",   false, false);
     919
     920  FILE *f = fopen (outfile, "w");
     921  if (f == NULL) {
     922      psError(PS_ERR_UNKNOWN, false, "failed to open output file");
    917923      return false;
    918924  }
    919   psMetadataItem *item = psMetadataLookup (input, "stackRun");
    920   psAssert (item, "entry not in input?");
    921   psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?");
    922 
    923   psMetadataItem *entry = psListGet (item->data.list, 0);
    924   assert (entry);
    925   assert (entry->type == PS_DATA_METADATA);
    926   stackRunRow *stackRun = stackRunObjectFromMetadata (entry->data.md);
    927   stackRunInsertObject (config->dbh, stackRun);
    928 
    929   // fprintf (stdout, "---- stack run ----\n");
    930   // psMetadataPrint (stderr, entry->data.md, 1);
    931 
    932   for (int i = 0; i < numImportTables; i++) {
    933     psMetadataItem *item = psMetadataLookup (input, tables[i]);
    934     psAssert (item, "entry not in input?");
    935     psAssert (item->type == PS_DATA_METADATA_MULTI, "entry not multi?");
    936 
    937     switch (i) {
    938       case 0:
    939         for (int i = 0; i < item->data.list->n; i++) {
    940           entry = psListGet (item->data.list, i);
    941           assert (entry);
    942           assert (entry->type == PS_DATA_METADATA);
    943           stackInputSkyfileRow *stackInputSkyfile = stackInputSkyfileObjectFromMetadata (entry->data.md);
    944           stackInputSkyfileInsertObject (config->dbh, stackInputSkyfile);
    945 
    946           // fprintf (stdout, "---- row %d ----\n", i);
    947           // psMetadataPrint (stderr, entry->data.md, 1);
    948         }
    949         break;
    950 
    951       case 1:
    952         for (int i = 0; i < item->data.list->n; i++) {
    953           entry = psListGet (item->data.list, i);
    954           assert (entry);
    955           assert (entry->type == PS_DATA_METADATA);
    956           stackSumSkyfileRow *stackSumSkyfile = stackSumSkyfileObjectFromMetadata (entry->data.md);
    957           stackSumSkyfileInsertObject (config->dbh, stackSumSkyfile);
    958 
    959           // fprintf (stdout, "---- row %d ----\n", i);
    960           // psMetadataPrint (stderr, entry->data.md, 1);
    961         }
    962         break;
    963     }
     925
     926  if (!pxExportVersion(config, f)) {
     927    psError(PS_ERR_UNKNOWN, false, "failed to write dbversion output file");
     928    return false;
    964929  }
    965 
    966 # endif
    967   return true;
     930  psMetadata *where = psMetadataAlloc();
     931  PXOPT_COPY_S64(config->args, where, "-skycal_id", "skycal_id", "==");
     932
     933  ExportTable tables [] = {
     934    {"skycalRun", "staticskytool_export_skycalrun.sql"},
     935    {"skycalResult", "staticskytool_export_skycalresult.sql"},
     936  };
     937
     938  for (int i=0; i < numExportTables; i++) {
     939    psString query = pxDataGet(tables[i].sqlFilename);
     940    if (!query) {
     941      psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     942      return false;
     943    }
     944
     945    if (where && psListLength(where->list)) {
     946      psString whereClause = psDBGenerateWhereSQL(where, NULL);
     947      psStringAppend(&query, " %s", whereClause);
     948      psFree(whereClause);
     949    }
     950
     951    // treat limit == 0 as "no limit"
     952    if (limit) {
     953      psString limitString = psDBGenerateLimitSQL(limit);
     954      psStringAppend(&query, " %s", limitString);
     955      psFree(limitString);
     956    }
     957
     958    if (!p_psDBRunQuery(config->dbh, query)) {
     959      psError(PS_ERR_UNKNOWN, false, "database error");
     960      psFree(query);
     961      return false;
     962    }
     963    psFree(query);
     964
     965    psArray *output = p_psDBFetchResult(config->dbh);
     966    if (!output) {
     967      psError(PS_ERR_UNKNOWN, false, "database error");
     968      return false;
     969    }
     970    if (!psArrayLength(output)) {
     971      psError(PS_ERR_UNKNOWN, true, "no rows found");
     972      psFree(output);
     973      return false;
     974    }
     975
     976    if (clean) {
     977        if (!strcmp(tables[i].tableName, "skycalRun")) {
     978            if (!pxSetStateCleaned("skycalRun", "state", output)) {
     979                psFree(output);
     980                psError(PS_ERR_UNKNOWN, false, "pxSetStateClean failed for table %s",  tables[i].tableName);
     981                return false;
     982            }
     983        }
     984    }
     985
     986      // we must write the export table in non-simple (true) format
     987    if (!ippdbPrintMetadatas(f, output, tables[i].tableName, true)) {
     988        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     989        psFree(output);
     990        return false;
     991    }
     992
     993    psFree(output);
     994  }
     995
     996    fclose (f);
     997
     998    return true;
     999}
     1000
     1001bool importskycalrunMode(pxConfig *config)
     1002{
     1003  return false;
    9681004}
    9691005
     
    9861022
    9871023}
    988 
    989 # if (0)
    990         // now we need to loop over all requested filters and check that each is found
    991         // XXX is this needed?  haven't we required that we only match the requested filters
    992         // and that N unique filters are found?
    993 
    994         psVector *found = psVectorAlloc(inputs->n, PS_TYPE_U8);
    995         psVectorInit (found, 0);
    996 
    997         psMetadataItem *filter = NULL;
    998         psListIterator *iter = psListIteratorAlloc (filters->data.list, PS_LIST_HEAD, false);
    999         while ((filter = psListGetAndIncrement(iter))) {
    1000 
    1001             bool foundOne = false;
    1002 
    1003             psAssert (filter->type == PS_DATA_STR, "filter is not a string?");
    1004             for (int j = 0; !foundOne && (j < inputs->n); j++) {
    1005                 if (found->data.U8[j]) continue;
    1006                 psMetadata *inputRow = inputs->data[j]; // Row from select
    1007 
    1008                 // pull out the skycell_id, tess_id, filter
    1009                 psString inFilter = psMetadataLookupStr(&status, row, "filter");
    1010                 psAssert (status);
    1011 
    1012                 found->data.U8[j] = true;
    1013                 foundOne = true;
    1014             }
    1015             if (!foundOne) {
    1016                 // this required filter was not found in the inputs, skip the entry
    1017                 skip();
    1018             }
    1019         }           
    1020 # endif
    10211024
    10221025static bool defineskycalrunMode(pxConfig *config)
     
    10421045    PXOPT_COPY_STR(config->args, whereMD, "-select_skycell_id",    "stackRun.skycell_id",       "==");
    10431046    PXOPT_COPY_STR(config->args, whereMD, "-select_tess_id",       "stackRun.tess_id",          "==");
     1047    pxAddLabelSearchArgs(config, whereMD, "-select_filter",        "stackRun.filter",           "LIKE");
    10441048    PXOPT_COPY_F32(config->args, whereMD, "-select_good_frac_min", "stackSumSkyfile.good_frac", ">=");
    10451049    pxAddLabelSearchArgs(config, whereMD, "-select_label",         "staticskyRun.label",            "LIKE");
    10461050    pxAddLabelSearchArgs(config, whereMD, "-select_data_group",    "staticskyRun.data_group",       "LIKE");
    1047     pxAddLabelSearchArgs(config, whereMD, "-select_filter",        "stackRun.filter",           "LIKE");
    10481051    if (!pxskycellAddWhere(config, whereMD)) {
    10491052        psError(PXTOOLS_ERR_CONFIG, false, "failed to add skycell search arguments");
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/staticskytool.h

    r32960 r36680  
    4343    STATICSKYTOOL_MODE_SKYCALRESULT,
    4444    STATICSKYTOOL_MODE_REVERTSKYCALRESULT,
     45    STATICSKYTOOL_MODE_EXPORTSKYCALRUN,
     46    STATICSKYTOOL_MODE_IMPORTSKYCALRUN,
    4547} staticskytoolMode;
    4648
  • branches/eam_branches/ps2-tc3-20130727/ippTools/src/staticskytoolConfig.c

    r35197 r36680  
    269269    psMetadataAddBool(skycalresultArgs, PS_LIST_TAIL, "-simple", 0, "use the simple output format", false);
    270270
     271    // -exportskycalrun
     272    psMetadata *exportskycalrunArgs = psMetadataAlloc();
     273    psMetadataAddS64(exportskycalrunArgs, PS_LIST_TAIL, "-skycal_id", 0, "export this skycal ID (required)", 0);
     274    psMetadataAddStr(exportskycalrunArgs, PS_LIST_TAIL, "-outfile", 0, "export to this file (required)", NULL);
     275    psMetadataAddU64(exportskycalrunArgs, PS_LIST_TAIL, "-limit", 0, "limit result set to N items", 0);
     276    psMetadataAddBool(exportskycalrunArgs, PS_LIST_TAIL, "-clean", 0, "mark tables as cleaned", false);
     277
     278    // -importrun
     279    psMetadata *importskycalrunArgs = psMetadataAlloc();
     280    psMetadataAddStr(importskycalrunArgs, PS_LIST_TAIL, "-infile", 0, "import from this file (required)", NULL);
     281 
     282
    271283    psFree(now);
    272284
     
    291303    PXOPT_ADD_MODE("-updateskycal",  "revert faulted skycal run", STATICSKYTOOL_MODE_UPDATESKYCALRESULT, updateskycalresultArgs);
    292304    PXOPT_ADD_MODE("-skycalresult",  "Get result of skycal run",  STATICSKYTOOL_MODE_SKYCALRESULT, skycalresultArgs);
     305    PXOPT_ADD_MODE("-exportskycalrun",     "Export skycal run",   STATICSKYTOOL_MODE_EXPORTSKYCALRUN, exportskycalrunArgs);
     306    PXOPT_ADD_MODE("-importskycalrun",     "Import skycal run",   STATICSKYTOOL_MODE_IMPORTSKYCALRUN, importskycalrunArgs);
    293307
    294308    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
Note: See TracChangeset for help on using the changeset viewer.