IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 9783


Ignore:
Timestamp:
Oct 30, 2006, 11:25:59 AM (20 years ago)
Author:
jhoblitt
Message:

VERSION 0.0.52

Location:
trunk/ippdb
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippdb/Makefile.am

    r9684 r9783  
    2222    $(top_builddir)/docs/man/man3/p2PendingImfileRow.3 \
    2323    $(top_builddir)/docs/man/man3/p2ProcessedExpRow.3 \
     24    $(top_builddir)/docs/man/man3/p2MaskRow.3 \
    2425    $(top_builddir)/docs/man/man3/p2ProcessedImfileRow.3 \
    2526    $(top_builddir)/docs/man/man3/p3PendingExpRow.3 \
     
    4041
    4142
    42 docs/man/man3/ippdb.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/p3ProcessedExpRow.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/detNormalizedExpRow.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:
     43docs/man/man3/ippdb.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/p2MaskRow.3 docs/man/man3/p2ProcessedImfileRow.3 docs/man/man3/p3PendingExpRow.3 docs/man/man3/p3ProcessedExpRow.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/detNormalizedExpRow.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:
    4344        $(DOXYGEN)
    4445
  • trunk/ippdb/configure.ac

    r9705 r9783  
    11dnl
    2 dnl This file was generated by glueforge 0.29
     2dnl This file was generated by glueforge 0.30
    33dnl
    44dnl Do NOT directly edit this file.
     
    77AC_PREREQ(2.59)
    88
    9 AC_INIT([ippdb], [0.0.51], [pan-starrs.ifa.hawaii.edu])
     9AC_INIT([ippdb], [0.0.52], [pan-starrs.ifa.hawaii.edu])
    1010AC_CONFIG_SRCDIR([ippdb.pc.in])
    1111
  • trunk/ippdb/src/ippdb.c

    r9742 r9783  
    2020/*
    2121 *
    22  * This file was generated by glueforge 0.29
     22 * This file was generated by glueforge 0.30
    2323 *
    2424 * Do NOT directly edit this file.
     
    4343#define P2PENDINGIMFILE_TABLE_NAME "p2PendingImfile"
    4444#define P2PROCESSEDEXP_TABLE_NAME "p2ProcessedExp"
     45#define P2MASK_TABLE_NAME "p2Mask"
    4546#define P2PROCESSEDIMFILE_TABLE_NAME "p2ProcessedImfile"
    4647#define P3PENDINGEXP_TABLE_NAME "p3PendingExp"
     
    42614262static void p2PendingExpRowFree(p2PendingExpRow *object);
    42624263
    4263 p2PendingExpRow *p2PendingExpRowAlloc(const char *exp_tag, const char *recipe, psS32 p1_version, psS32 p2_version)
     4264p2PendingExpRow *p2PendingExpRowAlloc(const char *exp_tag, const char *recipe, psS32 p1_version, psS32 p2_version, const char *label)
    42644265{
    42654266    p2PendingExpRow *_object;
     
    42724273    _object->p1_version = p1_version;
    42734274    _object->p2_version = p2_version;
     4275    _object->label = psStringCopy(label);
    42744276
    42754277    return _object;
     
    42804282    psFree(object->exp_tag);
    42814283    psFree(object->recipe);
     4284    psFree(object->label);
    42824285}
    42834286
     
    43054308        return false;
    43064309    }
     4310    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
     4311        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     4312        psFree(md);
     4313        return false;
     4314    }
    43074315
    43084316    bool status = psDBCreateTable(dbh, P2PENDINGEXP_TABLE_NAME, md);
     
    43184326}
    43194327
    4320 bool p2PendingExpInsert(psDB * dbh, const char *exp_tag, const char *recipe, psS32 p1_version, psS32 p2_version)
     4328bool p2PendingExpInsert(psDB * dbh, const char *exp_tag, const char *recipe, psS32 p1_version, psS32 p2_version, const char *label)
    43214329{
    43224330    psMetadata *md = psMetadataAlloc();
     
    43384346    if (!psMetadataAdd(md, PS_LIST_TAIL, "p2_version", PS_DATA_S32, NULL, p2_version)) {
    43394347        psError(PS_ERR_UNKNOWN, false, "failed to add item p2_version");
     4348        psFree(md);
     4349        return false;
     4350    }
     4351    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
     4352        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    43404353        psFree(md);
    43414354        return false;
     
    43644377bool p2PendingExpInsertObject(psDB *dbh, p2PendingExpRow *object)
    43654378{
    4366     return p2PendingExpInsert(dbh, object->exp_tag, object->recipe, object->p1_version, object->p2_version);
     4379    return p2PendingExpInsert(dbh, object->exp_tag, object->recipe, object->p1_version, object->p2_version, object->label);
    43674380}
    43684381
     
    44574470        return false;
    44584471    }
     4472    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
     4473        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     4474        psFree(md);
     4475        return false;
     4476    }
    44594477
    44604478
     
    44864504        return false;
    44874505    }
    4488 
    4489     return p2PendingExpRowAlloc(exp_tag, recipe, p1_version, p2_version);
     4506    char* label = psMetadataLookupPtr(&status, md, "label");
     4507    if (!status) {
     4508        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label");
     4509        return false;
     4510    }
     4511
     4512    return p2PendingExpRowAlloc(exp_tag, recipe, p1_version, p2_version, label);
    44904513}
    44914514psArray *p2PendingExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    49514974static void p2ProcessedExpRowFree(p2ProcessedExpRow *object);
    49524975
    4953 p2ProcessedExpRow *p2ProcessedExpRowAlloc(const char *exp_tag, psS32 p1_version, psS32 p2_version)
     4976p2ProcessedExpRow *p2ProcessedExpRowAlloc(const char *exp_tag, psS32 p1_version, psS32 p2_version, const char *label)
    49544977{
    49554978    p2ProcessedExpRow *_object;
     
    49614984    _object->p1_version = p1_version;
    49624985    _object->p2_version = p2_version;
     4986    _object->label = psStringCopy(label);
    49634987
    49644988    return _object;
     
    49684992{
    49694993    psFree(object->exp_tag);
     4994    psFree(object->label);
    49704995}
    49714996
     
    49885013        return false;
    49895014    }
     5015    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "key", "64")) {
     5016        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     5017        psFree(md);
     5018        return false;
     5019    }
    49905020
    49915021    bool status = psDBCreateTable(dbh, P2PROCESSEDEXP_TABLE_NAME, md);
     
    50015031}
    50025032
    5003 bool p2ProcessedExpInsert(psDB * dbh, const char *exp_tag, psS32 p1_version, psS32 p2_version)
     5033bool p2ProcessedExpInsert(psDB * dbh, const char *exp_tag, psS32 p1_version, psS32 p2_version, const char *label)
    50045034{
    50055035    psMetadata *md = psMetadataAlloc();
     
    50165046    if (!psMetadataAdd(md, PS_LIST_TAIL, "p2_version", PS_DATA_S32, NULL, p2_version)) {
    50175047        psError(PS_ERR_UNKNOWN, false, "failed to add item p2_version");
     5048        psFree(md);
     5049        return false;
     5050    }
     5051    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
     5052        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
    50185053        psFree(md);
    50195054        return false;
     
    50425077bool p2ProcessedExpInsertObject(psDB *dbh, p2ProcessedExpRow *object)
    50435078{
    5044     return p2ProcessedExpInsert(dbh, object->exp_tag, object->p1_version, object->p2_version);
     5079    return p2ProcessedExpInsert(dbh, object->exp_tag, object->p1_version, object->p2_version, object->label);
    50455080}
    50465081
     
    51305165        return false;
    51315166    }
     5167    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
     5168        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     5169        psFree(md);
     5170        return false;
     5171    }
    51325172
    51335173
     
    51545194        return false;
    51555195    }
    5156 
    5157     return p2ProcessedExpRowAlloc(exp_tag, p1_version, p2_version);
     5196    char* label = psMetadataLookupPtr(&status, md, "label");
     5197    if (!status) {
     5198        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label");
     5199        return false;
     5200    }
     5201
     5202    return p2ProcessedExpRowAlloc(exp_tag, p1_version, p2_version, label);
    51585203}
    51595204psArray *p2ProcessedExpSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    52505295    return true;
    52515296}
     5297static void p2MaskRowFree(p2MaskRow *object);
     5298
     5299p2MaskRow *p2MaskRowAlloc(const char *label)
     5300{
     5301    p2MaskRow       *_object;
     5302
     5303    _object = psAlloc(sizeof(p2MaskRow));
     5304    psMemSetDeallocator(_object, (psFreeFunc)p2MaskRowFree);
     5305
     5306    _object->label = psStringCopy(label);
     5307
     5308    return _object;
     5309}
     5310
     5311static void p2MaskRowFree(p2MaskRow *object)
     5312{
     5313    psFree(object->label);
     5314}
     5315
     5316bool p2MaskCreateTable(psDB *dbh)
     5317{
     5318    psMetadata *md = psMetadataAlloc();
     5319    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, "Primary Key", "64")) {
     5320        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     5321        psFree(md);
     5322        return false;
     5323    }
     5324
     5325    bool status = psDBCreateTable(dbh, P2MASK_TABLE_NAME, md);
     5326
     5327    psFree(md);
     5328
     5329    return status;
     5330}
     5331
     5332bool p2MaskDropTable(psDB *dbh)
     5333{
     5334    return psDBDropTable(dbh, P2MASK_TABLE_NAME);
     5335}
     5336
     5337bool p2MaskInsert(psDB * dbh, const char *label)
     5338{
     5339    psMetadata *md = psMetadataAlloc();
     5340    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, label)) {
     5341        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     5342        psFree(md);
     5343        return false;
     5344    }
     5345
     5346    bool status = psDBInsertOneRow(dbh, P2MASK_TABLE_NAME, md);
     5347    psFree(md);
     5348
     5349    return status;
     5350}
     5351
     5352long long p2MaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
     5353{
     5354    long long       deleted = 0;
     5355
     5356    long long count = psDBDeleteRows(dbh, P2MASK_TABLE_NAME, where, limit);
     5357    if (count < 0) {
     5358        psError(PS_ERR_UNKNOWN, true, "failed to delete row from p2Mask");
     5359        return count;
     5360
     5361        deleted += count;
     5362    }
     5363
     5364    return deleted;
     5365}
     5366bool p2MaskInsertObject(psDB *dbh, p2MaskRow *object)
     5367{
     5368    return p2MaskInsert(dbh, object->label);
     5369}
     5370
     5371bool p2MaskInsertObjects(psDB *dbh, psArray *objects)
     5372{
     5373    for (long i = 0; i < psArrayLength(objects); i++) {
     5374        if (!p2MaskInsertObject(dbh, objects->data[i])) {
     5375            return false;
     5376        }
     5377    }
     5378
     5379    return true;
     5380}
     5381
     5382bool p2MaskInsertFits(psDB *dbh, const psFits *fits)
     5383{
     5384    psArray         *rowSet;
     5385
     5386    // move to (the first?) extension named  P2MASK_TABLE_NAME
     5387    if (!psFitsMoveExtName(fits, P2MASK_TABLE_NAME)) {
     5388        psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", P2MASK_TABLE_NAME);
     5389        return false;
     5390    }
     5391
     5392    // check HDU type
     5393    if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
     5394        psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
     5395        return false;
     5396    }
     5397
     5398    // read fits table
     5399    rowSet = psFitsReadTable(fits);
     5400    if (!rowSet) {
     5401        psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
     5402        psFree(rowSet);
     5403        return false;
     5404    }
     5405
     5406    if (!psDBInsertRows(dbh, P2MASK_TABLE_NAME, rowSet)) {
     5407        psError(PS_ERR_UNKNOWN, false, "databse insert failed");
     5408        psFree(rowSet);
     5409        return false;
     5410    }
     5411
     5412    psFree(rowSet);
     5413
     5414    return true;
     5415}
     5416
     5417bool p2MaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
     5418{
     5419    psArray         *rowSet;
     5420
     5421    rowSet = psDBSelectRows(dbh, P2MASK_TABLE_NAME, where, limit);
     5422    if (!rowSet) {
     5423        return false;
     5424    }
     5425
     5426    // output to fits
     5427    if (!psFitsWriteTable(fits, NULL, rowSet, P2MASK_TABLE_NAME)) {
     5428        psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
     5429        psFree(rowSet);
     5430        return false;
     5431    }
     5432
     5433    psFree(rowSet);
     5434
     5435    return true;
     5436}
     5437
     5438psMetadata *p2MaskMetadataFromObject(const p2MaskRow *object)
     5439{
     5440    psMetadata *md = psMetadataAlloc();
     5441    if (!psMetadataAdd(md, PS_LIST_TAIL, "label", PS_DATA_STRING, NULL, object->label)) {
     5442        psError(PS_ERR_UNKNOWN, false, "failed to add item label");
     5443        psFree(md);
     5444        return false;
     5445    }
     5446
     5447
     5448    return md;
     5449}
     5450
     5451p2MaskRow *p2MaskObjectFromMetadata(psMetadata *md)
     5452{
     5453
     5454bool status = false;
     5455    char* label = psMetadataLookupPtr(&status, md, "label");
     5456    if (!status) {
     5457        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item label");
     5458        return false;
     5459    }
     5460
     5461    return p2MaskRowAlloc(label);
     5462}
     5463psArray *p2MaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     5464{
     5465    psArray         *rowSet;
     5466    psArray         *returnSet;
     5467    psU64           i;
     5468
     5469    rowSet = psDBSelectRows(dbh, P2MASK_TABLE_NAME, where, limit);
     5470    if (!rowSet) {
     5471        return NULL;
     5472    }
     5473
     5474    // convert psMetadata rows to row objects
     5475
     5476    returnSet = psArrayAllocEmpty(rowSet->n);
     5477
     5478    for (i = 0; i < rowSet->n; i++) {
     5479        p2MaskRow *object = p2MaskObjectFromMetadata(rowSet->data[i]);
     5480        psArrayAdd(returnSet, 0, object);
     5481        psFree(object);
     5482    }
     5483
     5484    psFree(rowSet);
     5485
     5486    return returnSet;
     5487}
     5488bool p2MaskDeleteObject(psDB *dbh, const p2MaskRow *object)
     5489{
     5490    psMetadata *where = p2MaskMetadataFromObject(object);
     5491    long long count = psDBDeleteRows(dbh, P2MASK_TABLE_NAME, where, 0);
     5492    psFree(where)
     5493    if (count < 0) {
     5494        psError(PS_ERR_UNKNOWN, true, "failed to delete row from p2Mask");
     5495        return false;
     5496    }
     5497    if (count > 1) {
     5498        // XXX should this be a psAbort() instead?  It is possible that
     5499        // having an object match multiple rows was by design.
     5500        psError(PS_ERR_UNKNOWN, true, "p2MaskRow object matched more then one row.  Check your database schema");
     5501        return false;
     5502    }
     5503
     5504    return true;
     5505}
     5506long long p2MaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
     5507{
     5508    long long       deleted = 0;
     5509
     5510    for (long long i = 0; i < objects->n; i++) {
     5511        p2MaskRow *object = objects->data[i];
     5512        psMetadata *where = p2MaskMetadataFromObject(object);
     5513        long long count = psDBDeleteRows(dbh, P2MASK_TABLE_NAME, where, limit);
     5514        psFree(where)
     5515        if (count < 0) {
     5516            psError(PS_ERR_UNKNOWN, true, "failed to delete row from p2Mask");
     5517            return count;
     5518        }
     5519
     5520        deleted += count;
     5521    }
     5522
     5523    return deleted;
     5524}
     5525bool p2MaskPrintObjects(FILE *stream, psArray *objects, bool mdcf)
     5526{
     5527    PS_ASSERT_PTR_NON_NULL(objects, false);
     5528
     5529    psMetadata *output = psMetadataAlloc();
     5530    for (long i = 0; i < psArrayLength(objects); i++) {
     5531        psMetadata *md = p2MaskMetadataFromObject(objects->data[i]);
     5532        if (!psMetadataAddMetadata(
     5533            output,
     5534            PS_LIST_TAIL,
     5535            P2MASK_TABLE_NAME,
     5536            PS_META_DUPLICATE_OK,
     5537            NULL,
     5538            md
     5539        )) {
     5540            psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
     5541            psFree(md);
     5542            psFree(output);
     5543            return false;
     5544        }
     5545        psFree(md);
     5546    }
     5547
     5548    if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
     5549        psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
     5550        psFree(output);
     5551    }
     5552    psFree(output);
     5553
     5554    return true;
     5555}
    52525556static void p2ProcessedImfileRowFree(p2ProcessedImfileRow *object);
    52535557
  • trunk/ippdb/src/ippdb.h

    r9705 r9783  
    2020/*
    2121 *
    22  * This file was generated by glueforge 0.29
     22 * This file was generated by glueforge 0.30
    2323 *
    2424 * Do NOT directly edit this file.
     
    20102010    psS32           p1_version;
    20112011    psS32           p2_version;
     2012    char            *label;
    20122013} p2PendingExpRow;
    20132014
     
    20212022    const char      *recipe,
    20222023    psS32           p1_version,
    2023     psS32           p2_version
     2024    psS32           p2_version,
     2025    const char      *label
    20242026);
    20252027
     
    20542056    const char      *recipe,
    20552057    psS32           p1_version,
    2056     psS32           p2_version
     2058    psS32           p2_version,
     2059    const char      *label
    20572060);
    20582061
     
    23972400    psS32           p1_version;
    23982401    psS32           p2_version;
     2402    char            *label;
    23992403} p2ProcessedExpRow;
    24002404
     
    24072411    const char      *exp_tag,
    24082412    psS32           p1_version,
    2409     psS32           p2_version
     2413    psS32           p2_version,
     2414    const char      *label
    24102415);
    24112416
     
    24392444    const char      *exp_tag,
    24402445    psS32           p1_version,
    2441     psS32           p2_version
     2446    psS32           p2_version,
     2447    const char      *label
    24422448);
    24432449
     
    25742580    FILE            *stream,            ///< a stream
    25752581    psArray         *objects,           ///< An array of p2ProcessedExpRow objects
     2582    bool            mdcf                ///< format as mdconfig or simple
     2583);
     2584/** p2MaskRow data structure
     2585 *
     2586 * Structure for representing a single row of p2Mask table data.
     2587 */
     2588
     2589typedef struct {
     2590    char            *label;
     2591} p2MaskRow;
     2592
     2593/** Creates a new p2MaskRow object
     2594 *
     2595 *  @return A new p2MaskRow object or NULL on failure.
     2596 */
     2597
     2598p2MaskRow *p2MaskRowAlloc(
     2599    const char      *label
     2600);
     2601
     2602/** Creates a new p2Mask table
     2603 *
     2604 * @return true on success
     2605 */
     2606
     2607bool p2MaskCreateTable(
     2608    psDB            *dbh                ///< Database handle
     2609);
     2610
     2611/** Deletes a p2Mask table
     2612 *
     2613 * @return true on success
     2614 */
     2615
     2616bool p2MaskDropTable(
     2617    psDB            *dbh                ///< Database handle
     2618);
     2619
     2620/** Insert a single row into a table
     2621 *
     2622 * This function constructs and inserts a single row based on it's parameters.
     2623 *
     2624 * @return true on success
     2625 */
     2626
     2627bool p2MaskInsert(
     2628    psDB            *dbh,               ///< Database handle
     2629    const char      *label
     2630);
     2631
     2632/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     2633 *
     2634 * @return A The number of rows removed or a negative value on error
     2635 */
     2636
     2637long long p2MaskDelete(
     2638    psDB            *dbh,               ///< Database handle
     2639    const psMetadata *where,            ///< Row match criteria
     2640    unsigned long long limit            ///< Maximum number of elements to delete
     2641);
     2642
     2643/** Insert a single p2MaskRow object into a table
     2644 *
     2645 * This function constructs and inserts a single row based on it's parameters.
     2646 *
     2647 * @return true on success
     2648 */
     2649
     2650bool p2MaskInsertObject(
     2651    psDB            *dbh,               ///< Database handle
     2652    p2MaskRow       *object             ///< p2MaskRow object
     2653);
     2654
     2655/** Insert an array of p2MaskRow object into a table
     2656 *
     2657 * This function constructs and inserts multiple rows based on it's parameters.
     2658 *
     2659 * @return true on success
     2660 */
     2661
     2662bool p2MaskInsertObjects(
     2663    psDB            *dbh,               ///< Database handle
     2664    psArray         *objects            ///< array of p2MaskRow objects
     2665);
     2666
     2667/** Insert data from a binary FITS table p2MaskRow into the database
     2668 *
     2669 * This function expects a psFits object with a FITS table as the first
     2670 * extension.  The table must have at least one row of data in it, that is of
     2671 * the appropriate format (number of columns and their type).  All other
     2672 * extensions are ignored.
     2673 *
     2674 * @return true on success
     2675 */
     2676
     2677bool p2MaskInsertFits(
     2678    psDB            *dbh,               ///< Database handle
     2679    const psFits    *fits               ///< psFits object
     2680);
     2681
     2682/** Selects up to limit from the database and returns them in a binary FITS table
     2683 *
     2684 * This function assumes an empty psFits object and will create a FITS table
     2685 * as the first extension.
     2686 *
     2687 *  See psDBSelectRows() for documentation on the format of where.
     2688 *
     2689 * @return true on success
     2690 */
     2691
     2692bool p2MaskSelectRowsFits(
     2693    psDB            *dbh,               ///< Database handle
     2694    psFits          *fits,              ///< psFits object
     2695    const psMetadata *where,            ///< Row match criteria
     2696    unsigned long long limit            ///< Maximum number of elements to return
     2697);
     2698
     2699/** Convert a p2MaskRow into an equivalent psMetadata
     2700 *
     2701 * @return A psMetadata pointer or NULL on error
     2702 */
     2703
     2704psMetadata *p2MaskMetadataFromObject(
     2705    const p2MaskRow *object             ///< fooRow to convert into a psMetadata
     2706);
     2707
     2708/** Convert a psMetadata into an equivalent fooRow
     2709 *
     2710 * @return A p2MaskRow pointer or NULL on error
     2711 */
     2712
     2713p2MaskRow *p2MaskObjectFromMetadata(
     2714    psMetadata      *md                 ///< psMetadata to convert into a fooRow
     2715);
     2716/** Selects up to limit rows from the database and returns as p2MaskRow objects in a psArray
     2717 *
     2718 *  See psDBSelectRows() for documentation on the format of where.
     2719 *
     2720 * @return A psArray pointer or NULL on error
     2721 */
     2722
     2723psArray *p2MaskSelectRowObjects(
     2724    psDB            *dbh,               ///< Database handle
     2725    const psMetadata *where,            ///< Row match criteria
     2726    unsigned long long limit            ///< Maximum number of elements to return
     2727);
     2728/** Deletes a row from the database coresponding to an p2Mask
     2729 *
     2730 *  Note that a 'where' search psMetadata is constructed from each object and
     2731 *  used to find rows to delete.
     2732 *
     2733 * @return A The number of rows removed or a negative value on error
     2734 */
     2735
     2736bool p2MaskDeleteObject(
     2737    psDB            *dbh,               ///< Database handle
     2738    const p2MaskRow *object    ///< Object to delete
     2739);
     2740/** Deletes up to limit rows from the database and returns the number of rows actually deleted.
     2741 *
     2742 *  Note that a 'where' search psMetadata is constructed from each object and
     2743 *  used to find rows to delete.
     2744 *
     2745 * @return A The number of rows removed or a negative value on error
     2746 */
     2747
     2748long long p2MaskDeleteRowObjects(
     2749    psDB            *dbh,               ///< Database handle
     2750    const psArray   *objects,           ///< Array of objects to delete
     2751    unsigned long long limit            ///< Maximum number of elements to delete
     2752);
     2753/** Formats and prints an array of p2MaskRow objects
     2754 *
     2755 * When mdcf is set the formated output is in psMetadataConfig
     2756 * format, otherwise it is in a simple tabular format.
     2757 *
     2758 * @return true on success
     2759 */
     2760
     2761bool p2MaskPrintObjects(
     2762    FILE            *stream,            ///< a stream
     2763    psArray         *objects,           ///< An array of p2MaskRow objects
    25762764    bool            mdcf                ///< format as mdconfig or simple
    25772765);
  • trunk/ippdb/tests/alloc.c

    r9705 r9783  
    477477        p2PendingExpRow *object;
    478478
    479         object = p2PendingExpRowAlloc("a string", "a string", -32, -32    );
     479        object = p2PendingExpRowAlloc("a string", "a string", -32, -32, "a string"    );
    480480
    481481        if (!object) {
     
    499499            exit(EXIT_FAILURE);
    500500        }
     501        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     502            psFree(object);
     503            exit(EXIT_FAILURE);
     504        }
    501505
    502506        psFree(object);
     
    543547        p2ProcessedExpRow *object;
    544548
    545         object = p2ProcessedExpRowAlloc("a string", -32, -32    );
     549        object = p2ProcessedExpRowAlloc("a string", -32, -32, "a string"    );
    546550
    547551        if (!object) {
     
    558562        }
    559563        if (!object->p2_version == -32) {
     564            psFree(object);
     565            exit(EXIT_FAILURE);
     566        }
     567        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     568            psFree(object);
     569            exit(EXIT_FAILURE);
     570        }
     571
     572        psFree(object);
     573    }
     574
     575    {
     576        p2MaskRow       *object;
     577
     578        object = p2MaskRowAlloc("a string"    );
     579
     580        if (!object) {
     581            exit(EXIT_FAILURE);
     582        }
     583
     584        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    560585            psFree(object);
    561586            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/createtable.c

    r9684 r9783  
    193193        }
    194194
     195        if(!p2MaskCreateTable(dbh)) {
     196            exit(EXIT_FAILURE);
     197        }
     198
     199        psDBCleanup(dbh);
     200    }
     201
     202    {
     203        psDB            *dbh;
     204
     205        dbh = psDBInit("localhost", "test", NULL, "test");
     206        if (!dbh) {
     207            exit(EXIT_FAILURE);
     208        }
     209
    195210        if(!p2ProcessedImfileCreateTable(dbh)) {
    196211            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/dbcleanup.c

    r9684 r9783  
    2323    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2PendingImfile");
    2424    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2ProcessedExp");
     25    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2Mask");
    2526    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2ProcessedImfile");
    2627    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p3PendingExp");
  • trunk/ippdb/tests/dbsetup.c

    r9684 r9783  
    4848    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2ProcessedExp");
    4949    p2ProcessedExpCreateTable(dbh);
     50
     51    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2Mask");
     52    p2MaskCreateTable(dbh);
    5053
    5154    p_psDBRunQuery(dbh, "DROP TABLE IF EXISTS p2ProcessedImfile");
  • trunk/ippdb/tests/droptable.c

    r9684 r9783  
    193193        }
    194194
     195        if (!p2MaskDropTable(dbh)) {
     196            exit(EXIT_FAILURE);
     197        }
     198
     199        psDBCleanup(dbh);
     200    }
     201
     202    {
     203        psDB            *dbh;
     204
     205        dbh = psDBInit("localhost", "test", NULL, "test");
     206        if (!dbh) {
     207            exit(EXIT_FAILURE);
     208        }
     209
    195210        if (!p2ProcessedImfileDropTable(dbh)) {
    196211            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/insert.c

    r9705 r9783  
    148148        }
    149149
    150         if (!p2PendingExpInsert(dbh, "a string", "a string", -32, -32)) {
     150        if (!p2PendingExpInsert(dbh, "a string", "a string", -32, -32, "a string")) {
    151151            exit(EXIT_FAILURE);
    152152        }
     
    178178        }
    179179
    180         if (!p2ProcessedExpInsert(dbh, "a string", -32, -32)) {
     180        if (!p2ProcessedExpInsert(dbh, "a string", -32, -32, "a string")) {
     181            exit(EXIT_FAILURE);
     182        }
     183
     184        psDBCleanup(dbh);
     185    }
     186
     187    {
     188        psDB            *dbh;
     189
     190        dbh = psDBInit("localhost", "test", NULL, "test");
     191        if (!dbh) {
     192            exit(EXIT_FAILURE);
     193        }
     194
     195        if (!p2MaskInsert(dbh, "a string")) {
    181196            exit(EXIT_FAILURE);
    182197        }
  • trunk/ippdb/tests/insertfits.c

    r9684 r9783  
    336336        }
    337337
     338        if (!p2MaskInsertFits(dbh, fits)) {
     339            exit(EXIT_FAILURE);
     340        }
     341
     342        if (!psFitsClose(fits)) {
     343            exit(EXIT_FAILURE);
     344        }
     345
     346        psDBCleanup(dbh);
     347    }
     348
     349    {
     350        psDB            *dbh;
     351        psFits          *fits;
     352
     353        dbh = psDBInit("localhost", "test", NULL, "test");
     354        if (!dbh) {
     355            exit(EXIT_FAILURE);
     356        }
     357
     358        // open a temp
     359        fits = psFitsOpen(TMP_FILENAME, "r");
     360        if (!fits) {
     361            exit(EXIT_FAILURE);
     362        }
     363
    338364        if (!p2ProcessedImfileInsertFits(dbh, fits)) {
    339365            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/insertobject.c

    r9705 r9783  
    212212        }
    213213
    214         object = p2PendingExpRowAlloc("a string", "a string", -32, -32);
     214        object = p2PendingExpRowAlloc("a string", "a string", -32, -32, "a string");
    215215        if (!object) {
    216216            exit(EXIT_FAILURE);
     
    256256        }
    257257
    258         object = p2ProcessedExpRowAlloc("a string", -32, -32);
     258        object = p2ProcessedExpRowAlloc("a string", -32, -32, "a string");
    259259        if (!object) {
    260260            exit(EXIT_FAILURE);
     
    262262
    263263        if (!p2ProcessedExpInsertObject(dbh, object)) {
     264            exit(EXIT_FAILURE);
     265        }
     266
     267        psFree(object);
     268        psDBCleanup(dbh);
     269    }
     270
     271    {
     272        psDB            *dbh;
     273        p2MaskRow       *object;
     274
     275        dbh = psDBInit("localhost", "test", NULL, "test");
     276        if (!dbh) {
     277            exit(EXIT_FAILURE);
     278        }
     279
     280        object = p2MaskRowAlloc("a string");
     281        if (!object) {
     282            exit(EXIT_FAILURE);
     283        }
     284
     285        if (!p2MaskInsertObject(dbh, object)) {
    264286            exit(EXIT_FAILURE);
    265287        }
  • trunk/ippdb/tests/metadatafromobject.c

    r9705 r9783  
    551551        bool            status;
    552552
    553         object = p2PendingExpRowAlloc("a string", "a string", -32, -32);
     553        object = p2PendingExpRowAlloc("a string", "a string", -32, -32, "a string");
    554554        if (!object) {
    555555            exit(EXIT_FAILURE);
     
    579579            exit(EXIT_FAILURE);
    580580        }
     581        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     582            psFree(md);
     583            exit(EXIT_FAILURE);
     584        }
    581585
    582586        psFree(md);
     
    633637        bool            status;
    634638
    635         object = p2ProcessedExpRowAlloc("a string", -32, -32);
     639        object = p2ProcessedExpRowAlloc("a string", -32, -32, "a string");
    636640        if (!object) {
    637641            exit(EXIT_FAILURE);
     
    654658        }
    655659        if (!psMetadataLookupS32(&status, md, "p2_version") == -32) {
     660            psFree(md);
     661            exit(EXIT_FAILURE);
     662        }
     663        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
     664            psFree(md);
     665            exit(EXIT_FAILURE);
     666        }
     667
     668        psFree(md);
     669    }
     670
     671    {
     672        psMetadata      *md;
     673        p2MaskRow       *object;
     674        bool            status;
     675
     676        object = p2MaskRowAlloc("a string");
     677        if (!object) {
     678            exit(EXIT_FAILURE);
     679        }
     680
     681        md = p2MaskMetadataFromObject(object);
     682        if (!md) {
     683            exit(EXIT_FAILURE);
     684        }
     685
     686        psFree(object);
     687
     688        if (strncmp(psMetadataLookupPtr(&status, md, "label"), "a string", MAX_STRING_LENGTH)) {
    656689            psFree(md);
    657690            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/objectfrommetadata.c

    r9705 r9783  
    889889            exit(EXIT_FAILURE);
    890890        }
     891        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     892            psFree(md);
     893            exit(EXIT_FAILURE);
     894        }
    891895
    892896        object = p2PendingExpObjectFromMetadata(md);
     
    914918            exit(EXIT_FAILURE);
    915919        }
     920        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     921            psFree(object);
     922            exit(EXIT_FAILURE);
     923        }
    916924
    917925        psFree(object);
     
    10011009            exit(EXIT_FAILURE);
    10021010        }
     1011        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     1012            psFree(md);
     1013            exit(EXIT_FAILURE);
     1014        }
    10031015
    10041016        object = p2ProcessedExpObjectFromMetadata(md);
     
    10191031        }
    10201032        if (!object->p2_version == -32) {
     1033            psFree(object);
     1034            exit(EXIT_FAILURE);
     1035        }
     1036        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
     1037            psFree(object);
     1038            exit(EXIT_FAILURE);
     1039        }
     1040
     1041        psFree(object);
     1042    }
     1043
     1044    {
     1045        psMetadata      *md;
     1046        p2MaskRow       *object;
     1047
     1048        md = psMetadataAlloc();
     1049        if (!psMetadataAddStr(md, PS_LIST_TAIL, "label", 0, NULL, "a string")) {
     1050            psFree(md);
     1051            exit(EXIT_FAILURE);
     1052        }
     1053
     1054        object = p2MaskObjectFromMetadata(md);
     1055        if (!object) {
     1056            psFree(md);
     1057            exit(EXIT_FAILURE);
     1058        }
     1059
     1060        psFree(md);
     1061
     1062        if (strncmp(object->label, "a string", MAX_STRING_LENGTH)) {
    10211063            psFree(object);
    10221064            exit(EXIT_FAILURE);
  • trunk/ippdb/tests/selectrowsfits.c

    r9684 r9783  
    285285        }
    286286
     287        if (!p2MaskSelectRowsFits(dbh, fits, NULL, 1)) {
     288            exit(EXIT_FAILURE);
     289        }
     290
     291        psFree(fits);
     292        psDBCleanup(dbh);
     293    }
     294
     295    {
     296        psDB            *dbh;
     297        psFits          *fits;
     298
     299        dbh = psDBInit("localhost", "test", NULL, "test");
     300        if (!dbh) {
     301            exit(EXIT_FAILURE);
     302        }
     303
     304        fits = psFitsOpen(TMP_FILENAME, "w");
     305        if (!fits) {
     306            exit(EXIT_FAILURE);
     307        }
     308
    287309        if (!p2ProcessedImfileSelectRowsFits(dbh, fits, NULL, 1)) {
    288310            exit(EXIT_FAILURE);
Note: See TracChangeset for help on using the changeset viewer.