tdaq-develop-2025-02-12
TableBase.h
1 #ifndef _ots_TableBase_h_
2 #define _ots_TableBase_h_
3 
4 #include <list>
5 #include <map>
6 #include <string>
7 
8 #include "otsdaq/TableCore/TableVersion.h"
9 #include "otsdaq/TableCore/TableView.h"
10 
11 namespace ots
12 {
13 // clang-format off
14 class ConfigurationManager;
15 
17 #define __SELF_NODE__ getNode(getTableName())
18 
19 class TableBase
20 {
21  public:
22  const unsigned int MAX_VIEWS_IN_CACHE;
24  //TableBase(void); //should not be used
25  TableBase(bool specialTable, const std::string& specialTableName);
26  TableBase(const std::string& tableName, std::string* accumulatedExceptions = 0);
27 
28  virtual ~TableBase(void);
29 
31  virtual void init (ConfigurationManager* configManager);
32 
33  void destroy (void) { ; }
34  void reset (bool keepTemporaryVersions = false);
35  void deactivate (void);
36  bool isActive (void);
37 
38  void print (std::ostream& out = std::cout) const;
39 
40  std::string getTypeId (void);
41 
42  void setupMockupView (TableVersion version);
43  void changeVersionAndActivateView (TableVersion temporaryVersion, TableVersion version);
44  bool isStored (const TableVersion& version) const;
45  bool eraseView (TableVersion version);
46  void trimCache (unsigned int trimSize = -1);
47  void trimTemporary (TableVersion targetVersion = TableVersion());
48  TableVersion checkForDuplicate (TableVersion needleVersion, TableVersion ignoreVersion = TableVersion()) const;
49  bool diffTwoVersions (TableVersion v1, TableVersion v2, std::stringstream* diffReport = 0,
50  std::map<std::string /* uid */, std::vector<std::string /* colName */>>* v1ModifiedRecords = 0) const;
51 
53  const std::string& getTableName (void) const;
54  const std::string& getTableDescription (void) const;
55  std::set<TableVersion> getStoredVersions (void) const;
56 
57  const TableView& getView (TableVersion version = TableVersion(TableVersion::INVALID)) const;
58  TableView* getViewP (TableVersion version = TableVersion(TableVersion::INVALID));
59  TableView* getMockupViewP (void);
60  const TableVersion& getViewVersion (void) const;
61 
62  TableView* getTemporaryView (TableVersion temporaryVersion);
64  TableVersion getNextVersion (void) const;
65 
66  virtual std::string getStructureStatusAsJSON (ConfigurationManager* configManager) const {__SS__ << "This function is not implemented for this table '" << getTableName() << "'" << __E__; __SS_THROW__; return configManager?"":"" /*to use param*/;};
67 
69  void setTableName (const std::string& tableName);
70  void setTableDescription (const std::string& tableDescription);
71  bool setActiveView (TableVersion version);
72  TableVersion copyView (const TableView& sourceView, TableVersion destinationVersion, const std::string& author, bool looseColumnMatching = false);
73  TableVersion mergeViews (
74  const TableView& sourceViewA,
75  const TableView& sourceViewB,
76  TableVersion destinationVersion,
77  const std::string& author,
78  const std::string& mergeApproach /*Rename,Replace,Skip*/,
79  std::map<std::pair<std::string /*original table*/, std::string /*original uidB*/>,
80  std::string /*converted uidB*/>& uidConversionMap,
81  std::map<std::pair<std::string /*original table*/,
82  std::pair<std::string /*group linkid*/,
83  std::string /*original gidB*/> >,
84  std::string /*converted gidB*/>& groupidConversionMap,
85  bool fillRecordConversionMaps,
86  bool applyRecordConversionMaps,
87  bool generateUniqueDataColumns = false,
88  std::stringstream* mergeRepoert = nullptr);
89 
90  TableVersion createTemporaryView (TableVersion sourceViewVersion = TableVersion(), TableVersion destTemporaryViewVersion = TableVersion::getNextTemporaryVersion());
91 
92  static std::string convertToCaps (std::string& str, bool isConfigName = false);
93 
94  bool latestAndMockupColumnNumberMismatch(void) const;
95 
96  unsigned int getNumberOfStoredViews (void) const;
97 
98 
99  // ----- member variables
100 
101  public:
102  static const std::string GROUP_CACHE_PREPEND;
103  static const std::string JSON_DOC_PREPEND;
104 
105  protected:
106  std::string tableName_;
107  std::string tableDescription_;
108 
109  TableView* activeTableView_;
110  TableView mockupTableView_;
111 
115  std::map<TableVersion, TableView> tableViews_;
116 
117 };
118 // clang-format on
119 } // namespace ots
120 
121 #endif
const std::string & getTableName(void) const
Getters.
Definition: TableBase.cc:681
std::map< TableVersion, TableView > tableViews_
Definition: TableBase.h:115
TableVersion createTemporaryView(TableVersion sourceViewVersion=TableVersion(), TableVersion destTemporaryViewVersion=TableVersion::getNextTemporaryVersion())
source of -1, from MockUp, else from valid view version
Definition: TableBase.cc:1601
void setupMockupView(TableVersion version)
Definition: TableBase.cc:175
bool diffTwoVersions(TableVersion v1, TableVersion v2, std::stringstream *diffReport=0, std::map< std::string, std::vector< std::string >> *v1ModifiedRecords=0) const
Definition: TableBase.cc:409
TableBase(bool specialTable, const std::string &specialTableName)
Definition: TableBase.cc:116
void trimTemporary(TableVersion targetVersion=TableVersion())
Definition: TableBase.cc:245
TableVersion mergeViews(const TableView &sourceViewA, const TableView &sourceViewB, TableVersion destinationVersion, const std::string &author, const std::string &mergeApproach, std::map< std::pair< std::string, std::string >, std::string > &uidConversionMap, std::map< std::pair< std::string, std::pair< std::string, std::string > >, std::string > &groupidConversionMap, bool fillRecordConversionMaps, bool applyRecordConversionMaps, bool generateUniqueDataColumns=false, std::stringstream *mergeRepoert=nullptr)
Definition: TableBase.cc:851
unsigned int getNumberOfStoredViews(void) const
Definition: TableBase.cc:723
TableVersion checkForDuplicate(TableVersion needleVersion, TableVersion ignoreVersion=TableVersion()) const
Definition: TableBase.cc:287
bool isActive(void)
isActive
Definition: TableBase.cc:817
static std::string convertToCaps(std::string &str, bool isConfigName=false)
Definition: TableBase.cc:1726
virtual void init(ConfigurationManager *configManager)
Methods.
Definition: TableBase.cc:143
TableView * getTemporaryView(TableVersion temporaryVersion)
Definition: TableBase.cc:1712
const unsigned int MAX_VIEWS_IN_CACHE
Definition: TableBase.h:22
TableVersion getNextVersion(void) const
Definition: TableBase.cc:1688
const TableVersion & getViewVersion(void) const
always the active one
Definition: TableBase.cc:690
TableVersion copyView(const TableView &sourceView, TableVersion destinationVersion, const std::string &author, bool looseColumnMatching=false)
Definition: TableBase.cc:1542
bool latestAndMockupColumnNumberMismatch(void) const
Definition: TableBase.cc:698
void setTableName(const std::string &tableName)
Setters.
Definition: TableBase.cc:802
virtual ~TableBase(void)
Definition: TableBase.cc:137
void print(std::ostream &out=std::cout) const
always prints active view
Definition: TableBase.cc:160
void deactivate(void)
Definition: TableBase.cc:813
TableVersion getNextTemporaryVersion(void) const
Definition: TableBase.cc:1665
void trimCache(unsigned int trimSize=-1)
Definition: TableBase.cc:205
static TableVersion getNextTemporaryVersion(const TableVersion &version=TableVersion())