IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 14, 2006, 3:58:46 PM (20 years ago)
Author:
Paul Price
Message:

Adding option of outputting concepts in addition to headers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppStats/src/ppStatsLoop.c

    r7903 r7910  
    66
    77
    8 static void getHeaders(psMetadata *target, // Target for headers
    9                        psMetadata *source, // Source header
    10                        psListIterator *keywordsIter // Iterator for header keywords
     8static void getMetadata(psMetadata *target, // Target for metadata
     9                        psMetadata *source, // Source for metadata
     10                        psListIterator *iterator // Iterator for keywords
    1111    )
    1212{
    13     psListIteratorSet(keywordsIter, PS_LIST_HEAD);
    14     psString keyword;                    // Header from iteration
    15     while ((keyword = psListGetAndIncrement(keywordsIter))) {
    16         psMetadataAddItem(target, psMetadataLookup(source, keyword), PS_LIST_TAIL, 0);
     13    psListIteratorSet(iterator, PS_LIST_HEAD);
     14    psString name;                      // Name from iteration
     15    while ((name = psListGetAndIncrement(iterator))) {
     16        psMetadataItem *item = psMetadataLookup(source, name); // Item of interest, or NULL
     17        if (item) {
     18            psMetadataAddItem(target, item, PS_LIST_TAIL, 0);
     19        }
    1720    }
    1821    return;
     
    2629    psMetadata *fpaResults = psMetadataAlloc(); // Metadata to hold the FPA results
    2730
    28     psListIterator *headersIter = psListIteratorAlloc(data->headers, PS_LIST_HEAD, false); // Headers iterator
    29 
     31    // Iterators for the headers and concepts
     32    psListIterator *headersIter = psListIteratorAlloc(data->headers, PS_LIST_HEAD, false); // Headers
     33    psListIterator *conceptsIter = psListIteratorAlloc(data->concepts, PS_LIST_HEAD, false); // Concepts
    3034
    3135    // Iterate through the FPA
     
    3337    if (psListLength(data->headers) > 0 && fpa->hdu && pmFPAReadHeader(fpa, data->inFile)) {
    3438        pmHDU *hdu = fpa->hdu;          // HDU for headers
    35         getHeaders(fpaResults, hdu->header, headersIter);
     39        getMetadata(fpaResults, hdu->header, headersIter);
     40    }
     41    if (psListLength(data->concepts) > 0 &&
     42        pmConceptsReadFPA(fpa, PM_CONCEPT_SOURCE_ALL, false, config->database)) {
     43        getMetadata(fpaResults, fpa->concepts, conceptsIter);
    3644    }
    3745
     
    4755        if (psListLength(data->headers) > 0 && chip->hdu && pmChipReadHeader(chip, data->inFile)) {
    4856            pmHDU *hdu = chip->hdu;     // HDU for headers
    49             getHeaders(chipResults, hdu->header, headersIter);
     57            getMetadata(chipResults, hdu->header, headersIter);
     58        }
     59        if (psListLength(data->concepts) > 0 &&
     60            pmConceptsReadChip(chip, PM_CONCEPT_SOURCE_ALL, false, false, config->database)) {
     61            getMetadata(chipResults, chip->concepts, conceptsIter);
    5062        }
    5163
     
    6173            if (psListLength(data->headers) > 0 && cell->hdu && pmCellReadHeader(cell, data->inFile)) {
    6274                pmHDU *hdu = cell->hdu;     // HDU for headers
    63                 getHeaders(cellResults, hdu->header, headersIter);
     75                getMetadata(cellResults, hdu->header, headersIter);
    6476                psMetadataAdd(chipResults, PS_LIST_TAIL, cellName, PS_DATA_METADATA,
    6577                              "Results for cell", cellResults);
     78            }
     79            if (psListLength(data->concepts) > 0 &&
     80                pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_ALL, false, config->database)) {
     81                getMetadata(cellResults, cell->concepts, conceptsIter);
    6682            }
    6783
     
    174190    pmFPAFreeData(fpa);
    175191    psFree(headersIter);
     192    psFree(conceptsIter);
    176193
    177194    psString output = psMetadataConfigFormat(fpaResults);
Note: See TracChangeset for help on using the changeset viewer.