IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 35297


Ignore:
Timestamp:
Mar 11, 2013, 2:05:10 PM (13 years ago)
Author:
bills
Message:

implement various relGroup related functions

Location:
trunk/ippTools
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/share/releasetool_definerelgroup_select_exp_lap.sql

    r35213 r35297  
    11SELECT relExp.relexp_id
    2 FROM relGroup JOIN lapRun USING(lap_id)
     2FROM relGroup
     3    JOIN lapRun USING(lap_id)
     4    JOIN lapExp USING(lap_id)
    35    JOIN relExp using(rel_id, exp_id)
    46WHERE relExp.group_id = 0
  • trunk/ippTools/share/releasetool_pendingrelgroup.sql

    r35214 r35297  
    1 SELECT relGroup.*
     1SELECT
     2    relGroup.*,
     3    ippRelease.release_name
    24FROM relGroup
    35    JOIN ippRelease USING(rel_id)
  • trunk/ippTools/src/releasetool.c

    r35230 r35297  
    12701270        }
    12711271        if (!psArrayLength(exposures)) {
     1272            fprintf(stderr, "no exposures found for lap_id %" PRId64 "\n", lap_id);
     1273#ifdef notdef
     1274            continue;
    12721275            psFree(now);
    12731276            psFree(output);
     
    12781281            }
    12791282            return false;
     1283#endif
    12801284        }
    12811285
     
    13011305        psFree(exposures);
    13021306
    1303         // set state of relGroup to 'new'
     1307        // update the state of relGroup to 'new'
    13041308        if (!p_psDBRunQueryF(config->dbh, "UPDATE relGroup set state = 'new' WHERE group_id = %d", group_id)) {
    13051309            psError(PS_ERR_UNKNOWN, false, "database error");
     
    13251329static bool updaterelgroupMode(pxConfig *config)
    13261330{
    1327     psError(PS_ERR_UNKNOWN, true, "not yet implemented");
    1328     return false;
     1331    PS_ASSERT_PTR_NON_NULL(config, false);
     1332
     1333    PXOPT_LOOKUP_S32(group_id, config->args,      "-group_id", true, false);
     1334
     1335    PXOPT_LOOKUP_STR(state,    config->args,    "-set_state",  false, false);
     1336    PXOPT_LOOKUP_STR(exp_list_path, config->args, "-set_exp_list_path", false, false);
     1337    PXOPT_LOOKUP_STR(new_label, config->args,   "-set_label", false, false);
     1338    PXOPT_LOOKUP_S16(fault,    config->args,    "-set_fault",  false, false);
     1339    PXOPT_LOOKUP_BOOL(clearfault, config->args, "-clearfault",  false);
     1340
     1341    if (!state && !exp_list_path && !new_label && !fault && !clearfault) {
     1342        psError(PXTOOLS_ERR_CONFIG, true, "must set at least one column\n");
     1343        return false;
     1344    }
     1345
     1346    if (fault && clearfault) {
     1347        psError(PXTOOLS_ERR_CONFIG, true, "cannot set and clear fault at same time\n");
     1348        return false;
     1349    }
     1350
     1351    psMetadata *where = psMetadataAlloc();
     1352
     1353    PXOPT_COPY_S64(config->args, where, "-group_id", "relGroup.group_id", "==");
     1354    // XXX TODO if label is enabled (for changing label or state for a block) we should
     1355    // disallow setting some parameters such as exp_list_path
     1356    //    PXOPT_COPY_S64(config->args, where, "-label", "relGroup.label", "==");
     1357    // make sure that we have enough parameters to identify the relGroup to change
     1358    if (!psListLength(where->list)){
     1359        psError(PXTOOLS_ERR_CONFIG, false, "search parameters are required\n");
     1360        psFree(where);
     1361        return false;
     1362    }
     1363
     1364    psString sep = "";
     1365    psString comma = ", ";
     1366    psString query = psStringCopy("UPDATE relGroup SET");
     1367    if (state) {
     1368        psStringAppend(&query, "%s relGroup.state = '%s'", sep, state);
     1369        sep = comma;
     1370    }
     1371    if (exp_list_path) {
     1372        psStringAppend(&query, "%s relGroup.exp_list_path = '%s'", sep, exp_list_path);
     1373        sep = comma;
     1374    }
     1375    if (new_label) {
     1376        psStringAppend(&query, "%s relGroup.label = '%s'", sep, new_label);
     1377        sep = comma;
     1378    }
     1379    if (fault) {
     1380        psStringAppend(&query, "%s relGroup.fault = %d", sep, fault);
     1381        sep = comma;
     1382    }
     1383    if (clearfault) {
     1384        psStringAppend(&query, "%s relGroup.fault = 0", sep);
     1385        sep = comma;
     1386    }
     1387
     1388    psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
     1389    psStringAppend(&query, " WHERE %s", whereClause);
     1390    psFree(whereClause);
     1391
     1392    if (!p_psDBRunQuery(config->dbh, query)) {
     1393        psError(PS_ERR_UNKNOWN, false, "database error");
     1394        psFree(query);
     1395        return false;
     1396    }
     1397
     1398    psU64 affected = psDBAffectedRows(config->dbh);
     1399    psLogMsg("releasetool", PS_LOG_INFO, "Updated %" PRIu64 " ippReleases", affected);
     1400
     1401
     1402    psFree(query);
     1403
     1404    return true;
    13291405}
    13301406
  • trunk/ippTools/src/releasetoolConfig.c

    r35227 r35297  
    217217        // parameters of the relGroup
    218218    psMetadataAddStr(definerelgroupArgs, PS_LIST_TAIL, "-set_group_type", 0,  "define group_type (required)", NULL);
    219     psMetadataAddStr(definerelgroupArgs, PS_LIST_TAIL, "-set_group_name", 0,  "define group_name (required)", NULL);
     219    psMetadataAddStr(definerelgroupArgs, PS_LIST_TAIL, "-set_group_name", 0,  "define group_name", NULL);
    220220    psMetadataAddStr(definerelgroupArgs, PS_LIST_TAIL, "-set_label", 0, "define relgroup label (required)", NULL);
    221221    psMetadataAddStr(definerelgroupArgs,  PS_LIST_TAIL, "-set_state", 0,      "define state", NULL);
     
    240240    psMetadata *updaterelgroupArgs = psMetadataAlloc();
    241241
    242         // set the target release
    243242    psMetadataAddS32(updaterelgroupArgs,  PS_LIST_TAIL, "-group_id", 0,   "select by group ID (required)", 0);
    244243
Note: See TracChangeset for help on using the changeset viewer.