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

DbBaseConverter.h

Go to the documentation of this file.
00001 //====================================================================
00002 //      DbBaseConverter definition
00003 //--------------------------------------------------------------------
00004 //
00005 //      Package    : System ( The LHCb Offline System)
00006 //
00007 //  Description: Generic Db data converter
00008 //
00009 //      Author     : M.Frank
00010 //====================================================================
00011 #ifndef DBCNV_DBBASECONVERTER_H
00012 #define DBCNV_DBBASECONVERTER_H
00013 // $Header: /nfs/slac/g/glast/ground/cvs/GaudiDb/GaudiDb/DbBaseConverter.h,v 1.1.1.1 2001/04/18 21:13:34 tlindner Exp $"
00014 
00015 // C++ includes files
00016 #include <string>
00017 
00018 // Framework include files
00019 #include "GaudiKernel/Converter.h"
00020 #include "GaudiKernel/CnvFactory.h"
00021 #include "GaudiDb/DbTypeInfo.h"
00022 #include "GaudiDb/DbDefObject.h"
00023 
00024 // Forward declarations
00025 template <class TYPE> class CnvFactory;
00026 class DataObject;
00027 class IAddressCreator;
00028 
00029 
00061 class DbBaseConverter : public Converter     {
00062 public:
00063   typedef dbHandle<DbDefObject> DefHandle;
00064 protected:
00066   IOODataBase*                m_db;
00068   const DbTypeInfo*           m_type;
00070   std::string                 m_cnvSvcName;
00072   std::string                 m_persSvcName;
00074   std::string                 m_dataSvcName;
00076   DbDefObject::HelperServices m_helperServices;
00077 protected:
00079   DbBaseConverter(const CLID& clid, IOODataBase* db, ISvcLocator* svc);
00081   virtual ~DbBaseConverter();
00083   virtual const std::string containerName(IDataDirectory* pDir)  const;
00085   virtual DataObject* createTransient();
00087   virtual dbHandle<DbObject> createPersistent(dbHandle<DbContainer>& cntH);
00089   virtual StatusCode doUpdateRepRefs(IOpaqueAddress* pAddress, DataObject* pObject);
00090 public:
00092   static unsigned char storageType()    {
00093     return DBOOMS_StorageType;
00094   }
00096   const DbTypeInfo* typeInfo()  const;
00098   virtual StatusCode initialize();
00100   virtual StatusCode finalize();
00102   virtual StatusCode createObj(IOpaqueAddress* pAddress, DataObject*& refpObject);
00104   virtual StatusCode fillObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
00106   virtual StatusCode updateObj(IOpaqueAddress* pAddress, DataObject* pObject);
00108   virtual StatusCode updateObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
00110   virtual StatusCode createRep(DataObject* pObject, IOpaqueAddress*& refpAddress);
00112   virtual StatusCode fillRepRefs(IOpaqueAddress* pAddress,DataObject* pObject);
00114   virtual StatusCode updateRep(IOpaqueAddress* pAddress, DataObject* pObject);
00116   virtual StatusCode updateRepRefs(IOpaqueAddress* pAddress, DataObject* pObject);
00117 
00119   virtual StatusCode beginTransientUpdate( DefHandle& objH, DataObject* pObject);
00121   virtual StatusCode endTransientUpdate( DefHandle& objH, DataObject* pObject);
00123   virtual StatusCode afterTransientUpdate( DefHandle& objH, DataObject* pObject);
00125   virtual StatusCode doTransientUpdate( DefHandle& objH, DataObject* pObject);
00126 
00128   virtual StatusCode updateTransientDirectoryLinks(DefHandle& objH, DataObject* pObject);
00130   virtual StatusCode updateTransientSymbolicLinks(DefHandle& objH, DataObject* pObject);
00131 
00133   virtual StatusCode preparePersistentUpdate( DefHandle& objH, const DataObject*  pObject);
00135   virtual StatusCode beginPersistentUpdate( DefHandle& objH, const DataObject* pObject);
00137   virtual StatusCode endPersistentUpdate( DefHandle& objH, const DataObject* pObject);
00139   virtual StatusCode afterPersistentUpdate( DefHandle& objH, const DataObject* pObject);
00141   virtual StatusCode doPersistentUpdate( DefHandle& objH, const DataObject* pObject);
00142 
00143   
00145   StatusCode addPersistentLink(IOpaqueAddress* pA, DefHandle& objH, const DataObject* pObj);
00147   StatusCode addPersistentDirectoryLinks(DefHandle& objH, const DataObject* pObj);
00149   StatusCode addPersistentSymbolicLinks(DefHandle& objH, const DataObject* pObj);
00150 };
00151 
00152 #endif    // DBCNV_DBBASECONVERTER_H

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