IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

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

VERSION 0.0.52

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.