Go to the documentation of this file.00001
00002
00003
00004
00005
00008
00009 #if DtHLA
00010 #ifndef lgrHlaObjectTableFactory_H_
00011 #define lgrHlaObjectTableFactory_H_
00012
00013 #include "lgrSqlExporter.h"
00014 #include "lgrHlaTableFactory.h"
00015 #include <databaseTable.h>
00016
00017 #include <vlutil/vlString.h>
00018 #include <vector>
00019 #include <lgrHlaAttribute.h>
00020
00021 class DtAttributeFedNode;
00022 class DtDatatypeManager;
00023 class DtDatabaseColumn;
00024 class DtOMTTree;
00025 class DtObjectClassFedNode;
00026 class DtStringTree;
00027 class DtDatabaseInterface;
00028
00029 namespace MAKLogger
00030 {
00031 class DtBaseObjClassDesc;
00032 class DtBaseParamDesc;
00033 class DtConstLgrHlaMessage;
00034
00037 class DT_DLL_SQLEXPORTER DtLgrHlaObjectTableFactory : public DtLgrHlaTableFactory
00038 {
00039 public:
00040
00042 DtLgrHlaObjectTableFactory(DtOMTTree* omtTree,DtDatatypeManager* datatypeManager);
00043
00045 virtual ~DtLgrHlaObjectTableFactory();
00046
00047 private:
00049 DtLgrHlaObjectTableFactory(const DtLgrHlaObjectTableFactory&);
00050 DtLgrHlaObjectTableFactory& operator=(const DtLgrHlaObjectTableFactory&);
00052 public:
00053
00055 DtDatabaseTable& createObjectInstanceTable();
00056
00061 virtual const DtString& getTableName(const MAKLogger::DtBaseObjClassDesc& objClass);
00062
00064 std::vector<DtDatabaseTableSP> createTables(
00065 const MAKLogger::DtBaseObjClassDesc& classDesc,
00066 const DtObjectClassFedNode& fedNode,
00067 const MAKLogger::DtConstLgrHlaMessage& hlaMessage);
00068
00069
00071 DtDatabaseTableSP createSubTable( const DtDatabaseTable& primaryTable,
00072 const DtString& attrNode, std::vector<DtDatabaseTableSP> &tables);
00073
00075 void updateTables( std::vector<DtDatabaseTableSP>& tables,
00076 const MAKLogger::DtBaseObjClassDesc& classDesc,
00077 const DtObjectClassFedNode& fedNode,
00078 const MAKLogger::DtConstLgrHlaMessage& hlaMessage);
00079
00081 DtDatabaseTable& addObjectInstance(const MAKLogger::DtBaseObjClassDesc& classDesc,
00082 const MAKLogger::DtConstLgrHlaMessage& message);
00083
00085 DtDatabaseTable& removeObjectInstance(
00086 const MAKLogger::DtConstLgrHlaMessage& message,
00087 const std::vector<DtString>*& removalColumns,
00088 DtDatabaseInterface& db,
00089 const DtString*& removalCondition );
00090
00091
00092 protected:
00093
00094 typedef std::map<MAKLogger::DtLgrHlaHandle,const DtAttributeFedNode*> \
00095 AttributeHandleNodeMap;
00096
00097 typedef std::map<MAKLogger::DtLgrHlaHandle,AttributeHandleNodeMap> \
00098 ObjClassAttrHandleNodeMap;
00099
00101 virtual void addDefaultColumns(DtDatabaseTable& table,
00102 const MAKLogger::DtConstLgrHlaMessage& hlaMessage);
00103
00105 virtual void updateDefaultColumns(DtDatabaseTable& table,
00106 const MAKLogger::DtConstLgrHlaMessage& hlaMessage);
00107
00109 virtual void updateSubTableDefaultColumns(const DtDatabaseTable& primaryTable,
00110 DtDatabaseTable& currentTable,
00111 const MAKLogger::DtConstLgrHlaMessage& hlaMessage);
00112
00114 virtual const DtAttributeFedNode* getAttrNode(
00115 const MAKLogger::DtBaseObjClassDesc &classDesc,
00116 MAKLogger::DtLgrHlaHandle paramHandle,
00117 const DtObjectClassFedNode& fedNode );
00118
00119 protected:
00120 DtString myTableBuffer;
00121
00122 DtDatabaseTableSP myObjectInstanceTable;
00123 DtDatabaseColumn* myUniqueIdentifierColumn;
00124 DtDatabaseColumn* myArrivalTimeColumn;
00125 DtDatabaseColumn* myObjectNameColumn;
00126 DtDatabaseColumn* myTagColumn;
00127 DtDatabaseColumn* myObjectHandleColumn;
00128 DtDatabaseColumn* myObjectClassNameColumn;
00129 DtDatabaseColumn* myObjectClassHandleColumn;
00130 DtDatabaseColumn* myObjectDiscoveryTimeColumn;
00131 DtDatabaseColumn* myObjectRemovalTimeColumn;
00132 DtDatabaseColumn* myParentEntryIdColumn;
00133
00134 ObjClassAttrHandleNodeMap myObjClassAttrNodeMap;
00135 std::vector<DtString> myRemovalColumns;
00136 DtString myRemovalCondition;
00137
00138 };
00139
00140 }
00141
00142 #endif
00143 #endif