Go to the documentation of this file.00001
00002
00003
00004
00005
00008
00009 #if DtHLA
00010
00011 #ifndef lgrHlaDatabasePrinter_H_
00012 #define lgrHlaDatabasePrinter_H_
00013
00014 #include "lgrDatabasePrinter.h"
00015
00016 #include <map>
00017 #include <set>
00018 #include <lgrHlaAttribute.h>
00019
00020 class DtDatabaseInterface;
00021 class DtDatatypeManager;
00022 class DtInteractionClassFedNode;
00023 class DtOMTTree;
00024 class DtObjectClassFedNode;
00025 class DtOutputStream;
00026
00027 namespace MAKLogger
00028 {
00029 class DtBaseFomDesc;
00030 class DtBaseInterClassDesc;
00031 class DtConstLgrHlaMessage;
00032 class DtLgrHlaCheckpointTableFactory;
00033 class DtLgrHlaInteractionTableFactory;
00034 class DtLgrHlaObjectTableFactory;
00035 class DtPacket;
00036
00038 class DT_DLL_SQLEXPORTER DtLgrHlaDatabasePrinter : public DtLgrDatabasePrinter
00039 {
00040 public:
00041
00043 DtLgrHlaDatabasePrinter(DtOutputStream& log,
00044 const MAKLogger::DtBaseFomDesc& fom, DtOMTTree* omtTree,
00045 DtDatabaseInterface& databaseInterface);
00046
00048 virtual ~DtLgrHlaDatabasePrinter();
00049
00050 private:
00052 DtLgrHlaDatabasePrinter(const DtLgrHlaDatabasePrinter&);
00053 DtLgrHlaDatabasePrinter& operator=(const DtLgrHlaDatabasePrinter&);
00055 public:
00056
00058 virtual void setUseShortTableNames(bool shortNames);
00059
00061 virtual void setGenerateInstanceTable( bool generate);
00062
00064 virtual void setGenerateCheckpointTable( bool generate);
00065
00067 virtual void setGenerateLargeSubcomponentTables(bool generate);
00068
00071 virtual void setLargeSubcomponentThreshold(int threshold);
00072
00074 virtual void createDefaultTables();
00075
00077 virtual void printInteraction(const MAKLogger::DtConstLgrHlaMessage& hlaMsg);
00078
00080 virtual void printUpdate(const MAKLogger::DtConstLgrHlaMessage& hlaMsg);
00081
00083 virtual void printCheckpoint(const MAKLogger::DtPacket& packet);
00084
00086 virtual void printRemoval(const MAKLogger::DtConstLgrHlaMessage& hlaMsg);
00087
00088 protected:
00089
00090 typedef std::set<MAKLogger::DtLgrHlaHandle> InstanceSet;
00091
00092
00093 struct InterClassCache
00094 {
00095 const MAKLogger::DtBaseInterClassDesc* classDesc;
00096 DtInteractionClassFedNode* fedNode;
00097 DtLgrDatabasePrinter::TableList tables;
00098 };
00099
00100
00101 struct ObjClassCache
00102 {
00103 const MAKLogger::DtBaseObjClassDesc* classDesc;
00104 DtObjectClassFedNode* fedNode;
00105 DtLgrDatabasePrinter::TableList tables;
00106 };
00107
00108 typedef std::map<MAKLogger::DtLgrHlaHandle,InterClassCache>
00109 InteractionLookupMap;
00110
00111 typedef std::map<MAKLogger::DtLgrHlaHandle,ObjClassCache>
00112 ObjectLookupMap;
00113
00116 void outputToDatabase(const MAKLogger::DtBaseObjClassDesc& hlaClass,
00117 const MAKLogger::DtConstLgrHlaMessage& hlaMsg);
00118
00120 InterClassCache& interCache( MAKLogger::DtLgrHlaHandle classHandle );
00121
00123 ObjClassCache& objCache(MAKLogger::DtLgrHlaHandle classHandle );
00124
00125 MAKLogger::DtBaseFomDesc* myPacketFom;
00126 DtOMTTree* myOMTTree;
00127 DtDatatypeManager* myDatatypeManager;
00128 InteractionLookupMap myInteractionLookupMap;
00129 InteractionLookupMap::iterator myLastInteractionIter;
00130 MAKLogger::DtLgrHlaHandle myLastInteractionHandle;
00131 DtLgrHlaInteractionTableFactory* myInteractionTableFac;
00132 ObjectLookupMap myObjectLookupMap;
00133 ObjectLookupMap::iterator myLastObjectIter;
00134 MAKLogger::DtLgrHlaHandle myLastObjectHandle;
00135 DtLgrHlaObjectTableFactory* myObjectTableFac;
00136 DtLgrHlaCheckpointTableFactory* myCheckpointTableFac;
00137 InstanceSet myObjectInstances;
00138 bool myGenerateInstanceTable;
00139 bool myGenerateCheckpointTable;
00140 };
00141
00142 }
00143
00144 #endif
00145 #endif