lgrHlaTableFactory.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
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       // Create ARRAY type columns
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

Document ID: Generated on Tue Oct 11 19:41:03 EDT 2011 from SVN revision 107422
Copyright © 2005-2011 VT MÄK Inc. All Rights Reserved (www.mak.com)