Go to the documentation of this file.00001
00002
00003
00004
00005
00008
00009 #if DtHLA
00010
00011 #ifndef lgrHlaTableFactory_H_
00012 #define lgrHlaTableFactory_H_
00013
00014 #include "lgrSqlExporter.h"
00015
00016 #include <databaseTable.h>
00017 #include <set>
00018 #include <vector>
00019 #include <vlutil/vlPrint.h>
00020
00021
00022 class DtDatabaseColumn;
00023 class DtDatatypeFedNode;
00024 class DtDatatypeRep;
00025 class DtDatabaseColumn;
00026 class DtDatatypeManager;
00027 class DtOMTTree;
00028 class DtString;
00029 class DtStringTree;
00030
00031 namespace MAKLogger
00032 {
00033 class DtBaseHlaValue;
00034
00036 class DT_DLL_SQLEXPORTER DtLgrHlaTableFactory
00037 {
00038 private:
00040 DtLgrHlaTableFactory(const DtLgrHlaTableFactory&);
00041 DtLgrHlaTableFactory& operator=(const DtLgrHlaTableFactory&);
00043
00044 public:
00046 DtLgrHlaTableFactory(DtOMTTree*,DtDatatypeManager*);
00047
00049 virtual ~DtLgrHlaTableFactory();
00050
00052 virtual void setUseShortTableNames(bool shortNames);
00053
00055 virtual void setLog(DtOutputStream& log);
00056
00058 DtOutputStream& log();
00059
00061 void createAttributeColumn( const DtDatatypeFedNode* attrDatatypeNode,
00062 DtDatabaseTableSP primaryTable, std::vector<DtDatabaseTableSP>& tables);
00063
00065 virtual DtDatabaseTableSP createSubTable(
00066 const DtDatabaseTable& primaryTable, const DtString& subName,
00067 std::vector<DtDatabaseTableSP>& tables ) = 0;
00068
00070
00071 virtual void setGenerateLargeSubcomponentTables(bool generate);
00072 virtual bool generateLargeSubcomponentTables() const;
00074
00075
00077
00078
00079
00080 virtual int largeSubcomponentThreshold() const;
00081 virtual void setLargeSubcomponentThreshold(int threshold);
00083
00084 protected:
00085 typedef std::set<DtString> ShortNameSet;
00086
00088 virtual void makeTableName( DtString& stringToSet,
00089 const MAKLogger::DtBaseHlaValue& hlaClass,
00090 const char* baseNameToRemove);
00091
00093 virtual void createColumns( const DtString& currentType, DtDatabaseTableSP primaryTable,
00094 const DtString& currentName, const DtString& cardinality );
00095
00097 virtual void addSimpleTypeColumn( const DtDatatypeRep* typeRep,
00098 const DtString& cardinality, DtDatabaseTableSP primaryTable,
00099 const DtString& currentName ) const;
00100
00102 virtual void createArrayTable( DtDatabaseTableSP primaryTable,
00103 const DtDatatypeFedNode* attrDatatypeNode,
00104 std::vector<DtDatabaseTableSP>& tables);
00105
00106
00107 virtual void createArrayColumns( const DtString& currentType,
00108 const DtString& currentName, DtDatabaseTableSP primaryTable );
00109
00111 virtual void updateTableValues(const DtStringTree* node,
00112 std::vector<DtDatabaseTableSP>& tables,DtDatabaseTableSP currentTable,
00113 const DtString& parentName);
00114
00116 virtual void setColumnValue( const DtString& columnDataType,
00117 const DtString& columnValue, DtDatabaseColumn &column );
00118
00120 virtual void updateArrayValues(DtDatabaseTableSP currentTable,
00121 const DtStringTree* node, const DtString& columnName);
00122
00127 virtual DtString getSubTableName( const DtString& primaryTableName,
00128 const DtString& attributeName,const DtString& rootName );
00129
00131 virtual DtDatabaseTableSP findTable(
00132 const std::vector<DtDatabaseTableSP>& tables, const DtString& tableName);
00133
00136 virtual int numberOfSubcomponents(const DtString& dataTypeName);
00137
00138 protected:
00139
00141 static void appendName( DtString &name, const DtString& sufix );
00142
00143 protected:
00144
00145 DtOMTTree* myOMTTree;
00146 DtDatatypeManager* myDatatypeManager;
00147 bool myUseShortNames;
00148 ShortNameSet myShortNames;
00149 int myThreshold;
00150 DtOutputStream myDefaultLog;
00151 DtOutputStream* myLog;
00152 DtDatabaseColumn* myIndexColumn;
00153
00154 typedef std::set<DtString> ColumnLog;
00155 ColumnLog myErrorColumnLog;
00156 bool myGenerateLargeSubcomponentTables;
00157 int myLargeSubcomponentThreshold;
00158 };
00159 }
00160
00161 #endif
00162 #endif