00001 /****************************************************************************** 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00008 00009 #if DtDIS 00010 00011 #ifndef lgrDisObjectTableFactory_H_ 00012 #define lgrDisObjectTableFactory_H_ 00013 00014 #include "lgrSqlExporter.h" 00015 #include <databaseTable.h> 00016 00017 #include <vlutil/vlString.h> 00018 #include <vector> 00019 00020 class DtDatabaseColumn; 00021 class DtDatabaseInterface; 00022 00023 namespace MAKLogger 00024 { 00025 class DtAbsoluteTime; 00026 class DtConstLgrDisMessage; 00027 00030 class DT_DLL_SQLEXPORTER DtLgrDisObjectTableFactory 00031 { 00032 public: 00033 00035 DtLgrDisObjectTableFactory(); 00036 00038 virtual ~DtLgrDisObjectTableFactory(); 00039 00040 private: 00042 DtLgrDisObjectTableFactory(const DtLgrDisObjectTableFactory&); 00043 DtLgrDisObjectTableFactory& operator=(const DtLgrDisObjectTableFactory&); 00045 public: 00046 00048 DtDatabaseTable& createObjectInstanceTable(); 00049 00050 00052 DtDatabaseTable& addObjectInstance(const MAKLogger::DtAbsoluteTime& time, 00053 const MAKLogger::DtConstLgrDisMessage& message); 00054 00056 DtDatabaseTable& removeObjectInstance( 00057 const DtString& id, 00058 const DtString& type, 00059 const MAKLogger::DtAbsoluteTime& time, 00060 bool isFinalPduBitSet, 00061 const std::vector<DtString>*& removalColumns, 00062 DtDatabaseInterface& db, 00063 const DtString*& removalCondition ); 00064 00065 00067 bool isInstance(const MAKLogger::DtConstLgrDisMessage& message) const; 00068 00070 DtString instanceId(const MAKLogger::DtConstLgrDisMessage& message) const; 00071 00073 DtString instanceType(const MAKLogger::DtConstLgrDisMessage& message) const; 00074 00075 protected: 00076 00078 DtDatabaseTable& addEntityStateInstance(const MAKLogger::DtAbsoluteTime& time, 00079 const MAKLogger::DtConstLgrDisMessage& msg); 00080 00081 DtString myTableBuffer; 00082 00083 DtDatabaseTableSP myObjectInstanceTable; 00084 00085 DtDatabaseColumn* myEntityIdColumn; 00086 DtDatabaseColumn* myEntityIdSiteColumn; 00087 DtDatabaseColumn* myEntityIdAppColumn; 00088 DtDatabaseColumn* myEntityIdEntityColumn; 00089 00090 DtDatabaseColumn* myEntityTypeColumn; 00091 DtDatabaseColumn* myEntityTypeEntityKindColumn; 00092 DtDatabaseColumn* myEntityTypeDomainColumn; 00093 DtDatabaseColumn* myEntityTypeCountryColumn; 00094 DtDatabaseColumn* myEntityTypeCategoryColumn; 00095 DtDatabaseColumn* myEntityTypeSubcategoryColumn; 00096 DtDatabaseColumn* myEntityTypeSpecificColumn; 00097 DtDatabaseColumn* myEntityTypeExtraColumn; 00098 00099 DtDatabaseColumn* myFirstPacketTimeColumn; 00100 DtDatabaseColumn* myLastPacketTimeColumn; 00101 DtDatabaseColumn* myFinalPduBitSetColumn; 00102 00103 std::vector<DtString> myRemovalColumns; 00104 DtString myRemovalCondition; 00105 00106 }; 00107 00108 } 00109 00110 #endif 00111 #endif