Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

IOODataBase.h

Go to the documentation of this file.
00001 //====================================================================
00002 //      IOODataBase interface definition
00003 //--------------------------------------------------------------------
00004 //
00005 //      Package    : DbCnv ( The LHCb Offline System)
00006 //
00007 //  Description: Interface of the Db persistenty service
00008 //
00009 //      Author     : M.Frank
00010 //
00011 //====================================================================
00012 #ifndef DBCNV_IOODATABASE_H
00013 #define DBCNV_IOODATABASE_H
00014 // $Header: /nfs/slac/g/glast/ground/cvs/GaudiDb/GaudiDb/IOODataBase.h,v 1.1.1.1 2001/04/18 21:13:34 tlindner Exp $
00015 
00016 // C/C++ include files
00017 #include <string>
00018 
00019 // Framework include files
00020 #include "GaudiKernel/Kernel.h"
00021 #include "GaudiKernel/StatusCode.h"
00022 #include "GaudiKernel/StreamBuffer.h"
00023 #include "GaudiKernel/IInterface.h"
00024 
00025 #include "GaudiDb/DbOOMs.h"
00026 #include "GaudiDb/DbLink.h"
00027 #include "GaudiDb/DbTypeInfo.h"
00028 
00029 // Forward declarations
00030 class ISelectStatement;
00031 
00053 class IDbSession    {
00054   // Friend class declaration: this is not a public interface
00055   friend DbSession;
00056 private:
00057   // Release (delete) object
00058   virtual void release() = 0;
00059   // Open database session
00060   virtual DbResult open(DbAccessMode mode) = 0;
00061   // close database session
00062   virtual DbResult close() = 0;
00063 };
00064 
00086 class IDbFederation   {
00088   friend DbFederation;
00089 private:
00091   virtual void release()  = 0;
00093   virtual bool existsDbase(const std::string& name)   const = 0;
00095   virtual DbResult close()  const = 0;
00097   virtual DbResult open(dbHandle<DbSession>& sessionH, const std::string& name, DbAccessMode mode) const = 0;
00098 };
00099 
00121 class IDbDataBase    {
00123   friend DbDataBase;
00124 public:
00126   class Link : public dbHandle<DbLink>   {
00128     friend DbDataBase;
00130     Link(const std::string& db, const std::string& cnt, const std::string& obj, const dbHandle<DbLink>& to, long int_id);
00132     Link() {
00133     }
00135     Link(const Link& copy) : dbHandle<DbLink>(copy), dbase(copy.dbase), container(copy.container), object(copy.object)  {
00136     }
00138     virtual ~Link()   {
00139     }
00140   public:
00142     std::string dbase;
00144     std::string container;
00146     std::string object;
00148     void serialize(StreamBuffer& buffer);
00150     void serialize(StreamBuffer& buffer)    const;
00152     DbResult set(dbHandle<DbLink>& link)    const;
00154     void print(IMessageSvc* msg, const std::string& tag, const char* opt)   const;
00155   };
00156   class Type   {
00157   public:
00158     std::string contName;
00159     std::string objType;
00160     std::string description;
00161     Type()     {
00162     }
00163     Type(const Type& copy) 
00164     : contName(copy.contName), 
00165       objType(copy.objType), 
00166       description(copy.description)
00167     {
00168     }
00169     Type(const std::string& cont, const std::string& obj, const std::string& desc="") 
00170     : contName(cont), objType(obj), description(desc)
00171     {
00172     }
00173     virtual ~Type()    {
00174     }
00176     void serialize(StreamBuffer& buffer);
00178     void serialize(StreamBuffer& buffer)    const;
00180     void print(IMessageSvc* msg, const std::string& tag, const char* opt)   const;
00181   };
00182 private:
00184   virtual void release() = 0;
00186   virtual bool isEqual(const Link* link, const dbHandle<DbLink>* test) = 0;
00188   virtual DbResult assocEntry(const std::vector<Link*>& links, const dbHandle<DbLink>& test, std::string& db, std::string& cnt, std::string& obj) = 0;
00190   virtual DbResult close(DbAccessMode mode) const  = 0;
00192   virtual DbResult open(const dbHandle<DbFederation>& fedH, const std::string& name, DbAccessMode mode)  const  = 0;
00194   virtual DbResult find(dbHandle<DbContainer>& handle) = 0;
00195 };
00196 
00214 class IDbCursor  {
00215 public:
00217   virtual void release() = 0;
00219   virtual DbResult next(const dbHandle<DbContainer>& cntH, dbHandle<DbObject>& objH) = 0;
00220 };
00221 
00243 class IDbContainer    {
00245   friend DbContainer;
00246 private:
00248   virtual void release() = 0;
00250   virtual long size()  const  = 0;
00252   virtual DbResult close() const  = 0;
00254   virtual DbResult open(const dbHandle<DbDataBase>& dbH, const std::string& name, const DbTypeInfo& info, DbAccessMode mode) const = 0;
00256   virtual DbResult select(ISelectStatement* criteria)  const = 0;
00258   virtual DbResult unselect() const = 0;
00260   virtual DbResult find(const dbHandle<DbContainer>& cntH, dbHandle<DbObject>& handle, const dbHandle<DbLink>& link) const = 0;
00262   virtual DbResult addEntry(const dbHandle<DbObject>& handle)  = 0;
00264   virtual DbResult updateEntry(const dbHandle<DbObject>& handle)  = 0;
00266   virtual IDbCursor* makeCursor()  const = 0;
00267 };
00268 
00269 
00270 // Declaration of the interface ID ( interface id, major version, minor version) 
00271 static const InterfaceID IID_IOODataBase(111, 1 , 0); 
00272 
00314 class IOODataBase : virtual public IInterface    {
00315 public:
00317   static const InterfaceID& interfaceID() { return IID_IOODataBase; }
00319   typedef DbPersistent* (*CreateP)( const dbHandle<DbContainer>& cntH );
00321   typedef DbObject*     (*CreateT)( void* buffer);
00322 
00323 public:
00325   virtual StatusCode              initialize       (const std::string& nam) = 0;
00327   virtual StatusCode              finalize         (void) = 0;
00329   virtual IMessageSvc*            msgSvc           () = 0;
00331   virtual unsigned char           type             () const = 0;
00333   virtual const std::string&      name             () const = 0;
00335   virtual const std::string&      driver           () const = 0;
00337   virtual void                    setDriver        (const std::string& drv) = 0;
00339   virtual const std::string&      server           () const = 0;
00341   virtual void                    setServer        (const std::string& srv) = 0;
00343   virtual IDbSession*             createSession    (void) = 0;
00345   virtual IDbFederation*          createFederation (void) = 0;
00347   virtual IDbDataBase*            createDataBase   (void) = 0;
00349   virtual IDbContainer*           createContainer  (void) = 0;
00351   virtual const DbTypeInfo*       typeInfo         (const std::string& nam)  const = 0;
00353   virtual DbTypeInfo*             typeInfo         (const std::string& nam)  = 0;
00355   virtual DbResult                addTypeInfo      (const std::string& nam, DbTypeInfo* info) = 0;
00357   virtual DbTypeInfo*             addTypeInfo      (const std::string& nam, const std::string& t_type, const std::string& p_type, const std::string& desc, std::vector<DbColumn*>& cols) = 0;
00359   virtual DbTypeInfo*             addTypeInfo      (const IDbDataBase::Type* pType) = 0;
00361   virtual DbResult                prepareLink      (const dbObjectHandle<DbObject>& objH, dbHandle<DbLink>& linkH, void* gene) = 0;
00362 };
00363 
00364 #endif  // DBCNV_IOODATABASE_H

Generated at Wed Nov 21 12:22:20 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000