#ifndef ALIXMLCOLLECTION_H
#define ALIXMLCOLLECTION_H
#include <TObject.h>
#include "TGridCollection.h"
#include <Riostream.h>
#include <TString.h>
class TMap;
class TIter;
class TEntryList;
using std::ofstream;
class AliXMLCollection : public TGridCollection {
public:
AliXMLCollection();
AliXMLCollection(const char *localCollectionFile);
AliXMLCollection(const AliXMLCollection& collection);
virtual ~AliXMLCollection();
Bool_t WriteHeader();
Bool_t WriteSummary(Int_t aTotal, Int_t aAccepted, Int_t aRejRun, Int_t aRejLHC, Int_t aRejDet, Int_t aRejEvt);
Bool_t WriteBody(Int_t counter, const char* guid, const char *lfn, const char *turl, TEntryList *fEntryList);
Bool_t WriteBody(Int_t counter, const char* guid, const char *lfn, const char *turl, TEntryList *fEntryListm, Int_t accSum, Int_t rejSum);
Bool_t Export();
void SetCollectionName(const char* name) {fCollectionName = name;}
const char* GetCollectionName() const {return fCollectionName.Data();}
void Reset();
TMap *Next();
Bool_t Remove(TMap *map);
const char *GetTURL(const char *name);
const char *GetLFN(const char *name);
const char *GetGUID(const char *name);
const char *GetCutSumm();
TEntryList *GetEventList(const char *filename) const;
TEntryList *GetEntryList(const char *filename) { return GetEventList(filename); }
Bool_t OverlapCollection(TGridCollection * comparator);
Bool_t GetCollectionSummary(Int_t *aTot, Int_t *aAcc, Int_t *aRejRun, Int_t *aRejLHC, Int_t *aRejDet, Int_t *aRejEvt) const;
static AliXMLCollection *Open(const char *localcollectionfile);
protected:
virtual void ParseXML();
TString fXmlFile;
TList *fEventList;
TIter *fEventListIter;
TMap *fCurrent;
TString fCollectionName;
ofstream fout;
Int_t fTotalEvents;
Int_t fAcceptedEvents;
Int_t fRejectedRun;
Int_t fRejectedLHC;
Int_t fRejectedDet;
Int_t fRejectedEvt;
AliXMLCollection & operator=(const AliXMLCollection & ) {return *this;}
ClassDef(AliXMLCollection,0)
};
#endif