00001 #ifndef FOLDERREP_H 00002 #define FOLDERREP_H 00003 00004 #include "Any.h" 00005 #include "PartRep.h" 00006 #include "FCO.h" 00007 #include "ConstraintFuncRep.h" 00008 #include "FolderRep.h" 00009 #include "ModelRep.h" 00010 #include "AtomRep.h" 00011 #include "ConnectionRep.h" 00012 #include "SetRep.h" 00013 #include "ReferenceRep.h" 00014 #include "FcoRep.h" 00015 00016 #include "list" 00017 #include "vector" 00018 /* 00019 class FolderElem 00020 { 00021 FolderElem( const Any * m_ptr, const std::string &m_card); 00022 bool operator==( const FolderElem& peer); 00023 Any * getElem() const; 00024 const std::string & getCard() const; 00025 private: 00026 const FolderElem& operator=(const FolderElem& peer); 00027 FolderElem( const FolderElem&); 00028 00029 Any * m_elem; 00030 std::string m_card; 00031 }; 00032 */ 00033 class FolderRep : public Any 00034 { 00035 public: // types 00036 typedef std::vector<FCO*>::iterator FCO_Iterator; 00037 typedef std::vector<FCO*>::const_iterator FCO_ConstIterator; 00038 typedef std::vector<FolderRep*>::iterator SubFolder_Iterator; 00039 typedef std::vector<FolderRep*>::const_iterator SubFolder_ConstIterator; 00040 00041 public: 00042 /* 00043 A FolderRep is created by using the id, ptr and resp_ptr which is the object 00044 selected using the SameFolder Selection Mechanism when SameFolder relation is met. 00045 That is why a folder has to redefine the getName, getDispName operations 00046 */ 00047 FolderRep( BON::FCO& ptr, BON::FCO& resp_ptr); 00048 ~FolderRep(); 00049 00050 /*virtual*/ Any::KIND_TYPE getMyKind() const { return Any::FOLDER; } 00051 /*virtual*/ std::string getName() const; 00052 /*virtual*/ std::string getDispName() const; 00053 00054 void addFCO( FCO * ptr, const std::string & card); 00055 bool isFCOContained( FCO * otr); 00056 bool isEmpty() const; 00057 00058 void addSubFolderRep( FolderRep * ptr, const std::string & card); 00059 std::string doDump(); 00060 00061 void extendMembership(); 00062 void createConstraints( Sheet * s); 00063 virtual void initAttributes(); 00064 00065 protected: 00066 std::vector<FCO *> m_fcoList; 00067 std::vector<std::string> m_fcoCardList; 00068 00072 std::vector<FolderRep*> m_subFolderList; 00073 /* Cardinality for the folders above */ 00074 std::vector<std::string> m_subCardList; 00075 00080 BON::FCO m_respPointer; 00081 00082 private: // forbiding copy 00083 FolderRep( const FolderRep&); 00084 const FolderRep& operator=( const FolderRep&); 00085 00086 }; 00087 #endif //FOLDERREP_H