9 #include "KVDataSetManager.h"
10 #include "KVDataRepositoryManager.h"
22 #define CHMODE(u,g,o) ((u << 6) + (g << 3) + o)
48 KVDataSetManager::~KVDataSetManager()
87 if (!ReadDataSetList())
98 if (dr) fCacheFileName.Form(
"%s.available.datasets", dr->
GetName());
108 if (GetNavailable()) {
109 for (
Int_t i = 1; i <= GetNavailable(); i++)
110 GetAvailableDataSet(i)->SetAnalysisTasks(&fTasks);
114 if (!dr) gDataSetManager =
this;
140 TIter next_name(toks);
142 while ((group_name = (
TObjString*) next_name())) {
148 fUserGroups.SetValue(group_name->
String().
Data(), users);
203 task_list.
Begin(
" ");
204 while (!task_list.
End()) {
242 cout <<
" *** No available datasets ***" <<
247 for (
int i = 1; i <= fNavailable; i++) {
249 cout <<
"\t" << i <<
". " << ds->
GetTitle() << endl;
254 if (fDataSets.GetSize()) {
255 TIter next(&fDataSets);
309 if (fCacheAvailable) {
311 if (CheckCacheStatus()) {
313 if (ReadAvailableDatasetsFile())
return;
318 if (fRepository) fRepository->PrintAvailableDatasetsUpdateWarning();
322 TString tmp_file_path = fCacheFileName;
326 if (fDataSets.GetSize()) {
327 TIter next(&fDataSets);
336 tmp_file << ds->
GetName() <<
" : ";
349 if (fNavailable && fRepository) {
362 ReadAvailableDatasetsFile();
388 if (fDataSets.GetSize() &&
index < fDataSets.GetSize())
416 if (fNavailable &&
index &&
index <= fNavailable)
444 TString Username = strcmp(username,
448 if (fUserGroups.HasParameter(groupname)) {
449 if (fUserGroups.GetTStringValue(groupname).Contains(Username.
Data()))
484 if (GetNavailable()) {
485 for (
Int_t i = 1; i <= GetNavailable(); i++)
486 GetAvailableDataSet(i)->SetAnalysisTasks(&fTasks);
524 if (OpenAvailableDatasetsFile()) {
525 Info(
"ReadAvailableDataSetsFile",
526 "Reading cached information in file %s", fCacheFileName.Data());
529 line.ReadLine(fDatasets);
530 while (fDatasets.good()) {
544 for (
int i = 1; i < toks->
GetEntries(); i++) {
557 line.ReadLine(fDatasets);
565 TIter next(&fDataSets);
599 Info(
"KVDataSetManager::CheckCacheStatus",
"Checking for available datasets cache file...");
608 Info(
"KVDataSetManager::CheckCacheStatus",
"...file found. It is %u seconds old", file_age);
609 if (file_age < fMaxCacheTime) {
610 Info(
"KVDataSetManager::CheckCacheStatus",
"Using cached file");
614 Info(
"KVDataSetManager::CheckCacheStatus",
"File is too old (max time=%u). Update will be performed.", fMaxCacheTime);
617 Info(
"KVDataSetManager::CheckCacheStatus",
"...no file found");
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
static void OpenTempFile(TString &base, std::ofstream &fp)
static const Char_t * GetWORKDIRFilePath(const Char_t *namefile="")
static Bool_t SearchKVFile(const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
static Bool_t SearchAndOpenKVFile(const Char_t *name, KVSQLite::database &dbfile, const Char_t *kvsubdir="")
Define and manage data analysis tasks.
virtual void SetDataAnalyser(const Char_t *d)
void SetOutputDataType(const KVString &p)
virtual void SetPrereq(const Char_t *p)
virtual void SetStatusUpdateInterval(Long64_t n)
virtual void SetUserBaseClass(const Char_t *d)
virtual void SetWithUserClass(Bool_t w=kTRUE)
Base class for managing repositories of experimental data.
virtual Bool_t IsRemote() const
Returns kTRUE for remote repositories, kFALSE for local repositories.
Manage all datasets contained in a given data repository.
virtual void Print(Option_t *opt="") const
virtual void ReadUserGroups()
virtual Bool_t ReadDataSetList()
virtual Bool_t Init(KVDataRepository *=0)
KVDataAnalysisTask * GetAnalysisTaskAny(const Char_t *keywords) const
virtual Bool_t OpenAvailableDatasetsFile()
virtual Bool_t CheckCacheStatus()
virtual Bool_t ReadAvailableDatasetsFile()
virtual Bool_t CheckUser(const Char_t *groupname, const Char_t *username="")
virtual KVDataAnalysisTask * GetTask(const Char_t *name)
Return pointer to named data analysis task.
KVDataSet * GetDataSet(Int_t) const
Return pointer to DataSet using index in list of all datasets, index>=0.
virtual KVDataSet * NewDataSet()
Creates and returns pointer to new data set object.
virtual Bool_t ReadTaskList()
virtual void CheckAvailability()
virtual KVDataSet * GetAvailableDataSet(Int_t) const
Manage an experimental dataset corresponding to a given experiment or campaign.
virtual void SetUserGroups(const Char_t *groups)
void ls(Option_t *opt="") const override
Print dataset information.
virtual void SetDataPathSubdir(const Char_t *s)
virtual const Char_t * GetAvailableDataTypes() const
virtual void AddAvailableDataType(const Char_t *)
virtual void CheckAvailable()
virtual Bool_t IsAvailable() const
virtual void SetAvailable(Bool_t yes=kTRUE)
void SetName(const char *name) override
virtual Bool_t CheckUserCanAccess()
void SetRepository(KVDataRepository *)
Set pointer to data repository in which dataset is stored.
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
void Begin(TString delim) const
KVString Next(Bool_t strip_whitespace=kFALSE) const
UInt_t Convert(Bool_t toGMT=kFALSE) const
virtual const char * GetValue(const char *name, const char *dflt) const
virtual void SetTitle(const char *title="")
const char * GetName() const override
const char * GetTitle() const override
virtual void SetName(const char *name)
Int_t GetEntries() const override
TObject * At(Int_t idx) const override
const TString & GetString() const
const char * Data() const
TObjArray * Tokenize(const TString &delim) const
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
virtual int Chmod(const char *file, UInt_t mode)
virtual int CopyFile(const char *from, const char *to, Bool_t overwrite=kFALSE)
virtual int GetPathInfo(const char *path, FileStat_t &buf)
virtual UserGroup_t * GetUserInfo(const char *user=nullptr)
virtual int Unlink(const char *name)