00001 #ifndef GAUDIFILECATALOG_IFILECATALOG_H
00002 #define GAUDIFILECATALOG_IFILECATALOG_H
00003
00004
00005 #include "GaudiKernel/IInterface.h"
00006 #include <string>
00007 #include <vector>
00008 #include <utility>
00009
00010
00011 static const InterfaceID IID_IFileCatalog("IFileCatalog", 1, 0);
00012
00013
00014
00015
00016 namespace Gaudi {
00017
00027 class IFileCatalog : virtual public IInterface {
00028
00029 public:
00031 typedef std::pair<std::string,std::string> NamedItem;
00032 typedef std::vector<NamedItem> Attributes;
00033 typedef std::vector<NamedItem> Files;
00034 typedef std::vector<std::string> Strings;
00035
00036 public:
00038 static const InterfaceID& interfaceID() { return IID_IFileCatalog; }
00040
00041 virtual std::string createFID() const = 0;
00043 virtual const std::string& connectInfo() const = 0;
00045 virtual void init() = 0;
00047 virtual void commit() = 0;
00049 virtual void rollback() = 0;
00051 virtual bool readOnly() const = 0;
00053 virtual bool dirty() const = 0;
00055 virtual void getPFN(const std::string& fid, Files& files) const = 0;
00057 virtual void getLFN(const std::string& fid, Files& files) const = 0;
00059 virtual void getFID(Strings& fids) const = 0;
00061 virtual bool existsPFN(const std::string& pfn) const = 0;
00063 virtual std::string lookupPFN(const std::string& lfn) const = 0;
00065 virtual bool existsLFN(const std::string& lfn) const = 0;
00067 virtual std::string lookupLFN(const std::string& lfn) const = 0;
00069 virtual bool existsFID(const std::string& fid) const = 0;
00071 virtual void deleteFID(const std::string& FileID) const = 0;
00073 virtual void registerPFN(const std::string& fid, const std::string& pfn, const std::string& ftype) const = 0;
00075 virtual void registerLFN(const std::string& fid, const std::string& lfn) const = 0;
00077 virtual void registerFID(const std::string& fid) const = 0;
00079 virtual void getMetaData(const std::string& fid, Attributes& attr) const = 0;
00081 virtual std::string getMetaDataItem(const std::string& fid, const std::string& name) const = 0;
00083 virtual void setMetaData(const std::string& fid, const std::string& name, const std::string& value) const = 0;
00085 virtual void dropMetaData(const std::string& fid) const = 0;
00087 virtual void dropMetaData(const std::string& fid, const std::string& attr) const = 0;
00088 };
00089 }
00090 #endif