VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/orgView.h
Go to the documentation of this file.
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 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)