lgrHlaObjectTableFactory.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 #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

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)