00001
00002 #ifndef CalibMySQLCnvSvc_h
00003 #define CalibMySQLCnvSvc_h 1
00004
00006 #include "CalibDataSvc/ICalibMetaCnvSvc.h"
00007 #include "CalibDataSvc/IInstrumentName.h"
00008 #include "GaudiKernel/ConversionSvc.h"
00009 #include "facilities/Timestamp.h"
00010 #include "GaudiKernel/IDetDataSvc.h"
00011 #include "DatabaseSvc/DatabaseSvc.h"
00012 #include "calibUtil/Metadata.h"
00013
00014 class Metadata;
00016
00017 template <class TYPE> class SvcFactory;
00018 class IDetDataSvc;
00019 class IOpaqueAddress;
00020 using namespace std;
00022
00032
00033 class CalibMySQLCnvSvc : public ConversionSvc,
00034 virtual public ICalibMetaCnvSvc
00035 {
00037 friend class SvcFactory<CalibMySQLCnvSvc>;
00038
00039 protected:
00040
00041 CalibMySQLCnvSvc(const std::string& name, ISvcLocator* svc );
00042 virtual ~CalibMySQLCnvSvc();
00043
00044 public:
00045
00046
00047
00048 virtual StatusCode queryInterface( const InterfaceID& riid,
00049 void** ppvInterface );
00050
00051 public:
00052
00053
00054
00055 virtual StatusCode initialize();
00056 virtual StatusCode finalize();
00057
00059 virtual StatusCode createObj ( IOpaqueAddress* pAddress,
00060 DataObject*& refpObject );
00061
00063 virtual StatusCode fillObjRefs ( IOpaqueAddress* pAddress,
00064 DataObject* pObject );
00065
00067 virtual StatusCode updateObj ( IOpaqueAddress* pAddress,
00068 DataObject* pObject );
00069
00071 virtual StatusCode updateObjRefs ( IOpaqueAddress* pAddress,
00072 DataObject* pObject );
00073
00075 virtual StatusCode createRep ( DataObject* pObject,
00076 IOpaqueAddress*& refpAddress );
00077
00079 virtual StatusCode fillRepRefs ( IOpaqueAddress* pAddress,
00080 DataObject* pObject );
00081
00083 virtual StatusCode updateRep ( IOpaqueAddress* pAddress,
00084 DataObject* pObject );
00085
00087 virtual StatusCode updateRepRefs ( IOpaqueAddress* pAddress,
00088 DataObject* pObject );
00089
00091 virtual StatusCode createAddress ( long svc_type,
00092 const CLID& clid,
00093 const std::string* par,
00094 const unsigned long* ip,
00095 IOpaqueAddress*& refpAddress );
00096
00097 public:
00098
00099
00100
00104 virtual StatusCode createCalib(DataObject*& refpObject,
00105 const std::string& fullpath,
00106 const CLID& classID,
00107 IRegistry* entry=0);
00108
00112
00113 virtual StatusCode updateCalib(DataObject* pObject,
00114 const std::string& fullpath,
00115 const CLID& classID,
00116 IRegistry* entry=0);
00118 virtual StatusCode decodeDescription(const std::string& description,
00119 unsigned char& type);
00120
00121 virtual calibUtil::Metadata* getMeta();
00122
00123
00124
00125 StatusCode getSftParVer(std::string& SftVer,
00126 std::string& CalParVer, int &runfrm,
00127 int &runto,int RunNo, std::string BossRelease,
00128 std::string DataType);
00129
00130
00131
00132
00133 private:
00134
00136 calibUtil::Metadata* m_meta;
00137
00139 std::string m_host;
00140
00143 unsigned int m_calibLevelMask;
00144
00146 bool m_useEventTime;
00147
00150 facilities::Timestamp* m_enterTimeStart;
00151 facilities::Timestamp* m_enterTimeEnd;
00152
00153 std::string m_enterTimeStartString;
00154 std::string m_enterTimeEndString;
00155 IInstrumentName* m_instrSvc;
00156 IDataProviderSvc* m_eventSvc;
00157
00158 std::string m_dbName;
00159
00160 std::string sft_ver;
00161 std::string cal_ver;
00162 std::string m_calPar[12];
00163 std::string machine;
00164 std::string m_bossver[12];
00165 std::string m_bossRelease;
00166 std::string m_flag[12];
00168
00170 IConversionSvc* m_detPersSvc;
00171
00173 IDetDataSvc* m_detDataSvc;
00174
00177 std::vector<std::string> m_qualityList;
00178 unsigned int m_qualityMask;
00179 bool m_crash;
00180 int m_MdcAlign_No;
00181 std::string m_dbStatus;
00182 };
00183 #endif
00184