![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2006 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: aggregateNode.h,v $ $Revision: 1.5 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00014 00015 #ifndef DtAggregateNode_H_ 00016 #define DtAggregateNode_H_ 00017 00018 #include "vrfobjcore/vrfobjcoreDefines.h" 00019 #include <vlpi/entityIdentifier.h> 00020 #include <vlutil/vlSmartPointers.h> 00021 #include <list> 00022 #include "vrfobjcore/orgViewManagedObjList.h" 00023 00024 class DtAggregateNode; 00025 class DtAggregateData; 00026 class DtOrganizationManager; 00027 00028 typedef DtBoost::shared_ptr<DtAggregateNode> DtAggregateNodePtr; 00029 typedef DtBoost::shared_ptr<const DtAggregateNode> DtAggregateNodeConstPtr; 00030 typedef std::list<DtAggregateNodePtr> DtAggregateNodeList; 00031 typedef DtBoost::shared_ptr<DtAggregateData> DtAggregateDataPtr; 00032 typedef DtBoost::shared_ptr<const DtAggregateData> DtAggregateDataConstPtr; 00033 00037 class DT_DLL_vrfobjcore DtAggregateNode 00038 { 00039 public: 00040 00042 typedef DtAggregateData* (*DtAggregateDataCreator)(); 00043 00044 public: 00045 00047 DtAggregateNode(const DtEntityIdentifier& objectId, 00048 DtOrganizationManager& organizationManager); 00049 00051 virtual ~DtAggregateNode(); 00052 00054 virtual void addChild(DtAggregateNodePtr child); 00055 00057 const DtAggregateNodeList& childList() const; 00058 00060 virtual const DtEntityIdentifier& objectId() const; 00061 00064 virtual DtAggregateDataPtr data(); 00065 virtual DtAggregateDataConstPtr data() const; 00067 00069 virtual void print() const; 00070 00071 public: 00072 00077 static void setAggregateDataCreator(DtAggregateDataCreator creator); 00078 static DtAggregateDataCreator aggregateDataCreator(void); 00080 00083 virtual DtOrgViewManagedObjectListConstPtr taskableSubordinates() const; 00084 virtual DtOrgViewManagedObjectListConstPtr ableToMoveSubordinates() const; 00085 virtual DtOrgViewManagedObjectListConstPtr allSubordinates() const; 00087 00088 private: 00089 00091 DtAggregateNode(const DtAggregateNode& orig); 00092 00094 DtAggregateNode& operator=(const DtAggregateNode& orig); 00095 00096 protected: 00097 00099 DtEntityIdentifier myObjectId; 00100 00102 DtAggregateDataPtr myData; 00103 00106 DtAggregateNodeList myChildNodes; 00107 00108 protected: 00109 00112 static DtAggregateDataCreator theAggregateDataCreator; 00113 00114 DtOrganizationManager& myOrganizationManager; 00115 DtOrgViewManagedObjectListConstPtr myTaskableSubordinates; 00116 DtOrgViewManagedObjectListConstPtr myAbleToMoveSubordinates; 00117 DtOrgViewManagedObjectListConstPtr myAllSubordinates; 00118 }; 00119 00120 #endif