00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef DBCNV_NTUPLES_DBTUPLECNV_H
00010 #define DBCNV_NTUPLES_DBTUPLECNV_H 1
00011
00012
00013 #include "DbUserDataBaseCnv.h"
00014 #include "GaudiKernel/NTuple.h"
00015
00016
00017 #include <map>
00018
00019
00020 class INTupleSvc;
00021 class DbColumn;
00022 class DbNTupleImage;
00023 template <class TYPE> class DbOOMsCnvFactory;
00024
00025
00048 class DbNTupleCnv : public DbUserDataBaseCnv {
00049 protected:
00050 public:
00052 DbNTupleCnv(const CLID& clid, IOODataBase* db, ISvcLocator* svc);
00054 virtual ~DbNTupleCnv();
00056 virtual StatusCode initialize();
00058 virtual StatusCode finalize();
00059
00061 virtual StatusCode createRep( DataObject* pObject, IOpaqueAddress*& refpAddress );
00063 virtual dbHandle<DbObject> createPersistent(dbHandle<DbContainer>& cntH);
00064
00066 virtual StatusCode createObj(IOpaqueAddress* pAddress, DataObject*& refpObject);
00068 virtual StatusCode fillObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
00070 virtual StatusCode updateObj(IOpaqueAddress* pAddress, DataObject* pObject);
00072 virtual StatusCode updateObjRefs(IOpaqueAddress* pAddress, DataObject* pObject);
00073
00075 virtual StatusCode updateRep(IOpaqueAddress* pAddress, DataObject* pObject);
00077 virtual StatusCode updateRepRefs(IOpaqueAddress* pAddress, DataObject* pObject);
00079 virtual StatusCode doPersistentUpdate( DefHandle& objH, const DataObject* pObject);
00081 virtual StatusCode afterPersistentUpdate(dbHandle<DbDefObject>& objH, const DataObject* pObject);
00083 virtual StatusCode doTransientUpdate( DefHandle& objH, DataObject* pObject);
00084 };
00085
00086 #include "GaudiKernel/NTupleImplementation.h"
00087
00088 class DbRWNTupleCnv : public DbNTupleCnv {
00090 friend class DbOOMsCnvFactory<DbRWNTupleCnv>;
00091 public:
00093 static const CLID& classID() {
00094 return CLID_RowWiseTuple;
00095 }
00097 DbRWNTupleCnv(IOODataBase* db, ISvcLocator* svc) : DbNTupleCnv(classID(), db, svc) {
00098 }
00100 virtual ~DbRWNTupleCnv() {
00101 }
00102 };
00103
00104 class DbCWNTupleCnv : public DbNTupleCnv {
00106 friend class DbOOMsCnvFactory<DbCWNTupleCnv>;
00107 public:
00109 static const CLID& classID() {
00110 return CLID_ColumnWiseTuple;
00111 }
00113 DbCWNTupleCnv(IOODataBase* db, ISvcLocator* svc) : DbNTupleCnv(classID(), db, svc) {
00114 }
00116 virtual ~DbCWNTupleCnv() {
00117 }
00118 };
00119
00120 #endif // DBCNV_NTUPLES_DBTUPLECNV_H