#ifndef ALI_SURVEY_OBJ_H
#define ALI_SURVEY_OBJ_H
#include <TObject.h>
#include <TString.h>
#include <TObjArray.h>
class AliSurveyPoint;
class TGridResult;
class AliSurveyObj: public TObject {
public:
AliSurveyObj();
~AliSurveyObj();
Bool_t FillFromLocalFile(const Char_t* filename);
Bool_t Fill(TString detector, Int_t reportNumber,
Int_t reportVersion, TString username = "");
Bool_t Fill(TString detector, Int_t reportNumber,
TString username = "");
static void ListValidDetectors();
Int_t ListReports(TString detector = "", Int_t year = -1,
Int_t reportNumber = -1,
Int_t reportVersion = -1);
void SetGridUser(TString username);
Int_t GetEntries() const {return fDataPoints->GetEntries();};
TString GetReportTitle() const {return fTitle;};
TString GetReportDate() const {return fDate;};
TString GetDetector() const {return fDetector;};
TString GetURL() const {return fURL;};
Int_t GetReportNumber() const {return fReportNr;};
Int_t GetReportVersion() const {return fVersion;};
TString GetObservations() const {return fObs;};
TString GetCoordSys() const {return fCoordSys;};
TString GetUnits() const {return fUnits;};
Int_t GetNrColumns() const {return fNrColumns;};
TObjArray *GetColumnNames() const {return fColNames.Tokenize(',');};
TObjArray *GetData() const {return fDataPoints;};
Bool_t IsValid() const {return fIsValid;};
private:
TString fTitle;
TString fDate;
TString fDetector;
TString fURL;
Int_t fReportNr;
Int_t fVersion;
TString fObs;
TString fCoordSys;
TString fUnits;
Int_t fNrColumns;
TString fColNames;
Bool_t fIsValid;
TString fGridUser;
TObjArray *fDataPoints;
static const TString fgkStorage;
static const TString fgkBaseFolder;
static const TString fgkValidDetectors;
static const TString fgkGRPDetectors;
static const TString fgkMUONDetectors;
Bool_t Connect(const char *gridUrl, const char *user);
Bool_t OpenFile(TString openString);
TString &Sanitize(TString str);
Bool_t ParseBuffer(const Char_t* buf);
void Reset();
Bool_t IsValidDetector(TString detector) const;
TString RealFolderName(TString detector) const;
TString FileNamePathToDetector(TString filename) const;
Int_t FileNamePathToReportYear(TString filename) const;
Int_t FileNamePathToReportNumber(TString filename) const;
Int_t FileNamePathToReportVersion(TString filename) const;
TGridResult *QueryReports(TString detector, Int_t year,
Int_t reportNumber, Int_t reportVersion);
AliSurveyObj (const AliSurveyObj& surveyObj);
AliSurveyObj& operator=(const AliSurveyObj& surveyObj);
void AddPoint(AliSurveyPoint* point);
ClassDef(AliSurveyObj, 1);
};
#endif