IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 17, 2008, 10:15:51 AM (18 years ago)
Author:
eugene
Message:

updates to magictool and pstamp

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippdb/src/ippdb.c

    r18044 r18595  
    7979#define MAGICNODERESULT_TABLE_NAME "magicNodeResult"
    8080#define MAGICMASK_TABLE_NAME "magicMask"
    81 #define MAGICSKYFILEMASK_TABLE_NAME "magicSkyfileMask"
    8281#define CALDB_TABLE_NAME "calDB"
    8382#define CALRUN_TABLE_NAME "calRun"
     
    1407514074static void stackRunRowFree(stackRunRow *object);
    1407614075
    14077 stackRunRow *stackRunRowAlloc(psS64 stack_id, const char *state, const char *workdir, const char *dvodb, psTime* registered, const char *skycell_id, const char *tess_id)
     14076stackRunRow *stackRunRowAlloc(psS64 stack_id, const char *state, const char *workdir, const char *dvodb, psTime* registered, const char *skycell_id, const char *tess_id, const char *filter)
    1407814077{
    1407914078    stackRunRow     *_object;
     
    1408914088    _object->skycell_id = psStringCopy(skycell_id);
    1409014089    _object->tess_id = psStringCopy(tess_id);
     14090    _object->filter = psStringCopy(filter);
    1409114091
    1409214092    return _object;
     
    1410114101    psFree(object->skycell_id);
    1410214102    psFree(object->tess_id);
     14103    psFree(object->filter);
    1410314104}
    1410414105
     
    1414114142        return false;
    1414214143    }
     14144    if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, "64")) {
     14145        psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
     14146        psFree(md);
     14147        return false;
     14148    }
    1414314149
    1414414150    bool status = psDBCreateTable(dbh, STACKRUN_TABLE_NAME, md);
     
    1415414160}
    1415514161
    14156 bool stackRunInsert(psDB * dbh, psS64 stack_id, const char *state, const char *workdir, const char *dvodb, psTime* registered, const char *skycell_id, const char *tess_id)
     14162bool stackRunInsert(psDB * dbh, psS64 stack_id, const char *state, const char *workdir, const char *dvodb, psTime* registered, const char *skycell_id, const char *tess_id, const char *filter)
    1415714163{
    1415814164    psMetadata *md = psMetadataAlloc();
     
    1418914195    if (!psMetadataAdd(md, PS_LIST_TAIL, "tess_id", PS_DATA_STRING, NULL, tess_id)) {
    1419014196        psError(PS_ERR_UNKNOWN, false, "failed to add item tess_id");
     14197        psFree(md);
     14198        return false;
     14199    }
     14200    if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, filter)) {
     14201        psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
    1419114202        psFree(md);
    1419214203        return false;
     
    1421514226bool stackRunInsertObject(psDB *dbh, stackRunRow *object)
    1421614227{
    14217     return stackRunInsert(dbh, object->stack_id, object->state, object->workdir, object->dvodb, object->registered, object->skycell_id, object->tess_id);
     14228    return stackRunInsert(dbh, object->stack_id, object->state, object->workdir, object->dvodb, object->registered, object->skycell_id, object->tess_id, object->filter);
    1421814229}
    1421914230
     
    1432314334        return false;
    1432414335    }
     14336    if (!psMetadataAdd(md, PS_LIST_TAIL, "filter", PS_DATA_STRING, NULL, object->filter)) {
     14337        psError(PS_ERR_UNKNOWN, false, "failed to add item filter");
     14338        psFree(md);
     14339        return false;
     14340    }
    1432514341
    1432614342
     
    1436714383        return false;
    1436814384    }
    14369 
    14370     return stackRunRowAlloc(stack_id, state, workdir, dvodb, registered, skycell_id, tess_id);
     14385    char* filter = psMetadataLookupPtr(&status, md, "filter");
     14386    if (!status) {
     14387        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item filter");
     14388        return false;
     14389    }
     14390
     14391    return stackRunRowAlloc(stack_id, state, workdir, dvodb, registered, skycell_id, tess_id, filter);
    1437114392}
    1437214393psArray *stackRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    2303223053static void magicRunRowFree(magicRunRow *object);
    2303323054
    23034 magicRunRow *magicRunRowAlloc(psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered)
     23055magicRunRow *magicRunRowAlloc(psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered, psS16 fault)
    2303523056{
    2303623057    magicRunRow     *_object;
     
    2304623067    _object->dvodb = psStringCopy(dvodb);
    2304723068    _object->registered = psTimeCopy(registered);
     23069    _object->fault = fault;
    2304823070
    2304923071    return _object;
     
    2309823120        return false;
    2309923121    }
     23122    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) {
     23123        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     23124        psFree(md);
     23125        return false;
     23126    }
    2310023127
    2310123128    bool status = psDBCreateTable(dbh, MAGICRUN_TABLE_NAME, md);
     
    2311123138}
    2311223139
    23113 bool magicRunInsert(psDB * dbh, psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered)
     23140bool magicRunInsert(psDB * dbh, psS64 magic_id, const char *state, const char *workdir, const char *workdir_state, const char *label, const char *dvodb, psTime* registered, psS16 fault)
    2311423141{
    2311523142    psMetadata *md = psMetadataAlloc();
     
    2314623173    if (!psMetadataAdd(md, PS_LIST_TAIL, "registered", PS_DATA_TIME, NULL, registered)) {
    2314723174        psError(PS_ERR_UNKNOWN, false, "failed to add item registered");
     23175        psFree(md);
     23176        return false;
     23177    }
     23178    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
     23179        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    2314823180        psFree(md);
    2314923181        return false;
     
    2317223204bool magicRunInsertObject(psDB *dbh, magicRunRow *object)
    2317323205{
    23174     return magicRunInsert(dbh, object->magic_id, object->state, object->workdir, object->workdir_state, object->label, object->dvodb, object->registered);
     23206    return magicRunInsert(dbh, object->magic_id, object->state, object->workdir, object->workdir_state, object->label, object->dvodb, object->registered, object->fault);
    2317523207}
    2317623208
     
    2328023312        return false;
    2328123313    }
     23314    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
     23315        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     23316        psFree(md);
     23317        return false;
     23318    }
    2328223319
    2328323320
     
    2332423361        return false;
    2332523362    }
    23326 
    23327     return magicRunRowAlloc(magic_id, state, workdir, workdir_state, label, dvodb, registered);
     23363    psS16 fault = psMetadataLookupS16(&status, md, "fault");
     23364    if (!status) {
     23365        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
     23366        return false;
     23367    }
     23368
     23369    return magicRunRowAlloc(magic_id, state, workdir, workdir_state, label, dvodb, registered, fault);
    2332823370}
    2332923371psArray *magicRunSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    2408824130static void magicNodeResultRowFree(magicNodeResultRow *object);
    2408924131
    24090 magicNodeResultRow *magicNodeResultRowAlloc(psS64 magic_id, const char *node, const char *uri)
     24132magicNodeResultRow *magicNodeResultRowAlloc(psS64 magic_id, const char *node, const char *uri, psS16 fault)
    2409124133{
    2409224134    magicNodeResultRow *_object;
     
    2409824140    _object->node = psStringCopy(node);
    2409924141    _object->uri = psStringCopy(uri);
     24142    _object->fault = fault;
    2410024143
    2410124144    return _object;
     
    2412624169        return false;
    2412724170    }
     24171    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) {
     24172        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     24173        psFree(md);
     24174        return false;
     24175    }
    2412824176
    2412924177    bool status = psDBCreateTable(dbh, MAGICNODERESULT_TABLE_NAME, md);
     
    2413924187}
    2414024188
    24141 bool magicNodeResultInsert(psDB * dbh, psS64 magic_id, const char *node, const char *uri)
     24189bool magicNodeResultInsert(psDB * dbh, psS64 magic_id, const char *node, const char *uri, psS16 fault)
    2414224190{
    2414324191    psMetadata *md = psMetadataAlloc();
     
    2415424202    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    2415524203        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     24204        psFree(md);
     24205        return false;
     24206    }
     24207    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
     24208        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    2415624209        psFree(md);
    2415724210        return false;
     
    2418024233bool magicNodeResultInsertObject(psDB *dbh, magicNodeResultRow *object)
    2418124234{
    24182     return magicNodeResultInsert(dbh, object->magic_id, object->node, object->uri);
     24235    return magicNodeResultInsert(dbh, object->magic_id, object->node, object->uri, object->fault);
    2418324236}
    2418424237
     
    2426824321        return false;
    2426924322    }
     24323    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
     24324        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     24325        psFree(md);
     24326        return false;
     24327    }
    2427024328
    2427124329
     
    2429224350        return false;
    2429324351    }
    24294 
    24295     return magicNodeResultRowAlloc(magic_id, node, uri);
     24352    psS16 fault = psMetadataLookupS16(&status, md, "fault");
     24353    if (!status) {
     24354        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
     24355        return false;
     24356    }
     24357
     24358    return magicNodeResultRowAlloc(magic_id, node, uri, fault);
    2429624359}
    2429724360psArray *magicNodeResultSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    2441124474static void magicMaskRowFree(magicMaskRow *object);
    2441224475
    24413 magicMaskRow *magicMaskRowAlloc(psS64 magic_id, const char *uri)
     24476magicMaskRow *magicMaskRowAlloc(psS64 magic_id, const char *uri, psS32 streaks, psS16 fault)
    2441424477{
    2441524478    magicMaskRow    *_object;
     
    2442024483    _object->magic_id = magic_id;
    2442124484    _object->uri = psStringCopy(uri);
     24485    _object->streaks = streaks;
     24486    _object->fault = fault;
    2442224487
    2442324488    return _object;
     
    2444224507        return false;
    2444324508    }
     24509    if (!psMetadataAdd(md, PS_LIST_TAIL, "streaks", PS_DATA_S32, NULL, 0)) {
     24510        psError(PS_ERR_UNKNOWN, false, "failed to add item streaks");
     24511        psFree(md);
     24512        return false;
     24513    }
     24514    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, "Key", 0)) {
     24515        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     24516        psFree(md);
     24517        return false;
     24518    }
    2444424519
    2444524520    bool status = psDBCreateTable(dbh, MAGICMASK_TABLE_NAME, md);
     
    2445524530}
    2445624531
    24457 bool magicMaskInsert(psDB * dbh, psS64 magic_id, const char *uri)
     24532bool magicMaskInsert(psDB * dbh, psS64 magic_id, const char *uri, psS32 streaks, psS16 fault)
    2445824533{
    2445924534    psMetadata *md = psMetadataAlloc();
     
    2446524540    if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    2446624541        psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
     24542        psFree(md);
     24543        return false;
     24544    }
     24545    if (!psMetadataAdd(md, PS_LIST_TAIL, "streaks", PS_DATA_S32, NULL, streaks)) {
     24546        psError(PS_ERR_UNKNOWN, false, "failed to add item streaks");
     24547        psFree(md);
     24548        return false;
     24549    }
     24550    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, fault)) {
     24551        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    2446724552        psFree(md);
    2446824553        return false;
     
    2449124576bool magicMaskInsertObject(psDB *dbh, magicMaskRow *object)
    2449224577{
    24493     return magicMaskInsert(dbh, object->magic_id, object->uri);
     24578    return magicMaskInsert(dbh, object->magic_id, object->uri, object->streaks, object->fault);
    2449424579}
    2449524580
     
    2457424659        return false;
    2457524660    }
     24661    if (!psMetadataAdd(md, PS_LIST_TAIL, "streaks", PS_DATA_S32, NULL, object->streaks)) {
     24662        psError(PS_ERR_UNKNOWN, false, "failed to add item streaks");
     24663        psFree(md);
     24664        return false;
     24665    }
     24666    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S16, NULL, object->fault)) {
     24667        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
     24668        psFree(md);
     24669        return false;
     24670    }
    2457624671
    2457724672
     
    2459324688        return false;
    2459424689    }
    24595 
    24596     return magicMaskRowAlloc(magic_id, uri);
     24690    psS32 streaks = psMetadataLookupS32(&status, md, "streaks");
     24691    if (!status) {
     24692        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item streaks");
     24693        return false;
     24694    }
     24695    psS16 fault = psMetadataLookupS16(&status, md, "fault");
     24696    if (!status) {
     24697        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
     24698        return false;
     24699    }
     24700
     24701    return magicMaskRowAlloc(magic_id, uri, streaks, fault);
    2459724702}
    2459824703psArray *magicMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    2471024815    return true;
    2471124816}
    24712 static void magicSkyfileMaskRowFree(magicSkyfileMaskRow *object);
    24713 
    24714 magicSkyfileMaskRow *magicSkyfileMaskRowAlloc(psS64 magic_id, psS64 diff_id, const char *uri)
    24715 {
    24716     magicSkyfileMaskRow *_object;
    24717 
    24718     _object = psAlloc(sizeof(magicSkyfileMaskRow));
    24719     psMemSetDeallocator(_object, (psFreeFunc)magicSkyfileMaskRowFree);
    24720 
    24721     _object->magic_id = magic_id;
    24722     _object->diff_id = diff_id;
    24723     _object->uri = psStringCopy(uri);
    24724 
    24725     return _object;
    24726 }
    24727 
    24728 static void magicSkyfileMaskRowFree(magicSkyfileMaskRow *object)
    24729 {
    24730     psFree(object->uri);
    24731 }
    24732 
    24733 bool magicSkyfileMaskCreateTable(psDB *dbh)
    24734 {
    24735     psMetadata *md = psMetadataAlloc();
    24736     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, "Primary Key fkey(magic_id) ref magicRun(magic_id)", 0)) {
    24737         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    24738         psFree(md);
    24739         return false;
    24740     }
    24741     if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, "Primary Key fkey(magic_id, diff_id) ref magicInputSkyfile(magic_id, diff_id)", 0)) {
    24742         psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
    24743         psFree(md);
    24744         return false;
    24745     }
    24746     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, "fkey(magic_id) ref magicMask(magic_id)", "255")) {
    24747         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    24748         psFree(md);
    24749         return false;
    24750     }
    24751 
    24752     bool status = psDBCreateTable(dbh, MAGICSKYFILEMASK_TABLE_NAME, md);
    24753 
    24754     psFree(md);
    24755 
    24756     return status;
    24757 }
    24758 
    24759 bool magicSkyfileMaskDropTable(psDB *dbh)
    24760 {
    24761     return psDBDropTable(dbh, MAGICSKYFILEMASK_TABLE_NAME);
    24762 }
    24763 
    24764 bool magicSkyfileMaskInsert(psDB * dbh, psS64 magic_id, psS64 diff_id, const char *uri)
    24765 {
    24766     psMetadata *md = psMetadataAlloc();
    24767     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, magic_id)) {
    24768         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    24769         psFree(md);
    24770         return false;
    24771     }
    24772     if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, diff_id)) {
    24773         psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
    24774         psFree(md);
    24775         return false;
    24776     }
    24777     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, uri)) {
    24778         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    24779         psFree(md);
    24780         return false;
    24781     }
    24782 
    24783     bool status = psDBInsertOneRow(dbh, MAGICSKYFILEMASK_TABLE_NAME, md);
    24784     psFree(md);
    24785 
    24786     return status;
    24787 }
    24788 
    24789 long long magicSkyfileMaskDelete(psDB *dbh, const psMetadata *where, unsigned long long limit)
    24790 {
    24791     long long       deleted = 0;
    24792 
    24793     long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
    24794     if (count < 0) {
    24795         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");
    24796         return count;
    24797 
    24798         deleted += count;
    24799     }
    24800 
    24801     return deleted;
    24802 }
    24803 bool magicSkyfileMaskInsertObject(psDB *dbh, magicSkyfileMaskRow *object)
    24804 {
    24805     return magicSkyfileMaskInsert(dbh, object->magic_id, object->diff_id, object->uri);
    24806 }
    24807 
    24808 bool magicSkyfileMaskInsertObjects(psDB *dbh, psArray *objects)
    24809 {
    24810     for (long i = 0; i < psArrayLength(objects); i++) {
    24811         if (!magicSkyfileMaskInsertObject(dbh, objects->data[i])) {
    24812             return false;
    24813         }
    24814     }
    24815 
    24816     return true;
    24817 }
    24818 
    24819 bool magicSkyfileMaskInsertFits(psDB *dbh, const psFits *fits)
    24820 {
    24821     psArray         *rowSet;
    24822 
    24823     // move to (the first?) extension named  MAGICSKYFILEMASK_TABLE_NAME
    24824     if (!psFitsMoveExtName(fits, MAGICSKYFILEMASK_TABLE_NAME)) {
    24825         psError(PS_ERR_UNKNOWN, true, "failed to find FITS extension %s", MAGICSKYFILEMASK_TABLE_NAME);
    24826         return false;
    24827     }
    24828 
    24829     // check HDU type
    24830     if (psFitsGetExtType(fits) != PS_FITS_TYPE_BINARY_TABLE)  {
    24831         psError(PS_ERR_UNKNOWN, true, "FITS HDU type is not PS_FITS_TYPE_BINARY_TABLE");
    24832         return false;
    24833     }
    24834 
    24835     // read fits table
    24836     rowSet = psFitsReadTable(fits);
    24837     if (!rowSet) {
    24838         psError(PS_ERR_UNKNOWN, true, "FITS read error or FITS table is empty");
    24839         psFree(rowSet);
    24840         return false;
    24841     }
    24842 
    24843     if (!psDBInsertRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, rowSet)) {
    24844         psError(PS_ERR_UNKNOWN, false, "databse insert failed");
    24845         psFree(rowSet);
    24846         return false;
    24847     }
    24848 
    24849     psFree(rowSet);
    24850 
    24851     return true;
    24852 }
    24853 
    24854 bool magicSkyfileMaskSelectRowsFits(psDB *dbh, psFits *fits, const psMetadata *where, unsigned long long limit)
    24855 {
    24856     psArray         *rowSet;
    24857 
    24858     rowSet = psDBSelectRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
    24859     if (!rowSet) {
    24860         return false;
    24861     }
    24862 
    24863     // output to fits
    24864     if (!psFitsWriteTable(fits, NULL, rowSet, MAGICSKYFILEMASK_TABLE_NAME)) {
    24865         psError(PS_ERR_UNKNOWN, false, "FITS table write failed");
    24866         psFree(rowSet);
    24867         return false;
    24868     }
    24869 
    24870     psFree(rowSet);
    24871 
    24872     return true;
    24873 }
    24874 
    24875 psMetadata *magicSkyfileMaskMetadataFromObject(const magicSkyfileMaskRow *object)
    24876 {
    24877     psMetadata *md = psMetadataAlloc();
    24878     if (!psMetadataAdd(md, PS_LIST_TAIL, "magic_id", PS_DATA_S64, NULL, object->magic_id)) {
    24879         psError(PS_ERR_UNKNOWN, false, "failed to add item magic_id");
    24880         psFree(md);
    24881         return false;
    24882     }
    24883     if (!psMetadataAdd(md, PS_LIST_TAIL, "diff_id", PS_DATA_S64, NULL, object->diff_id)) {
    24884         psError(PS_ERR_UNKNOWN, false, "failed to add item diff_id");
    24885         psFree(md);
    24886         return false;
    24887     }
    24888     if (!psMetadataAdd(md, PS_LIST_TAIL, "uri", PS_DATA_STRING, NULL, object->uri)) {
    24889         psError(PS_ERR_UNKNOWN, false, "failed to add item uri");
    24890         psFree(md);
    24891         return false;
    24892     }
    24893 
    24894 
    24895     return md;
    24896 }
    24897 
    24898 magicSkyfileMaskRow *magicSkyfileMaskObjectFromMetadata(psMetadata *md)
    24899 {
    24900 
    24901 bool status = false;
    24902     psS64 magic_id = psMetadataLookupS64(&status, md, "magic_id");
    24903     if (!status) {
    24904         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item magic_id");
    24905         return false;
    24906     }
    24907     psS64 diff_id = psMetadataLookupS64(&status, md, "diff_id");
    24908     if (!status) {
    24909         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item diff_id");
    24910         return false;
    24911     }
    24912     char* uri = psMetadataLookupPtr(&status, md, "uri");
    24913     if (!status) {
    24914         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item uri");
    24915         return false;
    24916     }
    24917 
    24918     return magicSkyfileMaskRowAlloc(magic_id, diff_id, uri);
    24919 }
    24920 psArray *magicSkyfileMaskSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
    24921 {
    24922     psArray         *rowSet;
    24923     psArray         *returnSet;
    24924     psU64           i;
    24925 
    24926     rowSet = psDBSelectRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
    24927     if (!rowSet) {
    24928         return NULL;
    24929     }
    24930 
    24931     // convert psMetadata rows to row objects
    24932 
    24933     returnSet = psArrayAllocEmpty(rowSet->n);
    24934 
    24935     for (i = 0; i < rowSet->n; i++) {
    24936         magicSkyfileMaskRow *object = magicSkyfileMaskObjectFromMetadata(rowSet->data[i]);
    24937         if (!object) {
    24938             psFree(object);
    24939             psFree(returnSet);
    24940             psError(PS_ERR_UNKNOWN, false, "database error");
    24941             return NULL;
    24942         }
    24943         psArrayAdd(returnSet, 0, object);
    24944         psFree(object);
    24945     }
    24946 
    24947     psFree(rowSet);
    24948 
    24949     return returnSet;
    24950 }
    24951 bool magicSkyfileMaskDeleteObject(psDB *dbh, const magicSkyfileMaskRow *object)
    24952 {
    24953     psMetadata *where = magicSkyfileMaskMetadataFromObject(object);
    24954     long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, 0);
    24955     psFree(where);
    24956     if (count < 0) {
    24957         psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");
    24958         return false;
    24959     }
    24960     if (count > 1) {
    24961         // XXX should this be a psAbort() instead?  It is possible that
    24962         // having an object match multiple rows was by design.
    24963         psError(PS_ERR_UNKNOWN, true, "magicSkyfileMaskRow object matched more then one row.  Check your database schema");
    24964         return false;
    24965     }
    24966 
    24967     return true;
    24968 }
    24969 long long magicSkyfileMaskDeleteRowObjects(psDB *dbh, const psArray *objects, unsigned long long limit)
    24970 {
    24971     long long       deleted = 0;
    24972 
    24973     for (long long i = 0; i < objects->n; i++) {
    24974         magicSkyfileMaskRow *object = objects->data[i];
    24975         psMetadata *where = magicSkyfileMaskMetadataFromObject(object);
    24976         long long count = psDBDeleteRows(dbh, MAGICSKYFILEMASK_TABLE_NAME, where, limit);
    24977         psFree(where);
    24978         if (count < 0) {
    24979             psError(PS_ERR_UNKNOWN, true, "failed to delete row from magicSkyfileMask");
    24980             return count;
    24981         }
    24982 
    24983         deleted += count;
    24984     }
    24985 
    24986     return deleted;
    24987 }
    24988 bool magicSkyfileMaskPrintObjects(FILE *stream, psArray *objects, bool mdcf)
    24989 {
    24990     PS_ASSERT_PTR_NON_NULL(objects, false);
    24991 
    24992     psMetadata *output = psMetadataAlloc();
    24993     for (long i = 0; i < psArrayLength(objects); i++) {
    24994         psMetadata *md = magicSkyfileMaskMetadataFromObject(objects->data[i]);
    24995         if (!psMetadataAddMetadata(
    24996             output,
    24997             PS_LIST_TAIL,
    24998             MAGICSKYFILEMASK_TABLE_NAME,
    24999             PS_META_DUPLICATE_OK,
    25000             NULL,
    25001             md
    25002         )) {
    25003             psError(PS_ERR_UNKNOWN, false, "failed to add metadata");
    25004             psFree(md);
    25005             psFree(output);
    25006             return false;
    25007         }
    25008         psFree(md);
    25009     }
    25010 
    25011     if (!ippdbPrintMetadataRaw(stream, output, mdcf)) {
    25012         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    25013         psFree(output);
    25014     }
    25015     psFree(output);
    25016 
    25017     return true;
    25018 }
    25019 bool magicSkyfileMaskPrintObject(FILE *stream, magicSkyfileMaskRow *object, bool mdcf)
    25020 {
    25021     PS_ASSERT_PTR_NON_NULL(object, false);
    25022 
    25023     psMetadata *md = magicSkyfileMaskMetadataFromObject(object);
    25024 
    25025     if (!ippdbPrintMetadataRaw(stream, md, mdcf)) {
    25026         psError(PS_ERR_UNKNOWN, false, "failed to print metadata");
    25027         psFree(md);
    25028     }
    25029 
    25030     psFree(md);
    25031 
    25032     return true;
    25033 }
    2503424817static void calDBRowFree(calDBRow *object);
    2503524818
     
    2647726260        return false;
    2647826261    }
    26479     if (!psMetadataAdd(md, PS_LIST_TAIL, "outProduct", PS_DATA_STRING, "UNIQUE", "64")) {
     26262    if (!psMetadataAdd(md, PS_LIST_TAIL, "outProduct", PS_DATA_STRING, NULL, "64")) {
    2648026263        psError(PS_ERR_UNKNOWN, false, "failed to add item outProduct");
    2648126264        psFree(md);
     
    2680226585static void pstampRequestRowFree(pstampRequestRow *object);
    2680326586
    26804 pstampRequestRow *pstampRequestRowAlloc(psS64 req_id, psS64 ds_id, const char *state, const char *outFileset, const char *uri, psS16 resultsFile)
     26587pstampRequestRow *pstampRequestRowAlloc(psS64 req_id, psS64 ds_id, const char *state, const char *name, const char *reqType, const char *outProduct, const char *uri, psS32 fault)
    2680526588{
    2680626589    pstampRequestRow *_object;
     
    2681226595    _object->ds_id = ds_id;
    2681326596    _object->state = psStringCopy(state);
    26814     _object->outFileset = psStringCopy(outFileset);
     26597    _object->name = psStringCopy(name);
     26598    _object->reqType = psStringCopy(reqType);
     26599    _object->outProduct = psStringCopy(outProduct);
    2681526600    _object->uri = psStringCopy(uri);
    26816     _object->resultsFile = resultsFile;
     26601    _object->fault = fault;
    2681726602
    2681826603    return _object;
     
    2682226607{
    2682326608    psFree(object->state);
    26824     psFree(object->outFileset);
     26609    psFree(object->name);
     26610    psFree(object->reqType);
     26611    psFree(object->outProduct);
    2682526612    psFree(object->uri);
    2682626613}
     
    2684426631        return false;
    2684526632    }
    26846     if (!psMetadataAdd(md, PS_LIST_TAIL, "outFileset", PS_DATA_STRING, "UNIQUE", "64")) {
    26847         psError(PS_ERR_UNKNOWN, false, "failed to add item outFileset");
     26633    if (!psMetadataAdd(md, PS_LIST_TAIL, "name", PS_DATA_STRING, "UNIQUE", "64")) {
     26634        psError(PS_ERR_UNKNOWN, false, "failed to add item name");
     26635        psFree(md);
     26636        return false;
     26637    }
     26638    if (!psMetadataAdd(md, PS_LIST_TAIL, "reqType", PS_DATA_STRING, NULL, "16")) {
     26639        psError(PS_ERR_UNKNOWN, false, "failed to add item reqType");
     26640        psFree(md);
     26641        return false;
     26642    }
     26643    if (!psMetadataAdd(md, PS_LIST_TAIL, "outProduct", PS_DATA_STRING, NULL, "64")) {
     26644        psError(PS_ERR_UNKNOWN, false, "failed to add item outProduct");
    2684826645        psFree(md);
    2684926646        return false;
     
    2685426651        return false;
    2685526652    }
    26856     if (!psMetadataAdd(md, PS_LIST_TAIL, "resultsFile", PS_DATA_S16, NULL, 0)) {
    26857         psError(PS_ERR_UNKNOWN, false, "failed to add item resultsFile");
     26653    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, 0)) {
     26654        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    2685826655        psFree(md);
    2685926656        return false;
     
    2687226669}
    2687326670
    26874 bool pstampRequestInsert(psDB * dbh, psS64 req_id, psS64 ds_id, const char *state, const char *outFileset, const char *uri, psS16 resultsFile)
     26671bool pstampRequestInsert(psDB * dbh, psS64 req_id, psS64 ds_id, const char *state, const char *name, const char *reqType, const char *outProduct, const char *uri, psS32 fault)
    2687526672{
    2687626673    psMetadata *md = psMetadataAlloc();
     
    2689026687        return false;
    2689126688    }
    26892     if (!psMetadataAdd(md, PS_LIST_TAIL, "outFileset", PS_DATA_STRING, NULL, outFileset)) {
    26893         psError(PS_ERR_UNKNOWN, false, "failed to add item outFileset");
     26689    if (!psMetadataAdd(md, PS_LIST_TAIL, "name", PS_DATA_STRING, NULL, name)) {
     26690        psError(PS_ERR_UNKNOWN, false, "failed to add item name");
     26691        psFree(md);
     26692        return false;
     26693    }
     26694    if (!psMetadataAdd(md, PS_LIST_TAIL, "reqType", PS_DATA_STRING, NULL, reqType)) {
     26695        psError(PS_ERR_UNKNOWN, false, "failed to add item reqType");
     26696        psFree(md);
     26697        return false;
     26698    }
     26699    if (!psMetadataAdd(md, PS_LIST_TAIL, "outProduct", PS_DATA_STRING, NULL, outProduct)) {
     26700        psError(PS_ERR_UNKNOWN, false, "failed to add item outProduct");
    2689426701        psFree(md);
    2689526702        return false;
     
    2690026707        return false;
    2690126708    }
    26902     if (!psMetadataAdd(md, PS_LIST_TAIL, "resultsFile", PS_DATA_S16, NULL, resultsFile)) {
    26903         psError(PS_ERR_UNKNOWN, false, "failed to add item resultsFile");
     26709    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, fault)) {
     26710        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    2690426711        psFree(md);
    2690526712        return false;
     
    2692826735bool pstampRequestInsertObject(psDB *dbh, pstampRequestRow *object)
    2692926736{
    26930     return pstampRequestInsert(dbh, object->req_id, object->ds_id, object->state, object->outFileset, object->uri, object->resultsFile);
     26737    return pstampRequestInsert(dbh, object->req_id, object->ds_id, object->state, object->name, object->reqType, object->outProduct, object->uri, object->fault);
    2693126738}
    2693226739
     
    2701626823        return false;
    2701726824    }
    27018     if (!psMetadataAdd(md, PS_LIST_TAIL, "outFileset", PS_DATA_STRING, NULL, object->outFileset)) {
    27019         psError(PS_ERR_UNKNOWN, false, "failed to add item outFileset");
     26825    if (!psMetadataAdd(md, PS_LIST_TAIL, "name", PS_DATA_STRING, NULL, object->name)) {
     26826        psError(PS_ERR_UNKNOWN, false, "failed to add item name");
     26827        psFree(md);
     26828        return false;
     26829    }
     26830    if (!psMetadataAdd(md, PS_LIST_TAIL, "reqType", PS_DATA_STRING, NULL, object->reqType)) {
     26831        psError(PS_ERR_UNKNOWN, false, "failed to add item reqType");
     26832        psFree(md);
     26833        return false;
     26834    }
     26835    if (!psMetadataAdd(md, PS_LIST_TAIL, "outProduct", PS_DATA_STRING, NULL, object->outProduct)) {
     26836        psError(PS_ERR_UNKNOWN, false, "failed to add item outProduct");
    2702026837        psFree(md);
    2702126838        return false;
     
    2702626843        return false;
    2702726844    }
    27028     if (!psMetadataAdd(md, PS_LIST_TAIL, "resultsFile", PS_DATA_S16, NULL, object->resultsFile)) {
    27029         psError(PS_ERR_UNKNOWN, false, "failed to add item resultsFile");
     26845    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, object->fault)) {
     26846        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    2703026847        psFree(md);
    2703126848        return false;
     
    2705526872        return false;
    2705626873    }
    27057     char* outFileset = psMetadataLookupPtr(&status, md, "outFileset");
    27058     if (!status) {
    27059         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item outFileset");
     26874    char* name = psMetadataLookupPtr(&status, md, "name");
     26875    if (!status) {
     26876        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item name");
     26877        return false;
     26878    }
     26879    char* reqType = psMetadataLookupPtr(&status, md, "reqType");
     26880    if (!status) {
     26881        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item reqType");
     26882        return false;
     26883    }
     26884    char* outProduct = psMetadataLookupPtr(&status, md, "outProduct");
     26885    if (!status) {
     26886        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item outProduct");
    2706026887        return false;
    2706126888    }
     
    2706526892        return false;
    2706626893    }
    27067     psS16 resultsFile = psMetadataLookupS16(&status, md, "resultsFile");
    27068     if (!status) {
    27069         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item resultsFile");
    27070         return false;
    27071     }
    27072 
    27073     return pstampRequestRowAlloc(req_id, ds_id, state, outFileset, uri, resultsFile);
     26894    psS32 fault = psMetadataLookupS32(&status, md, "fault");
     26895    if (!status) {
     26896        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
     26897        return false;
     26898    }
     26899
     26900    return pstampRequestRowAlloc(req_id, ds_id, state, name, reqType, outProduct, uri, fault);
    2707426901}
    2707526902psArray *pstampRequestSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
     
    2718927016static void pstampJobRowFree(pstampJobRow *object);
    2719027017
    27191 pstampJobRow *pstampJobRowAlloc(psS64 job_id, psS64 req_id, const char *state, const char *jobType, psS32 result, const char *uri, const char *outputBase, const char *args)
     27018pstampJobRow *pstampJobRowAlloc(psS64 job_id, psS64 req_id, const char *rownum, const char *state, const char *jobType, psS32 fault, const char *uri, const char *outputBase, const char *args)
    2719227019{
    2719327020    pstampJobRow    *_object;
     
    2719827025    _object->job_id = job_id;
    2719927026    _object->req_id = req_id;
     27027    _object->rownum = psStringCopy(rownum);
    2720027028    _object->state = psStringCopy(state);
    2720127029    _object->jobType = psStringCopy(jobType);
    27202     _object->result = result;
     27030    _object->fault = fault;
    2720327031    _object->uri = psStringCopy(uri);
    2720427032    _object->outputBase = psStringCopy(outputBase);
     
    2721027038static void pstampJobRowFree(pstampJobRow *object)
    2721127039{
     27040    psFree(object->rownum);
    2721227041    psFree(object->state);
    2721327042    psFree(object->jobType);
     
    2723027059        return false;
    2723127060    }
     27061    if (!psMetadataAdd(md, PS_LIST_TAIL, "rownum", PS_DATA_STRING, NULL, "64")) {
     27062        psError(PS_ERR_UNKNOWN, false, "failed to add item rownum");
     27063        psFree(md);
     27064        return false;
     27065    }
    2723227066    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, "64")) {
    2723327067        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     
    2724027074        return false;
    2724127075    }
    27242     if (!psMetadataAdd(md, PS_LIST_TAIL, "result", PS_DATA_S32, NULL, 0)) {
    27243         psError(PS_ERR_UNKNOWN, false, "failed to add item result");
     27076    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, 0)) {
     27077        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    2724427078        psFree(md);
    2724527079        return false;
     
    2727327107}
    2727427108
    27275 bool pstampJobInsert(psDB * dbh, psS64 job_id, psS64 req_id, const char *state, const char *jobType, psS32 result, const char *uri, const char *outputBase, const char *args)
     27109bool pstampJobInsert(psDB * dbh, psS64 job_id, psS64 req_id, const char *rownum, const char *state, const char *jobType, psS32 fault, const char *uri, const char *outputBase, const char *args)
    2727627110{
    2727727111    psMetadata *md = psMetadataAlloc();
     
    2728627120        return false;
    2728727121    }
     27122    if (!psMetadataAdd(md, PS_LIST_TAIL, "rownum", PS_DATA_STRING, NULL, rownum)) {
     27123        psError(PS_ERR_UNKNOWN, false, "failed to add item rownum");
     27124        psFree(md);
     27125        return false;
     27126    }
    2728827127    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, state)) {
    2728927128        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     
    2729627135        return false;
    2729727136    }
    27298     if (!psMetadataAdd(md, PS_LIST_TAIL, "result", PS_DATA_S32, NULL, result)) {
    27299         psError(PS_ERR_UNKNOWN, false, "failed to add item result");
     27137    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, fault)) {
     27138        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    2730027139        psFree(md);
    2730127140        return false;
     
    2733927178bool pstampJobInsertObject(psDB *dbh, pstampJobRow *object)
    2734027179{
    27341     return pstampJobInsert(dbh, object->job_id, object->req_id, object->state, object->jobType, object->result, object->uri, object->outputBase, object->args);
     27180    return pstampJobInsert(dbh, object->job_id, object->req_id, object->rownum, object->state, object->jobType, object->fault, object->uri, object->outputBase, object->args);
    2734227181}
    2734327182
     
    2742227261        return false;
    2742327262    }
     27263    if (!psMetadataAdd(md, PS_LIST_TAIL, "rownum", PS_DATA_STRING, NULL, object->rownum)) {
     27264        psError(PS_ERR_UNKNOWN, false, "failed to add item rownum");
     27265        psFree(md);
     27266        return false;
     27267    }
    2742427268    if (!psMetadataAdd(md, PS_LIST_TAIL, "state", PS_DATA_STRING, NULL, object->state)) {
    2742527269        psError(PS_ERR_UNKNOWN, false, "failed to add item state");
     
    2743227276        return false;
    2743327277    }
    27434     if (!psMetadataAdd(md, PS_LIST_TAIL, "result", PS_DATA_S32, NULL, object->result)) {
    27435         psError(PS_ERR_UNKNOWN, false, "failed to add item result");
     27278    if (!psMetadataAdd(md, PS_LIST_TAIL, "fault", PS_DATA_S32, NULL, object->fault)) {
     27279        psError(PS_ERR_UNKNOWN, false, "failed to add item fault");
    2743627280        psFree(md);
    2743727281        return false;
     
    2747127315        return false;
    2747227316    }
     27317    char* rownum = psMetadataLookupPtr(&status, md, "rownum");
     27318    if (!status) {
     27319        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item rownum");
     27320        return false;
     27321    }
    2747327322    char* state = psMetadataLookupPtr(&status, md, "state");
    2747427323    if (!status) {
     
    2748127330        return false;
    2748227331    }
    27483     psS32 result = psMetadataLookupS32(&status, md, "result");
    27484     if (!status) {
    27485         psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item result");
     27332    psS32 fault = psMetadataLookupS32(&status, md, "fault");
     27333    if (!status) {
     27334        psError(PS_ERR_UNKNOWN, true, "failed to lookup value for item fault");
    2748627335        return false;
    2748727336    }
     
    2750227351    }
    2750327352
    27504     return pstampJobRowAlloc(job_id, req_id, state, jobType, result, uri, outputBase, args);
     27353    return pstampJobRowAlloc(job_id, req_id, rownum, state, jobType, fault, uri, outputBase, args);
    2750527354}
    2750627355psArray *pstampJobSelectRowObjects(psDB *dbh, const psMetadata *where, unsigned long long limit)
Note: See TracChangeset for help on using the changeset viewer.