![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2003 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: orgView.h,v $ $Revision: 1.17 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 #ifndef DtOrganizationView_H_ 00016 #define DtOrganizationView_H_ 00017 00018 #include "vrfobjcore/entIdCbInfo.h" 00019 #include "vrfobjcore/vrfObjPred.h" 00020 #include <vlutil/vlList.h> 00021 #include <vlutil/vlHashlist.h> 00022 #include <vl/globalObjDes.h> 00023 #include <vlpi/disEnums.h> 00024 #include <vector> 00025 #include <list> 00026 #include "vrfobjcore/orgViewManagedObjList.h" 00027 00028 class DtVrfObjectManager; 00029 class DtOrganizationManagerNode; 00030 class DtVrfObject; 00031 class DtEntityIdentifier; 00032 class DtEntityType; 00033 class DtReflectedExtAggregate; 00034 class DtOrgManagerOperation; 00035 class DtSimMessage; 00036 class DtOrgViewManagedObjectListManager; 00037 00042 #include "vrfobjcore/vrfobjcoreDefines.h" 00043 class DT_DLL_vrfobjcore DtOrganizationView 00044 { 00045 protected: 00047 DtOrganizationView(const DtOrganizationView& orig); 00049 DtOrganizationView& operator=(const DtOrganizationView& orig); 00050 public: 00051 00055 DtOrganizationView(DtVrfObjectManager *objMgr); 00056 00058 virtual ~DtOrganizationView(); 00059 00060 virtual bool init(); 00061 00064 00065 virtual DtOrganizationManagerNode* lookupNode( 00066 const DtEntityIdentifier& id) const; 00067 00070 virtual bool isSubordinateOfTopLevel( 00071 const DtEntityIdentifier& id) const; 00072 00074 virtual const DtEntityIdentifier& superior( 00075 const DtEntityIdentifier& id) const; 00076 00078 virtual DtVrfObject* superiorVrfObject(const DtEntityIdentifier& id) const; 00079 00081 virtual bool isSubordinateOf(const DtEntityIdentifier& subordinateId, 00082 const DtEntityIdentifier& superiorId) const; 00084 00087 00089 virtual DtOrganizationManagerNode* addEntity(DtVrfObject *vrfObject); 00090 00092 virtual void removeEntity(DtVrfObject *vrfObject); 00093 00095 virtual void updateAggregate(DtVrfObject *vrfObject); 00096 00098 virtual void updateEntity(DtVrfObject *vrfObject); 00100 00106 virtual DtOrgViewManagedObjectListConstPtr getList( 00107 const DtEntityIdentifier& aggregateId, 00108 const DtVrfObjectPredicate& predicate = 00109 DtVrfObjectPredicate::nullPredicate(), 00110 bool reevaluateFlag = false, DtTime evaluationPeriod = 0.) const; 00111 00114 00117 virtual DtOrganizationManagerNode* locateSuperiorNodeForGlobalId( 00118 const DtGlobalObjectDesignator& globalId) const; 00119 00121 virtual bool isLocal(DtOrganizationManagerNode* node) const; 00122 00124 virtual void printHierarchy() const; 00125 00126 virtual DtVrfObjectManager* objectManager(); 00127 00130 virtual DtVrfObject* topLevelObjectForForce(const DtForceType& force); 00131 00133 virtual DtOrganizationManagerNode* topLevelNodeForForce(DtForceType force); 00134 00135 static bool isTopLevelEntity(const DtEntityType & objectType); 00136 00139 00140 static bool isOrganizedAggregate(DtVrfObject *vrfObject); 00143 static bool isOrganizedEntity(DtVrfObject *vrfObject); 00144 00146 00147 static void vrfObjectAddedCallback(DtVrfObject *vrfObject, void* usr); 00148 static void vrfObjectAboutToBeRemovedCallback(DtVrfObject *vrfObject, 00149 void* usr); 00150 00154 virtual void addNodeAddedCallback( 00155 DtEntityIdentifierCallbackFunction fcn, void* userData); 00156 virtual void removeNodeAddedCallback( 00157 DtEntityIdentifierCallbackFunction fcn, void* userData); 00159 00163 virtual void addNodeRemovedCallback( 00164 DtEntityIdentifierCallbackFunction fcn, void* userData); 00165 virtual void removeNodeRemovedCallback( 00166 DtEntityIdentifierCallbackFunction fcn, void* userData); 00168 00169 protected: 00170 virtual void processVrfObjectAdded(DtVrfObject *vrfObject); 00171 00174 virtual void processVrfObjectAboutToBeRemoved(DtVrfObject *vrfObject); 00175 00177 virtual bool shouldBeAdded(DtVrfObject *vrfObject) const; 00178 00181 virtual void findAndConnectNodeParent(DtOrganizationManagerNode* node); 00182 00185 virtual void disconnectNodeParent(DtOrganizationManagerNode* node); 00186 00190 virtual void findAndConnectNodeChildren(DtOrganizationManagerNode* node); 00191 00193 virtual void disconnectNodeChildren(DtOrganizationManagerNode* node); 00194 00198 virtual void connectNodeToTopLevel(DtOrganizationManagerNode* node, 00199 bool allowCreation = true); 00200 00202 virtual void printNode(DtOrganizationManagerNode* node, 00203 int indentLevel = 0) const; 00204 00208 virtual bool networkStateIsDifferentFromLocalState( 00209 const DtOrganizationManagerNode& node) const; 00210 00213 virtual void invokeNodeAddedCallbacks( 00214 const DtEntityIdentifier& entId) const; 00215 00218 virtual void invokeNodeRemovedCallbacks( 00219 const DtEntityIdentifier& entId) const; 00220 00221 protected: 00222 DtVrfObjectManager *myObjectManager; 00224 DtHashList myTopLevelNodes; 00226 DtHashList myIdHashList; 00227 00228 typedef std::list<DtEntityIdentifierCallbackInfo> DtEntityIdentifierCallbackInfoList; 00229 00230 DtEntityIdentifierCallbackInfoList myNodeAddedCallbackList; 00231 DtEntityIdentifierCallbackInfoList myNodeRemovedCallbackList; 00232 00233 DtOrgViewManagedObjectListManager* myManagedObjectListManager; 00234 }; 00235 00236 #endif 00237