Ignore:
Timestamp:
06/08/11 14:40:14 (13 years ago)
Author:
lyard
Message:
Fixed a bug with the update of Fits files and grouping of daily files
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/Fits.cc

    r10898 r10927  
    148148        {
    149149                string factTableName = "FACT-" + tableName;
    150                 fTable = fFile->addTable(factTableName, 0, allNames, allDataTypes, allUnits);
    151                 fTable->makeThisCurrent();
     150                //first, let's check if the table already exist in the file
     151                vector<string> tryToLoadName;
     152                tryToLoadName.push_back(factTableName);
     153                fFile->read(tryToLoadName);
     154            const multimap< string, CCfits::ExtHDU * >& extMap = fFile->extension();
     155            if (extMap.find(factTableName) == extMap.end())
     156            {
     157                for (multimap<string, CCfits::ExtHDU*>::const_iterator it=extMap.begin(); it!= extMap.end(); it++)
     158                    fMess->Debug(it->first);
     159                fTable = fFile->addTable(factTableName, 0, allNames, allDataTypes, allUnits);
     160            }
     161            else
     162            {
     163                fTable = dynamic_cast<CCfits::Table*>(extMap.find(factTableName)->second);
     164            }
     165            if (!fTable)
     166            {
     167                fMess->Error("The table " + factTableName + " could not be created nor loaded. skipping it");
     168                return;
     169            }
     170            fTable->makeThisCurrent();
    152171                fCopyBuffer = new unsigned char[fTotalNumBytes];
    153172                fNumRows = fTable->rows();
     
    178197                        updating = true;
    179198                }
     199
    180200        }
    181201        catch(CCfits::FitsException e)
     
    301321        WriteSingleHeaderKey("TSTOP", fEndMjD, "Time of the last receied data");
    302322        if (fFile != NULL && fOwner)
    303                 delete fFile;
     323        {
     324//          fFile->flush();
     325            delete fFile;
     326        }
    304327        fFile = NULL;
    305328        if (fCopyBuffer != NULL)
Note: See TracChangeset for help on using the changeset viewer.