IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 24, 2006, 12:32:10 PM (20 years ago)
Author:
jhoblitt
Message:

change procMode() to mask out detStackedImfiles

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/dettool.c

    r7191 r7195  
    353353    // find all matching detProcessedImfiles
    354354    // where query should be pre-generated
    355     psArray *detProcessedImfiles =
     355    psArray *processedImfiles =
    356356        detProcessedImfileSelectRowObjects(config->dbh, config->where, 0);
    357     if (!detProcessedImfiles) {
     357    if (!processedImfiles) {
    358358        psError(PS_ERR_UNKNOWN, false, "no detProcessedImfile rows found");
    359359        return false;
    360360    }
    361361
     362    // remove detStackedImfiles
     363    // detStackedImfiles doesn't have an exp_id so we have to generate the
     364    // where query ourselves
     365    bool status = false;
     366    psString det_id = psMetadataLookupStr(&status, config->args, "-det_id");
     367    if (!status) {
     368        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -det_id");
     369        return false;
     370    }
     371    psString class_id = psMetadataLookupStr(&status, config->args, "-class_id");
     372    if (!status) {
     373        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -class_id");
     374        return false;
     375    }
     376    psMetadata *where = psMetadataAlloc();
     377    if (det_id) {
     378        if (!psMetadataAddS32(where, PS_LIST_TAIL, "det_id", 0, "==",
     379                (psS32)atoi(det_id))) {
     380            psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
     381            psFree(where);
     382            return false;
     383        }
     384    }
     385    if (class_id) {
     386        if (!psMetadataAddStr(where, PS_LIST_TAIL, "class_id", 0, "==", class_id)) {
     387            psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
     388            psFree(where);
     389            return false;
     390        }
     391    }
     392
     393    psArray *stackedImfiles = NULL;
     394    if (where->list->n) {
     395        stackedImfiles = detStackedImfileSelectRowObjects(
     396            config->dbh, where, 0);
     397    } else {
     398        stackedImfiles = detStackedImfileSelectRowObjects(
     399            config->dbh, NULL, 0);
     400    }
     401    psFree(where);
     402    // XXX trace the not found case
     403    if (stackedImfiles) {
     404        for (long i = 0; i < psArrayLength(processedImfiles); i++) {
     405            for (long j = 0; j < psArrayLength(stackedImfiles); j++) {
     406                if ((
     407                ((detProcessedImfileRow *)processedImfiles->data[i])->det_id
     408                ==
     409                ((detStackedImfileRow *)stackedImfiles->data[j])->det_id
     410                ) && (strcmp(
     411                ((detProcessedImfileRow *)processedImfiles->data[i])->class_id,
     412                ((detStackedImfileRow *)stackedImfiles->data[j])->class_id)
     413                == 0)) {
     414                    // remove the rawImfiles from the list
     415                    psArrayRemove(processedImfiles, processedImfiles->data[i]);
     416                    i--;
     417                    break;
     418                }
     419            }
     420        }
     421        psFree(stackedImfiles);
     422    }
     423
    362424    // print imfile list
    363     psMetadata *output = psMetadataAlloc();
    364     for (long i = 0; i < psArrayLength(detProcessedImfiles); i++) {
    365         psMetadata *md = detProcessedImfileMetadataFromObject(
    366                 detProcessedImfiles->data[i]);
    367         psMetadataAddMetadata(
    368             output, PS_LIST_TAIL, "detProcessedImfile", PS_META_DUPLICATE_OK,
    369             NULL, md
    370         );
    371     }
    372 
    373     psString str = psMetadataConfigFormat(output);
    374     psFree(output);
    375     fprintf(stdout, "%s\n", str);
    376     psFree(str);
     425    if (processedImfiles->n) {
     426        psMetadata *output = psMetadataAlloc();
     427        for (long i = 0; i < psArrayLength(processedImfiles); i++) {
     428            psMetadata *md = detProcessedImfileMetadataFromObject(
     429                    processedImfiles->data[i]);
     430            psMetadataAddMetadata(
     431                output, PS_LIST_TAIL, "detProcessedImfile", PS_META_DUPLICATE_OK,
     432                NULL, md
     433            );
     434        }
     435
     436        psString str = psMetadataConfigFormat(output);
     437        psFree(output);
     438        fprintf(stdout, "%s\n", str);
     439        psFree(str);
     440    }
     441
     442    psFree(processedImfiles);
    377443
    378444    return true;
Note: See TracChangeset for help on using the changeset viewer.