From eb088dd3f21532a1529c035d2347c396015372ca Mon Sep 17 00:00:00 2001 From: Florent Madelaine Date: Wed, 26 Oct 2022 15:41:44 +0200 Subject: [PATCH] version beta --- java/APIGroupe/Makefile | 8 +- java/APIGroupe/README.md | 4 +- .../API/AbstractChangementFactory.class | Bin 0 -> 656 bytes .../API/AbstractGroupeFactory.class | Bin 0 -> 1079 bytes .../projetIHM2022FI2/API/Changement.class | Bin 0 -> 1340 bytes .../projetIHM2022FI2/API/Etudiant.class | Bin 0 -> 985 bytes .../projetIHM2022FI2/API/Groupe.class | Bin 0 -> 2368 bytes .../projetIHM2022FI2/API/MonPrint.class | Bin 0 -> 173 bytes .../projetIHM2022FI2/API/TypeGroupe.class | Bin 0 -> 1224 bytes .../MNP/AbstractChangementFactoryNP.class | Bin 0 -> 3401 bytes .../MNP/AbstractGroupeFactoryNP.class | Bin 0 -> 6206 bytes .../projetIHM2022FI2/MNP/ChangementNP.class | Bin 0 -> 1397 bytes .../projetIHM2022FI2/MNP/EtudiantNP.class | Bin 0 -> 916 bytes .../projetIHM2022FI2/MNP/GroupeNP.class | Bin 0 -> 4009 bytes .../projetIHM2022FI2/Test/TestTexteMNP.class | Bin 0 -> 7819 bytes .../API/AbstractChangementFactory.java | 17 ++- .../API/AbstractGroupeFactory.java | 9 ++ .../projetIHM2022FI2/API/Changement.java | 2 +- .../projetIHM2022FI2/API/Groupe.java | 2 +- .../MNP/AbstractChangementFactoryNP.java | 104 ++++++++++++++++++ .../MNP/AbstractGroupeFactoryNP.java | 31 +++--- .../projetIHM2022FI2/MNP/ChangementNP.java | 9 +- .../projetIHM2022FI2/Test/TestTexteMNP.java | 54 ++++++++- 23 files changed, 214 insertions(+), 26 deletions(-) create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/AbstractChangementFactory.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/Changement.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/Etudiant.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/Groupe.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/MonPrint.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/TypeGroupe.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/ChangementNP.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/EtudiantNP.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/GroupeNP.class create mode 100644 java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/Test/TestTexteMNP.class create mode 100644 java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java diff --git a/java/APIGroupe/Makefile b/java/APIGroupe/Makefile index ca8bb68..30f58f2 100644 --- a/java/APIGroupe/Makefile +++ b/java/APIGroupe/Makefile @@ -86,6 +86,11 @@ ${BUILD}/MNP/AbstractGroupeFactoryNP.class : ${SRC}/MNP/AbstractGroupeFactoryNP. ${BUILD}/API/AbstractGroupeFactory.class ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/AbstractGroupeFactoryNP.java +${BUILD}/MNP/AbstractChangementFactoryNP.class : ${SRC}/MNP/AbstractChangementFactoryNP.java \ + ${BUILD}/API/AbstractChangementFactory.class \ + ${BUILD}/API/Changement.class + ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/AbstractChangementFactoryNP.java + ###... @@ -95,7 +100,8 @@ ${BUILD}/MNP/AbstractGroupeFactoryNP.class : ${SRC}/MNP/AbstractGroupeFactoryNP. ${BUILD}/MNP/EtudiantNP.class \ ${BUILD}/MNP/GroupeNP.class \ ${BUILD}/MNP/ChangementNP.class \ - ${BUILD}/MNP/AbstractGroupeFactoryNP.class + ${BUILD}/MNP/AbstractGroupeFactoryNP.class \ + ${BUILD}/MNP/AbstractChangementFactoryNP.class ${JAVAC} -Xlint:deprecation ${JAVAC_OPTIONS} ${SRC}/Test/TestTexteMNP.java # ## JARS ## diff --git a/java/APIGroupe/README.md b/java/APIGroupe/README.md index 22317a9..ff9eb95 100644 --- a/java/APIGroupe/README.md +++ b/java/APIGroupe/README.md @@ -1,6 +1,8 @@ # APIGroupes -Attention l'API n'est pas encore complète. +Attention l'API n'est pas encore complètement testée. + +Je viens d'ajouter des éléments pour les changements (modèles NP, changements mineurs dans l'API et exemples dans le fichier de test). API pour le projet IHM 2022-2023. diff --git a/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/AbstractChangementFactory.class b/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/AbstractChangementFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..68bcaf2d89aa58c8a5904fb87d5b52b8a63a75ac GIT binary patch literal 656 zcmb7?O-{ow5QWF3KeYTbZOJg^;8)JXUf<0J;vru5Q;{AG;SV24Yx z(@YiAq_?IncO68fH3Ofe=^q69vWic0rt&V%F`=#i0WJPZ l0G+mgEocMq*?}(WJyu(=&G$YGR{BnT?!q3|1njRmhM$0O!MFeb literal 0 HcmV?d00001 diff --git a/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.class b/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..634d5e0d507415b2f71d7a02a2e435d3a5eb2c64 GIT binary patch literal 1079 zcmbtT%T59@6um_r@(@t*g-bV(sAJf$7+;t;Itd2M7!#L;DU;$jC8eYB*If7kew6Vt z!-xqcKvk52%o!+r|(Qcxz4bC_yN@gfu#9)ZJ3wb_#z_f@asGU{ss zDf&#Aw|BLZTFo$PTBB`hH&XZmrV~g!d*W?K;G!}=tJ>_-SE{+xbF?cVu!@IDIh(mm zu~3=7(ISG6NbgEUC-lYw^gnhiCAsJ5rddVFLMYj$Qt@y&m&>V+M6=YkA4JsU(;|Yi zW4Tto&8esKQKh^s#lXO1qhh0^qZ=66L1nt}aWuZ-u4XZXv7{~TcvSh45xAetIGy7e zL>}~W)Gwi_(BQDui%tlf%`=$jx;|~2FT@tJ9IHPi-GgOjx$4wcy z67v0c^x_HBXGi!ioj`H&Wm=s+>#8IH0x|r`0O>e^6^H{MCLkGL3RVM5Lngp1KKlRw literal 0 HcmV?d00001 diff --git a/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/Changement.class b/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/Changement.class new file mode 100644 index 0000000000000000000000000000000000000000..bbd34c14ab05de51ffce781ab277d9940502cda4 GIT binary patch literal 1340 zcma)6ZBG+H5Pp`IUTsebh~O($1ubta78SIJLL*XBkOU$cKP|nb99(ZNcY7rK6Mu%E zFks>j@JAVEd)0z%fDfIWna=av%+AdI`hD^fz$}UeZYRKSCy6BPCNYeAT1zK!9}l$l zu%F@{>yV5VV+O_zOcVwqQz^bZZt zqQuHl?uQnhuS<6qLl05_owP{xlXj?n(w0#K z(_2Pzi1bhBLI<65KfpeJM@M;L{1}}K#~My*w^oUtRHLDuAPyYi%GSgY65r~4H%RuN lljJ1*IfWTy$+}5)2X0}3PW{@=;|*SscZBRX*`xG(^aoBpW^4ce literal 0 HcmV?d00001 diff --git a/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/Etudiant.class b/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/Etudiant.class new file mode 100644 index 0000000000000000000000000000000000000000..a784b4475e6ab3515b48bca357dbe02c87f44aad GIT binary patch literal 985 zcma)5+iuf95IxgeoVqS8rKOZh8z6-wKwagfLJcsIz_PSF4 zgwNoSR)P=UqY&dbs6mN<2hYyT&dlyPd;H_)^>+YAI9!2&JF(e}&DI8IcMRM&@c<7E zJTkCL$n>Rlx`b4*EcSB9TX>8oynS<>5AA{MXai3z6tGVy_X69EbdQe|kv$I7fH57PR1PbZ zx>K>=HXZx-(f?I^G6iPh8J-iin2|i?6Wr_+-R>JI5w=HSC~L~^2>sF3=j?@=(S?N9 z#d-4PGtNSaXK*I8^Q-h!FcQr3qPd@D1}DT+7tA$KjCp)XDBSSq`WI>_r>~m;sf&(Q z!KHx%KDMFMFd7pq$MCsWXHnqdNM2|jn$c(O%*hg`J?gdax52= z{{!1}L``^J%hj@Kz$Wa^;ahY!!tUSevc$hk1}t;_Ytm_!K1_BfR_$bE;qngQ7OyOQ z_K%Qa57;YTfmmo)Sen=r;TmZm^$nS?$bOl$t+UN0<=l3gqa|$M1+OM&OL&Dcc5s*D K9LL-I-TMW1$_7XP literal 0 HcmV?d00001 diff --git a/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/Groupe.class b/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/API/Groupe.class new file mode 100644 index 0000000000000000000000000000000000000000..7bcf3e01f0c0c7c62e0f4414374632bb00bc5d70 GIT binary patch literal 2368 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 Ne$11m4DGdH>>pFLvoiny literal 0 HcmV?d00001 diff --git a/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.class b/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.class new file mode 100644 index 0000000000000000000000000000000000000000..55683c49b14415aabde28774372826e770396995 GIT binary patch literal 6206 zcmbtY349dg75{%^li6$r&`8uM!4Xgb2??eZg#?92A&MY&t5jMy^{e)INy@BQEZ zz3NU$5YXIBra!5}W1yP4aTHG;~WG zABf}DIBt`ot);jfcO-b>&O76{OCq{ke)GXNJ`~4?cKBC~G3Dn`faz^uD z8CK&Vsrhgjy75RE*5Kpv@~DFCQv3<2utULPaeOk4PsQ{QSvP@Hw_j4d#&rQ4}Db6$66+R$_Ll&&+pxR!N#uU?&+^;ScC*LQy_{nRTyU^P zQy@y~R!@D>@{AtCX&kxpxpYv{WLl;-SKx%|h^=&kRC5_nldtx>7;Ef?Wy* z1j_VOYK5H-zvE~uAGuH$dbyOTTVA6qg)u3|&Mso2^3G)9@*1p!Ny8LTm~p?b+YPT# z!ES-&M^SUu(u?%|zW-YTc%h0k$&eO8Gt93bhcNmVAld}AI z(zKLqd0N`gEIXqauBTbKbXvjZRD2%Kuw5O#2$r_Ch25&PO?u@eiSq=GJ*Z!)I3F!4 zp2c$tzM$fZ*sJ1sd`ZQZ@q&V{NXb_PS`L70SZSlz$E@}EP0@#^b?Hv9u%<}JGPs!Kk>4TJ>xCRn(-<2T7VEt%H3nQBe;4%4Nx1KOyT<#8EO^MwX`QhxJ> zoT1IonzW2*X-#vqjJ{DO_YxJ~$18l)L^1ikgAQ#;Z-Z2Z@d(^HR6Tm!@~$Nl+-aGT z+d>SkP1+oT!4(`7YKK`!8LpdiYc*eSh?;+z^ZPWz@>T7eTPHBnPh+N&d1d(x?s9qL z=`Kh(n~2%v8S)^IFqhnRO9n1d@B@kD^z;4a-&5)v1JO+Y4H3ydf$ z=;MsE-bl&$jgLANf50ClN9-R{3Ju^w%gtr8w&NM8Wjv$0Y)p|xFiy5QgKda8H8WZE zGjHz>cKX9JBfIn=o)=7F!TGYzbw-!Res*|slIUU04KWtXI2;S21h}+bUJxYNBy@Ib z&RGQ^$q^{3mLo;vF%n?o7%|2%Hpu4MYFn*-w>mpIE(B_g2hUp3*)mk(kjkkbnex3Q z^WLKKvVhX7r*p=#Zh_;glTjP_iJF_UIRZWciqK`$!XSz=*}FOCyXPC51S*CJXX?d6 z(1o+H#B_1gVq|9S494e`61^WEEex?7q{koJN=T@lCbbIbXg9CmhS6NL*`^g-m{-Th z*u4fP5O=Zv96riPn%+wS69T6X7hoh|gS<#MD>h{bXU2$TeyJOvPxv!a zBUTG`iHyG9m~UHMy0^;o)^g=~Jlo94lqg$a(uNdbD5E8!@XPdIF8#Aa4u>2v0*{-6 z2k`hIU*``db(FQb+iGlNiN`GeV_aU-4{$JB@`pygYjYYny1|(BQN(P^8XXecpmm;l zS%3uxB~)*-x&rj>FYcK=%L^BZD2%dLKbSsrM+{wYlVVX`P6GJx2>KR7;l8Am7dGvUPCg$tu zbUPErA4~f<(;XDwaM%PU99|En^1aJq2rR)U{&9%si;+=sW~Xeazivf>YtHz*E~msq z316oGbEfq})Rd3fg`!o{_8`_#Grp=H#XC{LJEfx^@tr80_O$>X31uX#BWxBEA@xgt%WOiIT>vYRXTMxNFO`;ozSd zBAqDk6ejgyaz2F9;YivIlh?Eb{u#ftnoY!y>raUGq^jvn4J~VH` z*jjlzk0`dIWc&VCYh^bJ@;resz;_;TyhH#mV-{ag%;S58g?taN1h4pj#-ivyI6*-- znV-Io8-oVlLr&JRtp^|{hAl9$2lG417xZJ{vosv^>Y%&69`0L5&GkNjH2%&{`Iz`C T{)xYliTimU=l#d{|G@tMv-;V0 literal 0 HcmV?d00001 diff --git a/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/ChangementNP.class b/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/ChangementNP.class new file mode 100644 index 0000000000000000000000000000000000000000..10825aab51cc50c7b503eb8b7285528dd5560ce6 GIT binary patch literal 1397 zcmbVM%Wl&^6g`ut6HFhW4_XSCQcB_`bqNJ3r9$*UAyS)GDxzYC<4l92bR1l}V$YAT zt;B*?1Y*IaJ3b0=$BEJ?LY2iL=Vm77oVoXSoZo+b{sQm_57SU_N5Om=cac?)Q=q4C z2@4YP5(*L)B^XI8C2=o_B11y(cV4;1z{(5}TYfPa^zB2}uzl~a+T^Bhv|Ojbz4G&& z;!?4=RW2H9du8L9>-a5RB0-ftoFN}V^wjffwkbT4C01==dyg63XF~|Pr-fkljtIf+ zy5?Ro#5SB74KciJ3tsV$s@#2H()0}RI*m@bM6)@HC`PL_nl+mXZ{Ja^)5s*I_81mJ z$$OJ9D63Yp8yEFK?WXq~-?jLbEn6Jjcw>q>KjOlx>@7CT6H~mfWfb4^%t*puP2N&m*4jo6RKdt60VZhRy#ob9uwDMa|`b z9mA6_HkKnS?h3jova_?(?zIUlR19HQ#fXGaWK>*{Foto;_2O&0Q`s~6qhc75VHr(I z&)BUtxaHBKz1Txu{c{h>K5+0oyV-R(W*BlgMd;t%cAQCUyz8se)ScJHj?^68;V|NBcQiNmVHcnkl(3z98 zKZPu&QNT46F+=}E*NHt%tIp|i#Yh#`zajatXC+$%<_Kp3fo!y&s(c!t=81aapVZVK ob(yF)p%D(crU$93P$=QqJ}MoHc$9)TAG_1*5Rq=vj}grM1&}>N!~g&Q literal 0 HcmV?d00001 diff --git a/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/EtudiantNP.class b/java/APIGroupe/build/fr/iutfbleau/projetIHM2022FI2/MNP/EtudiantNP.class new file mode 100644 index 0000000000000000000000000000000000000000..7eddb629333f9b3d65532090947a01a272bbca3c GIT binary patch literal 916 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 M|MdJTy<0u_|JpSWtN;K2 literal 0 HcmV?d00001 diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractChangementFactory.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractChangementFactory.java index 9c2c6b4..4acea36 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractChangementFactory.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractChangementFactory.java @@ -10,16 +10,27 @@ public interface AbstractChangementFactory { /** * permet de récupérer une usine abstraite pour les groupes qui fonctionne en tandem avec cette usine abstraite - * @return cette usine abstraite + * @return cette usine abstraite pour les groupes */ public AbstractGroupeFactory getGroupeFactory(); /** * permet de récupérer les changements - * @return tous les changements en attente + * @return l'ensemble de tous les changements en attente + * + * NB. Attention. C'était Iterator dans la version beta. */ - public Iterator getAllChangements(); + public Set getAllChangements(); + /** + * permet de mettre en oeuvre un changement connu de l'usine abstraite. + * En cas de succès, le changement est oublié (détruit). + * + * @throws java.lang.NullPointerException si un argument est null + * @throws java.lang.IllegalArgumentException si inconnu de l'usine abstraite + */ + public void applyChangement(Changement c); + /** * permet de supprimer un changement connu de l'usine abstraite. * diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java index 946dff7..63dc788 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/AbstractGroupeFactory.java @@ -13,6 +13,15 @@ public interface AbstractGroupeFactory { */ public Groupe getPromotion(); + + /** + * Test si le groupe g est connu de l'usine (connu maintenant). + * Si la réponse est true, les méthodes avec ce groupe en paramètre devraient bien fonctionner. + * Si la réponse est false, le comportement n'est pas garanti. + */ + public Boolean knows(Groupe g); + + /** * permet de supprimer un groupe connu de l'usine abstraite qui ne contient pas de groupes. * Pour détruire un groupe connu qui en contient d'autres il faut le faire récursivement. diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Changement.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Changement.java index 1b0d88d..9b8bab4 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Changement.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Changement.java @@ -42,7 +42,7 @@ public interface Changement extends MonPrint { */ public default String monPrint() { StringBuilder sb = new StringBuilder(); - sb.append("Changement de " + this.getEtu().monPrint() + " depuis le groupe " + this.getA().getName() + " vers le groupe " + this.getA().getName()); + sb.append("Changement de " + this.getEtu().monPrint() + " depuis le groupe " + this.getA().getName() + " vers le groupe " + this.getB().getName()); return sb.toString(); } diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java index cb397fa..0d24d4b 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/API/Groupe.java @@ -110,7 +110,7 @@ public interface Groupe extends MonPrint { sb.append("\t _ "+ s.monPrint()); sb.append("\n"); } - sb.append(" ** Sous Groupess **\n"); + sb.append(" ** Sous Groupes **\n"); for (Groupe g: getSousGroupes()){ sb.append("\t _ "+ g.getName() + " (" + g.getType() + ", capacité " + g.getMin() + " à " + g.getMax() +", id " + g.getId()+")"); sb.append("\n"); diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java new file mode 100644 index 0000000..a586c32 --- /dev/null +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractChangementFactoryNP.java @@ -0,0 +1,104 @@ +package fr.iutfbleau.projetIHM2022FI2.MNP; +import fr.iutfbleau.projetIHM2022FI2.API.*; +import java.util.*; +/** + * Usine abstraite gérant l'ensemble des changements. + * + */ + +public class AbstractChangementFactoryNP implements AbstractChangementFactory { + + // l'usine à groupe travaillant en tandem avec cette usine. + private AbstractGroupeFactory agf; + + // On utilise une table de hachage pour retrouver facilement un changement (à partir de son id). + // Si il y a beaucoup de changements c'est plus rapide que de parcourir toute une liste. + private HashMap brain; + + public AbstractChangementFactoryNP(AbstractGroupeFactory agf){ + Objects.requireNonNull(agf,"On ne peut pas créer une usine à changement dont l'usine à groupe parternaire est null"); + this.agf=agf; + this.brain=new HashMap(); + } + + + /** + * permet de récupérer l'usine abstraite pour les groupes qui fonctionne en tandem avec cette usine abstraite + * @return cette usine abstraite pour les groupes + */ + public AbstractGroupeFactory getGroupeFactory(){ + return this.agf; + } + + /** + * permet de récupérer les changements + * @return l'ensemble de tous les changements en attente + */ + public Set getAllChangements(){ + // la méthode value() d'un hashmap retourne la collection des valeurs. + // Il faut transformer la collection en Set. + // Un constructeur de HashSet permet de faire cette opération. + Set out = new HashSet(this.brain.values()); + return out; + } + + /** + * permet de mettre en oeuvre un changement connu de l'usine abstraite. + * + * @throws java.lang.NullPointerException si un argument est null + * @throws java.lang.IllegalStateException si le changement n'a pas de sens en l'état actuel (e.g. étudiant pas dans le groupe de départ a, groupe b inconnu, groupe a inconnu, etc). + * @throws java.lang.IllegalArgumentException si inconnu de l'usine abstraite + */ + public void applyChangement(Changement c){ + Objects.requireNonNull(c,"On ne peut pas appliquer un changement qui est null"); + Etudiant e = c.getEtu(); + Groupe a = c.getA(); + Groupe b = c.getB(); + + if (!agf.knows(a)) throw new IllegalStateException("Le groupe de départ du changement est inconnu. Impossible à mettre en oeuvre."); + + if (!agf.knows(b)) throw new IllegalStateException("Le groupe d'arrivée du changement est inconnu. Impossible à mettre en oeuvre."); + // pas encore implanté. + // if(!agf.getGroupesOfEtudiant(e).contains(a)) throw new IllegalStateException("Le groupe de départ ne contient pas l'étudiant. Impossible à mettre en oeuvre."); + + agf.dropFromGroupe(a,e); + agf.addToGroupe(b,e); + // En cas de succès, on enlève le changement du cerveau + this.brain.remove(Integer.valueOf(c.getId())); + } + + + /** + * permet de supprimer un changement connu de l'usine abstraite. + * + * @throws java.lang.NullPointerException si un argument est null + * @throws java.lang.IllegalArgumentException si inconnu de l'usine abstraite + */ + public void deleteChangement(Changement c){ + Objects.requireNonNull(c,"On ne peut pas demander la suppression d'un changement qui est null"); + + this.brain.remove(Integer.valueOf(c.getId())); + + } + + /** + * permet d'ajouter un nouveau changement. + * + * @param A groupe actuel + * @param B groupe demandé + * @param e étudiant concerné par le changement + * + * @throws java.lang.NullPointerException si un argument est null + * @throws java.lang.IllegalArgumentException si les groupes ou l'étudiant ne sont pas connus de la factory partenaire, ou e n'appartient pas à A ou A et B ne sont pas frères dans l'arbre des groupes. + * + */ + public void createChangement(Groupe A, Etudiant e, Groupe B){ + Objects.requireNonNull(A,"Le groupe d'origine ne peut pas être null"); + Objects.requireNonNull(B,"Le groupe d'arrivée ne peut pas être null"); + Objects.requireNonNull(e,"L'étudiant ne peut pas être null"); + + Changement c = new ChangementNP(A,e,B); + this.brain.put(Integer.valueOf(c.getId()),c); + } + +} diff --git a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java index c86a834..4f3264e 100644 --- a/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java +++ b/java/APIGroupe/src/fr/iutfbleau/projetIHM2022FI2/MNP/AbstractGroupeFactoryNP.java @@ -28,20 +28,11 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { this.brain=new HashMap(); this.brain.put(Integer.valueOf(this.promo.getId()),this.promo); } - - - - - - - - - /** - * Test pltôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe. + * Test plutôt optimiste. Si la clé est identique alors on fait comme si c'était le bon groupe. */ - private Boolean knows(Groupe g){ + public Boolean knows(Groupe g){ return this.brain.containsKey(Integer.valueOf(g.getId())); } @@ -140,13 +131,20 @@ public class AbstractGroupeFactoryNP implements AbstractGroupeFactory { // création des sous-groupes int min = 0; int max = ((int) Math.floor(pere.getSize()/n))+1; + List groupes = new ArrayList(n); for(int i = 0; i itgr = racineDeLaPartition.getSousGroupes().iterator(); + Groupe A = itgr.next(); // premier sous-groupe + Groupe B = itgr.next(); // second sous-groupe + B = itgr.next(); // troisième sous-groupe + Etudiant e = A.getEtudiants().iterator().next();// premier étudiant du premier sous-groupe. + acf.createChangement(A,e,B); + System.out.println("Récupération des changements (en fait un seul pour l'instant)"); + Iterator itch = acf.getAllChangements().iterator(); + Changement c = itch.next(); + System.out.println(c.monPrint()); + System.out.println("Application du changement"); + acf.applyChangement(c); + System.out.println("=========================="); + System.out.println("== nouveau contenu des groupes de la partition "); + for(Groupe g : racineDeLaPartition.getSousGroupes()){ + System.out.println(g.monPrint()); + } + + System.out.println("=========================="); + System.out.println("Création de 2 changements"); + itgr = racineDeLaPartition.getSousGroupes().iterator(); + A = itgr.next(); // premier sous-groupe + B = itgr.next(); // second sous-groupe + Etudiant etu1 = A.getEtudiants().iterator().next();// premier étudiant du premier sous-groupe. + Etudiant etu2 = B.getEtudiants().iterator().next();// premier étudiant du premier sous-groupe. + acf.createChangement(A,etu1,B); + acf.createChangement(B,etu2,A); + // Impression des changements. + for (Changement cgt : acf.getAllChangements()){ + System.out.println(cgt.monPrint()); + } + itch = acf.getAllChangements().iterator(); + c = itch.next(); + System.out.println("Suppression d'un changement. Il reste :"); + acf.deleteChangement(itch.next()); + for (Changement cgt : acf.getAllChangements()){ + System.out.println(cgt.monPrint()); + } }