00001
00002
00003 #ifndef _JOINGRPS_H
00004 #define _JOINGRPS_H
00005
00006 #include "joingrptype.h"
00007 #include "joingrp.h"
00008 #include "join.h"
00009 #include "idreferl.h"
00010 #include "tagorder.h"
00011 #include "xmlsimplestruct.h"
00012 #include <string>
00013 #include <map>
00014 #include <vector>
00015
00018 class JoinGrpS {
00019 std::vector <JoinGrp> joinGrpV;
00020 unsigned ind;
00021
00022 void printErrorea(char*, XMLSimpleNode*, XMLSimpleNode*) const;
00023 XMLSimpleNode* sortuXptr(XMLSimpleStruct*, const std::string & id, const std::string & docRef, const std::string & from) const;
00024 std::map <RefDataErl, Id, TagOrder<RefDataErl> > lortuXptrId() const;
00025 Join xJoin2Join(const std::map<Id,Id> & xId2Id, const Join & xJoin) const throw (char*);
00026
00027 public:
00028
00030 JoinGrpS();
00031
00035 JoinGrpS(const JoinGrpS & jgs);
00036
00041 JoinGrpS& operator=(const JoinGrpS & jgs);
00042
00046 void add(const JoinGrp & jg);
00047
00051 void remove(const JoinGrp & jg);
00052
00056 void put(const JoinGrp & jg);
00057
00060 void removeAll();
00061
00066 void addJoin(const JoinGrpType & type, const Join & join);
00067
00072 void removeJoin(const JoinGrpType & type, const Join & join);
00073
00076 void begin();
00077
00080 void next();
00081
00085 bool ready() const;
00086
00090 JoinGrp current() const;
00091
00093 void ordenatu();
00094
00098 unsigned getJoinGrpKop() const;
00099
00104 JoinGrp getJoinGrp(const unsigned pos) const;
00105
00110 JoinGrp getJoinGrp(const JoinGrpType & jgt) const;
00111
00116 XMLSimpleNode* toXML(XMLSimpleStruct* xmlstruct, const IdRefErl & idRefErl) const;
00117
00121 void init(XMLSimpleNode* joinItem) throw (char*);
00122
00123
00124
00125 };
00126 #endif //_JOINGRPS_H