MAK Data Logger API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
lgrHlaTableFactory.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 1992-2025 MAK Technologies, Inc
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #if DtHLA
10 
11 #ifndef lgrHlaTableFactory_H_
12 #define lgrHlaTableFactory_H_
13 
15 
17 #include <set>
18 #include <vector>
19 #include <vlutil/vlPrint.h>
20 
21 
22 class DtDatabaseColumn;
23 class DtDatatypeFedNode;
24 class DtDatatypeRep;
25 class DtDatabaseColumn;
26 class DtDatatypeManager;
27 class DtOMTTree;
28 class DtString;
29 class DtStringTree;
30 class DtVariantDatatypeNode;
31 
32 namespace MAKLogger
33 {
34  class DtBaseHlaValue;
35  class DtLgrVariableLengthData;
36  class DtConstLgrHlaMessage;
37 
39  class DT_DLL_SQLEXPORTER DtLgrHlaTableFactory
40  {
41  private:
43  DtLgrHlaTableFactory(const DtLgrHlaTableFactory&);
44  DtLgrHlaTableFactory& operator=(const DtLgrHlaTableFactory&);
46 
47  public:
49  DtLgrHlaTableFactory(DtOMTTree*,DtDatatypeManager*);
50 
52  virtual ~DtLgrHlaTableFactory();
53 
55  virtual void setUseShortTableNames(bool shortNames);
56 
58  virtual void setLog(DtOutputStream& log);
59 
61  virtual DtOutputStream& log();
62 
64  virtual void createAttributeColumn( const DtDatatypeFedNode* attrDatatypeNode,
65  DtDatabaseTableSP primaryTable, std::vector<DtDatabaseTableSP>& tables);
66 
68  virtual DtDatabaseTableSP createSubTable(
69  const DtDatabaseTable& primaryTable, const DtString& subName,
70  std::vector<DtDatabaseTableSP>& tables ) = 0;
71 
73  virtual DtDatabaseTableSP createVariantSubTable(
74  const DtDatabaseTable& primaryTable, const DtString& variantName, const DtString& alternativeName,
75  std::vector<DtDatabaseTableSP>& tables) = 0;
76 
78  virtual void setGenerateLargeSubcomponentTables(bool generate);
80  virtual bool generateLargeSubcomponentTables() const;
82 
83 
85  virtual int largeSubcomponentThreshold() const;
89  virtual void setLargeSubcomponentThreshold(int threshold);
91 
92  protected:
93  typedef std::set<DtString> ShortNameSet;
94 
96  virtual void makeTableName( DtString& stringToSet,
97  const MAKLogger::DtBaseHlaValue& hlaClass,
98  const char* baseNameToRemove);
99 
101  virtual void createColumns( const DtString& currentType, DtDatabaseTableSP primaryTable,
102  const DtString& currentName, const DtString& cardinality, bool isVariantTable = false);
103 
105  virtual void addSimpleTypeColumn( const DtDatatypeRep* typeRep,
106  const DtString& cardinality, DtDatabaseTableSP primaryTable,
107  const DtString& currentName ) const;
108 
110  virtual void createArrayTable( const DtDatatypeFedNode* attrDatatypeNode,
111  DtDatabaseTableSP primaryTable, std::vector<DtDatabaseTableSP>& tables);
112 
113  // Create ARRAY type columns
114  virtual void createArrayColumns( const DtString& arrayDataType,
115  const DtString& currentName, DtDatabaseTableSP table );
116 
118  virtual void createVariantTables(const DtDatatypeFedNode* attrDatatypeNode,
119  DtDatabaseTableSP primaryTable, std::vector<DtDatabaseTableSP>& tables);
120 
123  virtual void updateTableValues(const DtStringTree* node,
124  std::vector<DtDatabaseTableSP>& tables, DtDatabaseTableSP currentTable,
125  const DtString& parentName, bool skipNode);
126 
128  virtual void setColumnValue( const DtString& columnDataType,
129  const DtString& columnValue, DtDatabaseColumn &column );
130 
132  virtual void updateArrayValues(DtDatabaseTableSP currentTable,
133  const DtStringTree* node, const DtString& columnName);
134 
137  virtual DtString getSubTableName( const DtString& primaryTableName,
138  const DtString& attributeName,const DtString& rootName );
139 
142  virtual DtString getVariantSubTableName(const DtString& primaryTableName,
143  const DtString& attributeName, const DtString& alternativeName, const DtString& rootName);
144 
146  virtual void updateTablesWithAttribute(std::vector<DtDatabaseTableSP>& tables,
147  DtDatabaseTableSP primaryTable, const DtString& rootName,
148  const DtConstLgrHlaMessage& hlaMessage, const DtLgrVariableLengthData& attributeValue,
149  const DtDatatypeFedNode* attributeNode);
150 
152  virtual void updateSubTableDefaultColumns(const DtDatabaseTable& primaryTable,
153  DtDatabaseTable& currentTable, const MAKLogger::DtConstLgrHlaMessage& hlaMessage);
154 
156  virtual DtDatabaseTableSP findTable(
157  const std::vector<DtDatabaseTableSP>& tables, const DtString& tableName);
158 
161  virtual int numberOfSubcomponents(const DtString& dataTypeName);
162 
166  virtual bool isVariantConsistent(DtVariantDatatypeNode* variantNode,
167  DtDatabaseColumn::DataType& variantType);
168 
169  protected:
170 
172  static void appendName( DtString &name, const DtString& suffix );
173 
174  protected:
175 
176  DtOMTTree* myOMTTree;
177  DtDatatypeManager* myDatatypeManager;
178  bool myUseShortNames;
179  ShortNameSet myShortNames;
180  int myThreshold;
181  DtOutputStream myDefaultLog;
182  DtOutputStream* myLog;
183  DtDatabaseColumn* myIndexColumn;
184 
185  typedef std::set<DtString> ColumnLog;
186  ColumnLog myErrorColumnLog;
187  bool myGenerateLargeSubcomponentTables;
188  int myLargeSubcomponentThreshold;
189 
190  DtDatabaseColumn* myUniqueIdentifierColumn;
191  DtDatabaseColumn* myArrivalTimeColumn;
192  DtDatabaseColumn* myParentEntryIdColumn;
193  DtDatabaseColumn* myTagColumn;
194 
195  unsigned int myMaxColumnNameLength;
196  };
197 }
198 
199 #endif
200 #endif
DataType
Definition: databaseColumn.h:32
Definition: databaseColumn.h:26
#define DT_DLL_SQLEXPORTER
Definition: lgrSqlExporter.h:19
A table is simply a table name and a list of column entries (DtDatabaseColumn).
Definition: databaseTable.h:23
std::shared_ptr< DtDatabaseTable > DtDatabaseTableSP
Definition: databaseTable.h:112
Contains DtDatabaseTable.
Contains MAKLogger.

Document ID: Generated on Thu Dec 18 15:35:09 EST 2025 from SVN revision 282494
Copyright © 2024 MAK Technologies. All Rights Reserved (www.mak.com)