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 protected:
00077 std::string configurationName_;
00078 std::string configurationDescription_;
00079
00080 ConfigurationView* activeConfigurationView_;
00081 ConfigurationView mockupConfigurationView_;
00082
00083
00084
00085
00086 unsigned int getNumberOfStoredViews (void) const;
00087 std::map<ConfigurationVersion, ConfigurationView> configurationViews_;
00088
00089 };
00090 }
00091
00092 #endif