IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 8376


Ignore:
Timestamp:
Aug 15, 2006, 5:33:32 PM (20 years ago)
Author:
jhoblitt
Message:

stub out the new -addnormalized
rename detResidExpAnalysis -> detResidExp
rename detResidImfileAnalysis -> detResidImfile

File:
1 edited

Legend:

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

    r8370 r8376  
    20342034    PS_ASSERT_PTR_NON_NULL(config, false);
    20352035 
    2036     // det_id, class_id, uri, & recipe are required
    2037     bool status = false;
    2038     psString det_id = psMetadataLookupStr(&status, config->args, "-det_id");
    2039     if (!status) {
    2040         psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -det_id");
    2041         return false;
    2042     }
    2043     if (!det_id) {
    2044         psError(PS_ERR_UNKNOWN, true, "-det_id is required");
    2045         return false;
    2046     }
    2047     psString class_id = psMetadataLookupStr(&status, config->args, "-class_id");
    2048     if (!status) {
    2049         psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -class_id");
    2050         return false;
    2051     }
    2052     if (!class_id) {
    2053         psError(PS_ERR_UNKNOWN, true, "-class_id is required");
    2054         return false;
    2055     }
    2056     psString uri    = psMetadataLookupStr(&status, config->args, "-uri");
    2057     if (!status) {
    2058         psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -uri");
    2059         return false;
    2060     }
    2061     if (!uri) {
    2062         psError(PS_ERR_UNKNOWN, true, "-uri is required");
    2063         return false;
    2064     }
    2065     psString recipe = psMetadataLookupStr(&status, config->args, "-recip");
    2066     if (!status) {
    2067         psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -recip");
    2068         return false;
    2069     }
    2070     if (!recipe) {
    2071         psError(PS_ERR_UNKNOWN, true, "-recip is required");
    2072         return false;
    2073     }
    2074 
    2075     // iteration has a default value
    2076     psS32 iteration = psMetadataLookupS32(&status, config->args, "-iteration");
    2077     if (!status) {
    2078         psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -iteration");
    2079         return false;
    2080     }
    2081 
    2082     // correlate the class_id against the det_id's detStackedImfiles
    2083 
    2084     // we have to generate our own where claus as we want to search only by the
    2085     // det_id & class_id
    2086     psMetadata *where = psMetadataAlloc();
    2087     if (!psMetadataAddS32(where, PS_LIST_TAIL, "det_id", 0, "==",
    2088             (psS32)atoi(det_id))) {
    2089         psError(PS_ERR_UNKNOWN, false, "failed to add item exp_id");
    2090         psFree(where);
    2091         return false;
    2092     }
    2093     if (!psMetadataAddStr(where, PS_LIST_TAIL, "class_id", 0, "==", class_id)) {
    2094         psError(PS_ERR_UNKNOWN, false, "failed to add item class_id");
    2095         psFree(where);
    2096         return false;
    2097     }
    2098 
    2099     psArray *stackedImfiles = detStackedImfileSelectRowObjects(
    2100                                 config->dbh, where, 0);
    2101     psFree(where);
    2102 
    2103     bool valid_class_id = false;
    2104     if (stackedImfiles) {
    2105         for (long i = 0; i < psArrayLength(stackedImfiles); i++) {
    2106             if (strcmp(class_id,
    2107                 ((detStackedImfileRow *)stackedImfiles->data[i])->class_id)
    2108             == 0) {
    2109                 valid_class_id = true;
    2110                 break;
     2036    // make sure that there is a respondoing entry in detNormalizedStatImfile
     2037    // select * from detNormalizedStatImfile
     2038    // by det_id, iteration, class_id
     2039    // where det_id, iteration, class_id is not in detNormalizedImfile
     2040    psString query = psStringCopy(
     2041        "SELECT DISTINCT"
     2042        "   detNormalizedStatImfile.*"
     2043        " FROM detNormalizedStatImfile"
     2044        " LEFT JOIN detNormalizedStatImfile"
     2045        "   USING(det_id, iteration, class_id)"
     2046        " WHERE"
     2047        "  detNormalizedImfile.det_id IS NULL"
     2048        "  AND detNormalizedImfile.iteration IS NULL"
     2049        "  AND detNormalizedImfile.class_id IS NULL"
     2050        );
     2051
     2052# if 0
     2053    if (config->where) {
     2054        psString whereClaus = psDBGenerateWhereConditionSQL(config->where, "detStackedImfile");
     2055        psStringAppend(&query, " AND %s", whereClaus);
     2056        psFree(whereClaus);
     2057    }
     2058#endif
     2059
     2060    if (!p_psDBRunQuery(config->dbh, query)) {
     2061        psError(PS_ERR_UNKNOWN, false, "database error");
     2062        psFree(query);
     2063        return false;
     2064    }
     2065    psFree(query);
     2066
     2067    psArray *output = p_psDBFetchResult(config->dbh);
     2068    if (!output) {
     2069        // XXX check psError here
     2070        psError(PS_ERR_UNKNOWN, false, "no pending rawDetrendExp rows found");
     2071        return false;
     2072    }
     2073
     2074    // start a transaction so it's all rows or nothing
     2075    if (!psDBTransaction(config->dbh)) {
     2076        psError(PS_ERR_UNKNOWN, false, "database error");
     2077        psFree(output);
     2078        return false;
     2079    }
     2080
     2081#if 0
     2082    for (long i = 0; i < psArrayLength(output); i++) {
     2083        psMetadata *row = output->data[i];
     2084        // convert metadata into a detStackedImfile object
     2085        detStackedImfileRow *stackedImfile = detStackedImfileObjectFromMetadata(row);
     2086        // convert detStackedImfile object into a detNormalizedStat object
     2087        detNormalizedStatImfileRow *stat = detStackedToDetNormalizedStatImfile(config, stackedImfile);
     2088        psFree(stackedImfile);
     2089        if (!stat) {
     2090            if (!psDBRollback(config->dbh)) {
     2091                psError(PS_ERR_UNKNOWN, false, "database error");
    21112092            }
    2112         }
    2113         psFree(stackedImfiles);
    2114     }
    2115 
    2116     if (!valid_class_id) {
    2117         psError(PS_ERR_UNKNOWN, true,
    2118         "class_id can not be correlated with a detStackedImfile");
    2119         return false;
    2120     }
    2121 
    2122     // create a new detNormalizedImfile object
    2123     detNormalizedImfileRow *masterImfile = detNormalizedImfileRowAlloc(
    2124         (psS32)atol(det_id), iteration, class_id, uri, recipe
    2125     );   
    2126 
    2127     // insert the new row into the detProcessedImfile table
    2128     if (!detNormalizedImfileInsertObject(config->dbh, masterImfile)) {
     2093            psError(PS_ERR_UNKNOWN, false, "failed to convert detStackedImfile to detNormalizedStatImfile");
     2094            psFree(output);
     2095            return false;
     2096        }
     2097        // insert detNormlized Stat object into the database
     2098        if (!detNormalizedStatImfileInsertObject(config->dbh, stat)) {
     2099            if (!psDBRollback(config->dbh)) {
     2100                psError(PS_ERR_UNKNOWN, false, "database error");
     2101            }
     2102            psError(PS_ERR_UNKNOWN, false, "database error");
     2103            psFree(stat);
     2104            psFree(output);
     2105        }
     2106        psFree(stat);
     2107    }
     2108
     2109    psFree(output);
     2110
     2111    if (!psDBCommit(config->dbh)) {
    21292112        psError(PS_ERR_UNKNOWN, false, "database error");
    2130         psFree(masterImfile);
    2131         return false;
    2132     }
    2133 
    2134     psFree(masterImfile);
     2113        return false;
     2114    }
     2115
     2116    return true;
     2117#endif
    21352118
    21362119    return true;
     
    21682151
    21692152    // mask out normalized imfiles that have residuals registered for them
    2170     psArray *residImfiles = detResidImfileAnalysisSelectRowObjects(config->dbh,
     2153    psArray *residImfiles = detResidImfileSelectRowObjects(config->dbh,
    21712154            config->where, 0);
    21722155    if (residImfiles) {
     
    21762159                (((detNormalizedImfileRow *)normalizedImfiles->data[i])->det_id
    21772160                    ==
    2178                 ((detResidImfileAnalysisRow *)residImfiles->data[j])->det_id)
     2161                ((detResidImfileRow *)residImfiles->data[j])->det_id)
    21792162                &&
    21802163                (((detNormalizedImfileRow *)normalizedImfiles->data[i])->iteration
    21812164                    ==
    2182                 ((detResidImfileAnalysisRow *)residImfiles->data[j])->iteration)
     2165                ((detResidImfileRow *)residImfiles->data[j])->iteration)
    21832166                &&
    21842167                (strcmp(
    21852168                ((detNormalizedImfileRow *)normalizedImfiles->data[i])->class_id,
    2186                 ((detResidImfileAnalysisRow *)residImfiles->data[j])->class_id) == 0))
     2169                ((detResidImfileRow *)residImfiles->data[j])->class_id) == 0))
    21872170                 {
    21882171
     
    24272410
    24282411    // create a new detResidImfileRow and insert it
    2429     detResidImfileAnalysisRow *residImfile = detResidImfileAnalysisRowAlloc(
     2412    detResidImfileRow *residImfile = detResidImfileRowAlloc(
    24302413                (psS32)atol(det_id),
    24312414                iteration,
     
    24382421            );
    24392422
    2440     if (!detResidImfileAnalysisInsertObject(config->dbh, residImfile)) {
     2423    if (!detResidImfileInsertObject(config->dbh, residImfile)) {
    24412424        psError(PS_ERR_UNKNOWN, false, "database error");
    24422425        psFree(residImfile);
     
    24542437
    24552438    // no options are required... use the default where statement
    2456     psArray *residImfiles = detResidImfileAnalysisSelectRowObjects(config->dbh,
     2439    psArray *residImfiles = detResidImfileSelectRowObjects(config->dbh,
    24572440            config->where, 0);
    24582441    if (!residImfiles) {
    2459         psError(PS_ERR_UNKNOWN, false, "no detResidImfileAnalysis rows found");
     2442        psError(PS_ERR_UNKNOWN, false, "no detResidImfile rows found");
    24602443        return false;
    24612444    }
     
    24732456    // negative simple so the default is true
    24742457    if (residImfiles->n) {
    2475         if (!detResidImfileAnalysisPrintObjects(stdout, residImfiles, !simple)) {
     2458        if (!detResidImfilePrintObjects(stdout, residImfiles, !simple)) {
    24762459            psError(PS_ERR_UNKNOWN, false, "failed to print array");
    24772460            psFree(residImfiles);
     
    25692552    psFree(inputExp);
    25702553
    2571     // create a new detResidExpAnalysis row and insert it
    2572     detResidExpAnalysisRow *residExp = detResidExpAnalysisRowAlloc(
     2554    // create a new detResidExpg row and insert it
     2555    detResidExpRow *residExp = detResidExpRowAlloc(
    25732556                (psS32)atol(det_id),
    25742557                iteration,
     
    25792562            );
    25802563
    2581     if (!detResidExpAnalysisInsertObject(config->dbh, residExp)) {
     2564    if (!detResidExpInsertObject(config->dbh, residExp)) {
    25822565        psError(PS_ERR_UNKNOWN, false, "database error");
    25832566        psFree(residExp);
     
    25952578 
    25962579    // no options are required... use the default where statement
    2597     psArray *residExps = detResidExpAnalysisSelectRowObjects(config->dbh,
     2580    psArray *residExps = detResidExpSelectRowObjects(config->dbh,
    25982581            config->where, 0);
    25992582    if (!residExps) {
    2600         psError(PS_ERR_UNKNOWN, false, "no detResidExpAnalysis rows found");
     2583        psError(PS_ERR_UNKNOWN, false, "no detResidExpg rows found");
    26012584        return false;
    26022585    }
     
    26142597    // negative simple so the default is true
    26152598    if (residExps->n) {
    2616         if (!detResidExpAnalysisPrintObjects(stdout, residExps, !simple)) {
     2599        if (!detResidExpPrintObjects(stdout, residExps, !simple)) {
    26172600            psError(PS_ERR_UNKNOWN, false, "failed to print array");
    26182601            psFree(residExps);
Note: See TracChangeset for help on using the changeset viewer.