IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28181 for trunk/ippTools/src


Ignore:
Timestamp:
Jun 1, 2010, 3:09:47 PM (16 years ago)
Author:
Paul Price
Message:

Merging branches/haf_branches/ipp.20100512/ into trunk: addtool development to ingest sources into separate dvo catalogues and dvodb merging. (Committed by PAP for HAF)

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/ippTools/src/addtool.c

    r27773 r28181  
    4040static bool maskedMode(pxConfig *config);
    4141static bool unblockMode(pxConfig *config);
     42static bool addminidvodbrunMode(pxConfig *config);
     43static bool updateminidvodbrunMode(pxConfig *config);
     44static bool listminidvodbrunMode(pxConfig *config);
     45static bool flipminidvodbrunMode(pxConfig *config);
     46static bool checkminidvodbrunaddrunMode(pxConfig *config);
     47static bool addminidvodbprocessedMode(pxConfig *config);
     48static bool listminidvodbprocessedMode(pxConfig *config);
     49static bool revertminidvodbprocessedMode(pxConfig *config);
     50static bool updateminidvodbprocessedMode(pxConfig *config);
     51
     52
    4253
    4354# define MODECASE(caseName, func) \
     
    6980        MODECASE(ADDTOOL_MODE_MASKED,               maskedMode);
    7081        MODECASE(ADDTOOL_MODE_UNBLOCK,              unblockMode);
     82        MODECASE(ADDTOOL_MODE_ADDMINIDVODBRUN,      addminidvodbrunMode);
     83        MODECASE(ADDTOOL_MODE_UPDATEMINIDVODBRUN,   updateminidvodbrunMode);
     84        MODECASE(ADDTOOL_MODE_LISTMINIDVODBRUN,     listminidvodbrunMode);
     85        MODECASE(ADDTOOL_MODE_FLIPMINIDVODBRUN,     flipminidvodbrunMode);
     86        MODECASE(ADDTOOL_MODE_CHECKMINIDVODBRUNADDRUN, checkminidvodbrunaddrunMode);
     87        MODECASE(ADDTOOL_MODE_ADDMINIDVODBPROCESSED,addminidvodbprocessedMode);
     88        MODECASE(ADDTOOL_MODE_LISTMINIDVODBPROCESSED,listminidvodbprocessedMode);
     89        MODECASE(ADDTOOL_MODE_REVERTMINIDVODBPROCESSED,revertminidvodbprocessedMode);
     90        MODECASE(ADDTOOL_MODE_UPDATEMINIDVODBPROCESSED,updateminidvodbprocessedMode);
     91
    7192        default:
    7293            psAbort("invalid option (this should not happen)");
     
    102123    PXOPT_COPY_STR(config->args, where,  "-reduction", "camRun.reduction", "==");
    103124
     125
    104126    if (!psListLength(where->list)) {
    105127        psFree(where);
     
    114136    PXOPT_LOOKUP_STR(reduction,   config->args, "-set_reduction", false, false);
    115137    PXOPT_LOOKUP_STR(note,        config->args, "-set_note", false, false);
     138    PXOPT_LOOKUP_STR(minidvodb_name,        config->args, "-set_minidvodb_name", false, false);
     139    PXOPT_LOOKUP_STR(minidvodb_group,        config->args, "-set_minidvodb_group", false, false);
    116140    PXOPT_LOOKUP_BOOL(image_only, config->args, "-image_only", false);
     141    PXOPT_LOOKUP_BOOL(minidvodb,  config->args, "-set_minidvodb", false);
    117142    PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false);
    118143    PXOPT_LOOKUP_BOOL(pretend,    config->args, "-pretend", false);
    119144    PXOPT_LOOKUP_BOOL(simple,     config->args, "-simple", false);
     145
     146
    120147
    121148    // find the cam_id of all the exposures that we want to queue up.
     
    245272                               dvodb       ? dvodb     : row->dvodb,
    246273                               note        ? note      : NULL,
    247                                image_only
     274                               image_only,
     275                               minidvodb,
     276                               minidvodb_group,
     277                               minidvodb_name
    248278        )) {
    249279            if (!psDBRollback(config->dbh)) {
    250                 psError(PS_ERR_UNKNOWN, false, "database error");
     280                psError(PS_ERR_UNKNOWN, false, "database error sfg");
    251281            }
    252282            psError(PS_ERR_UNKNOWN, false,
     
    291321
    292322    // pxUpdateRun gets parameters from config->args and runs the update query
    293     bool result = pxUpdateRun(config, where, &query, "addRun", "add_id", 
     323    bool result = pxUpdateRun(config, where, &query, "addRun", "add_id",
    294324        "addProcessedExp", false);
    295325
     
    374404    PXOPT_LOOKUP_STR(path_base,     config->args, "-path_base", false, false);
    375405    PXOPT_LOOKUP_F32(dtime_addstar, config->args, "-dtime_addstar", false, false);
     406    PXOPT_LOOKUP_STR(dvodb_path, config->args, "-dvodb_path", false, false);
    376407    PXOPT_LOOKUP_S16(fault,         config->args, "-fault", false, false);
    377408
     
    399430        return false;
    400431    }
     432    //psError(PS_ERR_UNKNOWN, false, "database error %s", query);
    401433    psFree(query);
    402434
     
    424456        dtime_addstar,
    425457        path_base,
     458        dvodb_path,
    426459        fault
    427460        );
     
    522555
    523556    if (!p_psDBRunQuery(config->dbh, query)) {
    524         psError(PS_ERR_UNKNOWN, false, "database error");
     557      psError(PS_ERR_UNKNOWN, false, "database error %s ", query);
    525558        psFree(query);
    526559        return false;
     
    733766    return true;
    734767}
     768
     769static bool addminidvodbrunMode(pxConfig *config)
     770{
     771  PS_ASSERT_PTR_NON_NULL(config, NULL);
     772
     773  // required
     774
     775  PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-set_minidvodb_group", true, false);
     776  PXOPT_LOOKUP_STR(mergedvodb_path, config->args, "-set_mergedvodb_path", true, false);
     777
     778  //optional
     779  PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-set_minidvodb_name", false, false);
     780  PXOPT_LOOKUP_STR(minidvodb_path, config->args, "-set_minidvodb_path", false, false);
     781  PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);
     782
     783  if (!psDBTransaction(config->dbh)) {
     784    psError(PS_ERR_UNKNOWN, false, "database error");
     785    return false;
     786  }
     787
     788  psString minidvodbpath = "NULL";
     789
     790  // I don't know how to get around the complaints of minidvodb_path can't be null. this 'fixes' it, but someone smarter can fix it properly.
     791  if (minidvodb_path) {
     792    minidvodbpath = minidvodb_path;
     793  }
     794
     795  if (!minidvodbRunInsert(config->dbh,
     796            0, // job_id
     797            minidvodb_name,
     798            minidvodb_group,
     799            minidvodbpath,
     800            mergedvodb_path,
     801            "new",
     802            0
     803            )) {
     804    psError(PS_ERR_UNKNOWN, false, "database error");
     805    return false;
     806  }
     807
     808  psU64 affected = psDBAffectedRows(config->dbh);
     809  if (affected != 1) {
     810    psError(PS_ERR_UNKNOWN, false,
     811            "should have affected one row but %" PRIu64 " rows were modified",
     812            affected);
     813    return false;
     814  }
     815
     816  psS64 minidvodb_id = psDBLastInsertID(config->dbh);
     817  printf("%" PRId64 "\n", minidvodb_id);
     818
     819
     820  if (!minidvodb_name) {
     821    psStringAppend(&minidvodb_name, "%s.%" PRIu64,minidvodb_group,minidvodb_id);
     822  }
     823
     824  if (!minidvodb_path) {
     825    psStringAppend(&minidvodb_path,"%s/%s",mergedvodb_path,minidvodb_name);
     826  }
     827
     828  psString query = NULL;
     829
     830  psStringAppend(&query, "UPDATE minidvodbRun SET minidvodb_path = '%s', minidvodb_name = '%s' where minidvodb_id = %" PRIu64";", minidvodb_path, minidvodb_name, minidvodb_id);
     831
     832  if (!p_psDBRunQuery(config->dbh, query)) {
     833    psError(PS_ERR_UNKNOWN, false, "database error");
     834    psFree(query);
     835    return false;
     836  }
     837
     838  if (!psDBCommit(config->dbh)) {
     839    psError(PS_ERR_UNKNOWN, false, "database error");
     840    return false;
     841  }
     842
     843  return true;
     844}
     845
     846static bool updateminidvodbrunMode(pxConfig *config) {
     847  PS_ASSERT_PTR_NON_NULL(config, false);
     848
     849    psMetadata *where = psMetadataAlloc();
     850    PXOPT_COPY_S64(config->args, where, "-minidvodb_id",     "minidvodb_id", "==");
     851    PXOPT_COPY_STR(config->args, where, "-minidvodb_name",     "minidvodb_name", "==");
     852    PXOPT_COPY_STR(config->args, where, "-state",     "state", "==");
     853    PXOPT_COPY_STR(config->args, where, "-minidvodb_path", "minidvodb_path", "==");
     854    PXOPT_COPY_STR(config->args, where, "-mergedvodb_path", "mergedvodb_path", "==");
     855    PXOPT_COPY_STR(config->args, where, "-minidvodb_group",     "minidvodb_group", "==");
     856
     857    PXOPT_LOOKUP_STR(minidvodb_name,  config->args, "-set_minidvodb_name", false, false);
     858    PXOPT_LOOKUP_STR(minidvodb_path,  config->args, "-set_minidvodb_path", false, false);
     859    PXOPT_LOOKUP_STR(state,  config->args, "-set_state", false, false);
     860    PXOPT_LOOKUP_STR(mergedvodb_path,  config->args, "-set_mergedvodb_path", false, false);
     861    PXOPT_LOOKUP_STR(minidvodb_group,  config->args, "-set_minidvodb_group", false, false);
     862
     863
     864    if (!psListLength(where->list)) {
     865      psFree(where);
     866      psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     867      return false;
     868    }
     869
     870    psString query = psStringCopy("UPDATE minidvodbRun SET ");
     871    int cnt = 0;
     872    psString comma = ",";
     873    if (minidvodb_name) {
     874      psStringAppend(&query, " minidvodb_name = '%s'", minidvodb_name);
     875      cnt++;
     876    }
     877
     878    if (minidvodb_path) {
     879      if (cnt) {
     880          psStringAppend(&query, "%s", comma);
     881      }
     882
     883      psStringAppend(&query, " minidvodb_path = '%s'", minidvodb_path);
     884      cnt++;
     885    }
     886
     887    if (state) {
     888      if (cnt) {
     889        psStringAppend(&query, "%s", comma);
     890      }
     891      psStringAppend(&query, " state = '%s'", state);
     892      cnt++;
     893    }
     894
     895    if (mergedvodb_path) {
     896      if (cnt) {
     897        psStringAppend(&query, "%s", comma);
     898      }
     899      psStringAppend(&query, " mergedvodb_path = '%s'", mergedvodb_path);
     900      cnt++;
     901    }
     902
     903    if (minidvodb_group) {
     904      if (cnt) {
     905        psStringAppend(&query, "%s", comma);
     906      }
     907      psStringAppend(&query, " minidvodb_group = '%s'", minidvodb_group);
     908      cnt++;
     909    }
     910
     911    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     912    psStringAppend(&query, " WHERE %s", whereClause);
     913
     914    if (!p_psDBRunQuery(config->dbh, query)) {
     915      psError(PS_ERR_UNKNOWN, false, "database error");
     916      psFree(query);
     917      return false;
     918    }
     919
     920    psFree(query);
     921    psFree(where);
     922
     923    return true;
     924
     925}
     926
     927static bool flipminidvodbrunMode(pxConfig *config) {
     928  PS_ASSERT_PTR_NON_NULL(config, false);
     929
     930  psMetadata *where = psMetadataAlloc();
     931  PXOPT_LOOKUP_STR(minidvodb_group,  config->args, "-minidvodb_group",true, false);
     932  PXOPT_COPY_STR(config->args, where, "-minidvodb_group",     "minidvodb_group", "==");
     933
     934//this flips the new - > active
     935// and the active - > waiting in one action
     936
     937
     938// the first query looks to find things that are new and where all the fields are filled (ie, ready to be flipped to active)
     939
     940// start a transaction eraly so it will contain any row level locks
     941  if (!psDBTransaction(config->dbh)) {
     942    psError(PS_ERR_UNKNOWN, false, "database error");
     943    return false;
     944  }
     945
     946  psString firstquery = psStringCopy("SELECT * from  minidvodbRun where state = 'new' and minidvodb_name is NOT NULL and minidvodb_group IS NOT NULL and minidvodb_path IS NOT NULL and mergedvodb_path IS NOT NULL");
     947
     948  psString firstwhereClause = psDBGenerateWhereConditionSQL(where, NULL);
     949  psStringAppend(&firstquery, " AND %s", firstwhereClause);
     950
     951
     952
     953  if (!p_psDBRunQuery(config->dbh, firstquery)) {
     954    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     955    if (!psDBRollback(config->dbh)) {
     956      psError(PS_ERR_UNKNOWN, false, "database error");
     957    }
     958    return false;
     959  }
     960  psFree(firstquery);
     961
     962 //we don't care what the stuff is that is found, just that there is stuff. This is a check to see that there is something in the 'new' state, before flipping (so that if there is nothing in new, it won't flip the active to waiting.  the flipminidvo is just to make it easy to flip from new -> active.
     963
     964  psArray *output = p_psDBFetchResult(config->dbh);
     965  if (!output) {
     966    psError(PS_ERR_UNKNOWN, false, "database error");
     967    return false;
     968  }
     969  if (!psArrayLength(output)) {
     970    psTrace("addtool", PS_LOG_INFO, "no rows found");
     971    psFree(output);
     972    return true;
     973  }
     974
     975
     976  //ok, there's something, so flip active -> waiting
     977
     978  psString query = psStringCopy("UPDATE minidvodbRun SET state = 'waiting' WHERE state = 'active' ");
     979
     980  psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     981  psStringAppend(&query, " AND %s", whereClause);
     982
     983
     984  if (!p_psDBRunQuery(config->dbh, query)) {
     985    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     986    if (!psDBRollback(config->dbh)) {
     987      psError(PS_ERR_UNKNOWN, false, "database error");
     988    }
     989    return false;
     990  }
     991
     992
     993  //now flip new -> active
     994  psString query2 = psStringCopy("UPDATE minidvodbRun SET state = 'active' WHERE state = 'new' AND minidvodb_name is NOT NULL and minidvodb_group IS NOT NULL and minidvodb_path IS NOT NULL and mergedvodb_path IS NOT NULL ");
     995  psStringAppend(&query2, " AND minidvodb_group = '%s' limit 1;", minidvodb_group);
     996  if (!p_psDBRunQuery(config->dbh, query2)) {
     997    psError(PS_ERR_UNKNOWN, false, "database error");
     998    if (!psDBRollback(config->dbh)) {
     999      psError(PS_ERR_UNKNOWN, false, "database error");
     1000    }
     1001    psFree(query);
     1002    return false;
     1003  }
     1004
     1005
     1006  if (!psDBCommit(config->dbh)) {
     1007    psError(PS_ERR_UNKNOWN, false, "database error");
     1008    if (!psDBRollback(config->dbh)) {
     1009      psError(PS_ERR_UNKNOWN, false, "database error");
     1010    }
     1011    psFree(query);
     1012  return false;
     1013  }
     1014 psFree(query2);
     1015 psFree(where);
     1016
     1017 return true;
     1018
     1019}
     1020
     1021
     1022static bool checkminidvodbrunaddrunMode(pxConfig *config) {
     1023  PS_ASSERT_PTR_NON_NULL(config, false);
     1024  psMetadata *where = psMetadataAlloc();
     1025
     1026  //this checks to see if a minidvod_group/name is has completed addRun processing
     1027  PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbRun.minidvodb_group", "==");
     1028  PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbRun.minidvodb_name", "==");
     1029  PXOPT_COPY_STR(config->args, where, "-state", "minidvodbRun.state", "==");
     1030
     1031
     1032  PXOPT_LOOKUP_U64(limit,      config->args, "-limit", false, false);
     1033  PXOPT_LOOKUP_BOOL(all_addrun_states, config->args, "-all_addrun_states", false);
     1034  //this doesn't care what state the addRun is in (useful for counting addRuns)
     1035  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1036
     1037  if (!psListLength(where->list)) {
     1038        psFree(where);
     1039        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1040        return false;
     1041  }
     1042
     1043  psString query = pxDataGet("addtool_checkminidvodbaddrun.sql");
     1044
     1045  if (!query) {
     1046        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1047        return false;
     1048  }
     1049
     1050
     1051  if (psListLength(where->list)) {
     1052    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1053        psStringAppend(&query, " WHERE %s", whereClause);
     1054        psFree(whereClause);
     1055  }
     1056
     1057  if (!all_addrun_states) {
     1058    psStringAppend(&query, " AND (cnt2 = cnt) ");
     1059  }
     1060
     1061  if (limit) {
     1062    psString limitString = psDBGenerateLimitSQL(limit);
     1063    psStringAppend(&query, " %s", limitString);
     1064    psFree(limitString);
     1065  }
     1066
     1067
     1068  if (!p_psDBRunQuery(config->dbh, query)) {
     1069    psError(PS_ERR_UNKNOWN, false, "database error");
     1070    psFree(query);
     1071    return false;
     1072  }
     1073  psFree(query);
     1074  psArray *output = p_psDBFetchResult(config->dbh);
     1075  if (!output) {
     1076    psError(PS_ERR_UNKNOWN, false, "database error");
     1077    return false;
     1078  }
     1079  if (!psArrayLength(output)) {
     1080    psTrace("addtool", PS_LOG_INFO, "no rows found");
     1081    psFree(output);
     1082    return true;
     1083  }
     1084
     1085  if (!ippdbPrintMetadatas(stdout, output, "minidvodbRun", !simple)) {
     1086    psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1087    psFree(output);
     1088    return false;
     1089  }
     1090
     1091  psFree(output);
     1092
     1093  return true;
     1094}
     1095
     1096
     1097
     1098static bool listminidvodbrunMode(pxConfig *config) {
     1099    PS_ASSERT_PTR_NON_NULL(config, false);
     1100    psMetadata *where = psMetadataAlloc();
     1101
     1102    PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbRun.minidvodb_name", "LIKE");
     1103    PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbRun.minidvodb_group", "==");
     1104    PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbRun.minidvodb_id", "==");
     1105
     1106    PXOPT_COPY_STR(config->args, where, "-state", "minidvodbRun.state", "==");
     1107    PXOPT_LOOKUP_U64(limit,      config->args, "-limit", false, false);
     1108    PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1109
     1110
     1111    if (!psListLength(where->list)) {
     1112      psFree(where);
     1113      psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1114      return false;
     1115    }
     1116
     1117    psString query = pxDataGet("addtool_find_minidvodbrun.sql");
     1118
     1119    if (!query) {
     1120      psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1121      return false;
     1122    }
     1123
     1124    if (psListLength(where->list)) {
     1125      psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1126      psStringAppend(&query, " WHERE %s", whereClause);
     1127      psFree(whereClause);
     1128    }
     1129
     1130    if (limit) {
     1131      psString limitString = psDBGenerateLimitSQL(limit);
     1132      psStringAppend(&query, " %s", limitString);
     1133      psFree(limitString);
     1134    }
     1135
     1136    if (!p_psDBRunQuery(config->dbh, query)) {
     1137      psError(PS_ERR_UNKNOWN, false, "database error");
     1138      psFree(query);
     1139      return false;
     1140    }
     1141
     1142    psFree(query);
     1143    psArray *output = p_psDBFetchResult(config->dbh);
     1144    if (!output) {
     1145      psError(PS_ERR_UNKNOWN, false, "database error");
     1146      return false;
     1147    }
     1148    if (!psArrayLength(output)) {
     1149      psTrace("addtool", PS_LOG_INFO, "no rows found");
     1150      psFree(output);
     1151      return true;
     1152    }
     1153
     1154    if (!ippdbPrintMetadatas(stdout, output, "minidvodbRun",  !simple)) {
     1155      psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1156      psFree(output);
     1157      return false;
     1158    }
     1159
     1160    psFree(output);
     1161
     1162return true;
     1163}
     1164
     1165static bool addminidvodbprocessedMode(pxConfig *config) {
     1166
     1167  PS_ASSERT_PTR_NON_NULL(config, false);
     1168
     1169    // required
     1170  PXOPT_LOOKUP_U64(minidvodb_id, config->args, "-minidvodb_id", true, false);
     1171  PXOPT_LOOKUP_STR(mergedvodb_path, config->args, "-mergedvodb_path", true, false);
     1172  PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-minidvodb_group", true, false);
     1173
     1174    // optional
     1175  PXOPT_LOOKUP_U64(merge_order,     config->args, "-merge_order", false, false);
     1176  PXOPT_LOOKUP_F32(dtime_relphot, config->args, "-dtime_relphot", false, false);
     1177  PXOPT_LOOKUP_F32(dtime_resort, config->args, "-dtime_resort", false, false);
     1178  PXOPT_LOOKUP_F32(dtime_merge, config->args, "-dtime_merge", false, false);
     1179  PXOPT_LOOKUP_TIME(epoch, config->args, "-epoch", false, false);
     1180  PXOPT_LOOKUP_S16(fault,         config->args, "-fault", false, false);
     1181    //generate restrictions
     1182  psMetadata *where = psMetadataAlloc();
     1183  PXOPT_COPY_S64(config->args, where, "-minidvodb_id",   "minidvodbRun.minidvodb_id",   "==");
     1184
     1185
     1186  if (!psDBTransaction(config->dbh)) {
     1187    psError(PS_ERR_UNKNOWN, false, "database error");
     1188    return false;
     1189  }
     1190
     1191
     1192  psString query = pxDataGet("addtool_find_pendingmergeprocess.sql");
     1193  if (!query) {
     1194    psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1195    return false;
     1196  }
     1197  // use psDBGenerateWhereSQL because the SQL yields an intermediate table
     1198  if (psListLength(where->list)) {
     1199    psString whereClaus = psDBGenerateWhereConditionSQL(where, NULL);
     1200    psStringAppend(&query, " AND %s", whereClaus);
     1201    psFree(whereClaus);
     1202  }
     1203  psFree(where);
     1204
     1205  if (!p_psDBRunQuery(config->dbh, query)) {
     1206    psError(PS_ERR_UNKNOWN, false, "database error");
     1207    psFree(query);
     1208    return false;
     1209  }
     1210  psFree(query);
     1211
     1212  psArray *output = p_psDBFetchResult(config->dbh);
     1213  if (!output) {
     1214    psError(PS_ERR_UNKNOWN, false, "database error");
     1215    return false;
     1216  }
     1217  if (!psArrayLength(output)) {
     1218    psTrace("addtool", PS_LOG_INFO, "no rows found");
     1219    psFree(output);
     1220    return true;
     1221  }
     1222
     1223  minidvodbRunRow *pendingRow = minidvodbRunObjectFromMetadata(output->data[0]);
     1224  psFree(output);
     1225  minidvodbProcessedRow *row = minidvodbProcessedRowAlloc(
     1226               pendingRow->minidvodb_id,
     1227               merge_order,
     1228               dtime_resort,
     1229               dtime_relphot,
     1230               dtime_merge,
     1231               epoch,
     1232               mergedvodb_path,
     1233               fault
     1234               );
     1235
     1236  if (!minidvodbProcessedInsertObject(config->dbh, row)) {
     1237    // rollback
     1238    if (!psDBRollback(config->dbh)) {
     1239      psError(PS_ERR_UNKNOWN, false, "database error");
     1240    }
     1241    psError(PS_ERR_UNKNOWN, false, "database error");
     1242    psFree(row);
     1243    psFree(pendingRow);
     1244    return false;
     1245  }
     1246
     1247
     1248
     1249
     1250  //this finds the # of merged things (for the merge order)
     1251  psString query3 = NULL;
     1252  psStringAppend(&query3, "select count(*) from minidvodbRun join minidvodbProcessed using (minidvodb_id) where state = 'merged' and minidvodb_group = '%s';", minidvodb_group);
     1253
     1254  if (!p_psDBRunQuery(config->dbh, query3)) {
     1255    // rollback
     1256    if (!psDBRollback(config->dbh)) {
     1257      psError(PS_ERR_UNKNOWN, false, "database error");
     1258    }
     1259    psError(PS_ERR_UNKNOWN, false, "database error");
     1260    psFree(query3);
     1261    return false;
     1262  }
     1263  psArray *output2 = p_psDBFetchResult(config->dbh);
     1264  if (!output2) {
     1265    psError(PS_ERR_UNKNOWN, false, "database error");
     1266    return false;
     1267  }
     1268  if (!psArrayLength(output2)) {
     1269    psTrace("addtool", PS_LOG_INFO, "no rows found");
     1270    psFree(output);
     1271    return true;
     1272  }
     1273  bool status;
     1274  psS64 m_order = psMetadataLookupS64(&status, output2->data[0], "count(*)");
     1275  if (!status) {
     1276
     1277    psAbort("failed to lookup value for count column");
     1278    return false;
     1279  }
     1280  psString final = NULL;
     1281  psStringAppend(&final, "%" PRIu64, m_order);
     1282    //return false;
     1283  psFree(query3);
     1284  psFree(output2);
     1285
     1286
     1287
     1288  //update the merge_order
     1289
     1290  psString query4 = NULL;
     1291  psStringAppend(&query4, "update minidvodbProcessed set merge_order = %"PRIu64,m_order);
     1292  psStringAppend(&query4," where minidvodb_id = %" PRIu64,  minidvodb_id);
     1293  printf("%s", query4);
     1294  if (!p_psDBRunQuery(config->dbh, query4)) {
     1295    // rollback
     1296    if (!psDBRollback(config->dbh)) {
     1297      psError(PS_ERR_UNKNOWN, false, "database error");
     1298    }
     1299    psError(PS_ERR_UNKNOWN, false, "database error");
     1300    psFree(query4);
     1301    return false;
     1302  }
     1303  //
     1304psFree(query4);
     1305
     1306
     1307
     1308// since there is only one exp per 'new' set mindvodbRun.state = 'merged'
     1309
     1310  psString query2 = NULL ;
     1311  psStringAppend(&query2, "UPDATE minidvodbRun SET state = 'merged' WHERE minidvodb_id = %'" PRIu64, row->minidvodb_id);
     1312
     1313  if (!p_psDBRunQuery(config->dbh, query2)) {
     1314    // rollback
     1315    if (!psDBRollback(config->dbh)) {
     1316      psError(PS_ERR_UNKNOWN, false, "database error");
     1317    }
     1318    psError(PS_ERR_UNKNOWN, false, "database error");
     1319    psFree(query2);
     1320    return false;
     1321  }
     1322
     1323
     1324
     1325
     1326
     1327
     1328
     1329
     1330  psFree(row);
     1331  psFree(pendingRow);
     1332
     1333
     1334
     1335
     1336
     1337  //commit the changes
     1338  if (!psDBCommit(config->dbh)) {
     1339    psError(PS_ERR_UNKNOWN, false, "database error");
     1340    return false;
     1341  }
     1342
     1343
     1344  //print the merge_order (why not!)
     1345  printf("%s", final);
     1346  psFree(final);
     1347
     1348  return true;
     1349}
     1350
     1351
     1352
     1353static bool listminidvodbprocessedMode(pxConfig *config) {
     1354  psMetadata *where = psMetadataAlloc();
     1355  PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbProcessed.minidvodb_id", "==");
     1356  PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbProcessed.minidvodb_name", "==");
     1357  PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbProcessed.minidvodb_group", "==");
     1358  PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
     1359  PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
     1360  PXOPT_LOOKUP_BOOL(faulted, config->args, "-faulted", false);
     1361  if (!psListLength(where->list)) {
     1362        psFree(where);
     1363        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1364        return false;
     1365    }
     1366
     1367  psString query = pxDataGet("addtool_find_minidvodbprocessed.sql");
     1368    if (!query) {
     1369        psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1370        return false;
     1371    }
     1372
     1373if (psListLength(where->list)) {
     1374        psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1375        psStringAppend(&query, " WHERE %s", whereClause);
     1376        psFree(whereClause);
     1377    }
     1378
     1379// we either add AND (condition) or WHERE (condition):
     1380    if (where->list && faulted) {
     1381        // list only faulted rows
     1382        psStringAppend(&query, " %s", " AND minidvodbProcessed.fault != 0");
     1383    }
     1384    if (where->list && !faulted) {
     1385        // don't list faulted rows
     1386        psStringAppend(&query, " %s", " AND minidvodbProcessed.fault = 0");
     1387    }
     1388    if (!where->list && faulted) {
     1389        // list only faulted rows
     1390        psStringAppend(&query, " %s", " WHERE minidvodbProcessed.fault != 0");
     1391    }
     1392    if (!where->list && !faulted) {
     1393        // don't list faulted rows
     1394        psStringAppend(&query, " %s", " WHERE minidvodbProcessed.fault = 0");
     1395    }
     1396    psFree(where);
     1397
     1398    // order by epoch
     1399    psStringAppend(&query, " ORDER BY minidvodb_id");
     1400
     1401    // treat limit == 0 as "no limit"
     1402    if (limit) {
     1403        psString limitString = psDBGenerateLimitSQL(limit);
     1404        psStringAppend(&query, " %s", limitString);
     1405        psFree(limitString);
     1406    }
     1407
     1408    if (!p_psDBRunQuery(config->dbh, query)) {
     1409      psError(PS_ERR_UNKNOWN, false, "database error ");
     1410        psFree(query);
     1411        return false;
     1412    }
     1413    psFree(query);
     1414
     1415    psArray *output = p_psDBFetchResult(config->dbh);
     1416    if (!output) {
     1417        psError(PS_ERR_UNKNOWN, false, "database error");
     1418        return false;
     1419    }
     1420    if (!psArrayLength(output)) {
     1421        psTrace("addtool", PS_LOG_INFO, "no rows found");
     1422        psFree(output);
     1423        return true;
     1424    }
     1425
     1426    // negate simple so the default is true
     1427    if (!ippdbPrintMetadatas(stdout, output, "minidvodbProcessed", !simple)) {
     1428        psError(PS_ERR_UNKNOWN, false, "failed to print array");
     1429        psFree(output);
     1430        return false;
     1431    }
     1432
     1433    psFree(output);
     1434
     1435return true;
     1436}
     1437
     1438
     1439
     1440static bool revertminidvodbprocessedMode(pxConfig *config) {
     1441  psMetadata *where = psMetadataAlloc();
     1442  PS_ASSERT_PTR_NON_NULL(config, false);
     1443  PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbProcessed.minidvodb_id", "==");
     1444  PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "addRun.minidvodb_group", "==");
     1445
     1446  if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) {
     1447    psFree(where);
     1448    psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1449    return false;
     1450  }
     1451
     1452  if (!psDBTransaction(config->dbh)) {
     1453      psError(PS_ERR_UNKNOWN, false, "database error");
     1454      psFree(where);
     1455      return false;
     1456  }
     1457
     1458  {
     1459        psString query = pxDataGet("addtool_reset_faulted_minidvodbruns.sql");
     1460        if (!query) {
     1461            psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1462            psFree(where);
     1463            return false;
     1464        }
     1465
     1466        // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE
     1467
     1468        if (where && psListLength(where->list)) {
     1469          psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1470          psStringAppend(&query, " AND %s", whereClause);
     1471          psFree(whereClause);
     1472        }
     1473
     1474        if (!p_psDBRunQuery(config->dbh, query)) {
     1475          // rollback
     1476          if (!psDBRollback(config->dbh)) {
     1477            psError(PS_ERR_UNKNOWN, false, "database error");
     1478          }
     1479          psError(PS_ERR_UNKNOWN, false, "database error");
     1480          psFree(query);
     1481          psFree(where);
     1482          return false;
     1483        }
     1484        psFree(query);
     1485  }
     1486  {
     1487    psString query = pxDataGet("addtool_revertminidvodbprocessed.sql");
     1488    if (!query) {
     1489      // rollback
     1490      if (!psDBRollback(config->dbh)) {
     1491        psError(PS_ERR_UNKNOWN, false, "database error");
     1492      }
     1493      psError(PXTOOLS_ERR_SYS, false, "failed to retreive SQL statement");
     1494      psFree(where);
     1495      return false;
     1496    }
     1497
     1498    // use psDBGenerateWhereConditionalSQL with AND ... because the SQL ends in a WHERE
     1499    if (where && psListLength(where->list)) {
     1500      psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1501      psStringAppend(&query, " AND %s", whereClause);
     1502      psFree(whereClause);
     1503    }
     1504
     1505    if (!p_psDBRunQuery(config->dbh, query)) {
     1506      // rollback
     1507      if (!psDBRollback(config->dbh)) {
     1508        psError(PS_ERR_UNKNOWN, false, "database error");
     1509      }
     1510      psError(PS_ERR_UNKNOWN, false, "database error");
     1511      psFree(query);
     1512      psFree(where);
     1513            return false;
     1514    }
     1515    psFree(query);
     1516  }
     1517  psFree(where);
     1518
     1519  if (!psDBCommit(config->dbh)) {
     1520    psError(PS_ERR_UNKNOWN, false, "database error");
     1521    return false;
     1522  }
     1523
     1524  return true;
     1525}
     1526
     1527
     1528
     1529static bool updateminidvodbprocessedMode(pxConfig *config) {
     1530  PS_ASSERT_PTR_NON_NULL(config, false);
     1531  psMetadata *where = psMetadataAlloc();
     1532
     1533  PXOPT_LOOKUP_U64(minidvodb_id,  config->args, "-minidvodb_id", true, false);
     1534  PXOPT_LOOKUP_U64(merge_order,  config->args, "-set_merge_order", false, false);
     1535  PXOPT_LOOKUP_S16(fault,  config->args, "-set_fault", false, false);
     1536  PXOPT_LOOKUP_F32(dtime_relphot,  config->args, "-set_dtime_relphot", false, false);
     1537  PXOPT_LOOKUP_F32(dtime_resort,  config->args, "-set_dtime_resort", false, false);
     1538  PXOPT_LOOKUP_F32(dtime_merge,  config->args, "-set_dtime_merge", false, false);
     1539
     1540  PXOPT_COPY_S64(config->args, where, "-minidvodb_id",     "minidvodbProcessed.minidvodb_id", "==");
     1541  PXOPT_COPY_STR(config->args, where, "-minidvodb_name",     "minidvodbRun.minidvodb_name", "==");
     1542
     1543
     1544  if (!psListLength(where->list)) {
     1545    psFree(where);
     1546    psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required");
     1547    return false;
     1548  }
     1549
     1550  psString query = psStringCopy("UPDATE minidvodbProcessed JOIN minidvodbRun USING (minidvodb_id) SET ");
     1551  int cnt = 0;
     1552  psString comma = ",";
     1553  if (fault) {
     1554    psStringAppend(&query, " fault = %d", fault);
     1555  cnt++;
     1556  }
     1557
     1558  if (merge_order) {
     1559    if (cnt) {
     1560      psStringAppend(&query, "%s", comma);
     1561    }
     1562
     1563    psStringAppend(&query, " merge_order = %" PRId64, merge_order);
     1564    cnt++;
     1565  }
     1566
     1567  if (dtime_relphot) {
     1568    if (cnt) {
     1569      psStringAppend(&query, "%s", comma);
     1570    }
     1571    psStringAppend(&query, " dtime_relphot = %f", dtime_relphot);
     1572    cnt++;
     1573  }
     1574
     1575  if (dtime_resort) {
     1576    if (cnt) {
     1577      psStringAppend(&query, "%s", comma);
     1578    }
     1579    psStringAppend(&query, " dtime_resort = %f", dtime_resort);
     1580    cnt++;
     1581  }
     1582
     1583  if (dtime_merge) {
     1584    if (cnt) {
     1585      psStringAppend(&query, "%s", comma);
     1586    }
     1587    psStringAppend(&query, " dtime_merge = %f", dtime_merge);
     1588    cnt++;
     1589 }
     1590
     1591  psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1592  psStringAppend(&query, " WHERE %s", whereClause);
     1593
     1594  if (!p_psDBRunQuery(config->dbh, query)) {
     1595   psError(PS_ERR_UNKNOWN, false, "database error %s", query);
     1596   psFree(query);
     1597   return false;
     1598  }
     1599
     1600  psFree(query);
     1601  psFree(where);
     1602
     1603  return true;
     1604}
     1605
     1606
  • trunk/ippTools/src/addtool.h

    r25299 r28181  
    3939    ADDTOOL_MODE_DONECLEANUP,
    4040    ADDTOOL_MODE_EXPORTRUN,
    41     ADDTOOL_MODE_IMPORTRUN
     41    ADDTOOL_MODE_IMPORTRUN,
     42    ADDTOOL_MODE_ADDMINIDVODBRUN,
     43    ADDTOOL_MODE_UPDATEMINIDVODBRUN,
     44    ADDTOOL_MODE_LISTMINIDVODBRUN,
     45    ADDTOOL_MODE_FLIPMINIDVODBRUN,
     46    ADDTOOL_MODE_CHECKMINIDVODBRUNADDRUN,
     47    ADDTOOL_MODE_ADDMINIDVODBPROCESSED,
     48    ADDTOOL_MODE_LISTMINIDVODBPROCESSED,
     49    ADDTOOL_MODE_REVERTMINIDVODBPROCESSED,
     50    ADDTOOL_MODE_UPDATEMINIDVODBPROCESSED
    4251} addtoolMode;
    4352
  • trunk/ippTools/src/addtoolConfig.c

    r27773 r28181  
    6363    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend",           0, "do not actually modify the database", false);
    6464    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple",            0, "use the simple output format", false);
    65 
     65    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb",            0, "use minidvodb", false);
     66    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb_group", 0,   "define minidvodb_group", NULL);
     67    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb_name", 0,   "define minidvodb_bname", NULL);
    6668    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0,   "define new data_group", NULL);
    6769    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0,   "define new dist_group", NULL);
     
    8486    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_dist_group", 0,   "define new dist_group", NULL);
    8587    psMetadataAddStr(updaterunArgs, PS_LIST_TAIL, "-set_note", 0,         "define new note", NULL);
     88
    8689    // -pendingexp
    8790    psMetadata *pendingexpArgs = psMetadataAlloc();
     
    98101    psMetadataAddS64(addprocessedexpArgs, PS_LIST_TAIL, "-add_id", 0,            "define addtool ID (required)", 0);
    99102    psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-path_base", 0,            "define base output location", NULL);
     103     psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-dvodb_path", 0,            "define base output location", NULL);
    100104    psMetadataAddF32(addprocessedexpArgs, PS_LIST_TAIL, "-dtime_addstar", 0, "define elapsed time for DVO insertion (seconds)", NAN);
    101105    psMetadataAddS16(addprocessedexpArgs, PS_LIST_TAIL, "-fault",  0,            "set fault code", 0);
     
    142146    psMetadataAddStr(unblockArgs, PS_LIST_TAIL, "-label",  0,            "name of a label to unmask (required)", NULL);
    143147
     148    // -addminidvodbruns
     149    psMetadata *addminidvodbrunArgs = psMetadataAlloc();
     150    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_name",        0, "define minidvodb_name", NULL);
     151    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_group",        0, "define minidvodb_group (required)", NULL);
     152    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_path",        0, "define path for minidvodb", NULL);
     153    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path",        0, "define path for the merged dvodb (required)", NULL);
     154    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_state",        0, "define state", NULL);
     155
     156    // -updateminidvodbruns
     157    psMetadata *updateminidvodbrunArgs = psMetadataAlloc();
     158    psMetadataAddU64(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_id",        0, "search by minidvodb_id ", 0);
     159    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group",        0, "search by minidvodb_name (LIKE)", NULL);
     160    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name (LIKE)", NULL);
     161    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_path",        0, "search by path for minidvodb", NULL);
     162    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-mergedvodb_path",        0, "search by path for the merged dvodb", NULL);
     163    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-state",        0, "search by state", NULL);
     164    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_name",        0, "define minidvodb_name", NULL);
     165    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_path",        0, "define path for minidvodb", NULL);
     166    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path",        0, "define path for minidvodb", NULL);
     167    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_group",        0, "define path for the merged dvodb", NULL);
     168    psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-set_state",        0, "define state", NULL);
     169   
     170    // -listminidvodbrunArgs
     171    psMetadata *listminidvodbrunArgs = psMetadataAlloc();
     172    psMetadataAddU64(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_id",        0, "search by minidvodb_id", 0);
     173    psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name (LIKE)", NULL);
     174    psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group",     0,    "search by minidvodb.minidvodb_group", NULL);
     175    psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-state",        0, "search by state", NULL);
     176    psMetadataAddU64(listminidvodbrunArgs, PS_LIST_TAIL, "-limit",        0, "limit to N items", 0);
     177    psMetadataAddBool(listminidvodbrunArgs, PS_LIST_TAIL, "-simple",        0, "simple output", false);
     178   
     179    //psMetadataAddBool(listminidvodbrunArgs, PS_LIST_TAIL, "-finished_addrun",        0, "limit to minidvodbs with completed addRuns (none in new state)", false);
     180    psMetadata *flipminidvodbrunArgs = psMetadataAlloc();
     181    psMetadataAddStr(flipminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group",     0,    "for the supplied minidvodb_group (required): flip the current 'new' to 'active', the current 'active' to 'waiting'", NULL);
     182   
     183    psMetadata *checkminidvodbrunaddrunArgs = psMetadataAlloc();
     184    psMetadataAddStr(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-minidvodb_group",     0,    "for the supplied minidvodb_group (required): check if the addRun stage is complete (all in addRun.state = full) ", NULL);
     185    psMetadataAddStr(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-minidvodb_name",     0,    "for the supplied minidvodb_name: check if the addRun stage is complete (all in addRun.state = full) ", NULL);
     186    psMetadataAddStr(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-state",     0,    "limit by minidvodbRun state ", NULL);
     187    psMetadataAddU64(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-limit",        0, "limit to N items", 0);
     188    psMetadataAddBool(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-simple",        0, "simple output", false);
     189    psMetadataAddBool(checkminidvodbrunaddrunArgs, PS_LIST_TAIL, "-all_addrun_states",        0, "list all minidvodbRun.minidvodb_names, not just ones that have complete addRuns", false);
     190
     191    psMetadata *addminidvodbprocessedArgs = psMetadataAlloc();
     192    psMetadataAddU64(addminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id", 0,    "define minidvodb_id (required)", 0);
     193    psMetadataAddU64(addminidvodbprocessedArgs, PS_LIST_TAIL, "-merge_order",    0,    "define merge order", 0);
     194    psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_relphot",  0,    "define elapsed time for relphot (seconds)", NAN);
     195    psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_resort", 0,    "define elapsed time for resort (seconds)", NAN);
     196    psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_merge",    0,    "define elapsed time for DVO merge (seconds)", NAN);
     197    psMetadataAddTime(addminidvodbprocessedArgs, PS_LIST_TAIL, "-epoch",         0,    "time merge is finished", NULL);
     198    psMetadataAddStr(addminidvodbprocessedArgs, PS_LIST_TAIL, "-mergedvodb_path",0,    "path of merged dvodb", NULL);
     199    psMetadataAddStr(addminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_group",0,    "minidvodb_group", NULL);
     200    psMetadataAddS16(addminidvodbprocessedArgs, PS_LIST_TAIL, "-fault",          0,    "set fault code", 0);
     201
     202    psMetadata *listminidvodbprocessedArgs = psMetadataAlloc();
     203    psMetadataAddU64(listminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id",        0, "search by minidvodb_id", 0);
     204    psMetadataAddStr(listminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name", NULL);
     205    psMetadataAddStr(listminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_group",        0, "search by minidvodb.minidvodb_group", NULL);
     206    psMetadataAddU64(listminidvodbprocessedArgs, PS_LIST_TAIL, "-limit",        0, "limit to N items", 0);
     207    psMetadataAddBool(listminidvodbprocessedArgs, PS_LIST_TAIL, "-simple",        0, "simple output", false);
     208    psMetadataAddBool(listminidvodbprocessedArgs, PS_LIST_TAIL, "-faulted",        0, "limit to faulted state", false);
     209
     210    psMetadata *revertminidvodbprocessedArgs = psMetadataAlloc();
     211    psMetadataAddU64(revertminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id",        0, "search by minidvodb_id", 0);
     212    psMetadataAddStr(revertminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_group",        0, "search by addRun.minidvodb_group", NULL);
     213
     214    psMetadata *updateminidvodbprocessedArgs = psMetadataAlloc();
     215    psMetadataAddU64(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id",        0, "search by minidvodb_id", 0);
     216    psMetadataAddStr(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name", NULL);
     217    psMetadataAddS16(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_fault",  0,            "set fault code", 0);
     218    psMetadataAddU64(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_merge_order",    0,    "define merge order", 0);
     219    psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_relphot",  0,    "define elapsed time for relphot (seconds)", 0);
     220    psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_resort", 0,    "define elapsed time for resort (seconds)", 0);
     221    psMetadataAddF32(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_dtime_merge",    0,    "define elapsed time for DVO merge (seconds)", 0);
     222   
    144223    psMetadata *argSets = psMetadataAlloc();
    145224    psMetadata *modes = psMetadataAlloc();
     
    154233    PXOPT_ADD_MODE("-block",                "set a label block",                    ADDTOOL_MODE_BLOCK,         blockArgs);
    155234    PXOPT_ADD_MODE("-masked",               "show blocked labels",                  ADDTOOL_MODE_MASKED,        maskedArgs);
    156     PXOPT_ADD_MODE("-unblock",              "remove a label block",                 ADDTOOL_MODE_UNBLOCK,       unblockArgs);
     235    PXOPT_ADD_MODE("-addminidvodbrun",      "create minidvodbs ",                   ADDTOOL_MODE_ADDMINIDVODBRUN, addminidvodbrunArgs);
     236    PXOPT_ADD_MODE("-updateminidvodbrun",   "change minidvodb properties",          ADDTOOL_MODE_UPDATEMINIDVODBRUN,     updateminidvodbrunArgs);
     237    PXOPT_ADD_MODE("-listminidvodbrun",     "list minidvodbs",                      ADDTOOL_MODE_LISTMINIDVODBRUN,       listminidvodbrunArgs);
     238    PXOPT_ADD_MODE("-flipminidvodbrun",     "flip minidvodbs",                      ADDTOOL_MODE_FLIPMINIDVODBRUN,       flipminidvodbrunArgs);
     239    PXOPT_ADD_MODE("-checkminidvodbrunaddrun", "check minidvodbs to see if addRuns are completed", ADDTOOL_MODE_CHECKMINIDVODBRUNADDRUN,       checkminidvodbrunaddrunArgs);
     240    PXOPT_ADD_MODE("-addminidvodbprocessed","add a processed minidvodb",            ADDTOOL_MODE_ADDMINIDVODBPROCESSED,  addminidvodbprocessedArgs);
     241    PXOPT_ADD_MODE("-listminidvodbprocessed","list processed minidvodbs",           ADDTOOL_MODE_LISTMINIDVODBPROCESSED, listminidvodbprocessedArgs);
     242    PXOPT_ADD_MODE("-revertminidvodbprocessed","revert processed minidvobs",        ADDTOOL_MODE_REVERTMINIDVODBPROCESSED,     revertminidvodbprocessedArgs);
     243    PXOPT_ADD_MODE("-updateminidvodbprocessed","change processed minidvodb properties",ADDTOOL_MODE_UPDATEMINIDVODBPROCESSED,  updateminidvodbprocessedArgs);
     244 
     245 
     246
    157247
    158248    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
  • trunk/ippTools/src/flatcorr.c

    r26981 r28181  
    671671                row->dvodb,
    672672                NULL,       // note is not propagated
    673                 0)) {
     673                0,
     674                0,  //The minidvodb stuff is off
     675                NULL,
     676                NULL)) {
    674677            if (!psDBRollback(config->dbh)) {
    675678                psError(PS_ERR_UNKNOWN, false, "database error");
  • trunk/ippTools/src/pstamptool.h

    r28106 r28181  
    2222
    2323#include "pxtools.h"
     24
     25#define PSTAMP_FIRST_ERROR_CODE 0       // First error code value to consider
    2426
    2527typedef enum {
  • trunk/ippTools/src/pxadd.c

    r26981 r28181  
    130130                       char *dvodb,
    131131                       char *note,
    132                        bool image_only)
     132                       bool image_only,
     133                       bool minidvodb,
     134                       char *minidvodb_group,
     135                       char *minidvodb_name)
    133136{
    134137    PS_ASSERT_PTR_NON_NULL(config, false);
     
    158161                         note     ? note     : "NULL",
    159162                         image_only,
     163                         minidvodb,
     164                         minidvodb_group,
     165                         minidvodb_name,
    160166                         (long long) cam_id
    161167    )) {
    162         psError(PS_ERR_UNKNOWN, false, "database error");
     168      psError(PS_ERR_UNKNOWN, false, "database error %s", query);
    163169        return false;
    164170    }
  • trunk/ippTools/src/pxadd.h

    r25835 r28181  
    3838                       char *dvodb,
    3939                       char *note,
    40                        bool image_only);
     40                       bool image_only,
     41                       bool minidvodb,
     42                       char *minidvodb_group,
     43                       char *minidvodb_name);
    4144
    4245#endif // PXADD_H
Note: See TracChangeset for help on using the changeset viewer.