IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 3, 2010, 8:45:22 AM (16 years ago)
Author:
eugene
Message:

updates from trunk

Location:
branches/simmosaic_branches
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/simmosaic_branches

  • branches/simmosaic_branches/ippTools/src

    • Property svn:ignore
      •  

        old new  
         1*.la
         2*.lo
        13.deps
        24.gdb_history
         
        46Makefile
        57Makefile.in
         8addtool
         9caltool
         10camtool
         11chiptool
        612config.h
        713config.h.in
        8 stamp-h1
        9 *.la
        10 *.lo
         14detselect
         15dettool
         16difftool
         17disttool
         18dqstatstool
         19faketool
         20flatcorr
         21guidetool
         22magicdstool
         23magictool
         24pstamptool
         25pubtool
         26pxadmin
         27pxdata.c
         28pxinject
        1129pxtoolsErrorCodes.c
        1230pxtoolsErrorCodes.h
        13 pxadmin
        14 pxinject
        15 pztool
        1631pzgetexp
        1732pzgetimfiles
         33pztool
         34receivetool
        1835regtool
        19 guidetool
        20 chiptool
        21 camtool
         36stacktool
         37stamp-h1
        2238warptool
        23 difftool
        24 stacktool
        25 faketool
        26 dettool
        27 detselect
        28 pxdata.c
        29 magictool
        30 magicdstool
        31 caltool
        32 flatcorr
        33 pstamptool
        34 disttool
        35 receivetool
        36 
        37 pubtool
  • branches/simmosaic_branches/ippTools/src/regtool.c

    r24858 r27839  
    3737static bool revertprocessedimfileMode(pxConfig *config);
    3838static bool updateprocessedimfileMode(pxConfig *config);
     39static bool pendingcompressimfileMode(pxConfig *config);
    3940// exp
    4041static bool pendingexpMode(pxConfig *config);
     
    4445static bool updateprocessedexpMode(pxConfig *config);
    4546static bool cleardupexpMode(pxConfig *config);
     47static bool finishcompressexpMode(pxConfig *config);
     48
     49static bool updatebyqueryMode(pxConfig *config);
     50
    4651static bool exportrunMode(pxConfig *config);
    4752static bool importrunMode(pxConfig *config);
     
    7782        MODECASE(REGTOOL_MODE_REVERTPROCESSEDEXP,    revertprocessedexpMode);
    7883        MODECASE(REGTOOL_MODE_UPDATEPROCESSEDEXP,    updateprocessedexpMode);
     84        MODECASE(REGTOOL_MODE_UPDATEBYQUERY,         updatebyqueryMode);
     85        MODECASE(REGTOOL_MODE_PENDINGCOMPRESSIMFILE, pendingcompressimfileMode);
     86        MODECASE(REGTOOL_MODE_FINISHCOMPRESSEXP,     finishcompressexpMode);
    7987        MODECASE(REGTOOL_MODE_CLEARDUPEXP,           cleardupexpMode);
    8088        MODECASE(REGTOOL_MODE_EXPORTRUN,             exportrunMode);
     
    117125    psString query = pxDataGet("regtool_pendingimfile.sql");
    118126    if (!query) {
    119         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     127        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    120128        return false;
    121129    }
     
    189197    PXOPT_LOOKUP_STR(obs_mode, config->args, "-obs_mode", false, false);
    190198    PXOPT_LOOKUP_STR(obs_group, config->args, "-obs_group", false, false);
     199    PXOPT_LOOKUP_STR(data_state, config->args, "-data_state", false, false);
    191200
    192201    PXOPT_LOOKUP_F32(airmass, config->args, "-airmass", false, false);
     
    224233    PXOPT_LOOKUP_F32(teltemp_extra, config->args, "-teltemp_extra", false, false);
    225234    PXOPT_LOOKUP_F32(pon_time, config->args, "-pon_time", false, false);
     235    PXOPT_LOOKUP_S16(burntool_state, config->args, "-burntool_state", false, false);
    226236    PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);
    227237    PXOPT_LOOKUP_F64(user_2, config->args, "-user_2", false, false);
     
    238248    PXOPT_LOOKUP_TIME(dateobs, config->args, "-dateobs", false, false);
    239249    PXOPT_LOOKUP_STR(hostname, config->args, "-hostname", false, false);
     250    PXOPT_LOOKUP_S32(bytes, config->args,  "-bytes", false, false);
     251    PXOPT_LOOKUP_STR(md5sum, config->args, "-md5sum", false, false);
    240252
    241253    PXOPT_LOOKUP_S16(fault, config->args, "-fault", false, false);
     
    252264        class_id,
    253265        uri,
     266        data_state,
    254267        exp_type,
    255268        filelevel,
     
    307320        quality,
    308321        NULL,
    309         0
     322        0,
     323        bytes,
     324        md5sum,
     325        0   // burntool_state
    310326    )) {
    311327        psError(PS_ERR_UNKNOWN, false, "database error");
     
    327343    PXOPT_COPY_TIME(config->args, where, "-dateobs_begin", "dateobs",  ">=");
    328344    PXOPT_COPY_TIME(config->args, where, "-dateobs_end",   "dateobs",  "<=");
     345    PXOPT_COPY_STR(config->args, where,  "-filter",        "filter", "LIKE");
     346    PXOPT_COPY_STR(config->args, where,  "-exp_type",      "exp_type", "==");
     347    PXOPT_COPY_STR(config->args, where,  "-obs_mode",      "obs_mode", "==");
     348    PXOPT_COPY_STR(config->args, where,  "-data_state",    "data_state", "==");
    329349
    330350    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
    331351    PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);
     352    PXOPT_LOOKUP_BOOL(allfiles, config->args, "-allfiles", false);
     353    if (allfiles) {
     354        faulted = false;
     355    }
    332356    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     357    PXOPT_LOOKUP_BOOL(all, config->args, "-all", false);
    333358    PXOPT_LOOKUP_BOOL(ordered_by_date, config->args, "-ordered_by_date", false);
     359
     360    // build where string for some parameters that don't fit PXOPT_COPY*
     361    psString where2 = NULL;
     362    if (!pxmagicAddWhere(config, &where2, "rawImfile")) {
     363        psError(psErrorCodeLast(), false, "pxmagicAddWhere failed");
     364        return false;
     365    }
     366    if (!pxspaceAddWhere(config, &where2, "rawImfile")) {
     367        psError(psErrorCodeLast(), false, "pxspaceAddWhere failed");
     368        return false;
     369    }
    334370
    335371    psString query = pxDataGet("regtool_processedimfile.sql");
    336372    if (!query) {
    337         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     373        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    338374        psFree(where);
    339375        return false;
     
    344380        psStringAppend(&query, " AND %s", whereClause);
    345381        psFree(whereClause);
     382    } else if (!all && !where2) {
     383        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     384        return false;
    346385    }
    347386    psFree(where);
     387    if (where2) {
     388        psStringAppend(&query, " %s", where2);
     389        psFree(where2);
     390    }
    348391
    349392    if (faulted) {
    350393        // list only faulted rows
    351394        psStringAppend(&query, " %s", "AND rawImfile.fault != 0");
    352     } else {
     395    } else if (!allfiles) {
    353396        // don't list faulted rows
    354397        psStringAppend(&query, " %s", "AND rawImfile.fault = 0");
     
    423466    psString query = pxDataGet("regtool_revertprocessedimfile.sql");
    424467    if (!query) {
    425         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     468        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    426469        psFree(where);
    427470        return false;
     
    434477    } else {
    435478        psFree(where);
    436         psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
     479        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
    437480        return false;
    438481    }
     
    462505
    463506    PXOPT_LOOKUP_S16(fault, config->args, "-fault",   false, false);
    464     PXOPT_LOOKUP_F64(user_1, config->args, "-user_1", false, false);
    465 
    466     if ((fault == INT16_MAX) && !isfinite(user_1)) {
    467         psError(PS_ERR_UNKNOWN, false, "one of -fault or -user_1 must be selected");
    468         return false;
    469     }
    470     if ((fault != INT16_MAX) && isfinite(user_1)) {
    471         psError(PS_ERR_UNKNOWN, false, "only one of -fault or -user_1 must be selected");
     507    PXOPT_LOOKUP_S16(burntool_state, config->args, "-burntool_state", false, false);
     508    PXOPT_LOOKUP_S32(set_bytes, config->args, "-set_bytes", false, false);
     509    PXOPT_LOOKUP_STR(set_md5sum, config->args, "-set_md5sum", false, false);
     510    PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", false, false);
     511
     512    if ((fault == INT16_MAX) && !isfinite(burntool_state) && !(set_state)) {
     513        psError(PS_ERR_UNKNOWN, false, "one of -fault or -burntool_state or -set_state must be selected");
     514        return false;
     515    }
     516    if ((fault != INT16_MAX) && isfinite(burntool_state)) {
     517        psError(PS_ERR_UNKNOWN, false, "only one of -fault or -burntool_state must be selected");
    472518        return false;
    473519    }
     
    478524
    479525    if (fault != INT16_MAX) {
    480         // this is fairly dangerous : can set all if the where is not set...
    481         if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault)) {
    482             psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
    483             psFree (where);
    484             return false;
    485         }
    486     }
    487 
    488     if (isfinite(user_1)) {
    489         psString query = pxDataGet("regtool_updateprocessedimfile.sql");
    490         if (!query) {
    491             psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
    492             return false;
    493         }
    494 
    495         if (!p_psDBRunQueryF(config->dbh, query, user_1, exp_id, class_id)) {
    496             psError(PS_ERR_UNKNOWN, false, "database error");
    497             psFree(query);
    498             return false;
    499         }
    500         psFree(query);
     526        // this is fairly dangerous : can set all if the where is not set...
     527        if (!pxSetFaultCode(config->dbh, "rawImfile", where, fault)) {
     528            psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
     529            psFree (where);
     530            return false;
     531        }
     532        psFree (where);
     533        return(true);
    501534    }
    502535    psFree (where);
    503536
     537    psString setvalues = NULL;
     538    if (burntool_state != INT16_MAX) {
     539      psStringAppend(&setvalues,"rawImfile.burntool_state = %d",burntool_state);
     540    }
     541    if (set_bytes != INT32_MAX) {
     542      if (setvalues) {
     543        psStringAppend(&setvalues,",");
     544      }
     545      psStringAppend(&setvalues,"rawImfile.bytes = %d",set_bytes);
     546    }
     547    if (set_md5sum) {
     548      if (setvalues) {
     549        psStringAppend(&setvalues,",");
     550      }
     551      psStringAppend(&setvalues,"rawImfile.md5sum = '%s'",set_md5sum);
     552    }
     553    if (set_state) {
     554      if (setvalues) {
     555        psStringAppend(&setvalues,",");
     556      }
     557      psStringAppend(&setvalues,"rawImfile.data_state = '%s'",set_state);
     558    }
     559
     560    psString query = pxDataGet("regtool_updateprocessedimfile.sql");
     561    if (!query) {
     562      psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     563      return false;
     564    }
     565
     566    //    printf(query,setvalues,exp_id,class_id);
     567    if (!p_psDBRunQueryF(config->dbh, query, setvalues, exp_id,class_id)) {
     568      psError(PS_ERR_UNKNOWN, false, "database error");
     569      psFree(query);
     570      psFree(setvalues);
     571      return false;
     572    }
     573    psFree(setvalues);
     574    psFree(query);
     575
    504576    return true;
     577}
     578
     579static bool pendingcompressimfileMode(pxConfig *config) {
     580  PS_ASSERT_PTR_NON_NULL(config, false);
     581
     582  psMetadata *where = psMetadataAlloc();
     583  PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     584  PXOPT_COPY_STR(config->args, where, "-class_id", "class_id", "==");
     585
     586  psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     587  if (whereClause) {
     588    psStringPrepend(&whereClause, "\n AND ");
     589  }
     590  PXOPT_LOOKUP_BOOL(compress, config->args, "-compress", false);
     591  PXOPT_LOOKUP_BOOL(clean,    config->args, "-clean", false);
     592
     593  if ((compress && clean) || (!compress && !clean)) {
     594      psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')\n  OR (data_state = 'goto_lossy' AND state = 'goto_lossy')) ");
     595  }
     596  else if (compress) {
     597    psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')) ");
     598  }
     599  else if (clean) {
     600    psStringAppend(&whereClause, "\n AND ((data_state = 'goto_lossy' AND state = 'goto_lossy')) ");
     601  }
     602  else {
     603    psStringAppend(&whereClause, "\n AND ((data_state = 'goto_compressed' AND state = 'goto_compressed')\n  OR (data_state = 'goto_lossy' AND state = 'goto_lossy')) ");
     604  }
     605
     606  PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     607  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     608
     609  psString query = pxDataGet("regtool_pendingcompressimfile.sql");
     610  if (!query) {
     611    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     612    return(false);
     613  }
     614  psString limitString = NULL;
     615  if (limit) {
     616    limitString = psDBGenerateLimitSQL(limit);
     617    psStringPrepend(&limitString, "\n");
     618  }
     619  //  printf(query,whereClause,limitString);
     620  if (!p_psDBRunQueryF(config->dbh, query, whereClause, limitString ? limitString : "")) {
     621    psError(PXTOOLS_ERR_PROG, false, "database error");
     622    psFree(limitString);
     623    psFree(query);
     624    psFree(whereClause);
     625    psFree(where);
     626    return(false);
     627  }
     628  psFree(limitString);
     629  psFree(query);
     630  psFree(whereClause);
     631  psFree(where);
     632
     633  psArray *output = p_psDBFetchResult(config->dbh);
     634  if (!output) {
     635    psErrorCode err = psErrorCodeLast();
     636    switch (err) {
     637    case PS_ERR_DB_CLIENT:
     638      psError(PXTOOLS_ERR_SYS, false, "database error");
     639    case PS_ERR_DB_SERVER:
     640      psError(PXTOOLS_ERR_PROG, false, "database error");
     641    default:
     642      psError(PXTOOLS_ERR_PROG, false, "unknown error");
     643    }
     644
     645    return false;
     646  }
     647  if (!psArrayLength(output)) {
     648    psTrace("regtool", PS_LOG_INFO, "no rows found");
     649    psFree(output);
     650    return true;
     651  }
     652
     653  // negate simple so the default is true
     654  if (!ippdbPrintMetadatas(stdout, output, "regPendingCompressImfile", !simple)) {
     655    psError(PXTOOLS_ERR_PROG, false, "failed to print array");
     656    psFree(output);
     657    return false;
     658  }
     659
     660  psFree(output);
     661
     662  return true;
    505663}
    506664
     
    519677    psString query = pxDataGet("regtool_pendingexp.sql");
    520678    if (!query) {
    521         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     679        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    522680        return false;
    523681    }
     
    596754    PXOPT_LOOKUP_STR(exp_type, config->args, "-exp_type", false, false);
    597755    PXOPT_LOOKUP_STR(workdir, config->args, "-workdir", false, false);
     756    PXOPT_LOOKUP_STR(state, config->args, "-state", false, false);
    598757    PXOPT_LOOKUP_STR(dvodb, config->args, "-dvodb", false, false);
    599758    PXOPT_LOOKUP_STR(tess_id, config->args, "-tess_id", false, false);
     
    657816    psString query = pxDataGet("regtool_pendingexp.sql");
    658817    if (!query) {
    659         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     818        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    660819        return false;
    661820    }
     
    757916        filelevel,
    758917        workdir,
     918        state,
    759919        reduction,
    760920        dvodb,
     
    8551015                workdir,
    8561016                label,
     1017                NULL,       // data_group
     1018                NULL,       // dist_group
    8571019                reduction,
    858                 NULL, // expgroup
     1020                NULL,       // expgroup
    8591021                dvodb,
    8601022                tess_id,
    861                 end_stage
     1023                end_stage,
     1024                NULL        // note
    8621025    )) {
    8631026        // rollback
     
    8871050    psString query = pxDataGet("regtool_processedexp.sql");
    8881051    if (!query) {
    889         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1052        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    8901053        return false;
    8911054    }
     
    8971060    PXOPT_COPY_STR(config->args,   where,  "-inst", "camera", "==");
    8981061    PXOPT_COPY_STR(config->args,   where,  "-telescope", "telescope", "==");
    899     PXOPT_COPY_TIME(config->args,  where, "-dateobs_begin", "dateobs", ">=");
    900     PXOPT_COPY_TIME(config->args,  where, "-dateobs_end", "dateobs", "<=");
     1062    PXOPT_COPY_TIME(config->args,  where,  "-dateobs_begin", "dateobs", ">=");
     1063    PXOPT_COPY_TIME(config->args,  where,  "-dateobs_end", "dateobs", "<=");
     1064    PXOPT_COPY_STR(config->args,   where,  "-state", "state", "==");
    9011065    PXOPT_COPY_STR(config->args,   where,  "-exp_tag", "exp_tag", "==");
    9021066    PXOPT_COPY_STR(config->args,   where,  "-exp_type", "exp_type", "==");
    9031067    PXOPT_COPY_STR(config->args,   where,  "-filelevel", "filelevel", "==");
    9041068    PXOPT_COPY_STR(config->args,   where,  "-reduction", "reduction", "==");
    905     PXOPT_COPY_STR(config->args,   where,  "-filter", "filter", "==");
     1069    PXOPT_COPY_STR(config->args,   where,  "-filter", "filter", "LIKE");
    9061070    PXOPT_COPY_F32(config->args,   where,  "-airmass_min", "airmass", ">=");
    9071071    PXOPT_COPY_F32(config->args,   where,  "-airmass_max", "airmass", "<");
     
    9291093    PXOPT_COPY_F64(config->args,   where,  "-posang_max", "posang", "<");
    9301094    PXOPT_COPY_STR(config->args,   where,  "-object", "object", "==");
    931     PXOPT_COPY_F32(config->args,   where,  "-solang_min", "solang", ">=");
    932     PXOPT_COPY_F32(config->args,   where,  "-solang_max", "solang", "<");
     1095    PXOPT_COPY_F32(config->args,   where,  "-sun_angle_min", "sun_angle", ">=");
     1096    PXOPT_COPY_F32(config->args,   where,  "-sun_angle_max", "sun_angle", "<");
     1097
     1098    psString where2 = NULL;
     1099    if (!pxmagicAddWhere(config, &where2, "rawExp")) {
     1100        psError(psErrorCodeLast(), false, "pxmagicAddWhere failed");
     1101        return false;
     1102    }
     1103    if (!pxspaceAddWhere(config, &where2, "rawExp")) {
     1104        psError(psErrorCodeLast(), false, "pxSpaceAddWhere failed");
     1105        return false;
     1106    }
    9331107
    9341108    PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     
    9371111
    9381112    if (psListLength(where->list)) {
    939         psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");
    940         psStringAppend(&query, " AND %s", whereClause);
    941         psFree(whereClause);
     1113      psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");
     1114      psStringAppend(&query, " AND %s", whereClause);
     1115      psFree(whereClause);
    9421116    }
    9431117    psFree(where);
    9441118
     1119    if (where2) {
     1120        psStringAppend(&query, " %s ", where2);
     1121        psFree(where2);
     1122    }
     1123
    9451124    if (faulted) {
    946         // list only faulted rows
    947         psStringAppend(&query, " %s", "AND rawExp.fault != 0");
     1125      // list only faulted rows
     1126      psStringAppend(&query, " %s", "AND rawExp.fault != 0");
    9481127    } else {
    949         // don't list faulted rows
    950         psStringAppend(&query, " %s", "AND rawExp.fault = 0");
     1128      // don't list faulted rows
     1129      psStringAppend(&query, " %s", "AND rawExp.fault = 0");
    9511130    }
    9521131
    9531132    // treat limit == 0 as "no limit"
    9541133    if (limit) {
    955         psString limitString = psDBGenerateLimitSQL(limit);
    956         psStringAppend(&query, " %s", limitString);
    957         psFree(limitString);
     1134      psString limitString = psDBGenerateLimitSQL(limit);
     1135      psStringAppend(&query, " %s", limitString);
     1136      psFree(limitString);
    9581137    }
    9591138
    9601139    if (!p_psDBRunQuery(config->dbh, query)) {
    961         psError(PS_ERR_UNKNOWN, false, "database error");
    962         return false;
     1140      psError(PS_ERR_UNKNOWN, false, "database error");
     1141      return false;
    9631142    }
    9641143    psFree(query);
     
    9661145    psArray *output = p_psDBFetchResult(config->dbh);
    9671146    if (!output) {
    968         psErrorCode err = psErrorCodeLast();
    969         switch (err) {
    970             case PS_ERR_DB_CLIENT:
    971                 psError(PXTOOLS_ERR_SYS, false, "database error");
    972             case PS_ERR_DB_SERVER:
    973                 psError(PXTOOLS_ERR_PROG, false, "database error");
    974             default:
    975                 psError(PXTOOLS_ERR_PROG, false, "unknown error");
    976         }
    977 
    978         return false;
     1147      psErrorCode err = psErrorCodeLast();
     1148      switch (err) {
     1149      case PS_ERR_DB_CLIENT:
     1150        psError(PXTOOLS_ERR_SYS, false, "database error");
     1151      case PS_ERR_DB_SERVER:
     1152        psError(PXTOOLS_ERR_PROG, false, "database error");
     1153      default:
     1154        psError(PXTOOLS_ERR_PROG, false, "unknown error");
     1155      }
     1156
     1157      return false;
    9791158    }
    9801159    if (!psArrayLength(output)) {
    981         psTrace("regtool", PS_LOG_INFO, "no rows found");
     1160      psTrace("regtool", PS_LOG_INFO, "no rows found");
     1161      psFree(output);
     1162      return true;
     1163    }
     1164
     1165    if (psArrayLength(output)) {
     1166      // negative simple so the default is true
     1167      if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) {
     1168        psError(PS_ERR_UNKNOWN, false, "failed to print array");
    9821169        psFree(output);
    983         return true;
    984     }
    985 
    986     if (psArrayLength(output)) {
    987         // negative simple so the default is true
    988         if (!ippdbPrintMetadatas(stdout, output, "rawExp", !simple)) {
    989             psError(PS_ERR_UNKNOWN, false, "failed to print array");
    990             psFree(output);
    991             return false;
    992         }
     1170        return false;
     1171      }
    9931172    }
    9941173
     
    10001179static bool revertprocessedexpMode(pxConfig *config)
    10011180{
    1002     PS_ASSERT_PTR_NON_NULL(config, false);
    1003 
    1004     psMetadata *where = psMetadataAlloc();
    1005     PXOPT_COPY_S64(config->args, where,  "-exp_id",       "exp_id", "==");
    1006     PXOPT_COPY_S16(config->args, where,  "-fault",         "fault", "==");
    1007     PXOPT_COPY_S64(config->args, where,  "-exp_id_begin", "exp_id", ">=");
    1008     PXOPT_COPY_S64(config->args, where,  "-exp_id_end", "exp_id", "<=");
    1009 
    1010     psString query = pxDataGet("regtool_revertprocessedexp.sql");
    1011     if (!query) {
    1012         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
    1013         psFree(where);
    1014         return false;
    1015     }
    1016 
    1017     if (psListLength(where->list)) {
    1018         psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");
    1019         psStringAppend(&query, " AND %s", whereClause);
    1020         psFree(whereClause);
    1021     } else {
    1022         psFree(where);
    1023         psError(PXTOOLS_ERR_DATA, false, "search parameters are required");
    1024         return false;
    1025     }
     1181  PS_ASSERT_PTR_NON_NULL(config, false);
     1182
     1183  psMetadata *where = psMetadataAlloc();
     1184  PXOPT_COPY_S64(config->args, where,  "-exp_id",       "exp_id", "==");
     1185  PXOPT_COPY_S16(config->args, where,  "-fault",         "fault", "==");
     1186  PXOPT_COPY_S64(config->args, where,  "-exp_id_begin", "exp_id", ">=");
     1187  PXOPT_COPY_S64(config->args, where,  "-exp_id_end", "exp_id", "<=");
     1188
     1189  psString query = pxDataGet("regtool_revertprocessedexp.sql");
     1190  if (!query) {
     1191    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    10261192    psFree(where);
    1027 
    1028     if (!p_psDBRunQuery(config->dbh, query)) {
    1029         psError(PS_ERR_UNKNOWN, false, "database error");
    1030         psFree(query);
    1031         return false;
    1032     }
     1193    return false;
     1194  }
     1195
     1196  if (psListLength(where->list)) {
     1197    psString whereClause = psDBGenerateWhereConditionSQL(where, "rawExp");
     1198    psStringAppend(&query, " AND %s", whereClause);
     1199    psFree(whereClause);
     1200  } else {
     1201    psFree(where);
     1202    psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1203    return false;
     1204  }
     1205  psFree(where);
     1206
     1207  if (!p_psDBRunQuery(config->dbh, query)) {
     1208    psError(PS_ERR_UNKNOWN, false, "database error");
    10331209    psFree(query);
    1034 
    1035     int numUpdated = psDBAffectedRows(config->dbh);
    1036 
    1037     psLogMsg("regtool", PS_LOG_INFO, "Updated %d rawExp", numUpdated);
    1038 
    1039     return true;
     1210    return false;
     1211  }
     1212  psFree(query);
     1213
     1214  int numUpdated = psDBAffectedRows(config->dbh);
     1215
     1216  psLogMsg("regtool", PS_LOG_INFO, "Updated %d rawExp", numUpdated);
     1217
     1218  return true;
    10401219}
    10411220
     
    10431222static bool updateprocessedexpMode(pxConfig *config)
    10441223{
    1045     PS_ASSERT_PTR_NON_NULL(config, false);
    1046 
    1047     psMetadata *where = psMetadataAlloc();
    1048     PXOPT_COPY_S64(config->args, where,  "-exp_id",       "exp_id", "==");
    1049 
    1050     PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
    1051 
    1052     if (!pxSetFaultCode(config->dbh, "rawExp", where, fault)) {
    1053         psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
    1054         psFree(where);
    1055         return false;
    1056     }
     1224  PS_ASSERT_PTR_NON_NULL(config, false);
     1225
     1226  psMetadata *where = psMetadataAlloc();
     1227  PXOPT_COPY_S64(config->args, where,  "-exp_id",       "exp_id", "==");
     1228
     1229  PXOPT_LOOKUP_S16(fault, config->args, "-fault", true, false);
     1230
     1231  if (!pxSetFaultCode(config->dbh, "rawExp", where, fault)) {
     1232    psError(PS_ERR_UNKNOWN, false, "failed to set set fault flag");
    10571233    psFree(where);
    1058 
    1059     return true;
    1060 }
     1234    return false;
     1235  }
     1236  psFree(where);
     1237
     1238  return true;
     1239}
     1240
     1241
     1242static bool finishcompressexpMode(pxConfig *config) {
     1243
     1244  PS_ASSERT_PTR_NON_NULL(config, false);
     1245
     1246  PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1247
     1248  psMetadata *where = psMetadataAlloc();
     1249  PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     1250
     1251  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1252
     1253  psString query = pxDataGet("regtool_finishcompressexp.sql");
     1254  if (!query) {
     1255    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1256    return(false);
     1257  }
     1258  if (where && psListLength(where->list)) {
     1259    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1260    psStringAppend(&query, " %s ", whereClause);
     1261    psFree(whereClause);
     1262  }
     1263  psFree(where);
     1264
     1265  if (limit) {
     1266    psString limitString = psDBGenerateLimitSQL(limit);
     1267    psStringAppend(&query, " %s ", limitString);
     1268    psFree(limitString);
     1269  }
     1270  //  printf(query);
     1271  //  return(false);
     1272  if (!p_psDBRunQuery(config->dbh, query)) {
     1273    psError(PS_ERR_UNKNOWN, false, "database error");
     1274    psFree(query);
     1275    return(false);
     1276  }
     1277  psFree(query);
     1278
     1279  psArray *output = p_psDBFetchResult(config->dbh);
     1280  if (!output) {
     1281    psError(PS_ERR_UNKNOWN, false, "database error");
     1282    return(false);
     1283  }
     1284  if (!psArrayLength(output)) {
     1285    psTrace("chiptool", PS_LOG_INFO, "no rows found");
     1286    psFree(output);
     1287    return(true);
     1288  }
     1289
     1290  for (long i = 0; i < psArrayLength(output); i++) {
     1291    psMetadata *md = output->data[i];
     1292
     1293    rawExpRow *row = rawExpObjectFromMetadata(md);
     1294    if (!psDBTransaction(config->dbh)) {
     1295      psError(PS_ERR_UNKNOWN, false, "database error");
     1296      return(false);
     1297    }
     1298
     1299    if (strcmp(row->state,"goto_compressed") == 0) {
     1300      if (!pxrawExpSetState(config,row->exp_id, "compressed")) {
     1301        psError(PS_ERR_UNKNOWN, false, "failed to set rawExp.state for exp_id: %" PRId64, row->exp_id);
     1302        psFree(row);
     1303        psFree(output);
     1304        return(false);
     1305      }
     1306    }
     1307    else if (strcmp(row->state,"goto_lossy") == 0) {
     1308      if (!pxrawExpSetState(config,row->exp_id, "lossy")) {
     1309        psError(PS_ERR_UNKNOWN, false, "failed to set rawExp.state for exp_id: %" PRId64, row->exp_id);
     1310        psFree(row);
     1311        psFree(output);
     1312        return(false);
     1313      }
     1314    }
     1315    if (!psDBCommit(config->dbh)) {
     1316      psError(PS_ERR_UNKNOWN, false, "database error");
     1317      return false;
     1318    }
     1319    psFree(row);
     1320  }
     1321
     1322  psFree(output);
     1323  return(true);
     1324}
     1325
     1326static bool updatebyqueryMode(pxConfig *config) {
     1327  PS_ASSERT_PTR_NON_NULL(config, false);
     1328
     1329  PXOPT_LOOKUP_STR(set_state, config->args, "-set_state", true, false);
     1330
     1331  // XX test this out; need to make this consistent with the list in regtoolConfig.c
     1332  psMetadata *where = psMetadataAlloc();
     1333  PXOPT_COPY_S64(config->args,   where,  "-exp_id", "rawExp.exp_id", "==");
     1334  PXOPT_COPY_STR(config->args,   where,  "-exp_name", "rawExp.exp_name", "==");
     1335  PXOPT_COPY_STR(config->args,   where,  "-inst", "rawExp.camera", "==");
     1336  PXOPT_COPY_STR(config->args,   where,  "-telescope", "rawExp.telescope", "==");
     1337  PXOPT_COPY_TIME(config->args,  where, "-dateobs_begin", "rawExp.dateobs", ">=");
     1338  PXOPT_COPY_TIME(config->args,  where, "-dateobs_end", "rawExp.dateobs", "<=");
     1339  PXOPT_COPY_STR(config->args,   where,  "-exp_tag", "rawExp.exp_tag", "==");
     1340  PXOPT_COPY_STR(config->args,   where,  "-exp_type", "rawExp.exp_type", "==");
     1341  PXOPT_COPY_STR(config->args,   where,  "-filelevel", "rawExp.filelevel", "==");
     1342  PXOPT_COPY_STR(config->args,   where,  "-state",     "rawExp.state", "==");
     1343  PXOPT_COPY_STR(config->args,   where,  "-reduction", "rawExp.reduction", "==");
     1344  PXOPT_COPY_STR(config->args,   where,  "-filter", "rawExp.filter", "==");
     1345  PXOPT_COPY_F32(config->args,   where,  "-airmass_min", "rawExp.airmass", ">=");
     1346  PXOPT_COPY_F32(config->args,   where,  "-airmass_max", "rawExp.airmass", "<");
     1347  PXOPT_COPY_RADEC(config->args, where,  "-ra_min", "rawExp.ra", ">=");
     1348  PXOPT_COPY_RADEC(config->args, where,  "-ra_max", "rawExp.ra", "<");
     1349  PXOPT_COPY_RADEC(config->args, where,  "-decl_min", "rawExp.decl", ">=");
     1350  PXOPT_COPY_RADEC(config->args, where,  "-decl_max", "rawExp.decl", "<");
     1351  PXOPT_COPY_F32(config->args,   where,  "-exp_time_min", "rawExp.exp_time", ">=");
     1352  PXOPT_COPY_F32(config->args,   where,  "-exp_time_max", "rawExp.exp_time", "<");
     1353  PXOPT_COPY_F32(config->args,   where,  "-sat_pixel_frac_min", "rawExp.sat_pixel_frac", ">=");
     1354  PXOPT_COPY_F32(config->args,   where,  "-sat_pixel_frac_max", "rawExp.sat_pixel_frac", "<");
     1355  PXOPT_COPY_F64(config->args,   where,  "-bg_min", "rawExp.bg", ">=");
     1356  PXOPT_COPY_F64(config->args,   where,  "-bg_max", "rawExp.bg", "<");
     1357  PXOPT_COPY_F64(config->args,   where,  "-bg_stdev_min", "rawExp.bg_stdev", ">=");
     1358  PXOPT_COPY_F64(config->args,   where,  "-bg_stdev_max", "rawExp.bg_stdev", "<");
     1359  PXOPT_COPY_F64(config->args,   where,  "-bg_mean_stdev_min", "rawExp.bg_mean_stdev", ">=");
     1360  PXOPT_COPY_F64(config->args,   where,  "-bg_mean_stdev_max", "rawExp.bg_mean_stdev", "<");
     1361  PXOPT_COPY_F64(config->args,   where,  "-alt_min", "rawExp.alt", ">=");
     1362  PXOPT_COPY_F64(config->args,   where,  "-alt_max", "rawExp.alt", "<");
     1363  PXOPT_COPY_F64(config->args,   where,  "-az_min", "rawExp.az", ">=");
     1364  PXOPT_COPY_F64(config->args,   where,  "-az_max", "rawExp.az", "<");
     1365  PXOPT_COPY_F64(config->args,   where,  "-ccd_temp_min", "rawExp.ccd_temp", ">=");
     1366  PXOPT_COPY_F64(config->args,   where,  "-ccd_temp_max", "rawExp.ccd_temp", "<");
     1367  PXOPT_COPY_F64(config->args,   where,  "-posang_min", "rawExp.posang", ">=");
     1368  PXOPT_COPY_F64(config->args,   where,  "-posang_max", "rawExp.posang", "<");
     1369  PXOPT_COPY_F32(config->args,   where,  "-sun_angle_min", "rawExp.sun_angle", ">=");
     1370  PXOPT_COPY_F32(config->args,   where,  "-sun_angle_max", "rawExp.sun_angle", "<");
     1371  PXOPT_COPY_STR(config->args,   where,  "-object", "rawExp.object", "==");
     1372  PXOPT_COPY_STR(config->args,   where,  "-comment", "rawExp.comment", "LIKE");
     1373  PXOPT_COPY_STR(config->args,   where,  "-obs_mode", "rawExp.obs_mode", "LIKE");
     1374
     1375
     1376  psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1377  psStringPrepend(&whereClause,"\n AND ");
     1378  PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1379  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1380
     1381  psString limitString = NULL;
     1382  if (limit) {
     1383    limitString = psDBGenerateLimitSQL(limit);
     1384    psStringPrepend(&limitString, "\n");
     1385  }
     1386  // Update the imfiles first, because if you select by state, you'll clobber things
     1387  psString query = pxDataGet("regtool_updatebyqueryimfile.sql");
     1388  if (!query) {
     1389    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1390    return(false);
     1391  }
     1392
     1393  //  printf(query,set_state,whereClause,limitString);
     1394  if (!p_psDBRunQueryF(config->dbh, query, set_state, whereClause, limitString ? limitString : "")) {
     1395    psError(PXTOOLS_ERR_PROG, false, "database error");
     1396    psFree(limitString);
     1397    psFree(query);
     1398    psFree(whereClause);
     1399    psFree(where);
     1400    return(false);
     1401  }
     1402
     1403  psFree(query);
     1404  // Now up date the exposure.
     1405  query = pxDataGet("regtool_updatebyquery.sql");
     1406  if (!query) {
     1407    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1408    return(false);
     1409  }
     1410  if (!p_psDBRunQueryF(config->dbh, query, set_state,whereClause, limitString ? limitString : "")) {
     1411    psError(PXTOOLS_ERR_PROG, false, "database error");
     1412    psFree(limitString);
     1413    psFree(query);
     1414    psFree(whereClause);
     1415    psFree(where);
     1416    return(false);
     1417  }
     1418
     1419  psFree(limitString);
     1420  psFree(query);
     1421  psFree(whereClause);
     1422  psFree(where);
     1423
     1424  return true;
     1425}
     1426
    10611427
    10621428
     
    10781444            psError(PS_ERR_UNKNOWN, false, "database error");
    10791445        }
    1080         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1446        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    10811447        return false;
    10821448    }
     
    11041470            psError(PS_ERR_UNKNOWN, false, "database error");
    11051471        }
    1106         psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1472        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    11071473        return false;
    11081474    }
     
    11851551  }
    11861552
     1553  if (!pxExportVersion(config, f)) {
     1554    psError(PS_ERR_UNKNOWN, false, "failed to write dbversion to output file");
     1555    return false;
     1556  }
     1557
    11871558  psMetadata *where = psMetadataAlloc();
    11881559  PXOPT_COPY_S64(config->args, where, "-exp_id", "exp_id", "==");
     
    11961567    psString query = pxDataGet(tables[i].sqlFilename);
    11971568    if (!query) {
    1198       psError(PXTOOLS_ERR_DATA, false, "failed to retreive SQL statement");
     1569      psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
    11991570      return false;
    12001571    }
     
    12541625
    12551626  psMetadata *input = psMetadataConfigRead (NULL, &nFail, infile, false);
     1627
     1628  if (!pxCheckImportVersion(config, input)) {
     1629    psError(PS_ERR_UNKNOWN, false, "pxCheckImportVersion failed");
     1630    return false;
     1631  }
     1632
    12561633
    12571634  fprintf (stdout, "---- input ----\n");
Note: See TracChangeset for help on using the changeset viewer.