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

DbUserConverter.cpp

Go to the documentation of this file.
00001 //      ====================================================================
00002 //
00003 //      DbUserConverter.cpp
00004 //      --------------------------------------------------------------------
00005 //
00006 //      Package   : Generic DbUserConverter implementation
00007 //
00008 //      Author    : Markus Frank
00009 //  History:
00010 //  +---------+----------------------------------------------+---------+
00011 //  |    Date |                 Comment                      | Who     |
00012 //  +---------+----------------------------------------------+---------+
00013 //  | 3/11/98 | Initial version                              | M.Frank |
00014 //  +---------+----------------------------------------------+---------+
00015 //      ====================================================================
00016 #define DBCNV_DBSVC_DBUSERCONVERTER_CPP 
00017 
00018 // Headers
00019 #include "GaudiKernel/ICnvManager.h"
00020 #include "GaudiKernel/ISvcLocator.h"
00021 #include "GaudiKernel/IMessageSvc.h"
00022 #include "GaudiKernel/MsgStream.h"
00023 #include "GaudiDb/DbUserConverter.h"
00024 
00025 //--- IInterface::addRef
00026 unsigned long DbUserConverter::addRef()   {
00027   return m_implementation->addRef();
00028 }
00029 
00030 //--- IInterface::release
00031 unsigned long DbUserConverter::release()   {
00032   unsigned long count = m_implementation->release();
00033   if( count <= 0 ) {
00034     delete this;
00035   }
00036   return count;
00037 }
00038 
00039 //--- IInterface::queryInterface
00040 StatusCode DbUserConverter::queryInterface(const IID& riid, void** ppvInterface)  {
00041   return m_implementation->queryInterface(riid, ppvInterface);
00042 }
00043 
00045 const CLID& DbUserConverter::objType() const    {
00046   return m_implementation->objType();
00047 }
00048 
00050 unsigned char DbUserConverter::repSvcType() const   {
00051   return m_implementation->repSvcType();
00052 }
00053 
00055 StatusCode DbUserConverter::createObj(IOpaqueAddress* pAddress,DataObject*& refpObject)   {
00056   return m_implementation->createObj(pAddress, refpObject);
00057 }
00058 
00059 
00061 StatusCode DbUserConverter::fillObjRefs(IOpaqueAddress* pAddress, DataObject* pObject)    {
00062   return m_implementation->fillObjRefs(pAddress, pObject);
00063 }
00064 
00066 StatusCode DbUserConverter::updateObj(IOpaqueAddress* pAddress, DataObject* pObject)   {
00067   return m_implementation->updateObj(pAddress, pObject);
00068 }
00069 
00071 StatusCode DbUserConverter::updateObjRefs(IOpaqueAddress* pAddress, DataObject* pObject)  {
00072   return m_implementation->updateObjRefs(pAddress, pObject);
00073 }
00074 
00076 StatusCode DbUserConverter::createRep(DataObject* pObject, IOpaqueAddress*& refpAddress)  {
00077   return m_implementation->createRep(pObject, refpAddress);
00078 }
00079 
00081 StatusCode DbUserConverter::fillRepRefs(IOpaqueAddress* pAddress, DataObject* pObject)  {
00082   return m_implementation->fillRepRefs(pAddress, pObject);
00083 }
00084 
00086 StatusCode DbUserConverter::updateRep(IOpaqueAddress* pAddress, DataObject* pObject)  {
00087   return m_implementation->updateRep(pAddress, pObject);
00088 }
00089 
00091 StatusCode DbUserConverter::updateRepRefs(IOpaqueAddress* pAddress, DataObject* pObject)    {
00092   return m_implementation->updateRepRefs(pAddress, pObject);
00093 }
00094 
00096 StatusCode DbUserConverter::initialize()    {
00097   if ( 0 == m_implementation )    {
00098     IMessageSvc* messageSvc = 0;
00099     // Get a reference to the Message Service
00100     m_svcLocator->getService("MessageSvc",
00101                              IID_IMessageSvc, 
00102                              (IInterface*&)messageSvc);
00103     MsgStream err(messageSvc, "DbUserConverter");
00104     err << MSG::ERROR << "Error initializing DbUserConverter: Cannot get implementation." << endreq;
00105     return StatusCode::FAILURE;
00106   }
00107   return m_implementation->initialize();
00108 }
00109 
00111 StatusCode DbUserConverter::finalize()    {
00112   return m_implementation->finalize();
00113 }
00114 
00116 StatusCode DbUserConverter::setDataProvider(IDataProviderSvc* svc)  {
00117   return m_implementation->setDataProvider( svc );
00118 }
00119 
00121 IDataProviderSvc* DbUserConverter::dataProvider()  {
00122   return m_implementation->dataProvider();
00123 }
00124 
00126 DbUserConverter::DbUserConverter(DbUserConverter::Creator creator, const CLID& clid, IOODataBase* db, ISvcLocator* svc)
00127 : m_implementation(0), m_svcLocator(svc)
00128 {
00129   ICnvManager* manager = 0;
00130   StatusCode status = svc->queryInterface(IID_ICnvManager, (void**)&manager);
00131   if ( status.isSuccess() )    {
00132     const ICnvFactory* fac = 0;
00133     if ( clid & CLID_ObjectVector )   {
00134       fac = manager->factory(DBOOMS_StorageType, CLID_Any|CLID_ObjectVector);
00135     }
00136     else if (  clid & CLID_ObjectList )   {
00137       fac = manager->factory(DBOOMS_StorageType, CLID_Any|CLID_ObjectList);
00138     }
00139     else  {
00140       fac = manager->factory(DBOOMS_StorageType, CLID_Any);
00141     }
00142     if ( 0 != fac )   {
00143       IDbUserCnvFactory* pFac = 0;
00144       ICnvFactory* p = const_cast<ICnvFactory*>(fac);
00145       StatusCode status = p->queryInterface(IID_IDbUserCnvFactory, (void**)&pFac);
00146       if ( status.isSuccess() )   {
00147         m_implementation = pFac->instantiate(creator, clid, db, svc);
00148         pFac->release();
00149         return;
00150       }
00151     }
00152   }
00153 }
00154 
00156 DbUserConverter::~DbUserConverter()   {
00157   //cout << "DbUserConverter destroyed!" << endl;
00158 }
00159 

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