IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 13, 2006, 12:36:32 PM (20 years ago)
Author:
jhoblitt
Message:

fix lost -definebyquery options
first pass implementation of -definebydetrun input exp filtering

File:
1 edited

Legend:

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

    r9947 r9957  
    968968    }
    969969
     970    // create a metadata to restrict detInputExp's be in in the specified range
     971
     972    psMetadata *time_filter = psMetadataAlloc();
     973
     974    {
     975        psString timeStr = psMetadataLookupStr(&status, config->args, "-filter_exp_begin");
     976        if (!status) {
     977            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filter_exp_begin");
     978            return false;
     979        }
     980        // pass through NULL as this is an optional field
     981        if (timeStr) {
     982            psTime *time = psTimeFromISO(timeStr, PS_TIME_UTC);
     983            if (!psMetadataAddTime(time_filter, PS_LIST_TAIL, "dateobs", 0, "==", time)) {
     984                psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
     985                psFree(time);
     986                psFree(time_filter);
     987                return false;
     988            }
     989            psFree(time);
     990        }
     991    }
     992
     993    {
     994        psString timeStr = psMetadataLookupStr(&status, config->args, "-filter_exp_end");
     995        if (!status) {
     996            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -filter_exp_end");
     997            return false;
     998        }
     999        // pass through NULL as this is an optional field
     1000        if (timeStr) {
     1001            psTime *time = psTimeFromISO(timeStr, PS_TIME_UTC);
     1002            if (!psMetadataAddTime(time_filter, PS_LIST_TAIL, "dateobs", 0, "==", time)) {
     1003                psError(PS_ERR_UNKNOWN, false, "failed to add item dateobs");
     1004                psFree(time);
     1005                psFree(time_filter);
     1006                return false;
     1007            }
     1008            psFree(time);
     1009        }
     1010    }
     1011
     1012
    9701013    // start a transaction so we don't end up with orphaned det_ids
    9711014    if (!psDBTransaction(config->dbh)) {
    9721015        psError(PS_ERR_UNKNOWN, false, "database error");
     1016        psFree(time_filter);
    9731017        psFree(detRun);
    9741018        return false;
     
    9811025            psError(PS_ERR_UNKNOWN, false, "database error");
    9821026        }
     1027        psFree(time_filter);
    9831028        psFree(detRun);
    9841029        return false;
     
    9891034    long newDet_id = psDBLastInsertID(config->dbh);
    9901035
    991     char *query =
     1036    psString query = psStringCopy(
    9921037        "INSERT INTO detInputExp"
    9931038        "   SELECT"
     
    9971042        "       detResidExp.accept"
    9981043        "   FROM detResidExp"
    999         "   WHERE det_id = %d";
     1044        "   JOIN rawDetrendExp"
     1045        "       USING(exp_tag)"
     1046        "   WHERE det_id = %d"
     1047    );
     1048
     1049    if (time_filter->list->n) {
     1050        psString whereClause = psDBGenerateWhereConditionSQL(time_filter, "rawDetrendExp");
     1051        psStringAppend(&query, " AND %s", whereClause);
     1052        psFree(whereClause);
     1053    }
     1054    psFree(time_filter);
    10001055
    10011056    if (!p_psDBRunQuery(config->dbh, query, (psS32)newDet_id, (psS32)atoi(det_id))) {
    10021057        psError(PS_ERR_UNKNOWN, false, "database error");
    1003         return false;
    1004     }
     1058        psFree(query);
     1059        return false;
     1060    }
     1061    psFree(query);
    10051062
    10061063    // point of no return for det_id creation
Note: See TracChangeset for help on using the changeset viewer.