00001 //$Id: ValidDataObject.h,v 1.8 2007/11/09 17:10:06 marcocle Exp $ 00002 #ifndef DETDESC_VALIDDATAOBJECT_H 00003 #define DETDESC_VALIDDATAOBJECT_H 1 00004 00005 #include <string> 00006 00007 // Base classes 00008 #include "GaudiKernel/DataObject.h" 00009 #include "GaudiKernel/IValidity.h" 00010 #include "GaudiKernel/Time.h" 00011 00012 // Unique ID of the class 00013 #include "DetDesc/CLIDValidDataObject.h" 00014 00015 // Forward declarations 00016 class StatusCode; 00017 00019 //-------------------------------------------------------------------------- 00028 00029 class ValidDataObject : public DataObject, 00030 virtual public IValidity 00031 00032 { 00033 00034 public: 00035 00037 ValidDataObject(); 00038 00040 ValidDataObject( const ValidDataObject& obj ); 00041 00042 /* 00044 virtual ValidDataObject& operator= ( ValidDataObject& obj ); 00045 */ 00046 00049 virtual void update ( ValidDataObject& obj ); 00050 00052 virtual ~ValidDataObject(); 00053 00054 public: 00055 00056 // Re-implemented from DataObject 00057 00059 inline virtual const CLID& clID() const { return classID(); } 00060 00062 inline static const CLID& classID() { return CLID_ValidDataObject; } 00063 00065 virtual std::ostream& fillStream( std::ostream& s ) const; 00066 00067 public: 00068 00069 // Implementation of IValidity 00070 00072 virtual bool isValid() const ; 00073 00075 virtual bool isValid( const Gaudi::Time& t ) const; 00076 00078 virtual const Gaudi::Time& validSince() const; 00079 00081 virtual const Gaudi::Time& validTill() const; 00082 00084 virtual void setValidity( const Gaudi::Time& since, const Gaudi::Time& till ); 00085 00087 virtual void setValiditySince( const Gaudi::Time& since ); 00088 00090 virtual void setValidityTill( const Gaudi::Time& till ); 00091 00092 // ================================================ 00093 // ValidDataObject methods 00094 // ================================================ 00095 00099 virtual StatusCode update(); 00100 00102 enum UpdateModeFlag { 00103 DEFAULT, 00104 ALWAYS_VALID, 00105 FORCE_UPDATE 00106 }; 00107 00108 // setters and getters for update mode 00109 00115 virtual const UpdateModeFlag &updateMode() const; 00116 00118 virtual void setUpdateMode(UpdateModeFlag mode); 00119 00120 virtual void defaultUpdateMode(); 00121 virtual void forceUpdateMode(); 00122 virtual void neverUpdateMode(); 00123 00124 private: 00125 00126 // IValidity data 00128 Gaudi::Time m_validSince; 00130 Gaudi::Time m_validUntil; 00131 00133 UpdateModeFlag m_updateMode; 00134 00135 }; 00136 00137 #endif // DETDESC_VALIDDATAOBJECT_H