00001 #ifndef _ots_ConfigurationBase_h_
00002 #define _ots_ConfigurationBase_h_
00003
00004 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationView.h"
00005 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationVersion.h"
00006 #include <string>
00007 #include <map>
00008 #include <list>
00009
00010 namespace ots
00011 {
00012
00013 class ConfigurationManager;
00014
00015
00016 #define __SELF_NODE__ getNode(getConfigurationName())
00017
00018 class ConfigurationBase
00019 {
00020
00021 public:
00022
00023 const unsigned int MAX_VIEWS_IN_CACHE;
00024
00025 ConfigurationBase ();
00026 ConfigurationBase (std::string configurationName, std::string *accumulatedExceptions=0);
00027
00028 virtual ~ConfigurationBase (void);
00029
00030
00031 virtual void init (ConfigurationManager *configManager);
00032
00033 void destroy (void) {;}
00034 void reset (bool keepTemporaryVersions=false);
00035 void deactivate (void);
00036 bool isActive (void);
00037
00038 void print (std::ostream &out = std::cout) const;
00039
00040 std::string getTypeId (void);
00041
00042 void setupMockupView (ConfigurationVersion version);
00043 void changeVersionAndActivateView (ConfigurationVersion temporaryVersion, ConfigurationVersion version);
00044 bool isStored (const ConfigurationVersion &version) const;
00045 bool eraseView (ConfigurationVersion version);
00046 void trimCache (unsigned int trimSize = -1);
00047 void trimTemporary (ConfigurationVersion targetVersion = ConfigurationVersion());
00048 ConfigurationVersion checkForDuplicate (ConfigurationVersion needleVersion, ConfigurationVersion ignoreVersion = ConfigurationVersion()) const;
00049
00050
00051 const std::string& getConfigurationName (void) const;
00052 const std::string& getConfigurationDescription (void) const;
00053 std::set<ConfigurationVersion> getStoredVersions (void) const;
00054
00055 const ConfigurationView& getView (void) const;
00056 ConfigurationView* getViewP (void);
00057 ConfigurationView* getMockupViewP (void);
00058 const ConfigurationVersion& getViewVersion (void) const;
00059
00060 ConfigurationView* getTemporaryView (ConfigurationVersion temporaryVersion);
00061 ConfigurationVersion getNextTemporaryVersion () const;
00062 ConfigurationVersion getNextVersion () const;
00063
00064
00065 void setConfigurationName (const std::string &configurationName);
00066 void setConfigurationDescription (const std::string &configurationDescription);
00067 bool setActiveView (ConfigurationVersion version);
00068 ConfigurationVersion copyView (const ConfigurationView &sourceView, ConfigurationVersion destinationVersion, const std::string &author) throw(std::runtime_error);
00069
00070 ConfigurationVersion createTemporaryView (ConfigurationVersion sourceViewVersion = ConfigurationVersion(), ConfigurationVersion destTemporaryViewVersion = ConfigurationVersion::getNextTemporaryVersion());
00071
00072 static std::string convertToCaps (std::string &str, bool isConfigName=false) throw(std::runtime_error);
00073
00074 bool latestAndMockupColumnNumberMismatch (void) const;
00075
00076 unsigned int getNumberOfStoredViews (void) const;
00077
00078 protected:
00079 std::string configurationName_;
00080 std::string configurationDescription_;
00081
00082 ConfigurationView* activeConfigurationView_;
00083 ConfigurationView mockupConfigurationView_;
00084
00085
00086
00087
00088 std::map<ConfigurationVersion, ConfigurationView> configurationViews_;
00089
00090 };
00091 }
00092
00093 #endif