From db688b27a15c7a494073ca7935bb2e8c399cddaf Mon Sep 17 00:00:00 2001 From: "Elise.B" Date: Fri, 15 Jan 2021 14:00:52 +0100 Subject: [PATCH] =?UTF-8?q?list=20actifs=20user=20deplac=C3=A9e=20sur=20se?= =?UTF-8?q?rver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chatGit/.classpath | 2 +- chatGit/.settings/org.eclipse.jdt.core.prefs | 6 +- chatGit/bin/config/ConfLoad$ConfLoadCb.class | Bin 246 -> 246 bytes chatGit/bin/config/ConfLoad.class | Bin 1487 -> 1487 bytes chatGit/bin/config/Configuration$Conf.class | Bin 1829 -> 1829 bytes chatGit/bin/config/Configuration$SConf.class | Bin 1902 -> 1902 bytes chatGit/bin/config/Configuration.class | Bin 1253 -> 1253 bytes chatGit/bin/config/package-info.class | Bin 112 -> 112 bytes chatGit/bin/controller/Agent.class | Bin 11414 -> 10892 bytes chatGit/bin/controller/DataBase.class | Bin 7642 -> 8598 bytes chatGit/bin/controller/Test.class | Bin 755 -> 715 bytes chatGit/bin/controller/package-info.class | Bin 116 -> 116 bytes chatGit/bin/gui/FenetreChat$1.class | Bin 878 -> 878 bytes chatGit/bin/gui/FenetreChat$2.class | Bin 3005 -> 3459 bytes chatGit/bin/gui/FenetreChat.class | Bin 6785 -> 6949 bytes chatGit/bin/gui/FenetreConnexion$1.class | Bin 551 -> 551 bytes chatGit/bin/gui/FenetreConnexion.class | Bin 4371 -> 4760 bytes chatGit/bin/gui/FenetreInscription$1.class | Bin 559 -> 559 bytes chatGit/bin/gui/FenetreInscription.class | Bin 4591 -> 4726 bytes chatGit/bin/gui/FenetreMenu$1.class | Bin 1133 -> 1133 bytes chatGit/bin/gui/FenetreMenu$2.class | Bin 1673 -> 1673 bytes chatGit/bin/gui/FenetreMenu$3$1.class | Bin 1770 -> 1081 bytes chatGit/bin/gui/FenetreMenu$3$2.class | Bin 0 -> 1861 bytes chatGit/bin/gui/FenetreMenu$3.class | Bin 1720 -> 2179 bytes chatGit/bin/gui/FenetreMenu$4.class | Bin 2179 -> 1281 bytes chatGit/bin/gui/FenetreMenu.class | Bin 5268 -> 5275 bytes chatGit/bin/gui/package-info.class | Bin 109 -> 109 bytes chatGit/bin/model/Contact.class | Bin 1731 -> 1731 bytes chatGit/bin/model/ListeContacts.class | Bin 3390 -> 3702 bytes chatGit/bin/model/Message.class | Bin 1528 -> 1528 bytes chatGit/bin/model/MessageAffichage.class | Bin 812 -> 1816 bytes chatGit/bin/model/MessageChat.class | Bin 816 -> 1417 bytes chatGit/bin/model/MessageDeconnexion.class | Bin 955 -> 955 bytes chatGit/bin/model/MessagePseudo.class | Bin 819 -> 1029 bytes chatGit/bin/module-info.class | Bin 240 -> 240 bytes chatGit/bin/network/Manager.class | Bin 450 -> 450 bytes chatGit/bin/network/TCPChat.class | Bin 3805 -> 4141 bytes chatGit/bin/network/TCPServer.class | Bin 2303 -> 2303 bytes chatGit/bin/network/Tools.class | Bin 2645 -> 2645 bytes chatGit/bin/network/UDPInput.class | Bin 3337 -> 3337 bytes chatGit/bin/network/UDPOutput.class | Bin 2609 -> 2609 bytes chatGit/bin/server/Request.class | Bin 0 -> 5026 bytes chatGit/bin/server/package-info.class | Bin 112 -> 112 bytes chatGit/bin/test/App$1.class | Bin 1003 -> 1003 bytes chatGit/bin/test/App.class | Bin 619 -> 619 bytes chatGit/bin/test/Launcher.class | Bin 409 -> 409 bytes chatGit/bin/test/package-info.class | Bin 110 -> 110 bytes chatGit/config.json | 10 +- chatGit/panda.png | Bin 0 -> 5890 bytes chatGit/src/controller/Agent.java | 179 +++++++++--------- chatGit/src/controller/DataBase.java | 43 ++++- chatGit/src/controller/Test.java | 8 +- chatGit/src/gui/FenetreChat.java | 33 +++- chatGit/src/gui/FenetreConnexion.java | 92 ++++++---- chatGit/src/gui/FenetreInscription.java | 8 +- chatGit/src/gui/FenetreMenu.java | 58 ++++-- chatGit/src/model/ListeContacts.java | 10 + chatGit/src/model/MessageAffichage.java | 27 ++- chatGit/src/model/MessageChat.java | 18 ++ chatGit/src/model/MessagePseudo.java | 12 +- chatGit/src/network/TCPChat.java | 12 +- chatGit/src/server/Request.java | 183 +++++++++++++++++++ 62 files changed, 524 insertions(+), 177 deletions(-) create mode 100644 chatGit/bin/gui/FenetreMenu$3$2.class create mode 100644 chatGit/bin/server/Request.class create mode 100644 chatGit/panda.png create mode 100644 chatGit/src/server/Request.java diff --git a/chatGit/.classpath b/chatGit/.classpath index c6871c4..6742989 100644 --- a/chatGit/.classpath +++ b/chatGit/.classpath @@ -11,7 +11,7 @@ - + diff --git a/chatGit/.settings/org.eclipse.jdt.core.prefs b/chatGit/.settings/org.eclipse.jdt.core.prefs index c6bb866..a58ebdc 100644 --- a/chatGit/.settings/org.eclipse.jdt.core.prefs +++ b/chatGit/.settings/org.eclipse.jdt.core.prefs @@ -1,9 +1,9 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=13 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=13 +org.eclipse.jdt.core.compiler.compliance=11 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate @@ -12,4 +12,4 @@ org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning org.eclipse.jdt.core.compiler.release=enabled -org.eclipse.jdt.core.compiler.source=13 +org.eclipse.jdt.core.compiler.source=11 diff --git a/chatGit/bin/config/ConfLoad$ConfLoadCb.class b/chatGit/bin/config/ConfLoad$ConfLoadCb.class index 18ded89c0ae1a255bae6c926396ea9426225f208..1767ad13d47579775000fe17839ef3d979f3b001 100644 GIT binary patch delta 16 Ycmeyy_>Ga{)W2Q(7#JALCvv<406+l-^#A|> delta 16 Ycmeyy_>Ga{)W2Q(7#J8VCvv<406+-__W%F@ diff --git a/chatGit/bin/config/ConfLoad.class b/chatGit/bin/config/ConfLoad.class index eb86833f4fb31054396b9475f987667860d78bb8..d4f3543bfa69ec7ebeb83180e0cf52511db53fb2 100644 GIT binary patch delta 17 ZcmX@leV&`+)W2Q(7#JALH*y?j1pq^N2DtzL delta 17 ZcmX@leV&`+)W2Q(7#J8VH*y?j1pq^X2D<1z`XH delta 14 VcmXRY;5hYf*FFXY2Fr;Y82~O}1!DjJ diff --git a/chatGit/bin/controller/Agent.class b/chatGit/bin/controller/Agent.class index a56b44f441e2cde503aed77ec2ae7fbf0d36afe6..c085258729774ddd5c203d460db306c46c554ad4 100644 GIT binary patch literal 10892 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 literal 11414 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 K&s#9{koFHFZS0)@ delta 361 zcmW-a%}WAd5XPTZTXomiJ#0v8t}b*5vO^F?i3iCpK|~aUhak}mj6X|F=Ht_XTB>^`#$9rRDW#Zf%c24S zUP?XTwSd{*dxdIJ6WwJzIG~9_8QTtA;BizM(4=!b&1qs88w`7`d%mWJoJAaRTOUv6 znGfr%3!AJPyG%oo`C+pj95WpXr57N#85o3%dRyIK3G820NIBra5o&mW6Drj!c^wF# zz~e!6Y71{P3mArlTbPtFfd$k_xiN`(ydz8hX+*J)Wr)a=|A9|Pu<7dyL*zAx)k#F+ Za61@rg<9}K1LvLx_k5Y3Cj0n)eFtz1?~zR(EVKx7Ly;&c;+RX%AM->pEMeI~ zn@~@A=SAY5>6;6Y+E+A3!zd7r`pWW#I6k!F2QmC?+=1}N?pf{ijN8N;olX5 zykneEEl-X9WvIIhJ$vB|&8rtI&Kym!I>F{McETrpH^4Nq(o;tRv#4p_`puw+J* N^s%pza8PCre*m*nN{Ijf delta 386 zcmZvX%Syvw5QWbqmb7V*s?=KVS}%!J<7FjvCAuh76bd5U{ge=5(?62@6<=;OE$H{!Hz6y(4RGiSbm^Okx~nXg|@&j9wYdux7lO^jp0K!GsUjHHUAF!W;g zP$+RA63;>rlZ34Asj5trkWG(Ju$|gJx0N)e38_}liaPzTvliws&u|#|fjqhn62)-d zu3d;L;f6x`Ze4ZbK>8J@k-;LC43r4DU-k_nZ41j-A?Q&@G5$jbk$cLds;k%&?TQH- zYX%$+F`)n27Rp#B7?*t_l!PI>;hb?3vEO^4Vp@;Agg}knC!LVdt7_%*V`wa3K!jNm|TaUbIq_!o8~`AT3d{fi delta 41 xcmaFI_KuC?)W2Q(7#J8VH*#!XVl8~`773bg3YXx!j(rAV0?jAQ88clloqYP}4NGB0?(c-1!`0U+Uh~u zv4cYbBb{r^)~HxER5ShmG^fTHYp-jmMhILZ(TJoTZIRdjsYlx+Heyo}^=Ol5!nFeR zoqAK#pzWyPQgKpwW9DRmShWngIkPZsdba+qOvW@?)V$j1j(rTO$qZ2+QQisHD=JIi z&7Gmw>D7tp*GbBx#*=spIt<)E4|QVJpewNpZxt}|D$sxnw05QiK&y%G@=t- z22%83RSG3;#BPDOnWsG+QqFY(&n*;`m+sMXnI!h&CIe}5WA&QE&Dh7yG~PE!?iakU$d=gu*eh?(!I1sOlagC=r(XbU}MdKL`H|#NDCvrDp_t4 zx8t1#$ct;%F(vUX^ynZ}khKOpw-{|Acompef|AN=Sb8P;LdPuS2RhaPiFe~jq$Dhl zvEC6~T~U0?)zRa5=DZf5^LJp-z5A7$9K-u1j$Aq0qh;Do@YWxsXrNJ614$&#`qPU2Lg zL@yAiN{wZYww)rUwUXLZCUL{j&v7`-M*hnqJX<} zxmvn}eF+1JBubbyFvFTyR=TWCVh;1{GrAIWc01O(w6>5mocBn4tOAK+4f%P^qK`|Q z#wQ4?<>mygU#AlV^95z~xw%qN7u5!Q3ilhhj}1WkRxRr&?ix{v2dcRnR8BsaGVma& z7)G>$&4){N!BSoV4+)555@&FiempAi7#?So=Jd33n8!Wq6~dZ0E858HGk8+sDP4n! zz>T_z_Wc=&XYm;UX*;avAX*T(wKKa$S7t33HLX51t`$BnaTYHyzvS77>6v-YoSs^e zV?*85nT>SUV6`Nn4~+@kE^o(YB|e82Sqgz}%er*?=UArH5vPvSgqC?p;$?h6AZc3G zkn(-DKV9Dy6Vc&W>79|%FG_p~UuM9Ln$;>R-9FSf-iY(~nt`v@oV}y-JX(tqU&lAd z3%5jyZHd6K-Si0CvPMmr#Y_U<61cA4nQ`rQtJGeM+-c{b==#3R5R&)~E*SW3wZGKv zm$(?RaayY^I7wVW*}&zhaLAGVxtyBT=e@*&KGB*&;Ze5UQ)8Z)QwA2R@>HHZx+HJl z3ZY*^(Zi;t&pxejNtC=JhC8AV*FVnK0V>hylV&xA^`UQD$HMbLWWx{Lt+*-3O-CJg z^WduX#y$01C2t~iVF4}IIG2+a8%UL(b?WA&EYt!+$&Dc%L*{gtTLZtXcB6HJG4T7^ zbcZJ`L12+3N8OT_Qva1uo-f3GryvS9V zb$Bo9EttNq_?Z|c6h~Y?Ksy^;J%4e;P^bGG(A=!AF?_e^OHBCY6^1v(dj6WwOzF)W z9in`U@7AsxFQcVv_hpXuT*lU}1#G{-`8r(3X9J~yS?u6bhT~T3#GClVW))heuDa8- zPs`$9*Cn);as3eAEtl}NGWJBHx0i8S83zxook8EI1?0<^x`M*-7H0v|dK(42 zGJ*Ja z0{_C3_z#{EaXc*&ct&i;vm%A(#9llv_T#L`;9QvB6Ph*RU?snL^aK2mc}|F1@EU$Z z|Jub4X5%OH>wu`oPdSRwlYir9_&FIcL6-f3qXv3#mgng&InsXoihB)O+lXJ|H@ImrM(hvIlK40mhz-B1me&i;WA^HzmFQmzhv!k_t$@jU+v{>G8MyXa!je}Ct% H4xRr4{xyu+ delta 1440 zcmZ9M`*Raj6vsa|o9rfG3o$m32&DmPgc7I%A}xp(s#t`I6cH*uLK_RTB$#Y@C>Rjs zAz)iBsGvf9@DQJ1yHF5De{#kj{M~UFM*jqV@JH)OiVU!`d(ZQpbM86cySv9;9TWWZ z-^q;n}Jo3nYA<%hj-wL(wumNzuB(&l+q4VTp*(Hk2S#^foD zBWR+<<^|R$taYh;Q+lgYvb6YlNkNb}uh^tmtG9V4jt|mIn@yUv;+{`u+Lq?q10-m- zS;u|I;o>XWE^07Mrx+92d(eR4_;uX;>L+i`-_LEo{|u z%()d=UblIp*hjyUZFX|&GwmbjV290{6m*Z-=&mswLpIArr4-FlZ5Gkeh%hjpJ7F^+IlU$Wxr1O2-dH;?g=#c@4kMI#@Vj{sgwR_^i!gWQ6)>W47y`QF4da0_*}2?N7X6azJAK^BKeZy_ zb$R<3WA0E%lznHIeTUBF;2mt^U~~EWhj%+ZqhI0?@?^< zN+Pm4(!MQn1-8kh-p)LB&>{$IqabkKA?@ESAl<_*_Hv4Sa<2XSCeXXV0si73e{)C~ zbSpnSst}@AML1HL*z)12+?<%qhtr&qnfcX7&hn)c73Uw$@s$))%XPjM&MWDE;Tyh{ znYIX8z7x)r&}DqjdC^^vau?wnk_+v(P!>N}3@D+^0=p(w6C09an0J{Nl0TyFHf3?= hiII}+qQvuXi9w-Wx#E}kQMjN~Swvp(xhkKB#D8h&DmnlF diff --git a/chatGit/bin/gui/FenetreChat.class b/chatGit/bin/gui/FenetreChat.class index f33d836c3adebb1b75b6c76fc46a81c8a0ed1dbd..695691c3f8514f390130d42abefcfba257a8d8c4 100644 GIT binary patch literal 6949 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 XkIyEC+c2N{bJlyv{d|U9`q}>j?I->) diff --git a/chatGit/bin/gui/FenetreConnexion$1.class b/chatGit/bin/gui/FenetreConnexion$1.class index 59b2c41f4803c5d18a92d61ab629f311002242c1..6858f585c075183c0835ac9a98852a032fec8ce3 100644 GIT binary patch delta 33 rcmV++0N($n1g8WD%Ko~(0000tu?V060g{uc0Xqeh00RJ(lj#9I$e)3C3I{?Ri3g-X- diff --git a/chatGit/bin/gui/FenetreConnexion.class b/chatGit/bin/gui/FenetreConnexion.class index 15332df0ac9cab493578e62f184d8734f48c1445..3a07b1687c1b4dc03aabc81ae817603ed2977b4f 100644 GIT binary patch literal 4760 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 LiIX`*)c5}Zw&VYJ literal 4371 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 UqCu#{SLN{xNB)S}e8klE)6kQmx&QzG diff --git a/chatGit/bin/gui/FenetreInscription$1.class b/chatGit/bin/gui/FenetreInscription$1.class index a17521e5732e75c4ec4c72b173b91c7d7ef86724..c1cdd31a9b632264627be5242826bd0464b7cd3a 100644 GIT binary patch delta 33 rcmV++0N($v1g``L%Ko~(0000tu?VOE0hE)m0Xqej00RJ*lkovQ%^V9= delta 33 rcmV++0N($v1g``L%Ko~(0000vu?VOE0g#ii0Xqef00RJ%lkovQ%+d=> diff --git a/chatGit/bin/gui/FenetreInscription.class b/chatGit/bin/gui/FenetreInscription.class index dfd7d5134de6e27568950ec32898cf88c4706ab8..977dea66aada380de078a6b5a532d866dd63e161 100644 GIT binary patch delta 1956 zcmY*Z33wA#5dL42&2EwnZ38`#59@_Jojefkw$XZt|aJK0@ataxliQ(azHkzeup95!Ett4PVRW#ndL zWu#}2VAqD888)7)&rXw2!XOS)OWYoZO@f<28sSqai&ckBL>X80$=#=sLV>%)V;fyz zLMhrA!B8P14)GGaEqjAK8tj*0MZBgpL&i+Z;(PTy4G+s0fGREscEel*M9kw3Ax$?Q zkMQwA55oc(3$ci=73>zhUzz1+5VWZ)KOp27m*6Q8OBqu6DIrymu?)+3Cqsr|g^Z`c z`DjDOF01gYh-Vn$N?kKt_Hvh}#9rX{x;-T_o8^1Sp68nkoegWT zPQ(lRgy9bMBEM=#?yw%Oh~&r(wr5-TRxzRNRy2sHXRvq_|4h|eW-nCLa-WPhv5lV;Gy4V6C?Z7U`W2tw z-lu~2dkZ_ry9(9oFYp#Iu)#(I@wSYe8ZK#gf6_If4!dQv#vYz0*`zw`m9Y=+@=B?X z{yl~y9&1c$C*gfM(pUAAs+C@w2~B9H4Ij$*2p{wFQul#P_*BMc;FScyxtuc6SS#LHY$;4t=yvX8szT94CWv%&i`IvDRM5hNx9+-e$C_*mE&>N#jQ;zDRfOdfx(rQCU0>B19fR3Ko}F9)+xFWT*D&b zR87pw45QR(Ef2x79cpwjJ+km+ZX+OwN}7GmbI#pC%pOZX4!zD6Ijcn=aQtm@@olmi z4BR^DYu+f9=+}rjK|ER?aeX9>L#SIp!D( zfGP@nA%$Lz(O5&f8!;B-9QI;dgdSUz0tBM`bfG4F46(#e4?Ip!EHTFL1fGm?7L!Dr zN#wv;3UzT_7KNm4KvOi_>fzA{s~!66AXcu1IYm!%4PpszZ(ZGpHMQ8r4PDm;Y;Qm~gk26HMM%*sy^~`|Fw~&4W+jX!r*(e_A84iz1n~(S*YF@d z595$CMF`<5hggdtkt@H681Ll}8*tQmDv0k=#2|jGMOGB~wHdiki`0M?i*Ez0H?3WA zhVc9FdLkg7Sldj6uFX4fkr>l5;Xzv(ClVo(V8KIFQZA%nGP0@sa!`zZP$(Z$=u|l& z9!x_8y!0%F4=Yef*_eTKm`ygT=z|fMgYB40=I3EI0@#oF^dVS)!<4+^ScEf_3$2zts-T&lzdx8rMw)Ysz_IBReG5eX;mXLGE=nd@IbRQ zbC{XQlBJQgx@F5mo4`t#P!r)O+VN)AhEbP8#}a9bVM#2RW-`dkG}Diz(4g1W{{g^k B;*tOW delta 1924 zcmZ8h3sh896y29$=Dm6I_>G|A2WBl>iX>|^U93bC1vD{{45WqHXBeI^Fw7fg9s*j8 zX8A!)?Pev~$3Bi_sgMpNDSb4}%>LTPthBOBGqWr!wex0>s9Ce_IrrT2_TA^)eeZ>9 z&JKt_aCzr$03%tVfGCEZyxGvRdEiBZEw#A8tJoUUTA$6WR=7Miho?L;_4<|Ca+McG zXOsx2VCYfhnB%Co`|Dhu3j3s-T1`_uB3ukYk*mUEo92};3;oStaLb5Cf(XymwS12r z_R6p#LC^BZ@I&KgqHi$Gkue^1e5lbrr~&f?%wH1xkMd-pUse+)FeLaZ)w%-3?{`!v zc`gTaOTv0QF5ofhjZ^h#KGp43eD*wt=E!mQ6&X+9Nv;a%;(9zK<7qs@HwbBLBR?Rd z4%eRDO^Jqf*WP{un*BnIU!zgP7u z0^VhatEhF^Cn!{ePbpA5wGs~DeSP;27?RQ^|G(~0gG)qw#P^toryRy70*?Imq#FF1 zQX}J2e8!U`8#~G~C7bCOz7p^ypDFb&`x+^F2k1OCw@1PWd@JCaPPy7$sy)AOe7#fg zYA)3y<2#*fTsXN%b2zJueGaE0;(G=w(efxx&E~41Lj0~Ww<6(`4)!BIEDh*;h9R+A zUAcO8Jz+{X%@Zx>jkqE+a9J*9Chm~?Ta4%>F*CCWOyW!BRD;Z7_-6U2c^3q_3qUnr z6*D4AH1K^fCE3{+hFoN!2%|9rV^D@{RADS`p+q^7PHV+9i=wPViX@SL5ytS^IzBUY zU?9C6vr4U%t*F|8>d2%fJWP2OWgnjbb5bi4<sxyVsE5?#wii{`Up zLaOzlHar}}wl=Jz)eTpp&xWH-?Fg2(;W@)~E!f(E9j$1~GA0|7b)fc4Q<7;dhUy^g z=qR0d#{5k diff --git a/chatGit/bin/gui/FenetreMenu$1.class b/chatGit/bin/gui/FenetreMenu$1.class index 2ac734a0847965e32a7b98b094f1b281bd78f966..0aa1c7328eda0df3d17da0cc5d092c381de783c5 100644 GIT binary patch delta 53 zcmaFM@s@+*)W2Q(7#JALH*yp+Gg?iqVNR5^VPIjfW#C|NWZ-9TVi0C delta 53 zcmaFM@s@+*)W2Q(7#J8VH*yp+Gn!1UVNR4ZV_;!0XW(G4X5eSAVGw4pWe{huXHaBt JocxWs8~~HM3}yfT diff --git a/chatGit/bin/gui/FenetreMenu$2.class b/chatGit/bin/gui/FenetreMenu$2.class index d1e8668fc892792223cd26ff1763afedb4e19898..1d610048cf57711aa0f9ec80d66e9c5514eb4d45 100644 GIT binary patch delta 518 zcmZ9GO-~b16o#MMx$ShuDO5piu_~a6*iwl`qe1M(#6%P%LGUx`!U^f7Bm{N@))0-> ziALjI*99CB7yba(E?t=TA6%;Mt*l(!bKZ0Ad(L?_3LAy|*WaJN02kZ&rArgdR&%*w z=pVVcu+kj67PsQ%rFbfCtz14mZ?IPvpT+@(LWEB~#G^MNpxFMkHXKl5z^82J{ckqn z2o*!7y;jl8F$R5(C#z<_8)7(lXKG%FliT0TH)D!P$2((!?H^vo6+i8{byF<5TO!Qp z1%x`kPwKpC*9oh&Pej#SdOBUte#M+Tu*m_%sH;Qz=vQSp$f185OkVg|_2#!YoN{!k zxrS|jU1mNKj@zy#^<4rXPlVqnN`Ti{Yah+k9neODJ6@!vMK!qVx>^0 delta 566 zcmZ{gPfrt36vcmUX6Tf5T80V~sv=a3GOca=6BARzLL!T%BqS*KFF?@=snJe?fF#6p zVKi1_44K65L7*jZVdBEXxb_41NyPi0D}sx6?|b*$d(OG9nP?`Wzy5yx2Hf0^t~NHR z&&QrDE7Fx`)s5$T#PU-#Em{b|3x zUi#0__?*I;44(SkD0&=hqWaeB&`m6c$tj08eF}5CwRIuJ8HR1nD*8|K;BbzSFjTq0 zEMqq3h4Pq>-S6tRQhnhUv!LR;KTJbEep*)>hU;o^a8p`ZmNw+Xal}nRe}TMB$vs}K zMbgW+aJ_v}JBN+^5+l+GZy1oMhoqG>gOU|PWI8l|grrMq)7~C#o6|Zc_ZUsJxtMQr zxy_Y{PAPodHPX^Fv$dJnZ1MzocmjD0& diff --git a/chatGit/bin/gui/FenetreMenu$3$1.class b/chatGit/bin/gui/FenetreMenu$3$1.class index 2998a1f21c85d711fe054995d3bb36e6d070c66f..076cda8762a3889e8af7a71a6dba8ce6b89669eb 100644 GIT binary patch delta 645 zcmZWn-%ry}6#j18*{$BWF`BONHgf`Zlmrus7Dh69AykrQM)F*kXThGdZc8Yn;4cok1%wWs*dl4fxodK0&790 z(U=BCaaYF}L%Y`bP&<*0=3~VsOQ+?!XweGY1Pt2XRq`e%mWWXv`~+S;z_s00P8-=PlmmQ4hAeOS z2HMd<5%rDid4&(eR|)Gc?|~npYY#p9xP1ike_T31bLb=DYeW06c8Qim5Armk3MrFC zjO;f;PYM4{pWz3J_}P-ppOrqBB@t@)9#tqn!zBGP3honEhw?(ls7By4g$ia+p{Ir% WX7PZ$OgDi!a^#Ui$umb+f%y+@gmabv literal 1770 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 C9wv(b literal 1720 zcmaJ>?Q#=U7=BK^HVsP?LL;^osWp@)v@E4qwZUo$t$;~dEu23XJm#8@Fu(guR(myCJZ$xW@dBVJ?A~oKJW8>{Q1ux&j7p+Q$s}H z$Y$FzmZc*DPgbSV&d+Ly31se?JEmcq&Ze=_xGS51hJ?WJaM!#S7;;BCfw9;OEZ3=6 zen0?EAQ9ZL{QOy>R(fDd0`VQw&hH3hDBZOTBkD zV~V}N(Ov@iSrSZ}VXUjtyX|^gvL$e0vO}y_jwK~csZbxlDBjd?oOgS~&~XA|6vW)5 zry|pIoxpQ#TYAQ#+AF0nj=YAqnTXyq9Vam%pl!-P2`_MLvQXKg7Pb*4qD(Au^@%Zw zqJ{z^I^bBxX-o;ER9LsK`_g0NLqvL+_qD*YoXt`aX9NUQJ&SW1X8uze9Ty$5IL~nW zZQCNBQ(axc;^~4EZuSGGFo*Xvy!!%iUqR?B&v}8QirusvQp@cJ?Nnr`a6>^{(D8wC zj+(8Oh7akgLbz}E_sHJ3T6VV@?nU>03JX|NRdMkp*uF0^Um7k^s-9HkXY(^Dl(DR? zek?HESDvhnFt)xg5>kEiijJ%JgvCjIz5O!&iV}L!QG}rOtk=>1D>X{r?j*3=TKkn} zYi;|o-EsvY%?7LG6=Vetud!~vshZniJ7~BrFmhnOhXt--ooXGBR;JBtHl-iVf&Ol$ zT!r2SV|%66+_u-0%a-cS%)WVaMp0l3Ejdlw^_kMD4DPrs9k*0}rzq;W)nYHOM)WHV zr%>58eP8l5S(AQn+4TdAaW+Kx#1YA4)UW_DSv4v+2cvurLFeh=a4JT^opkZ^6ATuo zo*+})L-rAmBFOPSK}X;_yvBcZ2}t7@Ugs(>jFB$P-~5!uy<5e{7<`O3cJbCOPF1I} z)4MP><`d86;?cR-Zx|a+d}F_DYq;=exs>nRpC)b<`es!cyd zd80VJhoxOyR;;2St8o<)zQ-VbzyyB841U5q?MrxoRs4c4@q5VlJb95-m$9-csFL#_ zy=qutj1w55y+Yho?tY5TXsz+i2%^uaqozST~8B16g|@x7M8`9PZ2>-3$}o)D1ur)Kt2R)fuscD0&9A7kQId^6rznoz2-$!urt%$|GBy=V6G@An@8Ok!0-grQ}-EX{f0h`+Eah+rq>x_Gp;Qf!O(0#LxYYe;szR#V2GyFfp}IrV!2%06y6%&EC`0y ztZVVYI`^bnSAsD`f}yQ8NphS>#Cb@0Rd`#jR}?lwUn=`gRdY&VCcWN>E_7?SMDNyU zGH@9^40U{)PAW2%>ja)#C&3fn_+2d2L-sTE7}Dw@%7gQ2^I^@en8cRysUV-RUox*>*+DtV_zGK=YT9U~ak zaFbXonDh7sOi&M-ZRwYIVC{sM44qX-(;I7N^|=l5%$;+d$-g2?6b;Pbv(dB4b-)^Q0w_u4LkywNh>L|f^()c zG%dkX!Ki&Yrtnn5bQQ?r%G`k^O3JzhW>gpAAxJ*p*2^`ITU2*OqvwCdV2FsZYE@OJ z#JD*G%kfghlzQGRdzP4&%C?EB`!=ei5ra9$D!4vz&WT{hwGHGHF`e7?hP1auK#n#R z$td1Tf&0FoWy7-Yg9XLFyR8 zZ;;5n#aQd)G478X`YmhhbZV|0_USf-gOfRd+vD>NeL`U7BNH8}tP literal 2179 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 literal 5268 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 MCf=r delta 17 ZcmX@idzhEw)W2Q(7#J8VH*)M|0{}uO2Alu@ diff --git a/chatGit/bin/model/ListeContacts.class b/chatGit/bin/model/ListeContacts.class index fa322716cac4128a8c587fcfe0af10f739edb0f2..e9539f2214e0ee1b5f6200b5f2ecdf7b6a77a391 100644 GIT binary patch delta 720 zcmZWnOKTHR7(I9L7(1Cn2sSas1Z_q0XsIYcY;6;@qQTNuqgAkC$8=01bplP&x=`c$ z{T?4peJpk3rc@#d7T2y^y7C{m?MjSik|KgIeDmFN&-b14-Fp|;EUi_({{FNGU>jb~ zD@Pp__nE?Y{#0I{8psz*y1=H$z-et->zdSzTvw(vl{a!d|0B^61#LL5;sQPD_KAz+I{(+XDOx=qCmbHztuF=N zk=wN4YmBv*o%S(HV+H?S>~F~Xhytq+YN$)ZZ(<8uSxPdbUvLPC%Uif@x?G0>L!=KQ zfCJdTJJ^T}qFisqhhs<;f4V~M`yVjIqe|A0^*%QJ>iXz0 zGDdkp$5}m!9XQdjvyLdMmhITkgD0k@#@$cxjLI$ClknWEs%`Dr24AHfI8@WVz$~hN nd2{9uwY@jT-HCrjbuM$k1C@Cc0x#I1*~dbx2PW{cq4eqx_}qKW delta 380 zcmX|6%Su8~6kX@az1Hm>K}*eU4$=tCniLL%QlhK`OVR{|3L&Bf(Wpi}?frh8BK(3T z4GP0vAdQIeD;M^Wt*n(Ten-fOS3R;jVrpuT-S7Xbutd8ejit1>$^H$6YYVDNY& zD(bPUVMTn(3DYJ6RPuKPCN!^bD|4wLzxZ z4GBSdg-}J^f*zXx?Ifyoa6+Rl(R>vhV2BYiLi&QtB!X+mie7Eh5hhAM92h_|2GN2D zyo5Uu6}MW3tqU`+^=(93@1YmqAHIgC{RshvSGa~=FqZZ`V(S5!wgN&0Oj`Ctj5nD_ z$Yz`}CP*iaE+j>k+u4E0aUVa#5&c+QwstJuxyzj{+t$bvC``pR!wF9Rd1u0Aa?9hi Xoe)8jQ$HtWg|AQ~l`a`XS@Gf*@w!A( diff --git a/chatGit/bin/model/Message.class b/chatGit/bin/model/Message.class index 74e617c2ff2066192459afe98967a249827d2090..37ec7346fd01deace64ac2dd16143d74ec2a04a5 100644 GIT binary patch delta 17 Zcmeyt{ezq1)W2Q(7#JALH*$Pn1pr9v2Q&Zx delta 17 Zcmeyt{ezq1)W2Q(7#J8VH*$Pn1pr9(2Q~lz diff --git a/chatGit/bin/model/MessageAffichage.class b/chatGit/bin/model/MessageAffichage.class index bc2c99bdcf46290db9220b3e0474014c6dae2ec7..ca1a317f26dd29416a1fb8eef1b27595f6246cb8 100644 GIT binary patch literal 1816 zcmZ{k?Q+{h7=_O|w&kjVrjGO3hBl=sw$fB2d=%mmS|@~%?Vf$!v+t|F|M~MT0Qd2uhLpfmyW4U+YsU!! z`^b58c<45tv!fv`F#f`RXs<=z`#|3v0|xl z2?7%aE+Hp-lLj)#%HFgA4LKdNxTax_Ynt6o=yyHO@#T?r#SR<;*D)_}`N#>YoglP3 zO|nfFOSKEumZj7U12?h2fVo3*Z~5JJY?r`dv05EPFGW+qPjRF=+1@p98;f)>h-63? z2c0+~1HMvoJI<3{`@r${>;sQ*`C7MWdkx!nF~?na=% z5JzrI!?M7fnhu?xL#yt#k3C04+4b9Yn1e-si@)%(c6O{*>*n_MTD!d#1SK7Ju_Ete zRjwG7E;VG-9~$@wA2aIMJVx^$M-sMQtOu)$O~Z&Ib_dM(G-@dduru=T&Ph|D#x4JN$y()N1J z?xDb)VLzhMDPQ2ejtW+!OEm)~mgMk>fn9vfVC~~$r$fBuVX3&zMx|m#=4%Dt8mMDQ zAQukqUT4k?QZ^$qpUNyGLTC6&j?zU{ZYftrV~*v!iPyNhpTBp8_iIaLA0PB_|94KOAP?8ok{PzM>aeM3OMIA4pfWzAppXe4 z3tMUoWEjnQB9-MdFt20`)z8E-Ol~a3o7Z`Oq{>Qz))N;ZkOjteYX~Geh&qdh^j(5H z8br9EA_it(qp~lpeTB_4e8nIi_p#H*H|OCNhu~%haC=z22(EA*u0%NV4RA79B;0ps s#9G5HP5m}7JaTDy2qbaoDV~jhTw?~E2U#J=>Kj1zRb~o&uTK2oUsLs4Z~y=R literal 812 zcmZ{hUuzmc6vfZ1yZ+g3HJWJCn6}y{HIRKS4S`Z92)2E&2z^}FiJ7n}tZP119ukNY z`j8Kh4^?_*c1hA`5oYh)IrpC5z25)%eFxwJ-WOmAG-iv5jQp>1xeTWA)7hB{&lwb8 z3+!A3mw_Jz^Qr%Rd?CX`pfF2?0=2>8>oAGceELzqQIlaD3W&Zy{zT1Ha!QNNrnKK3 z3D}?M?IMSl9!e++!l@#y^5_B(?t{45CpGD}B$B zc5<$k0{esQQ<2b}$|M_BV6W5NM5AW;L{r~Fui+gw>Q4+ahjmz@Z+6E_W+}$*aIuO* z`9*2m`tuDR>-C|{8FTzQEdDsMi8wI74qr-edA{K7C*QTM()$IkceG}3xJLEH6zuY> z!RA@ySu$m1mhCaqO3P43gEuxXHo`>O$fCh3>}NJUzxvJT-J){Mz=Cd`H_5VT=%s?J zp}=b#FryhyskXG*@I9irCR?NNuIbQ7RS!t{3`wAg!>rd+km}Vlkj7S!H+Z`N()?#f UDaZlsn*RZL$BpO>w2Wi>FOb-L>Hq)$ diff --git a/chatGit/bin/model/MessageChat.class b/chatGit/bin/model/MessageChat.class index 3cfb48e6754265238824459c2878a13abb5db9db..703a25d7908815fdd59d6240dee15a9131bbaf10 100644 GIT binary patch literal 1417 zcmb7@Z%@-u6vm%BwiZfZV=(^d5R^Y_2UJl(7=i{uSRB3?S;EUg>!?{b(iS71!mpx< zKq84Bzz=0S_qMFy<_jTd&$;)W=l;%fx?jJ4`~0oLvG8m8^(d{`)1wVIW+?r zNrr)Y%M7v`9$?5;KAN9QqhU7dMm6x9X1&Caw9LR}$b@_6fzvQ{X@z#AO{eJuTMWB} zaIDCh*v=m22}K6kYVM2b+wv|48x#kqm8N{jVzZO zX6PwsH3bYg6{8rV=6yTh?Jx{Sm$l1ETCI;xPN+yhVn|nSF zaB*fw!(~wUm=0Uv*ce6%TBpe}3JjCNoWTAZ7*)qTYuLQ~y_V;iK`(T2rf@-j#=(JM zS=0Ob8?L+I`Q)`mL+kTaMUP1<&zP#tVXsQDO)ct5~Ct z>w`dInC+ZP=k;wjMPIR4iBE7tg^XSXX3+$QtnHaX!;h0{>)boB_Z&XjOtj4Bw#+Fp zLqa|D<4Vv!eGeicReDRb(+B=h^;7nRa+%(Fy||dqC3C53sQL}kN7op-!iYX0U1I#3 zD4(Qf7D;*zQfZn#$P6B02oGpwKNO)nPZ`N!3XkXt9!*n}5YY@C3#dGvP{ft;n58Hs zB96)7<}e?@y`$5-a`*-dM_KI}#Y$1X!txbXzS43697z#JM(CXrD5GIXgrZQdt9V6% zjL$j}Hbf4j^zT@YrTFc@gpg51oQh;J*vx99>+CF#XWtjFGjAbIL$>JEt1_C!L7 p2Eai!+a2Bo8UGt(rYp#6EOi69Go%n?jzH%B0m7~3AX~!4?LQLf6c_*i delta 404 zcmY*V%}T>S7@VZd#%|Id)1+FpDtKv9F((gF5WETMNho;CAp}J#nBuiwdklRC&lMEG zgAd@rM-pc@MU=qqe8bE)vza*yAwR$0KL8wIw~%MW-IZ`$*l>%lL#qY@jrquUYRN2} zT%>uPWT^qa9~LM6p3MJnLI3v39Fjy5?LClLV~6ZY%c4>ywwsbdO>|bP&QB^u!~A|OTjYPz!rLB)LV|JR=FY? d{Od1a9*}M`)z>RJrR=x7(7#3{Z&PPt=Lb|1Df$2a diff --git a/chatGit/bin/model/MessageDeconnexion.class b/chatGit/bin/model/MessageDeconnexion.class index ee77439b050fa78904785fc9a2f132ce57c43a50..c3dbe65729727abe22fefc5cec1aaf846a65e213 100644 GIT binary patch delta 17 ZcmdnZzMGxn)W2Q(7#JALH*#!d1^_@;26F%a delta 17 ZcmdnZzMGxn)W2Q(7#J8VH*#!d1^_@|26X@c diff --git a/chatGit/bin/model/MessagePseudo.class b/chatGit/bin/model/MessagePseudo.class index 7e8e3f02ec30ff5c159af52bc1ec5bf54c0f723c..4e3dd756190346a024c924e504f8515245435797 100644 GIT binary patch literal 1029 zcmb7C+ltdr6kR*bWtyf_+nLnVv7_U)?T7(id>9!JFA%6AR{EZ44mHwgN|Flxho9kt zf`j0LAK*uc`s8tHM8v#t)09ES8SH24||U`K+<`k#jQY4G!;hUEMXl!5MVSGc*RS zb%y2_b#sT$7IZ#q{5WW$j?37_E=OJ$_u-<=9(Ur5$K9pX;a5}E6|RzaJnXS0J9)Uu zmZ2<(P-67tdif=Ev0oze`765_gRf|OWavOTc&?y@=DrRTr4i31P8GQ>@1!XAM_G`C@36(tyrK6@ zR%4lGpB}&>=C=xm6;7wEi*v$>exw+1r=W~Tdz53%dy_fV2?I|Ki9(O0kfCVu;eCNT*C4_!W68`zvq!uaV?! I>NIwK0X!!k@&Et; diff --git a/chatGit/bin/module-info.class b/chatGit/bin/module-info.class index d9d550a92e2acec32a6f1da80cbb859715112425..f60c6c06ab85491b882716a1d88a99b1216814c4 100644 GIT binary patch delta 16 Ycmeys_<@n*)W2Q(7#JALCvv<106#|t;{X5v delta 16 Ycmeys_<@n*)W2Q(7#J8VCvv<106$L#KtOQ7VcrGUEd?{s4b~4?OFGV_oMYQ_Ay?)oQHg(X34R}<+ zHVkl8h_NC5t5CxpM|ct@Fe0qCDogg3JxO0&q-YypT;vX4l$I@s43MGQKKQx z$e~11BmcvAmfx0K?0IfCH`g7(Q5i2VlpDZs%;S%TqsftETvG{q49EGHxk-Fc!Atyz z*}-1nr_4)r@BSY@9uFtAxL(V93Qpq;56T|P0^ZlN{eYj9YlQ_I<=5pQ^JfY^$N4K| zmL06CD4ghxMWfnOQVTK&Ev*weLr%dmuIk!%3a;TQgN1OBSV9Z(-PR#y=NGI471aqtvO zfwll$#=TpoOw>!$W+an1&DCwUR~N=)uFpscXGZ zC<=`UkI<>d=q0p?WKr8P>dLmaXVIS_(?sb3Hsk4Dl6tCuBM&8NURq?a?!X|iFnD=g z(fYJ6umXR8XezQ8&S5Nvz#!4>@vdO9aJ?`8s^!IWUW5gA4iO(2)g4*H#z~<>L?MgB z;_6S{%Xq5nxh&G|EKV%0W(@n~f}Np!92mteDxNP>4&7vKq5f~BnjgXd)jf*s2%rxt z`k_&erzz(!ytJD>T1vlB))ttlxKyEI4h-W}yhe4^pc}7ao`UqyG~d9R)T;n>@GZPe zcVW^_8X70>8VG+O?U3R713fa_tF&QE*4sk{iFa_EeEvJ%Jv2joR*n@c6gqTD%;Bup zO?^A}?-=X`Y6PY9vnw!W6u!Si~2Ek`3&ays5apVecI{X$|)kF0A2}_-t{5w2#(z zig(&8Wr=cPxX3fb<-*tahTkl1tlWQBmP_1ZZ delta 1257 zcmZuvTXR!Y6#jP4Ee+eG&^ED+EuoaAmDCK1*ouROaBI_)*cNEC)gF`6G>|4GmkJ6N zL`CbBZt#j16lF$1DRq(=JEF|^ovVrZz z$w?z;B!&zJuC~9%OJN zjY40>CCwgXRE-72gs$E#oxn+POzrTT;&=%S49=MfUXLFd$?0*!hF8Ro>SbAwG~%XK zFHUH(dXD2=yeHPZfI+z1nPI(H`deH4j(q)0d(LY_{566>;53NgCwVK5`u&pva9a> z9_!YGHkPn+k-{1R19mIrC)+JwyGuwPAcs23QVBDcR&GSDp|Iw;5{~&xc=6K8q7}bf zjTdPk7xrNkeu#@S!)6M5X#HOL%nzdwPnIE`0nFAvpt4fE6_NP@nOH%OcqINrotbeAIUZOeOySRP1!W6q@^{3n7M z{44ZiOf%)7fXo@3B+f=c$`tu6vB$`l%#O=gs48?;F5~@(pLF}^KiwS`DuOx;q7hMR zW^aXAo!OlFJmx2;bR8{o1Rql~hEMP*o#wl4v0{LmGLy8Q{fzOebYFQ`l~BNlRhU~o zuNG#wh%X7HS=g_H%h7h%=p8s^!Ql}Tj#gz13dTjN)2%5q0K?bff}>vg2A4(I(e9qO xlXAQC74e6|rzD7J5OXd2R%~;2G)?_4_B&h^$DJFLG@+->KH|F5rd2e$_Ad~f1W5n@ diff --git a/chatGit/bin/network/TCPServer.class b/chatGit/bin/network/TCPServer.class index 7f7466c04c2db7dd1f1e63c643daa085f323eb41..b2dd3771e28aa36cc169f2e3cead26e41856820b 100644 GIT binary patch delta 17 Zcmew__+OCY)W2Q(7#JALH*$RE002sm2Uq|A delta 17 Zcmew__+OCY)W2Q(7#J8VH*$RE002sw2U-9C diff --git a/chatGit/bin/network/Tools.class b/chatGit/bin/network/Tools.class index 355e2b93065855e6a328cbf7b78cae19cefa6654..51937ca9bba1be6874cb8a7db78cb2adc68798c2 100644 GIT binary patch delta 17 ZcmcaAa#e)m)W2Q(7#JALH*)xL0RTi;24VmJ delta 17 ZcmcaAa#e)m)W2Q(7#J8VH*)xL0RTi|24nyL diff --git a/chatGit/bin/network/UDPInput.class b/chatGit/bin/network/UDPInput.class index 2e16385a65525cbe92b8d958b7d83baed1f44fda..2ef80d5b9f6b9af124d948cd0a81f760575cc57f 100644 GIT binary patch delta 17 YcmeB_>XhO*^>5cc1_lQ6jU0@;06O;tjQ{`u delta 17 YcmeB_>XhO*^>5cc1_lPpjU0@;06PH%j{pDw diff --git a/chatGit/bin/network/UDPOutput.class b/chatGit/bin/network/UDPOutput.class index 942c9d7d57777c3bcfe4a02d714b2d0758c9107d..2f434dfcf7a4292ed03b0f04ce32a8a8a5f6a0c5 100644 GIT binary patch delta 17 ZcmdlevQdQN)W2Q(7#JALH*#ol0RTUc1@-^{ delta 17 ZcmdlevQdQN)W2Q(7#J8VH*#ol0RTUm1^55} diff --git a/chatGit/bin/server/Request.class b/chatGit/bin/server/Request.class new file mode 100644 index 0000000000000000000000000000000000000000..16a7e173ca8d205853515ca48fa5d3a39024b1cd GIT binary patch literal 5026 zcmd5={Z|y%8GeTSm}N755m7N}uuTw9zzAXlkpO-H%SS;-$@jnxFl5``+h$-sioC zfBpNj&jB33KU5ScSZf>BtYOs+7&9ruc2xKkte?_n^}3iIpQ!5_oifH81^%%_d|bh% zhuP@WRKP8dQXM%!nB` zdQ;P*hILXOjTr*1#F!o%)-6+fd!4~U600zLsL=2T!bHNEG;KyDk{>EUTWlNgXe2RV z#ueAJ|njDB5PTkNzM8#tYHs5{3 z_LLcm8dezf*sr1?k2@{{G&JIX0(Dl8rHnqJUymZH&6gm$j2aORSRGQlSw)27D~O(OoFq}rP6(lw33B}C$uPRn zui-o5;OlL}@iMc=a3&K`F*vBMwQcC7mX9!R76qaG9Vvd+SqTwk# zO`SxA9QT*8>dlnOJ4sX1F{cu^pwCdIC? zcnH%9)`$)Da_h_MDcd$fNRYXrE51uFPwIC0cp@$X7XR{k2s0wXtP~Zg9<~MtDdI;p z)MHG#JmzJ{${Y$v)`^v53n3uh3KS0b5~EWD+Xcg8fzU@P36GiWE{H!TX|$3PO{J6e zZQ{lQ4LbVRi#>YMQ;D!h{C?X=MH3C$4rA~4G9;AC|L@+|Ho}tcjPsqU!g}WI`F#4 z*JQ$Scy1rNh?n?cYKYB`7z90ToMvW*@D|5f%_t`pnIyj|bXz*N|Gu27icFKXF;Vvz z35UFXn@03#lp(W2xG2c;I}PvP_d=CZqqeMmft z5m#x4KDN*G>eGx|^(tO^86!xRvzW%O;{z2p6l}<qZC&UL0!7W|Y%dfiWJyKEfOgpOFVY6 zF#C85DneM?AlM3vD$RE>pT+!A@PND}DSQGCEu6>@zAbyfv=2F{)5aqr2Jmb7YV3MVX>XJ|`7-t`;qj8@G+L_pD{13nH-Bk#Ea6yhO&Z6)KzEbB%wN)zMqimf zje*7hzlPKJZc}g(&j>>$qcl<)NF&O1X-t#`HsGJ{U@eDBV*I{}2ShW@W?8T#nTB;4 zA%DwN1bi*qKBP-NiNj%H0BoY`o0$z;(1fjM<6Wu?+o1EhWa44W5PFBRzmG>Tj|!aQ zkzeJZ&vTW)Za@a%0%ql#hs7zj6wdSEH0B7(dH&p1H4L1=_c&6IXK3*(!D>S$IC z9&jH6(LiAK6Ou*-;&BGzAOq1%JPr}IRtDk;0^G(xv=iPVd4YKO8xn|l{H!1&4tNSA%P2paIWzBLI%zSHUyj!SL%!>IYMeY(Fv3VT+yMh3^WG$B}GTg6P;jI zbb|L3ox72J7A<%V$MHOI)rsRMzs8WF9Gt~CahoKYO}vKb940SFJb5}S;0+Ji1zeQK ziavp{k9JQ=jQzCkVjQ4-7vmszaWPhGwr0peK!DU?IQ&i2Qi@*xS zZ+KPn8qvCiKl52lamdulQ!BO7T&a~W;4chekh?yKG+Qe7*^VW)c)4Xwe;dnGjVrA1 z7g=4yG68nDBI6}MPEBPlu&i?ar+B&`UMk}i5Iz^i>obr3?(L1z`XH delta 14 VcmXRY;5hYf*FFXY2Fr;Y82~O}1!DjJ diff --git a/chatGit/bin/test/App$1.class b/chatGit/bin/test/App$1.class index aaae9e6c135afd44d81d9b701d54db44a36fd80b..112408ed8c34a7f7157846b8a81a9fa0a5f18f15 100644 GIT binary patch delta 17 ZcmaFO{+gZR)W2Q(7#JALH*!2?1^`C42Lk{A delta 17 ZcmaFO{+gZR)W2Q(7#J8VH*!2?1^`CE2L%8C diff --git a/chatGit/bin/test/App.class b/chatGit/bin/test/App.class index eefd335d3fbfac6c0297ec9ab8a7f8ccedb9c4b5..d1894d1da5a1dd197ba790b5ff1a5cabe5e897e1 100644 GIT binary patch delta 17 ZcmaFO@|uO?)W2Q(7#JALH*zF10RTl@27CYj delta 17 ZcmaFO@|uO?)W2Q(7#J8VH*zF10RTm227Ukl diff --git a/chatGit/bin/test/Launcher.class b/chatGit/bin/test/Launcher.class index 78ec72af075628bef05004f23e105e4176db6825..7c64db4476f58a23cae27801e6f0f513df5237be 100644 GIT binary patch delta 17 ZcmbQqJd>H@)W2Q(7#JALH*!p51OPi(1_J;9 delta 17 ZcmbQqJd>H@)W2Q(7#J8VH*!p51OPi@1_b~B diff --git a/chatGit/bin/test/package-info.class b/chatGit/bin/test/package-info.class index be288038c859c4ad2f98a15ad9f13e99356d58f5..9d6af7be9a319b1f060426361f88a64cf059dbba 100644 GIT binary patch delta 14 Vcmd1H<2dzi*FFXY2J?v=X#g%E1zP|B delta 14 Vcmd1H<2dzi*FFXY2Fr;YX#g%M1zi9D diff --git a/chatGit/config.json b/chatGit/config.json index 89180b7..fa67597 100644 --- a/chatGit/config.json +++ b/chatGit/config.json @@ -1,12 +1,12 @@ { "serveur":{ "actif": 1, - "url": "test", - "port": 30000 + "url": "http://localhost:8080/test/toto", + "port": 8080 }, "config":{ - "interface": "wlan3", - "portSrc": 26001, - "portDest":26000 + "interface": "wlan2", + "portSrc": 26000, + "portDest":26001 } } \ No newline at end of file diff --git a/chatGit/panda.png b/chatGit/panda.png new file mode 100644 index 0000000000000000000000000000000000000000..8525465b2b129869d0192d95ca85945a07c79199 GIT binary patch literal 5890 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 G^#1@0EL*?; literal 0 HcmV?d00001 diff --git a/chatGit/src/controller/Agent.java b/chatGit/src/controller/Agent.java index b40424b..074676a 100644 --- a/chatGit/src/controller/Agent.java +++ b/chatGit/src/controller/Agent.java @@ -16,9 +16,10 @@ import javax.swing.text.StyledDocument; import config.Configuration; import gui.FenetreChat; +import gui.FenetreMenu; import model.*; import network.*; -import server.Server; +import server.Request; import test.App; public class Agent implements PropertyChangeListener{ @@ -27,15 +28,13 @@ public class Agent implements PropertyChangeListener{ private UDPOutput BOut; //private TCPChat TCPSend; private TCPServer server; - private ListeContacts list; + //private ListeContacts list; private InetAddress localAddress; private InetAddress broadcast; private ArrayList listTCPOk; private ArrayList listTCPDeg; private DataBase db; - - private Server serverPresence; - + private PropertyChangeSupport support; @@ -47,7 +46,7 @@ public class Agent implements PropertyChangeListener{ this.server = new TCPServer(user.getPort(), user.getAddress()); this.server.addPropertyChangeListener(this); //this.TCPSend = new TCPChat(user); - this.list = ListeContacts.getInstance(); + //this.list = ListeContacts.getInstance(); this.localAddress=Tools.getAdress()[0]; this.broadcast= Tools.getAdress()[1]; this.db = DataBase.getInstance(); @@ -67,7 +66,7 @@ public class Agent implements PropertyChangeListener{ this.server = new TCPServer(user.getPort(), user.getAddress()); this.server.addPropertyChangeListener(this); //this.TCPSend = new TCPChat(user); - this.list = ListeContacts.getInstance(); + //this.list = ListeContacts.getInstance(); this.localAddress=Tools.getAdress()[0]; this.broadcast= Tools.getAdress()[1]; this.listTCPOk = new ArrayList(); @@ -104,98 +103,91 @@ public class Agent implements PropertyChangeListener{ TCPChat tcpChatCo = this.listTCPOk.get(0); MessageChat msgRecu = tcpChatCo.getMessageRecu(); //FenetreChat.getTa().append("kevin"+ " : "+msgRecu.getMessage()+"\n"); - StyledDocument doc = FenetreChat.getDoc(); - try { - doc.insertString(doc.getLength(), "\n"+msgRecu.getMessage(), left ); - } catch (BadLocationException e) { - e.printStackTrace(); + if(FenetreChat.isOuvert()) { + StyledDocument doc = FenetreChat.getDoc(); + try { + doc.insertString(doc.getLength(), "\n"+msgRecu.getMessage(), left ); + } catch (BadLocationException e) { + e.printStackTrace(); + } + doc.setParagraphAttributes(doc.getLength(), 1, left, false); + break; } - doc.setParagraphAttributes(doc.getLength(), 1, left, false); - break; + } } - //Envoi sur 5001 et reçoit sur 5000 - public void testSendBroadcast() throws IOException, InterruptedException { - MessagePseudo msg = new MessagePseudo(this.user.getAddress(), Tools.getLocalIp(), user.getPort(), 14000, 1, "Michel"); - BOut.send(msg, user.getAddress(), user.getPort()); - Thread.sleep(10); - MessagePseudo msgRecu = BIn.getMessage(); - handleMessage(msgRecu); - MessagePseudo msg2 = new MessagePseudo(this.user.getAddress(), Tools.getLocalIp(), user.getPort(), 14000, 1, "Jacques"); - BOut.send(msg2, user.getAddress(), user.getPort()); - Thread.sleep(10); - MessagePseudo msgRecu2 = BIn.getMessage(); - handleMessage(msgRecu2); - MessagePseudo msg3 = new MessagePseudo(this.user.getAddress(), Tools.getLocalIp(), user.getPort(), 14000, 1, "Bob"); - BOut.send(msg3, user.getAddress(), user.getPort()); - Thread.sleep(10); - MessagePseudo msgRecu3 = BIn.getMessage(); - handleMessage(msgRecu3); - choisirPseudo("Bob"); - choisirPseudo("Patrick"); - } - - - /*public void testSendTCP() throws IOException, InterruptedException { - - TCPSend.sendMsg("COUCOU"); - Thread.sleep(1000); - TCPSend.sendMsg("Ca va ?"); - Thread.sleep(1000); - TCPSend.sendMsg("Non je suis KO"); - Thread.sleep(1000); - TCPSend.sendMsg("Moi aussi :'("); - Thread.sleep(1000); - - }*/ /*type 0 : premier message de broadcast * type, 1 : deuxieme message de broadcast avec pseudo * type 2 : Message de déconnexion + * type 3 : message pseudo changé + * type 4 : Message affichage + * type 5 : Message chat */ public void handleMessage(Message msg) throws IOException { switch(msg.getTypeMessage()) { case 0 : //System.out.println("Envoi message présentation"); - MessagePseudo msgPresentation = new MessagePseudo(this.localAddress, msg.getAddressSrc(), this.user.getPort(), msg.getPortSrc(), 1, this.user.getPseudo()); + MessagePseudo msgPresentation = new MessagePseudo(this.localAddress, msg.getAddressSrc(), this.user.getPort(), msg.getPortSrc(), 1, this.user.getPseudo(), this.user.getId()); BOut.send(msgPresentation, msg.getAddressSrc(), msg.getPortSrc()); break; case 1 : MessagePseudo msgPseudo = (MessagePseudo) msg; - if(!list.pseudoExist(msgPseudo.getPseudo())) { + boolean pseudoExist = Request.sendPseudo(msgPseudo.getPseudo(), "pseudoOK"); + if(pseudoExist) { Contact newUser = new Contact(msgPseudo.getPseudo(), msgPseudo.getAddressSrc(), msgPseudo.getPortSrc()); - list.addContact(newUser); + Request.sendUser(msgPseudo.getPseudo(), msgPseudo.getAddressSrc().toString(), Integer.toString(msgPseudo.getPortSrc()), "addUser"); + //list.addContact(newUser); + if(FenetreMenu.ouvert) { + FenetreMenu.getCb().addItem(newUser.getPseudo()); + } } break; - /*case 2 : - MessageDeconnexion messageDeconnexion = (MessageDeconnexion) msg; - if(list.pseudoExist(messageDeconnexion.getPseudo())){ - Contact contact = list.findContact(messageDeconnexion.getPseudo()); - list.deleteContact(contact); - }*/ + case 2 : + MessagePseudo messageDeconnexion = (MessagePseudo) msg; + boolean pseudoExiste = Request.sendPseudo(messageDeconnexion.getPseudo(), "pseudoOK"); + if(!pseudoExiste){ + Request.sendDeconnexion(Integer.toString(messageDeconnexion.getId()),messageDeconnexion.getPseudo(), "deconnexion"); + FenetreMenu.getCb().removeItem(messageDeconnexion.getPseudo()); + } + case 3 : + MessagePseudo messageNewPseudo = (MessagePseudo) msg; + //Contact contact = list.findContact(messageNewPseudo.getPseudo()); + //int id = this.db.getIdFromPseudo(contact.getPseudo()); + for(int i = 0 ; i msg_recus = BIn.getListMessage(); for(int i =0; i msg_recus = BIn.getListMessage(); @@ -214,12 +206,14 @@ public class Agent implements PropertyChangeListener{ handleMessage(msg_recus.get(i)); } boolean pseudoOK = choisirPseudo(pseudo); - list.addContact(user); + //list.addContact(user); if(pseudoOK){ + Request.sendUser(pseudo, this.localAddress.toString(), Integer.toString(App.portSrc), "addUser"); int id = db.getIdFromLogin(login); this.user.setId(id); - MessagePseudo msgPresentation = new MessagePseudo(this.localAddress, this.broadcast, this.user.getPort(), App.portDest, 1, this.user.getPseudo()); + MessagePseudo msgPresentation = new MessagePseudo(this.localAddress, this.broadcast, this.user.getPort(), App.portDest, 1, this.user.getPseudo(), this.user.getId()); BOut.send(msgPresentation, this.broadcast, App.portDest); + db.updateStatus(id, "En ligne"); this.user.setStatut("En ligne"); //System.out.println("Connexion réussie avec le pseudo : "+pseudo); }else { @@ -228,8 +222,10 @@ public class Agent implements PropertyChangeListener{ return pseudoOK; } - public boolean choisirPseudo(String pseudo) { - if(!list.pseudoExist(pseudo)){ + public boolean choisirPseudo(String pseudo) throws IOException { + boolean pseudoExist = Request.sendPseudo(pseudo, "pseudoOK"); + + if(pseudoExist){ user.setPseudo(pseudo); //System.out.println("Pseudo set : "+pseudo); return true; @@ -240,16 +236,23 @@ public class Agent implements PropertyChangeListener{ } public void deconnexion() throws IOException { - MessageDeconnexion msgDeconnexion = new MessageDeconnexion(this.localAddress, this.broadcast, this.user.getPort(), 25000, 3, user.getPseudo()); - BOut.send(msgDeconnexion, this.broadcast, this.user.getPort()); + Request.sendDeconnexion(Integer.toString(this.user.getId()),this.user.getPseudo(), "deconnexion"); + MessagePseudo msgDeconnexion = new MessagePseudo(this.localAddress, this.broadcast, App.portSrc, App.portDest, 2, this.user.getPseudo(), this.user.getId()); + BOut.send(msgDeconnexion, this.broadcast, App.portSrc); + //list.deleteContact(user); System.exit(1); } - public boolean changerPseudo(String pseudo) { + public boolean changerPseudo(String pseudo) throws IOException { + String ancienPseudo = user.getPseudo(); boolean changeOK = choisirPseudo(pseudo); if(changeOK){ //System.out.println("Pseudo changé à : "+pseudo); db.updatePseudo(this.user.getId(), pseudo); + //list.modifierListe(ancienPseudo, pseudo); + Request.sendPseudoChange(ancienPseudo, pseudo, "pseudoChanged"); + MessagePseudo msgNewPseudo = new MessagePseudo(this.localAddress, this.broadcast, App.portSrc, App.portDest, 3, pseudo, this.user.getId()); + BOut.send(msgNewPseudo, this.broadcast, App.portSrc); return true; }else { //System.out.println("Veuillez choisir un autre pseudo"); @@ -270,37 +273,22 @@ public class Agent implements PropertyChangeListener{ public void createChat (int destId, String destPseudo) throws IOException { boolean chatExists = chatExists(destId); if(!chatExists) { - for(Contact user : list.getListe()) { + boolean isNotOnList = Request.sendPseudo(destPseudo, "pseudoOK"); + if(!isNotOnList) { + Contact dest = Request.getUser(destPseudo, "getUser"); + TCPChat connexionTCP = new TCPChat(user, destId); + listTCPDeg.add(connexionTCP); + connexionTCP.addPropertyChangeListener(this); + } + /*for(Contact user : list.getListe()) { if(user.getPseudo().equals(destPseudo)) { TCPChat connexionTCP = new TCPChat(user, destId); listTCPDeg.add(connexionTCP); connexionTCP.addPropertyChangeListener(this); } - } + }*/ } - } - - - public void initServer(Configuration conf) { - final Configuration.SConf sConf = conf.getsConf(); - if(sConf.isOK()) { - try { - final String url = sConf.getUrl(); - final int port = sConf.getPortServer(); - this.serverPresence = new Server(url, port); - subscribeToServer(); - }catch(Exception e) { - serverPresence = null; - } - } - } - - private void subscribeToServer() { - if(this.serverPresence != null ) { - serverPresence.suscribe(); - } - } - + } public void addPropertyChangeListener(PropertyChangeListener pcl, String propertyName){ @@ -325,7 +313,7 @@ public class Agent implements PropertyChangeListener{ - public ListeContacts getList() { + /*public ListeContacts getList() { return list; } @@ -333,7 +321,7 @@ public class Agent implements PropertyChangeListener{ public void setList(ListeContacts list) { this.list = list; - } + }*/ public DataBase getDb() { @@ -354,4 +342,5 @@ public class Agent implements PropertyChangeListener{ public TCPChat getTCPChat() { return this.listTCPDeg.remove(0); } + } diff --git a/chatGit/src/controller/DataBase.java b/chatGit/src/controller/DataBase.java index 4fbf5db..6a1dd4d 100644 --- a/chatGit/src/controller/DataBase.java +++ b/chatGit/src/controller/DataBase.java @@ -201,7 +201,7 @@ public class DataBase { "idSrc INT NOT NULL,\n" + "idDest INT NOT NULL,\n" + "message MEDIUMTEXT NOT NULL,\n" + - "date DATE NOT NULL\n" + + "date_heure DATETIME NOT NULL\n" + ");"; PreparedStatement pStat = null; try { @@ -243,7 +243,7 @@ public class DataBase { idDest = id1; } String nameTable = idSrc+"_"+idDest; - String query = "INSERT INTO " + nameTable + "(idSrc, idDest, message, date) VALUES (?, ?, ?, CURRENT_TIME)"; + String query = "INSERT INTO " + nameTable + "(idSrc, idDest, message, date_heure) VALUES (?, ?, ?, CURRENT_TIME)"; PreparedStatement pStat = null; try { pStat = connexion.prepareStatement(query); @@ -274,7 +274,7 @@ public class DataBase { prSt = connexion.prepareStatement(preparedQuery); ResultSet rs = prSt.executeQuery(); while (rs.next()) { - MessageAffichage msg = new MessageAffichage(rs.getString(4), rs.getInt(2)); + MessageAffichage msg = new MessageAffichage(rs.getString(4), rs.getInt(2), rs.getInt(3)); result.add(msg); } rs.close(); @@ -284,4 +284,41 @@ public class DataBase { } return result; } + + public Date getDateFromMessage(int id1, int id2, String message) { + Date date = null; + int idSrc = id1; + int idDest = id2; + if(id1>id2) { + idSrc = id2; + idDest = id1; + } + String nameTable = idSrc+"_"+idDest; + String query = "SELECT * FROM "+nameTable+" WHERE message=?"; + PreparedStatement pStat = null; + try { + pStat = connexion.prepareStatement(query); + pStat.setString(1, message); + ResultSet resPseudo = pStat.executeQuery(); + if(resPseudo.first()) { + date = resPseudo.getDate("date_heure"); + } + }catch(SQLException e) { + e.printStackTrace(); + } + return date; +} + + public void updateStatus(int id, String status) { + String query = "UPDATE `users` SET `statut`=? WHERE id=?"; + PreparedStatement pStat = null; + try { + pStat = connexion.prepareStatement(query); + pStat.setString(1, status); + pStat.setInt(2, id); + pStat.executeUpdate(); + }catch(SQLException e) { + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/chatGit/src/controller/Test.java b/chatGit/src/controller/Test.java index e87c76d..16beafb 100644 --- a/chatGit/src/controller/Test.java +++ b/chatGit/src/controller/Test.java @@ -1,12 +1,16 @@ package controller; import java.io.IOException; +import java.net.InetAddress; +import java.net.URL; +import config.ConfLoad; import network.Tools; +import test.App; public class Test { public static void main(String args[]) throws IOException, InterruptedException { - boolean res = DataBase.getInstance().loginExiste("kikou"); - System.out.println(res); + Agent agent = new Agent(Tools.getAdress()[0], App.portSrc, App.portDest); + //agent.initServer(ConfLoad.load(), "elise"); } } diff --git a/chatGit/src/gui/FenetreChat.java b/chatGit/src/gui/FenetreChat.java index fcadcae..3e1d853 100644 --- a/chatGit/src/gui/FenetreChat.java +++ b/chatGit/src/gui/FenetreChat.java @@ -8,7 +8,10 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.IOException; import java.sql.SQLException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.swing.*; @@ -20,8 +23,8 @@ import javax.swing.text.StyledDocument; import controller.Agent; import model.Contact; import model.MessageAffichage; -import model.MessageChat; import network.TCPChat; +import server.Request; import java.awt.*; @@ -37,14 +40,16 @@ public class FenetreChat extends JFrame { static JTextArea ta; static StyledDocument doc; + private static boolean ouvert=false; - public FenetreChat(Agent agent, String userString) { + public FenetreChat(Agent agent, String userString) throws IOException { + FenetreChat.ouvert=true; this.frame = new JFrame("Fenetre Chat avec "+ userString); this.agent = agent; this.user = agent.getUser(); - this.dest = agent.getList().findContact(userString); - + //this.dest = agent.getList().findContact(userString); + this.dest = Request.getUser(userString, "getUser"); this.frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.frame.setSize(new Dimension(400, 400)); @@ -112,6 +117,7 @@ public class FenetreChat extends JFrame { JButton envoyer = new JButton("Send"); frame.getRootPane().setDefaultButton(envoyer); envoyer.addActionListener(new ActionListener() { + private Date date; public void actionPerformed(ActionEvent e) { String message = text.getText(); //System.out.println("Message :"+ message); @@ -127,12 +133,13 @@ public class FenetreChat extends JFrame { tcpChat = tcp; } } - //text.append(message); + text.setText(""); - //ta.append(agent.getUser().getPseudo()+ " : "+message+"\n"); - //ta.setText(""); + this.setDate(new Date()); + DateFormat format = new SimpleDateFormat(" (yyyy/MM/dd HH:mm:ss)"); + String dateString = format.format(this.date); tcpChat.sendMsg(message); - doc.insertString(doc.getLength(), "\n"+message, right ); + doc.insertString(doc.getLength(), "\n"+message+dateString, right ); doc.setParagraphAttributes(doc.getLength(), 1, right, false); if(agent.getDb().tableChatExists(idUser, idDest)) { agent.getDb().addMessage(idUser, idDest, message); @@ -144,8 +151,12 @@ public class FenetreChat extends JFrame { System.out.println("Envoi du message impossible"); e1.printStackTrace(); } + } + public void setDate(Date d) { + this.date=d; + } - }}); + }); panel.add(BorderLayout.CENTER, sp); panel.add(BorderLayout.SOUTH,envoyer); @@ -217,7 +228,9 @@ public class FenetreChat extends JFrame { } } - + public static boolean isOuvert() { + return ouvert; + } } diff --git a/chatGit/src/gui/FenetreConnexion.java b/chatGit/src/gui/FenetreConnexion.java index 6bb664a..04120bb 100644 --- a/chatGit/src/gui/FenetreConnexion.java +++ b/chatGit/src/gui/FenetreConnexion.java @@ -21,6 +21,7 @@ import java.io.IOException; import controller.*; import network.Tools; +import server.Request; import test.App; public class FenetreConnexion implements ActionListener { @@ -29,6 +30,7 @@ public class FenetreConnexion implements ActionListener { JTextField pseudofield; JLabel Text; JButton Connexion; + JButton Cancel; /* * Constructeur d'une fenetre d'affichage pour la connexion d'un utilisateur. @@ -42,7 +44,7 @@ public class FenetreConnexion implements ActionListener { // fixer les dimensions de la fenetre frame.setSize(new Dimension(120, 40)); //Creer le JPanel - panel = new JPanel(new GridLayout(3,1)); + panel = new JPanel(new GridLayout(4,1)); //Ajouter les elements this.addWidgets(); //Set the default button. @@ -63,51 +65,71 @@ public class FenetreConnexion implements ActionListener { this.Text = new JLabel("Type your login", SwingConstants.CENTER); //Ajout d'un bouton Connexion this.Connexion = new JButton("Connexion"); + this.Cancel = new JButton("Cancel"); + this.Connexion.addActionListener(this); + this.Cancel.addActionListener(this); //On associe au bouton Connexion des actions a realiser this.Connexion.addActionListener(this); // On ajouter les differents elements au panel panel.add(pseudofield); panel.add(Text); panel.add(Connexion); + panel.add(Cancel); //ajouter un effet de bord transparent au composant Jlabel Text.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); } public void actionPerformed(ActionEvent event) { - // on recupere le texte entree dans la zone de saisie - String login = pseudofield.getText(); - if(!DataBase.getInstance().loginExiste(login)) { - JOptionPane.showMessageDialog(frame, "This login doesn't exist") ; - }else { - // On crée un objet de type ChatApp - Agent agent; - boolean connexion; - - try { - agent = new Agent(Tools.getAdress()[0], App.portSrc, App.portDest, login); - String pseudo = agent.getDb().getPseudoFromLogin(login); - // on tente une connexion avec ce pseudo - connexion = agent.connectConnexion(pseudo, login); - // Dans les deux cas de figures (reussite ou echec) on affiche un pop-up pour expliquer la situation - if(connexion) { - // La connexion a reussi - JOptionPane.showMessageDialog(frame, "Bonjour " + pseudo) ; - frame.dispose(); - // on lance une nouvelle fenetre de type View_Menu - FenetreMenu fenetreCourante= new FenetreMenu(agent); - } - else { - // La connexion a echoue, il est possible de rentrer un nouveau pseudo - JOptionPane.showMessageDialog(frame, "Echec de Connexion , ce pseudo est deja pris !"); - } - } catch (IOException e) { - System.out.println("Création thread impossible"); - e.printStackTrace(); - } catch (InterruptedException e) { - System.out.println("connect impossible"); - e.printStackTrace(); - } - } + Object source = event.getSource(); + if(source == Connexion){ + // on recupere le texte entree dans la zone de saisie + String login = pseudofield.getText(); + + boolean loginExiste = false; + try { + loginExiste = Request.sendLogin(login, "loginExiste"); + } catch (IOException e1) { + System.out.println("Pb envoi requete au serveur"); + e1.printStackTrace(); + } + + + if(!loginExiste) { + JOptionPane.showMessageDialog(frame, "This login doesn't exist") ; + }else { + // On crée un objet de type ChatApp + Agent agent; + boolean connexion; + + try { + agent = new Agent(Tools.getAdress()[0], App.portSrc, App.portDest, login); + String pseudo = agent.getDb().getPseudoFromLogin(login); + // on tente une connexion avec ce pseudo + connexion = agent.connectConnexion(pseudo, login); + // Dans les deux cas de figures (reussite ou echec) on affiche un pop-up pour expliquer la situation + if(connexion) { + // La connexion a reussi + JOptionPane.showMessageDialog(frame, "Bonjour " + pseudo) ; + frame.dispose(); + // on lance une nouvelle fenetre de type View_Menu + FenetreMenu fenetreCourante= new FenetreMenu(agent); + } + else { + // La connexion a echoue, il est possible de rentrer un nouveau pseudo + JOptionPane.showMessageDialog(frame, "Echec de Connexion , ce pseudo est deja pris !"); + } + } catch (IOException e) { + System.out.println("Création thread impossible"); + e.printStackTrace(); + } catch (InterruptedException e) { + System.out.println("connect impossible"); + e.printStackTrace(); + } + } + }else if(source == Cancel) { + frame.dispose(); + new FenetreInscription(); + } } diff --git a/chatGit/src/gui/FenetreInscription.java b/chatGit/src/gui/FenetreInscription.java index 2f6b6f8..f7b867a 100644 --- a/chatGit/src/gui/FenetreInscription.java +++ b/chatGit/src/gui/FenetreInscription.java @@ -44,7 +44,7 @@ public class FenetreInscription implements ActionListener { // fixer les dimensions de la fenetre frame.setSize(new Dimension(40, 100)); //Creer le JPanel - panel = new JPanel(new GridLayout(5,0)); + panel = new JPanel(new GridLayout(7,1)); //Ajouter les elements this.addWidgets(); //Set the default button. @@ -68,7 +68,9 @@ public class FenetreInscription implements ActionListener { this.loginfield = new JTextField(2); this.pseudofield = new JTextField(2); // creation d'un label qui contiendra un txt au centre - this.Text = new JLabel("Type your login and your pseudo", SwingConstants.CENTER); + this.Text = new JLabel("Forbidden characters: space, '?','&', '/', '=' ", SwingConstants.CENTER); + JLabel text = new JLabel("Login: ", SwingConstants.CENTER); + JLabel text2 = new JLabel("Pseudo: ", SwingConstants.CENTER); //Ajout d'un bouton Connexion this.inscription = new JButton("Sign Up"); this.connexion = new JButton("Sign In"); @@ -76,7 +78,9 @@ public class FenetreInscription implements ActionListener { this.inscription.addActionListener(this); this.connexion.addActionListener(this); // On ajouter les differents elements au panel + panel.add(text); panel.add(loginfield); + panel.add(text2); panel.add(pseudofield); panel.add(Text); panel.add(inscription); diff --git a/chatGit/src/gui/FenetreMenu.java b/chatGit/src/gui/FenetreMenu.java index 6a019f7..57ef538 100644 --- a/chatGit/src/gui/FenetreMenu.java +++ b/chatGit/src/gui/FenetreMenu.java @@ -5,6 +5,7 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; +import java.awt.HeadlessException; import java.awt.SystemColor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -31,6 +32,7 @@ import javax.swing.SwingConstants; import controller.Agent; import model.Contact; +import server.Request; public class FenetreMenu { JFrame frame; @@ -40,9 +42,13 @@ public class FenetreMenu { JLabel jlabel; JLabel texte; JLabel liste; + static JComboBox cb; WindowAdapter wa ; - public FenetreMenu(Agent agent) { + public static boolean ouvert = false; + + public FenetreMenu(Agent agent) throws IOException { + FenetreMenu.ouvert=true; this.agent = agent; frame = new JFrame("Fenêtre menu"); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); @@ -87,8 +93,8 @@ public class FenetreMenu { JOptionPane.YES_NO_OPTION); } - private void addWidgets() { - jlabel = new JLabel(new ImageIcon("/Users/momof/eclipse-workspace/chat/src/images/panda.png"), JLabel.CENTER); + private void addWidgets() throws IOException { + jlabel = new JLabel(new ImageIcon("panda.png"), JLabel.CENTER); texte = new JLabel("Bienvenue sur ce magnifique chat " + agent.getUser().getPseudo()); texte.setFont(new Font("Century Schoolbook", Font.PLAIN, 40)); texte.setHorizontalAlignment(SwingConstants.CENTER); @@ -121,13 +127,14 @@ public class FenetreMenu { ta.insert("Active users\n",0); JScrollPane scrollPane = new JScrollPane(ta); - String users = agent.getList().actifUsers(); + String users = Request.actifs("actifs"); + //String users = agent.getList().actifUsers(); Vector v = new Vector(); for(String pseudo : users.split("\n")) { v.add(pseudo); } - JComboBox cb = new JComboBox(v); + cb = new JComboBox(v); cb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { Object selected = cb.getSelectedItem(); @@ -138,14 +145,19 @@ public class FenetreMenu { System.out.println("Creation tcp chat impossible"); e.printStackTrace(); } - new FenetreChat(agent, selected.toString()); + try { + new FenetreChat(agent, selected.toString()); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } }); /*actions pour refresh*/ - refresh.addActionListener(new ActionListener() { + /* refresh.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String users = agent.getList().actifUsers(); for(String pseudo : users.split("\n")) { @@ -167,7 +179,7 @@ public class FenetreMenu { new FenetreChat(agent, selected.toString()); } }); - }}); + }});*/ frame.getContentPane().add(refresh, BorderLayout.NORTH); panel.add(BorderLayout.CENTER, jlabel); @@ -186,20 +198,30 @@ public class FenetreMenu { cancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { frame.dispose(); - new FenetreMenu(agent); + try { + new FenetreMenu(agent); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } }}); JButton ok = new JButton("Continue"); frame.getRootPane().setDefaultButton(ok); ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String newPseudo = field.getText(); - if(agent.changerPseudo(newPseudo)) { - JOptionPane.showMessageDialog(frame, "Your new pseudo is "+newPseudo); - frame.dispose(); - new FenetreMenu(agent); - }else { - JOptionPane.showMessageDialog(frame, "Pseudo already, use choose another one"); - }; + try { + if(agent.changerPseudo(newPseudo)) { + JOptionPane.showMessageDialog(frame, "Your new pseudo is "+newPseudo); + frame.dispose(); + new FenetreMenu(agent); + }else { + JOptionPane.showMessageDialog(frame, "Pseudo already, use choose another one"); + } + } catch (HeadlessException | IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + }; } }); JPanel panel1 = new JPanel(new GridLayout(4,1)); @@ -229,6 +251,10 @@ public class FenetreMenu { } + + public static JComboBox getCb() { + return cb; + } } \ No newline at end of file diff --git a/chatGit/src/model/ListeContacts.java b/chatGit/src/model/ListeContacts.java index 45f501a..36fd612 100644 --- a/chatGit/src/model/ListeContacts.java +++ b/chatGit/src/model/ListeContacts.java @@ -57,6 +57,16 @@ public class ListeContacts { } } + public void modifierListe(String ancien, String nouveau) { + for(Contact c : this.listeContact) { + if(c.getPseudo().equals(ancien)) { + this.listeContact.remove(c); + c.setPseudo(nouveau); + this.addContact(c); + } + } + } + public int length() { int n = 0; while(!listeContact.isEmpty()) { diff --git a/chatGit/src/model/MessageAffichage.java b/chatGit/src/model/MessageAffichage.java index 4a276dd..4e34825 100644 --- a/chatGit/src/model/MessageAffichage.java +++ b/chatGit/src/model/MessageAffichage.java @@ -1,17 +1,40 @@ package model; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import controller.DataBase; + public class MessageAffichage { private String message; private int idSrc; + private int idDest; + private Date date; - public MessageAffichage(String message, int idSrc) { + public MessageAffichage(String message, int idSrc, int idDest) { + this.idDest=idDest; this.message = message; this.idSrc = idSrc; + this.setDate(DataBase.getInstance().getDateFromMessage(this.idSrc, this.idDest, this.message)); } + + public String dateToString() { + DateFormat format = new SimpleDateFormat("(yyyy/MM/dd HH:mm:ss)"); + return format.format(this.getDate()); + } + + public Date getDate() { + return date; + } + + public void setDate(Date d) { + this.date = d; + } public String getMessage() { - return message; + return message+dateToString(); } public void setMessage(String message) { diff --git a/chatGit/src/model/MessageChat.java b/chatGit/src/model/MessageChat.java index 8510ccb..01200f3 100644 --- a/chatGit/src/model/MessageChat.java +++ b/chatGit/src/model/MessageChat.java @@ -1,15 +1,33 @@ package model; import java.net.InetAddress; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; public class MessageChat extends Message{ private String message; + private Date date; public MessageChat(InetAddress addressSrc, InetAddress addressDest, int portSrc, int portDest, int typeMessage, String message) { super(addressSrc, addressDest, portSrc, portDest, typeMessage); + this.setDate(new Date()); this.message = message; } + + public String dateToString() { + DateFormat format = new SimpleDateFormat("(yyyy/MM/dd HH:mm:ss)"); + return format.format(this.getDate()); + } + + public Date getDate() { + return date; + } + + public void setDate(Date d) { + this.date = d; + } public String getMessage() { return message; diff --git a/chatGit/src/model/MessagePseudo.java b/chatGit/src/model/MessagePseudo.java index 7a2b996..72029bb 100644 --- a/chatGit/src/model/MessagePseudo.java +++ b/chatGit/src/model/MessagePseudo.java @@ -5,10 +5,12 @@ import java.net.InetAddress; public class MessagePseudo extends Message{ private String pseudo; + private int id; - public MessagePseudo(InetAddress addressSrc, InetAddress addressDest, int portSrc, int portDest, int typeMessage,String pseudo) { + public MessagePseudo(InetAddress addressSrc, InetAddress addressDest, int portSrc, int portDest, int typeMessage,String pseudo, int id) { super(addressSrc, addressDest, portSrc, portDest, typeMessage); this.pseudo = pseudo; + this.id = id; } public String getPseudo() { @@ -19,5 +21,13 @@ public class MessagePseudo extends Message{ this.pseudo = pseudo; } + public int getId() { + return id; + } + + public void setId(int id) { + this.id=id; + } + } diff --git a/chatGit/src/network/TCPChat.java b/chatGit/src/network/TCPChat.java index a83cd69..c74821f 100644 --- a/chatGit/src/network/TCPChat.java +++ b/chatGit/src/network/TCPChat.java @@ -6,6 +6,7 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; +import java.net.InetAddress; import java.net.Socket; import java.util.ArrayList; @@ -38,7 +39,12 @@ public class TCPChat extends Thread{ this.start(); } - + public TCPChat(InetAddress adr, int port) throws IOException { + this.socket = new Socket(adr, port); + listeMessagesRecu = new ArrayList(); + this.support = new PropertyChangeSupport(this); + this.start(); + } public void addPropertyChangeListener(PropertyChangeListener pcl) { this.support.addPropertyChangeListener("Msg TCP Recu", pcl); @@ -108,5 +114,7 @@ public class TCPChat extends Thread{ this.destID = destID; } - + public boolean isConnected() { + return this.socket != null && socket.isConnected() && !socket.isClosed(); + } } diff --git a/chatGit/src/server/Request.java b/chatGit/src/server/Request.java new file mode 100644 index 0000000..fe22fdb --- /dev/null +++ b/chatGit/src/server/Request.java @@ -0,0 +1,183 @@ +package server; + +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.InetAddress; +import java.net.MalformedURLException; +import java.net.URL; + +import config.ConfLoad; +import config.Configuration; +import model.Contact; + +public class Request { + + private static Configuration conf = ConfLoad.load(); + private static String url = conf.getsConf().getUrl(); + + public static boolean sendLogin(String login, String type) throws IOException { + + boolean res; + + URL obj = new URL(url+"?login="+login+"&type="+type); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + con.setRequestMethod("GET"); + + int responseCode = con.getResponseCode(); + String sRes = con.getHeaderField("result"); + System.out.println("GET Response Code :: " + responseCode); + + if (responseCode == HttpURLConnection.HTTP_OK) { + System.out.println("GET a réussi"); + + } else { + System.out.println("GET n'a pas fonctionné"); + } + + if(sRes.equals("true")) { + res = true; + }else { + res = false; + } + return res; + } + + public static boolean sendPseudo(String pseudo, String type) throws IOException { + boolean res; + + URL obj = new URL(url+"?pseudo="+pseudo+"&type="+type); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + con.setRequestMethod("GET"); + + int responseCode = con.getResponseCode(); + String sRes = con.getHeaderField("result"); + System.out.println("GET Response Code :: " + responseCode); + + if (responseCode == HttpURLConnection.HTTP_OK) { + System.out.println("GET a réussi"); + + } else { + System.out.println("GET n'a pas fonctionné"); + } + + if(sRes.equals("true")) { + res = true; + }else { + res = false; + } + return res; + + } + + public static void sendPseudoChange(String pseudoAncien, String pseudo, String type) throws IOException { + + URL obj = new URL(url+"?pseudoVieux="+pseudoAncien+"&pseudo="+pseudo+"&type="+type); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + con.setRequestMethod("GET"); + + int responseCode = con.getResponseCode(); + String sRes = con.getHeaderField("result"); + System.out.println("GET Response Code :: " + responseCode); + + if (responseCode == HttpURLConnection.HTTP_OK) { + System.out.println("GET a réussi"); + + } else { + System.out.println("GET n'a pas fonctionné"); + } + + } + + public static void sendUser(String pseudo, String adr, String port, String type) throws IOException { + + URL obj = new URL(url+"?pseudo="+pseudo+"&adr="+adr+"&port="+port+"&type="+type); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + con.setRequestMethod("GET"); + + int responseCode = con.getResponseCode(); + String sRes = con.getHeaderField("result"); + System.out.println("GET Response Code :: " + responseCode); + + if (responseCode == HttpURLConnection.HTTP_OK) { + System.out.println("GET a réussi"); + + } else { + System.out.println("GET n'a pas fonctionné"); + } + + + } + + public static void sendDeconnexion(String id, String pseudo, String type) throws IOException { + + URL obj = new URL(url+"?id="+id+"&pseudo="+pseudo+"&type="+type); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + con.setRequestMethod("GET"); + + int responseCode = con.getResponseCode(); + String sRes = con.getHeaderField("result"); + System.out.println("GET Response Code :: " + responseCode); + + if (responseCode == HttpURLConnection.HTTP_OK) { + System.out.println("GET a réussi"); + + } else { + System.out.println("GET n'a pas fonctionné"); + } + + + } + + public static Contact getUser(String pseudo, String type) throws IOException { + Contact user; + + URL obj = new URL(url+"?pseudo="+pseudo+"&type="+type); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + con.setRequestMethod("GET"); + + int responseCode = con.getResponseCode(); + String sAdr = con.getHeaderField("address"); + String sPort = con.getHeaderField("port"); + System.out.println("GET Response Code :: " + responseCode); + + if (responseCode == HttpURLConnection.HTTP_OK) { + System.out.println("GET a réussi"); + + } else { + System.out.println("GET n'a pas fonctionné"); + } + + String adr2= sAdr.substring(1); + InetAddress address = InetAddress.getByName(adr2); + int port = Integer.parseInt(sPort); + user = new Contact(pseudo, address, port); + + return user; + + } + + public static String actifs(String type) throws IOException { + String actifs; + + URL obj = new URL(url+"?type="+type); + HttpURLConnection con = (HttpURLConnection) obj.openConnection(); + con.setRequestMethod("GET"); + + int responseCode = con.getResponseCode(); + actifs = con.getHeaderField("actifs"); + System.out.println("GET Response Code :: " + responseCode); + + if (responseCode == HttpURLConnection.HTTP_OK) { + System.out.println("GET a réussi"); + + } else { + System.out.println("GET n'a pas fonctionné"); + } + + + return actifs; + +} + + +}