IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 9107


Ignore:
Timestamp:
Oct 2, 2006, 1:49:11 PM (20 years ago)
Author:
jhoblitt
Message:

VERSION 0.0.39

Location:
trunk
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/dbconfig/config.md

    r9049 r9107  
    22    pkg_name        STR     ippdb
    33    pkg_namespace   STR     ippdb
    4     pkg_version     STR     0.0.38
     4    pkg_version     STR     0.0.39
    55END
  • trunk/ippdb/Makefile.am

    r9026 r9107  
    3535    $(top_builddir)/docs/man/man3/detInputExpRow.3 \
    3636    $(top_builddir)/docs/man/man3/detProcessedImfileRow.3 \
     37    $(top_builddir)/docs/man/man3/detProcessedExpRow.3 \
    3738    $(top_builddir)/docs/man/man3/detStackedImfileRow.3 \
    3839    $(top_builddir)/docs/man/man3/detNormalizedStatImfileRow.3 \
     
    4546
    4647
    47 docs/man/man3/ippdb.3 docs/man/man3/weatherRow.3 docs/man/man3/skyp_transparencyRow.3 docs/man/man3/skyp_absorptionRow.3 docs/man/man3/skyp_emissionRow.3 docs/man/man3/dimmRow.3 docs/man/man3/skyp_irRow.3 docs/man/man3/domeRow.3 docs/man/man3/telescopeRow.3 docs/man/man3/summitExpRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawDetrendExpRow.3 docs/man/man3/rawScienceExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/p1PendingExpRow.3 docs/man/man3/p2PendingExpRow.3 docs/man/man3/p2PendingImfileRow.3 docs/man/man3/p2ProcessedExpRow.3 docs/man/man3/p2ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/detStackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detMasterFrameRow.3 docs/man/man3/detMasterImfileRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3:
     48docs/man/man3/ippdb.3 docs/man/man3/weatherRow.3 docs/man/man3/skyp_transparencyRow.3 docs/man/man3/skyp_absorptionRow.3 docs/man/man3/skyp_emissionRow.3 docs/man/man3/dimmRow.3 docs/man/man3/skyp_irRow.3 docs/man/man3/domeRow.3 docs/man/man3/telescopeRow.3 docs/man/man3/summitExpRow.3 docs/man/man3/pzPendingExpRow.3 docs/man/man3/pzPendingImfileRow.3 docs/man/man3/newExpRow.3 docs/man/man3/newImfileRow.3 docs/man/man3/rawDetrendExpRow.3 docs/man/man3/rawScienceExpRow.3 docs/man/man3/rawImfileRow.3 docs/man/man3/p1PendingExpRow.3 docs/man/man3/p2PendingExpRow.3 docs/man/man3/p2PendingImfileRow.3 docs/man/man3/p2ProcessedExpRow.3 docs/man/man3/p2ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/detRunRow.3 docs/man/man3/detInputExpRow.3 docs/man/man3/detProcessedImfileRow.3 docs/man/man3/detProcessedExpRow.3 docs/man/man3/detStackedImfileRow.3 docs/man/man3/detNormalizedStatImfileRow.3 docs/man/man3/detNormalizedImfileRow.3 docs/man/man3/detMasterFrameRow.3 docs/man/man3/detMasterImfileRow.3 docs/man/man3/detResidImfileRow.3 docs/man/man3/detResidExpRow.3 docs/man/man3/detRunSummaryRow.3:
    4849        $(DOXYGEN)
    4950
  • trunk/ippdb/configure.ac

    r9054 r9107  
    77AC_PREREQ(2.59)
    88
    9 AC_INIT([ippdb], [0.0.38], [pan-starrs.ifa.hawaii.edu])
     9AC_INIT([ippdb], [0.0.39], [pan-starrs.ifa.hawaii.edu])
    1010AC_CONFIG_SRCDIR([ippdb.pc.in])
    1111
  • trunk/ippdb/src/ippdb.c

    r9054 r9107  
    6363#define DETPROCESSEDIMFILE_TABLE_NAME "detProcessedImfile"
    6464#define DETPROCESSEDIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
     65#define DETPROCESSEDEXP_TABLE_NAME "detProcessedExp"
     66#define DETPROCESSEDEXP_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
    6567#define DETSTACKEDIMFILE_TABLE_NAME "detStackedImfile"
    6668#define DETSTACKEDIMFILE_INDEX_NAME IPPDB_DEFAULT_INDEX_NAME
     
    1430114303    return true;
    1430214304}
     14305static void detProcessedExpRowFree(detProcessedExpRow *object);
     14306
     14307detProcessedExpRow *detProcessedExpRowAlloc(psS32 det_id, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri)
     14308{
     14309    detProcessedExpRow *object;
     14310
     14311    object = psAlloc(sizeof(detProcessedExpRow));
     14312    psMemSetDeallocator(object, (psFreeFunc)detProcessedExpRowFree);
     14313
     14314    object->det_id = det_id;
     14315    object->exp_tag = psStringCopy(exp_tag);
     14316    object->recipe = psStringCopy(recipe);
     14317    object->bg = bg;
     14318    object->bg_stdev = bg_stdev;
     14319    object->bg_mean_stdev = bg_mean_stdev;
     14320    object->b1_uri = psStringCopy(b1_uri);
     14321    object->b2_uri = psStringCopy(b2_uri);
     14322
     14323    return object;
     14324}
     14325
     14326static void detProcessedExpRowFree(detProcessedExpRow *object)
     14327{
     14328    psFree(object->exp_tag);
     14329    psFree(object->recipe);
     14330    psFree(object->b1_uri);
     14331    psFree(object->b2_uri);
     14332}
     14333
     14334bool detProcessedExpCreateTable(psDB *dbh)
     14335{
     14336    psMetadata      *md;
     14337    bool            status;
     14338
     14339    md = psMetadataAlloc();
     14340    if (!psMetadataAdd(md, PS_LIST_TAIL, DETPROCESSEDEXP_INDEX_NAME, PS_DATA_S32, "AUTO_INCREMENT", 0.0)) {
     14341        psError(PS_ERR_UNKNOWN, false, "failed to add item %s", DETPROCESSEDEXP_INDEX_NAME);
     14342        psFree(md);
     14343        return false;
     14344    }
     14345    if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, "Primary Key", 0)) {
     14346        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     14347        psFree(md);
     14348        return false;
     14349    }
     14350    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, "Primary Key", "64")) {
     14351        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     14352        psFree(md);
     14353        return false;
     14354    }
     14355    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "64")) {
     14356        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     14357        psFree(md);
     14358        return false;
     14359    }
     14360    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 0.0)) {
     14361        psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
     14362        psFree(md);
     14363        return false;
     14364    }
     14365    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 0.0)) {
     14366        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
     14367        psFree(md);
     14368        return false;
     14369    }
     14370    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 0.0)) {
     14371        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
     14372        psFree(md);
     14373        return false;
     14374    }
     14375    if (!psMetadataAddStr(md, PS_LIST_TAIL, "b1_uri", 0, NULL, "64")) {
     14376        psError(PS_ERR_UNKNOWN, false, "failed to add item b1_uri");
     14377        psFree(md);
     14378        return false;
     14379    }
     14380    if (!psMetadataAddStr(md, PS_LIST_TAIL, "b2_uri", 0, NULL, "64")) {
     14381        psError(PS_ERR_UNKNOWN, false, "failed to add item b2_uri");
     14382        psFree(md);
     14383        return false;
     14384    }
     14385
     14386    status = psDBCreateTable(dbh, DETPROCESSEDEXP_TABLE_NAME, md);
     14387
     14388    psFree(md);
     14389
     14390    return status;
     14391}
     14392
     14393bool detProcessedExpDropTable(psDB *dbh)
     14394{
     14395    return psDBDropTable(dbh, DETPROCESSEDEXP_TABLE_NAME);
     14396}
     14397
     14398bool detProcessedExpInsert(psDB * dbh, psS32 det_id, const char *exp_tag, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, const char *b1_uri, const char *b2_uri)
     14399{
     14400    psMetadata      *md;
     14401    bool            status;
     14402
     14403    md = psMetadataAlloc();
     14404    if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, NULL, det_id)) {
     14405        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     14406        psFree(md);
     14407        return false;
     14408    }
     14409    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, exp_tag)) {
     14410        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     14411        psFree(md);
     14412        return false;
     14413    }
     14414    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, recipe)) {
     14415        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     14416        psFree(md);
     14417        return false;
     14418    }
     14419    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, bg)) {
     14420        psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
     14421        psFree(md);
     14422        return false;
     14423    }
     14424    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, bg_stdev)) {
     14425        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
     14426        psFree(md);
     14427        return false;
     14428    }
     14429    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, bg_mean_stdev)) {
     14430        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
     14431        psFree(md);
     14432        return false;
     14433    }
     14434    if (!psMetadataAddStr(md, PS_LIST_TAIL, "b1_uri", 0, NULL, b1_uri)) {
     14435        psError(PS_ERR_UNKNOWN, false, "failed to add item b1_uri");
     14436        psFree(md);
     14437        return false;
     14438    }
     14439    if (!psMetadataAddStr(md, PS_LIST_TAIL, "b2_uri", 0, NULL, b2_uri)) {
     14440        psError(PS_ERR_UNKNOWN, false, "failed to add item b2_uri");
     14441        psFree(md);
     14442        return false;
     14443    }
     14444
     14445    status = psDBInsertOneRow(dbh, DETPROCESSEDEXP_TABLE_NAME, md);
     14446    psFree(md);
     14447
     14448    return status;
     14449}
     14450
     14451long long detProcessedExpDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     14452{
     14453    long long       deleted = 0;
     14454
     14455    long long count = psDBDeleteRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, limit);
     14456    if (count < 0) {
     14457        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detProcessedExp");
     14458        return count;
     14459
     14460        deleted += count;
     14461    }
     14462
     14463    return deleted;
     14464}
     14465bool detProcessedExpPop(psDB *dbh, psS32 *det_id, char **exp_tag, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, char **b1_uri, char **b2_uri)
     14466{
     14467    psArray         *rowSet;
     14468    psMetadata      *row;
     14469    psMetadata      *popped;
     14470    long            deleted;
     14471    bool            status;
     14472    int             rowID;
     14473
     14474    rowSet = psDBSelectRows(dbh, DETPROCESSEDEXP_TABLE_NAME, NULL, 1);
     14475    if (!rowSet) {
     14476        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETPROCESSEDEXP_INDEX_NAME);
     14477        psFree(rowSet);
     14478        return NULL;
     14479    }
     14480
     14481    row = psArrayGet(rowSet, 0);
     14482    psMemIncrRefCounter(row);
     14483    if (!row) {
     14484        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
     14485        return NULL;
     14486    }
     14487    psFree(rowSet);
     14488
     14489    rowID = psMetadataLookupS32(&status, row, DETPROCESSEDEXP_INDEX_NAME);
     14490    if (!status) {
     14491        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item %s", DETPROCESSEDEXP_INDEX_NAME);
     14492        psFree(row);
     14493        return NULL;
     14494    }
     14495
     14496    popped = psMetadataAlloc();
     14497    psMetadataAddS32(popped, PS_LIST_TAIL, DETPROCESSEDEXP_INDEX_NAME, 0, NULL, rowID);
     14498
     14499    deleted = psDBDeleteRows(dbh, DETPROCESSEDEXP_TABLE_NAME, popped, 0);
     14500    if (deleted != 1) {
     14501        psError(PS_ERR_UNKNOWN, false, "database failed to delete row");
     14502        psFree(popped);
     14503        psFree(row);
     14504        return NULL;
     14505    }
     14506
     14507    psFree(popped);
     14508
     14509    *det_id = psMetadataLookupS32(&status, row, "det_id");
     14510    if (!status) {
     14511        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
     14512        psFree(row);
     14513        return false;
     14514    }
     14515    *exp_tag = psMetadataLookupPtr(&status, row, "exp_tag");
     14516    if (!status) {
     14517        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
     14518        psFree(row);
     14519        return false;
     14520    }
     14521    *recipe = psMetadataLookupPtr(&status, row, "recipe");
     14522    if (!status) {
     14523        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
     14524        psFree(row);
     14525        return false;
     14526    }
     14527    *bg = psMetadataLookupF64(&status, row, "bg");
     14528    if (!status) {
     14529        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
     14530        psFree(row);
     14531        return false;
     14532    }
     14533    *bg_stdev = psMetadataLookupF64(&status, row, "bg_stdev");
     14534    if (!status) {
     14535        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
     14536        psFree(row);
     14537        return false;
     14538    }
     14539    *bg_mean_stdev = psMetadataLookupF64(&status, row, "bg_mean_stdev");
     14540    if (!status) {
     14541        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
     14542        psFree(row);
     14543        return false;
     14544    }
     14545    *b1_uri = psMetadataLookupPtr(&status, row, "b1_uri");
     14546    if (!status) {
     14547        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri");
     14548        psFree(row);
     14549        return false;
     14550    }
     14551    *b2_uri = psMetadataLookupPtr(&status, row, "b2_uri");
     14552    if (!status) {
     14553        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri");
     14554        psFree(row);
     14555        return false;
     14556    }
     14557
     14558    psFree(row);
     14559
     14560    return true;
     14561}
     14562
     14563bool detProcessedExpInsertObject(psDB *dbh, detProcessedExpRow *object)
     14564{
     14565    return detProcessedExpInsert(dbh, object->det_id, object->exp_tag, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->b1_uri, object->b2_uri);
     14566}
     14567
     14568bool detProcessedExpInsertObjects(psDB *dbh, psArray *objects)
     14569{
     14570    for (long i = 0; i < psArrayLength(objects); i++) {
     14571        if (!detProcessedExpInsertObject(dbh, objects->data[i])) {
     14572            return false;
     14573        }
     14574    }
     14575
     14576    return true;
     14577}
     14578
     14579detProcessedExpRow *detProcessedExpPopObject(psDB *dbh)
     14580{
     14581    psS32           det_id;
     14582    char            exp_tag[256];
     14583    char            recipe[256];
     14584    psF64           bg;
     14585    psF64           bg_stdev;
     14586    psF64           bg_mean_stdev;
     14587    char            b1_uri[256];
     14588    char            b2_uri[256];
     14589
     14590    if (!detProcessedExpPop(dbh, &det_id, (char **)&exp_tag, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri)) {
     14591        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
     14592        return NULL;
     14593    }
     14594
     14595    return detProcessedExpRowAlloc(det_id, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
     14596}
     14597
     14598bool detProcessedExpInsertFits(psDB *dbh, const psFits *fits)
     14599{
     14600    psArray         *rowSet;
     14601
     14602    // move to (the first?) extension named  DETPROCESSEDEXP_TABLE_NAME
     14603    if (!psFitsMoveExtName(fits, DETPROCESSEDEXP_TABLE_NAME)) {
     14604        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", DETPROCESSEDEXP_TABLE_NAME);
     14605        return false;
     14606    }
     14607
     14608    // check HDU type
     14609    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     14610        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     14611        return false;
     14612    }
     14613
     14614    // read fits table
     14615    rowSet = psFitsReadTable(fits);
     14616    if (!rowSet) {
     14617        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     14618        psFree(rowSet);
     14619        return false;
     14620    }
     14621
     14622    if (!psDBInsertRows(dbh, DETPROCESSEDEXP_TABLE_NAME, rowSet)) {
     14623        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     14624        psFree(rowSet);
     14625        return false;
     14626    }
     14627
     14628    psFree(rowSet);
     14629
     14630    return true;
     14631}
     14632
     14633bool detProcessedExpPopFits(psDB *dbh, psFits *fits, unsigned long long limit)
     14634{
     14635    char            query[MAX_STRING_LENGTH];
     14636
     14637    if (!detProcessedExpSelectRowsFits(dbh, fits, NULL, limit)) {
     14638        psError(PS_ERR_UNKNOWN, true, "database error or table is empty");
     14639        return false;
     14640    }
     14641
     14642    // remove limit rows from the end of the database
     14643    if (snprintf(query, MAX_STRING_LENGTH,
     14644                "DELETE FROM %s ORDER BY %s DESC LIMIT %lld",
     14645                DETPROCESSEDEXP_TABLE_NAME, DETPROCESSEDEXP_INDEX_NAME, limit) < 0) {
     14646        psError(PS_ERR_UNKNOWN, true, "query value attempted to exceed %d bytes", MAX_STRING_LENGTH);
     14647        return false;
     14648    }
     14649           
     14650    if (!p_psDBRunQuery(dbh, query)) {
     14651        psError(PS_ERR_UNKNOWN, false, "database query failed");
     14652        return false;
     14653    }
     14654
     14655    return true;
     14656}
     14657
     14658bool detProcessedExpSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     14659{
     14660    psArray         *rowSet;
     14661    psU64           i;
     14662
     14663    rowSet = psDBSelectRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, limit);
     14664    if (!rowSet) {
     14665        return false;
     14666    }
     14667
     14668    // strip index column
     14669    for (i = 0; i < rowSet->n; i++) {
     14670        if (!psMetadataRemove((psMetadata *)rowSet->data[i], 0, DETPROCESSEDEXP_INDEX_NAME)) {
     14671            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETPROCESSEDEXP_INDEX_NAME);
     14672            psFree(rowSet);
     14673            return false;
     14674        }
     14675    }
     14676
     14677    // output to fits
     14678    if (!psFitsWriteTable(fits, NULL, rowSet, DETPROCESSEDEXP_TABLE_NAME)) {
     14679        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     14680        psFree(rowSet);
     14681        return false;
     14682    }
     14683
     14684    psFree(rowSet);
     14685
     14686    return true;
     14687}
     14688
     14689psMetadata *detProcessedExpMetadataFromObject(const detProcessedExpRow *object)
     14690{
     14691    psMetadata      *md;
     14692
     14693    md = psMetadataAlloc();
     14694    if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, NULL, object->det_id)) {
     14695        psError(PS_ERR_UNKNOWN, false, "failed to add item det_id");
     14696        psFree(md);
     14697        return NULL;
     14698    }
     14699    if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, object->exp_tag)) {
     14700        psError(PS_ERR_UNKNOWN, false, "failed to add item exp_tag");
     14701        psFree(md);
     14702        return NULL;
     14703    }
     14704    if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, object->recipe)) {
     14705        psError(PS_ERR_UNKNOWN, false, "failed to add item recipe");
     14706        psFree(md);
     14707        return NULL;
     14708    }
     14709    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, object->bg)) {
     14710        psError(PS_ERR_UNKNOWN, false, "failed to add item bg");
     14711        psFree(md);
     14712        return NULL;
     14713    }
     14714    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, object->bg_stdev)) {
     14715        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_stdev");
     14716        psFree(md);
     14717        return NULL;
     14718    }
     14719    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, object->bg_mean_stdev)) {
     14720        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
     14721        psFree(md);
     14722        return NULL;
     14723    }
     14724    if (!psMetadataAddStr(md, PS_LIST_TAIL, "b1_uri", 0, NULL, object->b1_uri)) {
     14725        psError(PS_ERR_UNKNOWN, false, "failed to add item b1_uri");
     14726        psFree(md);
     14727        return NULL;
     14728    }
     14729    if (!psMetadataAddStr(md, PS_LIST_TAIL, "b2_uri", 0, NULL, object->b2_uri)) {
     14730        psError(PS_ERR_UNKNOWN, false, "failed to add item b2_uri");
     14731        psFree(md);
     14732        return NULL;
     14733    }
     14734
     14735    return md;
     14736}
     14737
     14738detProcessedExpRow *detProcessedExpObjectFromMetadata(psMetadata *md)
     14739{
     14740    bool            status;
     14741    psS32           det_id;
     14742    char            *exp_tag;
     14743    char            *recipe;
     14744    psF64           bg;
     14745    psF64           bg_stdev;
     14746    psF64           bg_mean_stdev;
     14747    char            *b1_uri;
     14748    char            *b2_uri;
     14749
     14750    det_id = psMetadataLookupS32(&status, md, "det_id");
     14751    if (!status) {
     14752        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item det_id");
     14753        return false;
     14754    }
     14755    exp_tag = psMetadataLookupPtr(&status, md, "exp_tag");
     14756    if (!status) {
     14757        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item exp_tag");
     14758        return false;
     14759    }
     14760    recipe = psMetadataLookupPtr(&status, md, "recipe");
     14761    if (!status) {
     14762        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item recipe");
     14763        return false;
     14764    }
     14765    bg = psMetadataLookupF64(&status, md, "bg");
     14766    if (!status) {
     14767        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg");
     14768        return false;
     14769    }
     14770    bg_stdev = psMetadataLookupF64(&status, md, "bg_stdev");
     14771    if (!status) {
     14772        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_stdev");
     14773        return false;
     14774    }
     14775    bg_mean_stdev = psMetadataLookupF64(&status, md, "bg_mean_stdev");
     14776    if (!status) {
     14777        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item bg_mean_stdev");
     14778        return false;
     14779    }
     14780    b1_uri = psMetadataLookupPtr(&status, md, "b1_uri");
     14781    if (!status) {
     14782        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b1_uri");
     14783        return false;
     14784    }
     14785    b2_uri = psMetadataLookupPtr(&status, md, "b2_uri");
     14786    if (!status) {
     14787        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item b2_uri");
     14788        return false;
     14789    }
     14790
     14791    return detProcessedExpRowAlloc(det_id, exp_tag, recipe, bg, bg_stdev, bg_mean_stdev, b1_uri, b2_uri);
     14792}
     14793psArray *detProcessedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     14794{
     14795    psArray         *rowSet;
     14796    psArray         *returnSet;
     14797    psU64           i;
     14798
     14799    rowSet = psDBSelectRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, limit);
     14800    if (!rowSet) {
     14801        return NULL;
     14802    }
     14803
     14804    // strip index column
     14805    for (i = 0; i < rowSet->n; i++) {
     14806        if (!psMetadataRemove((psMetadata *)(rowSet->data[i]), 0, DETPROCESSEDEXP_INDEX_NAME)) {
     14807            psError(PS_ERR_UNKNOWN, true, "failed to remove item %s", DETPROCESSEDEXP_INDEX_NAME);
     14808            psFree(rowSet);
     14809            return false;
     14810        }
     14811    }
     14812
     14813    // convert psMetadata rows to row objects
     14814
     14815    returnSet = psArrayAlloc(rowSet->n);
     14816    returnSet->n = 0;
     14817
     14818    for (i = 0; i < rowSet->n; i++) {
     14819        detProcessedExpRow *object = detProcessedExpObjectFromMetadata(rowSet->data[i]);
     14820        psArrayAdd(returnSet, 0, object);
     14821        psFree(object);
     14822    }
     14823
     14824    psFree(rowSet);
     14825
     14826    return returnSet;
     14827}
     14828bool detProcessedExpDeleteObject(psDB *dbh, const detProcessedExpRow *object)
     14829{
     14830    psMetadata *where = detProcessedExpMetadataFromObject(object);
     14831    long long count = psDBDeleteRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, 0);
     14832    psFree(where)
     14833    if (count < 0) {
     14834        psError(PS_ERR_UNKNOWN, true, "failed to delete row from detProcessedExp");
     14835        return false;
     14836    }
     14837    if (count > 1) {
     14838        // XXX should this be a psAbort() instead?  It is possible that
     14839        // having an object match multiple rows was by design.
     14840        psError(PS_ERR_UNKNOWN, true, "detProcessedExpRow object matched more then one row.  Check your database schema");
     14841        return false;
     14842    }
     14843
     14844    return true;
     14845}
     14846long long detProcessedExpDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     14847{
     14848    long long       deleted = 0;
     14849
     14850    for (long long i = 0; i < objects->n; i++) {
     14851        detProcessedExpRow *object = objects->data[i];
     14852        psMetadata *where = detProcessedExpMetadataFromObject(object);
     14853        long long count = psDBDeleteRows(dbh, DETPROCESSEDEXP_TABLE_NAME, where, limit);
     14854        psFree(where)
     14855        if (count < 0) {
     14856            psError(PS_ERR_UNKNOWN, true, "failed to delete row from detProcessedExp");
     14857            return count;
     14858        }
     14859
     14860        deleted += count;
     14861    }
     14862
     14863    return deleted;
     14864}
     14865bool detProcessedExpPrintObjects(FILE *stream, psArray *objects, bool mdcf)
     14866{
     14867    PS_ASSERT_PTR_NON_NULL(objects, false);
     14868
     14869    psMetadata *output = psMetadataAlloc();
     14870    for (long i = 0; i < psArrayLength(objects); i++) {
     14871        psMetadata *md = detProcessedExpMetadataFromObject(objects->data[i]);
     14872        if (!psMetadataAddMetadata(
     14873            output,
     14874            PS_LIST_TAIL,
     14875            DETPROCESSEDEXP_TABLE_NAME,
     14876            PS_META_DUPLICATE_OK,
     14877            NULL,
     14878            md
     14879        )) {
     14880            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     14881            psFree(md);
     14882            psFree(output);
     14883            return false;
     14884        }
     14885        psFree(md);
     14886    }
     14887
     14888    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     14889        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     14890        psFree(output);
     14891    }
     14892    psFree(output);
     14893
     14894    return true;
     14895}
    1430314896static void detStackedImfileRowFree(detStackedImfileRow *object);
    1430414897
    14305 detStackedImfileRow *detStackedImfileRowAlloc(psS32 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, bool normalize)
     14898detStackedImfileRow *detStackedImfileRowAlloc(psS32 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev)
    1430614899{
    1430714900    detStackedImfileRow *object;
     
    1431814911    object->bg_stdev = bg_stdev;
    1431914912    object->bg_mean_stdev = bg_mean_stdev;
    14320     object->normalize = normalize;
    1432114913
    1432214914    return object;
     
    1438114973        return false;
    1438214974    }
    14383     if (!psMetadataAdd(md, PS_LIST_TAIL, "normalize", PS_DATA_BOOL, NULL, false)) {
    14384         psError(PS_ERR_UNKNOWN, false, "failed to add item normalize");
    14385         psFree(md);
    14386         return false;
    14387     }
    1438814975
    1438914976    status = psDBCreateTable(dbh, DETSTACKEDIMFILE_TABLE_NAME, md);
     
    1439914986}
    1440014987
    14401 bool detStackedImfileInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev, bool normalize)
     14988bool detStackedImfileInsert(psDB * dbh, psS32 det_id, psS32 iteration, const char *class_id, const char *uri, const char *recipe, psF64 bg, psF64 bg_stdev, psF64 bg_mean_stdev)
    1440214989{
    1440314990    psMetadata      *md;
     
    1444215029    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, bg_mean_stdev)) {
    1444315030        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
    14444         psFree(md);
    14445         return false;
    14446     }
    14447     if (!psMetadataAdd(md, PS_LIST_TAIL, "normalize", PS_DATA_BOOL, NULL, normalize)) {
    14448         psError(PS_ERR_UNKNOWN, false, "failed to add item normalize");
    1444915031        psFree(md);
    1445015032        return false;
     
    1447115053    return deleted;
    1447215054}
    14473 bool detStackedImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev, bool *normalize)
     15055bool detStackedImfilePop(psDB *dbh, psS32 *det_id, psS32 *iteration, char **class_id, char **uri, char **recipe, psF64 *bg, psF64 *bg_stdev, psF64 *bg_mean_stdev)
    1447415056{
    1447515057    psArray         *rowSet;
     
    1456315145        return false;
    1456415146    }
    14565     *normalize = psMetadataLookupBool(&status, row, "normalize");
    14566     if (!status) {
    14567         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item normalize");
    14568         psFree(row);
    14569         return false;
    14570     }
    1457115147
    1457215148    psFree(row);
     
    1457715153bool detStackedImfileInsertObject(psDB *dbh, detStackedImfileRow *object)
    1457815154{
    14579     return detStackedImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev, object->normalize);
     15155    return detStackedImfileInsert(dbh, object->det_id, object->iteration, object->class_id, object->uri, object->recipe, object->bg, object->bg_stdev, object->bg_mean_stdev);
    1458015156}
    1458115157
     
    1460115177    psF64           bg_stdev;
    1460215178    psF64           bg_mean_stdev;
    14603     bool            normalize;
    14604 
    14605     if (!detStackedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, &normalize)) {
     15179
     15180    if (!detStackedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev)) {
    1460615181        psError(PS_ERR_UNKNOWN, false, "failed to pop a database row");
    1460715182        return NULL;
    1460815183    }
    1460915184
    14610     return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, normalize);
     15185    return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev);
    1461115186}
    1461215187
     
    1474415319    if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, object->bg_mean_stdev)) {
    1474515320        psError(PS_ERR_UNKNOWN, false, "failed to add item bg_mean_stdev");
    14746         psFree(md);
    14747         return NULL;
    14748     }
    14749     if (!psMetadataAdd(md, PS_LIST_TAIL, "normalize", PS_DATA_BOOL, NULL, object->normalize)) {
    14750         psError(PS_ERR_UNKNOWN, false, "failed to add item normalize");
    1475115321        psFree(md);
    1475215322        return NULL;
     
    1476715337    psF64           bg_stdev;
    1476815338    psF64           bg_mean_stdev;
    14769     bool            normalize;
    1477015339
    1477115340    det_id = psMetadataLookupS32(&status, md, "det_id");
     
    1480915378        return false;
    1481015379    }
    14811     normalize = psMetadataLookupBool(&status, md, "normalize");
    14812     if (!status) {
    14813         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item normalize");
    14814         return false;
    14815     }
    14816 
    14817     return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev, normalize);
     15380
     15381    return detStackedImfileRowAlloc(det_id, iteration, class_id, uri, recipe, bg, bg_stdev, bg_mean_stdev);
    1481815382}
    1481915383psArray *detStackedImfileSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
  • trunk/ippdb/src/ippdb.h

    r9054 r9107  
    60846084    bool            mdcf                ///< format as mdconfig or simple
    60856085);
     6086/** detProcessedExpRow data structure
     6087 *
     6088 * Structure for representing a single row of detProcessedExp table data.
     6089 */
     6090
     6091typedef struct {
     6092    psS32           det_id;
     6093    char            *exp_tag;
     6094    char            *recipe;
     6095    psF64           bg;
     6096    psF64           bg_stdev;
     6097    psF64           bg_mean_stdev;
     6098    char            *b1_uri;
     6099    char            *b2_uri;
     6100} detProcessedExpRow;
     6101
     6102/** Creates a new detProcessedExpRow object
     6103 *
     6104 *  @return A new detProcessedExpRow object or NULL on failure.
     6105 */
     6106
     6107detProcessedExpRow *detProcessedExpRowAlloc(
     6108    psS32           det_id,
     6109    const char      *exp_tag,
     6110    const char      *recipe,
     6111    psF64           bg,
     6112    psF64           bg_stdev,
     6113    psF64           bg_mean_stdev,
     6114    const char      *b1_uri,
     6115    const char      *b2_uri
     6116);
     6117
     6118/** Creates a new detProcessedExp table
     6119 *
     6120 * @return true on success
     6121 */
     6122
     6123bool detProcessedExpCreateTable(
     6124    psDB            *dbh                ///< Database handle
     6125);
     6126
     6127/** Deletes a detProcessedExp table
     6128 *
     6129 * @return true on success
     6130 */
     6131
     6132bool detProcessedExpDropTable(
     6133    psDB            *dbh                ///< Database handle
     6134);
     6135
     6136/** Insert a single row into a table
     6137 *
     6138 * This function constructs and inserts a single row based on it's parameters.
     6139 *
     6140 * @return true on success
     6141 */
     6142
     6143bool detProcessedExpInsert(
     6144    psDB            *dbh,               ///< Database handle
     6145    psS32           det_id,
     6146    const char      *exp_tag,
     6147    const char      *recipe,
     6148    psF64           bg,
     6149    psF64           bg_stdev,
     6150    psF64           bg_mean_stdev,
     6151    const char      *b1_uri,
     6152    const char      *b2_uri
     6153);
     6154
     6155/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     6156 *
     6157 * @return A The number of rows removed or a negative value on error
     6158 */
     6159
     6160long long detProcessedExpDelete(
     6161    psDB            *dbh,               ///< Database handle
     6162    const psMetadata *where,            ///< Row match criteria
     6163    unsigned long long limit            ///< Maximum number of elements to delete
     6164);
     6165
     6166/** Removes the last row from the database and returns it
     6167 *
     6168 * @return true on success
     6169 */
     6170
     6171bool detProcessedExpPop(
     6172    psDB            *dbh,               ///< Database handle
     6173    psS32           *det_id,
     6174    char            **exp_tag,
     6175    char            **recipe,
     6176    psF64           *bg,
     6177    psF64           *bg_stdev,
     6178    psF64           *bg_mean_stdev,
     6179    char            **b1_uri,
     6180    char            **b2_uri
     6181);
     6182
     6183/** Insert a single detProcessedExpRow object into a table
     6184 *
     6185 * This function constructs and inserts a single row based on it's parameters.
     6186 *
     6187 * @return true on success
     6188 */
     6189
     6190bool detProcessedExpInsertObject(
     6191    psDB            *dbh,               ///< Database handle
     6192    detProcessedExpRow *object             ///< detProcessedExpRow object
     6193);
     6194
     6195/** Insert an array of detProcessedExpRow object into a table
     6196 *
     6197 * This function constructs and inserts multiple rows based on it's parameters.
     6198 *
     6199 * @return true on success
     6200 */
     6201
     6202bool detProcessedExpInsertObjects(
     6203    psDB            *dbh,               ///< Database handle
     6204    psArray         *objects            ///< array of detProcessedExpRow objects
     6205);
     6206
     6207/** Removes the last row from the database and returns it
     6208 *
     6209 * @return A new detProcessedExpRow on success or NULL on failure.
     6210 */
     6211
     6212detProcessedExpRow *detProcessedExpPopObject(
     6213    psDB            *dbh                ///< Database handle
     6214);
     6215
     6216/** Insert data from a binary FITS table detProcessedExpRow into the database
     6217 *
     6218 * This function expects a psFits object with a FITS table as the first
     6219 * extension.  The table must have at least one row of data in it, that is of
     6220 * the appropriate format (number of columns and their type).  All other
     6221 * extensions are ignored.
     6222 *
     6223 * @return true on success
     6224 */
     6225
     6226bool detProcessedExpInsertFits(
     6227    psDB            *dbh,               ///< Database handle
     6228    const psFits    *fits               ///< psFits object
     6229);
     6230
     6231/** Removes the last limit row from the database and returns them in a binary FITS table.
     6232 *
     6233 * This function assumes an empty psFits object and will create a FITS table as
     6234 * the first extension.
     6235 *
     6236 * @return true on success
     6237 */
     6238
     6239bool detProcessedExpPopFits(
     6240    psDB            *dbh,               ///< Database handle
     6241    psFits          *fits,              ///< psFits object
     6242    unsigned long long limit            ///< Maximum number of elements to return
     6243);
     6244
     6245/** Selects up to limit from the database and returns them in a binary FITS table
     6246 *
     6247 * This function assumes an empty psFits object and will create a FITS table
     6248 * as the first extension.
     6249 *
     6250 *  See psDBSelectRows() for documentation on the format of where.
     6251 *
     6252 * @return true on success
     6253 */
     6254
     6255bool detProcessedExpSelectRowsFits(
     6256    psDB            *dbh,               ///< Database handle
     6257    psFits          *fits,              ///< psFits object
     6258    const psMetadata *where,            ///< Row match criteria
     6259    unsigned long long limit            ///< Maximum number of elements to return
     6260);
     6261
     6262/** Convert a detProcessedExpRow into an equivalent psMetadata
     6263 *
     6264 * @return A psMetadata pointer or NULL on error
     6265 */
     6266
     6267psMetadata *detProcessedExpMetadataFromObject(
     6268    const detProcessedExpRow *object             ///< fooRow to convert into a psMetadata
     6269);
     6270
     6271/** Convert a psMetadata into an equivalent fooRow
     6272 *
     6273 * @return A detProcessedExpRow pointer or NULL on error
     6274 */
     6275
     6276detProcessedExpRow *detProcessedExpObjectFromMetadata(
     6277    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     6278);
     6279/** Selects up to limit rows from the database and returns as detProcessedExpRow objects in a psArray
     6280 *
     6281 *  See psDBSelectRows() for documentation on the format of where.
     6282 *
     6283 * @return A psArray pointer or NULL on error
     6284 */
     6285
     6286psArray *detProcessedExpSelectRowObjects(
     6287    psDB            *dbh,               ///< Database handle
     6288    const psMetadata *where,            ///< Row match criteria
     6289    unsigned long long limit            ///< Maximum number of elements to return
     6290);
     6291/** Deletes a row from the database coresponding to an detProcessedExp
     6292 *
     6293 *  Note that a 'where' search psMetadata is constructed from each object and
     6294 *  used to find rows to delete.
     6295 *
     6296 * @return A The number of rows removed or a negative value on error
     6297 */
     6298
     6299bool detProcessedExpDeleteObject(
     6300    psDB            *dbh,               ///< Database handle
     6301    const detProcessedExpRow *object    ///< Object to delete
     6302);
     6303/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     6304 *
     6305 *  Note that a 'where' search psMetadata is constructed from each object and
     6306 *  used to find rows to delete.
     6307 *
     6308 * @return A The number of rows removed or a negative value on error
     6309 */
     6310
     6311long long detProcessedExpDeleteRowObjects(
     6312    psDB            *dbh,               ///< Database handle
     6313    const psArray   *objects,           ///< Array of objects to delete
     6314    unsigned long long limit            ///< Maximum number of elements to delete
     6315);
     6316/** Formats and prints an array of detProcessedExpRow objects
     6317 *
     6318 * When mdcf is set the formated output is in psMetadataConfig
     6319 * format, otherwise it is in a simple tabular format.
     6320 *
     6321 * @return true on success
     6322 */
     6323
     6324bool detProcessedExpPrintObjects(
     6325    FILE            *stream,            ///< a stream
     6326    psArray         *objects,           ///< An array of detProcessedExpRow objects
     6327    bool            mdcf                ///< format as mdconfig or simple
     6328);
    60866329/** detStackedImfileRow data structure
    60876330 *
     
    60986341    psF64           bg_stdev;
    60996342    psF64           bg_mean_stdev;
    6100     bool            normalize;
    61016343} detStackedImfileRow;
    61026344
     
    61146356    psF64           bg,
    61156357    psF64           bg_stdev,
    6116     psF64           bg_mean_stdev,
    6117     bool            normalize
     6358    psF64           bg_mean_stdev
    61186359);
    61196360
     
    61526393    psF64           bg,
    61536394    psF64           bg_stdev,
    6154     psF64           bg_mean_stdev,
    6155     bool            normalize
     6395    psF64           bg_mean_stdev
    61566396);
    61576397
     
    61816421    psF64           *bg,
    61826422    psF64           *bg_stdev,
    6183     psF64           *bg_mean_stdev,
    6184     bool            *normalize
     6423    psF64           *bg_mean_stdev
    61856424);
    61866425
  • trunk/ippdb/tests/alloc.c

    r9054 r9107  
    10371037
    10381038    {
     1039        detProcessedExpRow *object;
     1040
     1041        object = detProcessedExpRowAlloc(-32, "a string", "a string", 64.64, 64.64, 64.64, "a string", "a string"    );
     1042
     1043        if (!object) {
     1044            exit(EXIT_FAILURE);
     1045        }
     1046
     1047        if (!object->det_id == -32) {
     1048            psFree(object);
     1049            exit(EXIT_FAILURE);
     1050        }
     1051        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
     1052            psFree(object);
     1053            exit(EXIT_FAILURE);
     1054        }
     1055        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1056            psFree(object);
     1057            exit(EXIT_FAILURE);
     1058        }
     1059        if (!object->bg == 64.64) {
     1060            psFree(object);
     1061            exit(EXIT_FAILURE);
     1062        }
     1063        if (!object->bg_stdev == 64.64) {
     1064            psFree(object);
     1065            exit(EXIT_FAILURE);
     1066        }
     1067        if (!object->bg_mean_stdev == 64.64) {
     1068            psFree(object);
     1069            exit(EXIT_FAILURE);
     1070        }
     1071        if (strncmp(object->b1_uri, "a string", MAX_STRING_LENGTH)) {
     1072            psFree(object);
     1073            exit(EXIT_FAILURE);
     1074        }
     1075        if (strncmp(object->b2_uri, "a string", MAX_STRING_LENGTH)) {
     1076            psFree(object);
     1077            exit(EXIT_FAILURE);
     1078        }
     1079
     1080        psFree(object);
     1081    }
     1082
     1083    {
    10391084        detStackedImfileRow *object;
    10401085
    1041         object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, true    );
     1086        object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64    );
    10421087
    10431088        if (!object) {
     
    10741119        }
    10751120        if (!object->bg_mean_stdev == 64.64) {
    1076             psFree(object);
    1077             exit(EXIT_FAILURE);
    1078         }
    1079         if (!object->normalize == true) {
    10801121            psFree(object);
    10811122            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/createtable.c

    r8665 r9107  
    388388        }
    389389
     390        if(!detProcessedExpCreateTable(dbh)) {
     391            exit(EXIT_FAILURE);
     392        }
     393
     394        psDBCleanup(dbh);
     395    }
     396
     397    {
     398        psDB            *dbh;
     399
     400        dbh = psDBInit("localhost", "test", NULL, "test");
     401        if (!dbh) {
     402            exit(EXIT_FAILURE);
     403        }
     404
    390405        if(!detStackedImfileCreateTable(dbh)) {
    391406            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/dbcleanup.c

    r8665 r9107  
    3636    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detInputExp");
    3737    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detProcessedImfile");
     38    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detProcessedExp");
    3839    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detStackedImfile");
    3940    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detNormalizedStatImfile");
  • trunk/ippdb/tests/dbsetup.c

    r8665 r9107  
    8888    detProcessedImfileCreateTable(dbh);
    8989
     90    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detProcessedExp");
     91    detProcessedExpCreateTable(dbh);
     92
    9093    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS detStackedImfile");
    9194    detStackedImfileCreateTable(dbh);
  • trunk/ippdb/tests/droptable.c

    r8665 r9107  
    388388        }
    389389
     390        if (!detProcessedExpDropTable(dbh)) {
     391            exit(EXIT_FAILURE);
     392        }
     393
     394        psDBCleanup(dbh);
     395    }
     396
     397    {
     398        psDB            *dbh;
     399
     400        dbh = psDBInit("localhost", "test", NULL, "test");
     401        if (!dbh) {
     402            exit(EXIT_FAILURE);
     403        }
     404
    390405        if (!detStackedImfileDropTable(dbh)) {
    391406            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/insert.c

    r9054 r9107  
    388388        }
    389389
    390         if (!detStackedImfileInsert(dbh, -32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, true)) {
     390        if (!detProcessedExpInsert(dbh, -32, "a string", "a string", 64.64, 64.64, 64.64, "a string", "a string")) {
     391            exit(EXIT_FAILURE);
     392        }
     393
     394        psDBCleanup(dbh);
     395    }
     396
     397    {
     398        psDB            *dbh;
     399
     400        dbh = psDBInit("localhost", "test", NULL, "test");
     401        if (!dbh) {
     402            exit(EXIT_FAILURE);
     403        }
     404
     405        if (!detStackedImfileInsert(dbh, -32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64)) {
    391406            exit(EXIT_FAILURE);
    392407        }
  • trunk/ippdb/tests/insertfits.c

    r8665 r9107  
    674674        }
    675675
     676        if (!detProcessedExpInsertFits(dbh, fits)) {
     677            exit(EXIT_FAILURE);
     678        }
     679
     680        if (!psFitsClose(fits)) {
     681            exit(EXIT_FAILURE);
     682        }
     683
     684        psDBCleanup(dbh);
     685    }
     686
     687    {
     688        psDB            *dbh;
     689        psFits          *fits;
     690
     691        dbh = psDBInit("localhost", "test", NULL, "test");
     692        if (!dbh) {
     693            exit(EXIT_FAILURE);
     694        }
     695
     696        // open a temp
     697        fits = psFitsOpen(TMP_FILENAME, "r");
     698        if (!fits) {
     699            exit(EXIT_FAILURE);
     700        }
     701
    676702        if (!detStackedImfileInsertFits(dbh, fits)) {
    677703            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/insertobject.c

    r9054 r9107  
    557557    {
    558558        psDB            *dbh;
     559        detProcessedExpRow *object;
     560
     561        dbh = psDBInit("localhost", "test", NULL, "test");
     562        if (!dbh) {
     563            exit(EXIT_FAILURE);
     564        }
     565
     566        object = detProcessedExpRowAlloc(-32, "a string", "a string", 64.64, 64.64, 64.64, "a string", "a string");
     567        if (!object) {
     568            exit(EXIT_FAILURE);
     569        }
     570
     571        if (!detProcessedExpInsertObject(dbh, object)) {
     572            exit(EXIT_FAILURE);
     573        }
     574
     575        psFree(object);
     576        psDBCleanup(dbh);
     577    }
     578
     579    {
     580        psDB            *dbh;
    559581        detStackedImfileRow *object;
    560582
     
    564586        }
    565587
    566         object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, true);
     588        object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64);
    567589        if (!object) {
    568590            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/metadatafromobject.c

    r9054 r9107  
    12391239    {
    12401240        psMetadata      *md;
     1241        detProcessedExpRow *object;
     1242        bool            status;
     1243
     1244        object = detProcessedExpRowAlloc(-32, "a string", "a string", 64.64, 64.64, 64.64, "a string", "a string");
     1245        if (!object) {
     1246            exit(EXIT_FAILURE);
     1247        }
     1248
     1249        md = detProcessedExpMetadataFromObject(object);
     1250        if (!md) {
     1251            exit(EXIT_FAILURE);
     1252        }
     1253
     1254        psFree(object);
     1255
     1256        if (!psMetadataLookupS32(&status, md, "det_id") == -32) {
     1257            psFree(md);
     1258            exit(EXIT_FAILURE);
     1259        }
     1260        if (strncmp(psMetadataLookupPtr(&status, md, "exp_tag"), "a string", MAX_STRING_LENGTH)) {
     1261            psFree(md);
     1262            exit(EXIT_FAILURE);
     1263        }
     1264        if (strncmp(psMetadataLookupPtr(&status, md, "recipe"), "a string", MAX_STRING_LENGTH)) {
     1265            psFree(md);
     1266            exit(EXIT_FAILURE);
     1267        }
     1268        if (!psMetadataLookupF64(&status, md, "bg") == 64.64) {
     1269            psFree(md);
     1270            exit(EXIT_FAILURE);
     1271        }
     1272        if (!psMetadataLookupF64(&status, md, "bg_stdev") == 64.64) {
     1273            psFree(md);
     1274            exit(EXIT_FAILURE);
     1275        }
     1276        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
     1277            psFree(md);
     1278            exit(EXIT_FAILURE);
     1279        }
     1280        if (strncmp(psMetadataLookupPtr(&status, md, "b1_uri"), "a string", MAX_STRING_LENGTH)) {
     1281            psFree(md);
     1282            exit(EXIT_FAILURE);
     1283        }
     1284        if (strncmp(psMetadataLookupPtr(&status, md, "b2_uri"), "a string", MAX_STRING_LENGTH)) {
     1285            psFree(md);
     1286            exit(EXIT_FAILURE);
     1287        }
     1288
     1289        psFree(md);
     1290    }
     1291
     1292    {
     1293        psMetadata      *md;
    12411294        detStackedImfileRow *object;
    12421295        bool            status;
    12431296
    1244         object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64, true);
     1297        object = detStackedImfileRowAlloc(-32, -32, "a string", "a string", "a string", 64.64, 64.64, 64.64);
    12451298        if (!object) {
    12461299            exit(EXIT_FAILURE);
     
    12831336        }
    12841337        if (!psMetadataLookupF64(&status, md, "bg_mean_stdev") == 64.64) {
    1285             psFree(md);
    1286             exit(EXIT_FAILURE);
    1287         }
    1288         if (!psMetadataLookupBool(&status, md, "normalize") == true) {
    12891338            psFree(md);
    12901339            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/objectfrommetadata.c

    r9054 r9107  
    18681868    {
    18691869        psMetadata      *md;
     1870        detProcessedExpRow *object;
     1871
     1872        md = psMetadataAlloc();
     1873        if (!psMetadataAddS32(md, PS_LIST_TAIL, "det_id", 0, NULL, -32)) {
     1874            psFree(md);
     1875            exit(EXIT_FAILURE);
     1876        }
     1877        if (!psMetadataAddStr(md, PS_LIST_TAIL, "exp_tag", 0, NULL, "a string")) {
     1878            psFree(md);
     1879            exit(EXIT_FAILURE);
     1880        }
     1881        if (!psMetadataAddStr(md, PS_LIST_TAIL, "recipe", 0, NULL, "a string")) {
     1882            psFree(md);
     1883            exit(EXIT_FAILURE);
     1884        }
     1885        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg", 0, NULL, 64.64)) {
     1886            psFree(md);
     1887            exit(EXIT_FAILURE);
     1888        }
     1889        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_stdev", 0, NULL, 64.64)) {
     1890            psFree(md);
     1891            exit(EXIT_FAILURE);
     1892        }
     1893        if (!psMetadataAddF64(md, PS_LIST_TAIL, "bg_mean_stdev", 0, NULL, 64.64)) {
     1894            psFree(md);
     1895            exit(EXIT_FAILURE);
     1896        }
     1897        if (!psMetadataAddStr(md, PS_LIST_TAIL, "b1_uri", 0, NULL, "a string")) {
     1898            psFree(md);
     1899            exit(EXIT_FAILURE);
     1900        }
     1901        if (!psMetadataAddStr(md, PS_LIST_TAIL, "b2_uri", 0, NULL, "a string")) {
     1902            psFree(md);
     1903            exit(EXIT_FAILURE);
     1904        }
     1905
     1906        object = detProcessedExpObjectFromMetadata(md);
     1907        if (!object) {
     1908            psFree(md);
     1909            exit(EXIT_FAILURE);
     1910        }
     1911
     1912        psFree(md);
     1913
     1914        if (!object->det_id == -32) {
     1915            psFree(object);
     1916            exit(EXIT_FAILURE);
     1917        }
     1918        if (strncmp(object->exp_tag, "a string", MAX_STRING_LENGTH)) {
     1919            psFree(object);
     1920            exit(EXIT_FAILURE);
     1921        }
     1922        if (strncmp(object->recipe, "a string", MAX_STRING_LENGTH)) {
     1923            psFree(object);
     1924            exit(EXIT_FAILURE);
     1925        }
     1926        if (!object->bg == 64.64) {
     1927            psFree(object);
     1928            exit(EXIT_FAILURE);
     1929        }
     1930        if (!object->bg_stdev == 64.64) {
     1931            psFree(object);
     1932            exit(EXIT_FAILURE);
     1933        }
     1934        if (!object->bg_mean_stdev == 64.64) {
     1935            psFree(object);
     1936            exit(EXIT_FAILURE);
     1937        }
     1938        if (strncmp(object->b1_uri, "a string", MAX_STRING_LENGTH)) {
     1939            psFree(object);
     1940            exit(EXIT_FAILURE);
     1941        }
     1942        if (strncmp(object->b2_uri, "a string", MAX_STRING_LENGTH)) {
     1943            psFree(object);
     1944            exit(EXIT_FAILURE);
     1945        }
     1946
     1947        psFree(object);
     1948    }
     1949
     1950    {
     1951        psMetadata      *md;
    18701952        detStackedImfileRow *object;
    18711953
     
    19031985            exit(EXIT_FAILURE);
    19041986        }
    1905         if (!psMetadataAdd(md, PS_LIST_TAIL, "normalize", PS_DATA_BOOL, NULL, true)) {
    1906             psFree(md);
    1907             exit(EXIT_FAILURE);
    1908         }
    19091987
    19101988        object = detStackedImfileObjectFromMetadata(md);
     
    19452023        }
    19462024        if (!object->bg_mean_stdev == 64.64) {
    1947             psFree(object);
    1948             exit(EXIT_FAILURE);
    1949         }
    1950         if (!object->normalize == true) {
    19512025            psFree(object);
    19522026            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/pop.c

    r9054 r9107  
    559559        psDB            *dbh;
    560560        psS32           det_id;
    561         psS32           iteration;
    562         char            class_id[256];
    563         char            uri[256];
    564         char            recipe[256];
    565         psF64           bg;
    566         psF64           bg_stdev;
    567         psF64           bg_mean_stdev;
    568         bool            normalize;
    569 
    570         dbh = psDBInit("localhost", "test", NULL, "test");
    571         if (!dbh) {
    572             exit(EXIT_FAILURE);
    573         }
    574 
    575         if (!detStackedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, &normalize)) {
     561        char            exp_tag[256];
     562        char            recipe[256];
     563        psF64           bg;
     564        psF64           bg_stdev;
     565        psF64           bg_mean_stdev;
     566        char            b1_uri[256];
     567        char            b2_uri[256];
     568
     569        dbh = psDBInit("localhost", "test", NULL, "test");
     570        if (!dbh) {
     571            exit(EXIT_FAILURE);
     572        }
     573
     574        if (!detProcessedExpPop(dbh, &det_id, (char **)&exp_tag, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev, (char **)&b1_uri, (char **)&b2_uri)) {
     575            exit(EXIT_FAILURE);
     576        }
     577
     578        psDBCleanup(dbh);
     579    }
     580
     581    {
     582        psDB            *dbh;
     583        psS32           det_id;
     584        psS32           iteration;
     585        char            class_id[256];
     586        char            uri[256];
     587        char            recipe[256];
     588        psF64           bg;
     589        psF64           bg_stdev;
     590        psF64           bg_mean_stdev;
     591
     592        dbh = psDBInit("localhost", "test", NULL, "test");
     593        if (!dbh) {
     594            exit(EXIT_FAILURE);
     595        }
     596
     597        if (!detStackedImfilePop(dbh, &det_id, &iteration, (char **)&class_id, (char **)&uri, (char **)&recipe, &bg, &bg_stdev, &bg_mean_stdev)) {
    576598            exit(EXIT_FAILURE);
    577599        }
  • trunk/ippdb/tests/popfits.c

    r8665 r9107  
    674674        }
    675675
     676        if (!detProcessedExpPopFits(dbh, fits, 1)) {
     677            exit(EXIT_FAILURE);
     678        }
     679
     680        if (!psFitsClose(fits)) {
     681            exit(EXIT_FAILURE);
     682        }
     683
     684        psDBCleanup(dbh);
     685    }
     686
     687    {
     688        psDB            *dbh;
     689        psFits          *fits;
     690
     691        dbh = psDBInit("localhost", "test", NULL, "test");
     692        if (!dbh) {
     693            exit(EXIT_FAILURE);
     694        }
     695
     696        // allocate a temp
     697        fits = psFitsOpen(TMP_FILENAME, "w");
     698        if (!fits) {
     699            exit(EXIT_FAILURE);
     700        }
     701
    676702        if (!detStackedImfilePopFits(dbh, fits, 1)) {
    677703            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/popobject.c

    r8665 r9107  
    457457    {
    458458        psDB            *dbh;
     459        detProcessedExpRow *object;
     460
     461        dbh = psDBInit("localhost", "test", NULL, "test");
     462        if (!dbh) {
     463            exit(EXIT_FAILURE);
     464        }
     465
     466        object = detProcessedExpPopObject(dbh);
     467        if (!object) {
     468            exit(EXIT_FAILURE);
     469        }
     470
     471        psFree(object);
     472        psDBCleanup(dbh);
     473    }
     474
     475    {
     476        psDB            *dbh;
    459477        detStackedImfileRow *object;
    460478
  • trunk/ippdb/tests/selectrowsfits.c

    r8665 r9107  
    571571        }
    572572
     573        if (!detProcessedExpSelectRowsFits(dbh, fits, NULL, 1)) {
     574            exit(EXIT_FAILURE);
     575        }
     576
     577        psFree(fits);
     578        psDBCleanup(dbh);
     579    }
     580
     581    {
     582        psDB            *dbh;
     583        psFits          *fits;
     584
     585        dbh = psDBInit("localhost", "test", NULL, "test");
     586        if (!dbh) {
     587            exit(EXIT_FAILURE);
     588        }
     589
     590        fits = psFitsOpen(TMP_FILENAME, "w");
     591        if (!fits) {
     592            exit(EXIT_FAILURE);
     593        }
     594
    573595        if (!detStackedImfileSelectRowsFits(dbh, fits, NULL, 1)) {
    574596            exit(EXIT_FAILURE);
Note: See TracChangeset for help on using the changeset viewer.