![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2005 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: orgViewManagedObjList.h,v $ $Revision: 1.3 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 #ifndef DtOrgViewManagedObjectList_H_ 00016 #define DtOrgViewManagedObjectList_H_ 00017 00018 #include <vlutil/vlTime.h> 00019 #include <vlpi/entityIdentifier.h> 00020 #include <list> 00021 #include <vlutil/vlSmartPointers.h> 00022 00023 class DtVrfObject; 00024 class DtOrganizationView; 00025 class DtOrganizationManagerNode; 00026 class DtVrfObjectManager; 00027 class DtVrfObjectPredicate; 00028 class DtVrfObjectPredicateEvaluator; 00029 class DtOrgViewManagedObjectList; 00030 00033 typedef DtBoost::shared_ptr<DtOrgViewManagedObjectList> DtOrgViewManagedObjectListPtr; 00036 typedef DtBoost::shared_ptr<const DtOrgViewManagedObjectList> DtOrgViewManagedObjectListConstPtr; 00037 00043 #include "vrfobjcore/vrfobjcoreDefines.h" 00044 class DT_DLL_vrfobjcore DtOrgViewManagedObjectList 00045 { 00046 private: 00049 DtOrgViewManagedObjectList(); 00050 DtOrgViewManagedObjectList(DtOrgViewManagedObjectList& orig); 00051 DtOrgViewManagedObjectList& operator=(DtOrgViewManagedObjectList& orig); 00053 00054 protected: 00058 DtOrgViewManagedObjectList(DtOrganizationView& organizationView, 00059 const DtEntityIdentifier& aggregateId, 00060 const DtVrfObjectPredicate& predicate, 00061 bool reevaluatePeriodically = false, DtTime evaluationPeriod = 0.0); 00062 00064 virtual void init(); 00065 00066 public: 00069 static DtOrgViewManagedObjectListPtr create( 00070 DtOrganizationView& organizationView, 00071 const DtEntityIdentifier& aggregateId, 00072 const DtVrfObjectPredicate& predicate, 00073 bool reevaluatePeriodically = false, DtTime evaluationPeriod = 0.0); 00074 00076 virtual ~DtOrgViewManagedObjectList(); 00077 00080 virtual const DtEntityIdentifier& aggregateId() const; 00081 00083 virtual const DtVrfObjectPredicate& predicate() const; 00084 00086 virtual bool reevaluatePeriodically() const; 00087 00089 virtual DtTime evaluationPeriod() const; 00090 00091 typedef std::list<DtVrfObject*>::iterator iterator; 00092 typedef std::list<DtVrfObject*>::const_iterator const_iterator; 00093 00097 virtual iterator begin(); 00098 virtual const_iterator begin() const; 00099 virtual iterator end(); 00100 virtual const_iterator end() const; 00101 virtual size_t size() const; 00103 00104 protected: 00107 virtual void add(DtVrfObject* obj); 00108 virtual void remove(DtVrfObject* obj); 00110 00113 static void childAddedCallback(DtEntityIdentifier eid, void* userData); 00114 00117 static void childRemovedCallback(DtEntityIdentifier eid, void* userData); 00118 00119 virtual void processChildAdded(DtEntityIdentifier eid); 00120 virtual void processChildRemoved(DtEntityIdentifier eid); 00121 00123 static void predicateCallback(DtVrfObject* vrfObject, 00124 DtVrfObjectPredicateEvaluator* predicateEval, void* userData); 00125 virtual void processPredicateCallback(DtVrfObject* vrfObject, 00126 DtVrfObjectPredicateEvaluator* predicateEval); 00127 00130 static void nodeAddedCallback(DtEntityIdentifier eid, void* userData); 00131 00134 static void nodeRemovedCallback(DtEntityIdentifier eid, void* userData); 00135 00136 virtual void processNodeAdded(DtEntityIdentifier eid); 00137 virtual void processNodeRemoved(DtEntityIdentifier eid); 00138 00139 static void objectRemovedCallback(DtVrfObject * vrfObject, void * usr); 00140 virtual void processObjectRemoved(DtVrfObject * vrfObject); 00141 00142 virtual void registerAggregateNodeCallbacks(); 00143 virtual void registerOrgViewCallbacks(); 00144 virtual void registerObjectManagerCallbacks(); 00147 void unregisterAggregateNodeCallbacks(); 00148 void unregisterOrgViewCallbacks(); 00149 void unregisterPredicateCallbacksForAllChildren(); 00150 void unregisterPredicateCallbacks(DtVrfObject& object); 00151 void unregisterObjectManagerCallbacks(); 00153 00154 virtual void populateList(); 00155 00156 protected: 00157 DtOrganizationView& myOrganizationView; 00158 DtEntityIdentifier myAggregateId; 00159 DtOrganizationManagerNode* myAggregateNode; 00160 DtVrfObjectManager* myObjectManager; 00161 DtVrfObjectPredicate* myPredicate; 00162 DtVrfObjectPredicate* myNegatedPredicate; 00163 bool myReevaluatePeriodicallyFlag; 00164 DtTime myEvaluationPeriod; 00165 std::list<DtVrfObject*> myManagedObjectList; 00166 }; 00167 00168 00169 00170 #endif 00171