From 9d59897ac470abd82d1a4ff6e36822bf4233399a Mon Sep 17 00:00:00 2001 From: kmitresse Date: Sun, 10 Mar 2024 19:05:58 +0100 Subject: [PATCH] =?UTF-8?q?Draft=20-=20ProjetDevWeb=20:=20tentative=20de?= =?UTF-8?q?=20cr=C3=A9ation=20des=20POJO=20avec=20JPA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- S2/DevWeb/Projet/.gitignore | 38 +++ .../Projet/.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 58727 bytes .../.mvn/wrapper/maven-wrapper.properties | 2 + S2/DevWeb/Projet/Sujet.pdf | Bin 0 -> 115914 bytes S2/DevWeb/Projet/docker-compose.yaml | 13 + S2/DevWeb/Projet/mvnw | 316 ++++++++++++++++++ S2/DevWeb/Projet/mvnw.cmd | 188 +++++++++++ S2/DevWeb/Projet/mysql/init.sql | 38 +++ S2/DevWeb/Projet/pom.xml | 51 +++ .../java/project/EntityManagerProvider.java | 28 ++ .../Projet/src/main/java/project/Main.java | 51 +++ .../java/project/dao/AbstractDAOFactory.java | 20 ++ .../Projet/src/main/java/project/dao/DAO.java | 55 +++ .../main/java/project/dao/DAOException.java | 21 ++ .../main/java/project/dao/GameDAOFactory.java | 34 ++ .../java/project/dao/PersistenceKind.java | 14 + .../java/project/dao/jpa/DAO_JPA_Game.java | 52 +++ .../java/project/dao/jpa/DAO_JPA_Player.java | 52 +++ .../java/project/dao/jpa/DAO_JPA_User.java | 52 +++ .../project/dao/jpa/Game_JPA_DAO_Factory.java | 41 +++ .../src/main/java/project/pojo/Card.java | 24 ++ .../src/main/java/project/pojo/Deck.java | 31 ++ .../src/main/java/project/pojo/Game.java | 96 ++++++ .../src/main/java/project/pojo/Player.java | 157 +++++++++ .../src/main/java/project/pojo/User.java | 144 ++++++++ .../main/resources/META-INF/persistence.xml | 22 ++ 26 files changed, 1540 insertions(+) create mode 100644 S2/DevWeb/Projet/.gitignore create mode 100644 S2/DevWeb/Projet/.mvn/wrapper/maven-wrapper.jar create mode 100644 S2/DevWeb/Projet/.mvn/wrapper/maven-wrapper.properties create mode 100644 S2/DevWeb/Projet/Sujet.pdf create mode 100644 S2/DevWeb/Projet/docker-compose.yaml create mode 100755 S2/DevWeb/Projet/mvnw create mode 100644 S2/DevWeb/Projet/mvnw.cmd create mode 100644 S2/DevWeb/Projet/mysql/init.sql create mode 100644 S2/DevWeb/Projet/pom.xml create mode 100644 S2/DevWeb/Projet/src/main/java/project/EntityManagerProvider.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/Main.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/dao/AbstractDAOFactory.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/dao/DAO.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/dao/DAOException.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/dao/GameDAOFactory.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/dao/PersistenceKind.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Game.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Player.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_User.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/dao/jpa/Game_JPA_DAO_Factory.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/pojo/Card.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/pojo/Deck.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/pojo/Game.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/pojo/Player.java create mode 100644 S2/DevWeb/Projet/src/main/java/project/pojo/User.java create mode 100644 S2/DevWeb/Projet/src/main/resources/META-INF/persistence.xml diff --git a/S2/DevWeb/Projet/.gitignore b/S2/DevWeb/Projet/.gitignore new file mode 100644 index 0000000..5ff6309 --- /dev/null +++ b/S2/DevWeb/Projet/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/S2/DevWeb/Projet/.mvn/wrapper/maven-wrapper.jar b/S2/DevWeb/Projet/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..c1dd12f17644411d6e840bd5a10c6ecda0175f18 GIT binary patch literal 58727 zcmb5W18`>1vNjyPv28mO+cqb*Z6_1kwr$(?#I}=(ZGUs`Jr}3`|DLbDUA3!L?dtC8 zUiH*ktDo+@6r@4HP=SCTA%WmZqm^Ro`Ls)bfPkcdfq?#g1(Fq27W^S8Cq^$TC?_c< zs-#ROD;6C)1wFuk7<3)nGuR^#!H;n&3*IjzXg+s8Z_S!!E0jUq(`}Itt=YdYa5Z_s z&e>2={87knpF*PKNzU;lsbk#P(l^WBvb$yEz)z+nYH43pKodrDkMp@h?;n{;K}hl>Fb^ zqx}C0|D7kg|Cj~3f7hn_zkAE}|6t|cZT|S5Hvb#3nc~C14u5UI{6#F<|FkJ0svs&S zA}S{=DXLT*BM1$`2rK%`D@vEw9l9%*=92X_2g?Fwfi=6Zfpr7+<~sgP#Bav+Df2ts zwtu~70zhqV?mrzM)}r7mMS`Hk_)NrI5K%CTtQtDxqw5iv5F0!ksIon{qqpPVnU?ds zN$|Vm{MHKEReUy>1kVfT-$3))Js0p2W_LFy3cjjZ7za0R zPdBH>y&pb0vr1|ckDpt2p$IQhwnPs5G*^b-y}sg4W!ALn}a`pY0JIa$H0$eV2T8WjWD= zWaENacQhlTyK4O!+aOXBurVR2k$eb8HVTCxy-bcHlZ4Xr!`juLAL#?t6|Ba!g9G4I zSwIt2Lla>C?C4wAZ8cKsZl9-Yd3kqE`%!5HlGdJJaFw0mu#--&**L-i|BcIdc3B$;0FC;FbE-dunVZ; zdIQ=tPKH4iJQQ=$5BeEMLov_Hn>gXib|9nOr}>eZt@B4W^m~>Zp#xhn1dax+?hS!AchWJ4makWZs@dQUeXQ zsI2+425_{X@t2KN zIbqec#)Jg5==VY3^YBeJ2B+%~^Y8|;F!mE8d(`UgNl2B9o>Ir5)qbBr)a?f%nrP zQyW(>FYPZjCVKDOU;Bw#PqPF1CCvp)dGdA&57a5hD&*vIc)jA)Z-!y5pS{5W6%#prH16zgD8s zexvpF#a|=*acp>L^lZ(PT)GiA8BJL-9!r8S$ZvXRKMVtiGe`+!@O%j<1!@msc177U zTDy>WOZu)W5anPrweQyjIu3IJC|ngdjZofGbdW&oj^DJlC7$;|xafB45evT|WBgGf-b|9y0J`fe0W-vw6xh}` z=(Tnq(-K0O{;VUcKe2y63{HXc+`R_#HLwnZ0rzWO*b#VeSuC4NG!H_ApCypbt1qx( z6y7Q$5(JOpQ&pTkc^0f}A0Kq*?;g9lEfzeE?5e2MBNZB)^8W1)YgdjsVyN+I9EZlh z3l}*}*)cFl=dOq|DvF=!ui$V%XhGQ%bDn3PK9 zV%{Y|VkAdt^d9~y4laGDqSwLd@pOnS&^@sI7}YTIb@El1&^_sq+{yAGf0|rq5TMp# z6d~;uAZ(fY3(eH=+rcbItl2=u6mf|P{lD4kiRCv;>GtFaHR3gim?WU9RjHmFZLm+m z+j<}_exaOQ1a}=K#voc~En+Mk_<(L!?1e#Uay~|H5q)LjD*yE6xFYQ-Wx{^iH1@pP zC0De#D6I26&W{;J40sZB!=%{c?XdO?YQvnTMA3TwfhAm@bvkX*(x?JTs*dFDv^=2X z284}AK)1nRn+8(Q2P?f)e>0~;NUI9%p%fnv1wBVpoXL+9OE`Vv1Y7=+nub$o7AN>y zB?R(^G8PYcMk4bxe7XItq@48QqWKb8fa*i9-N)=wdU-Q^=}!nFgTr_uT=Z=9pq z`{7!$U|+fnXFcsJ4GNm3JQQCN+G85k$)ZLhF{NbIy{REj84}Zt;0fe#>MARW)AoSb zrBpwF37ZVBMd>wZn_hAadI*xu8)Y#`aMbwRIA2n^-OS~M58_@j?#P1|PXJ1XBC9{4 zT^8*|xu<@(JlSOT*ILrVGr+7$nZN`Z3GxJJO@nY&mHsv^^duAh*lCu5q+S6zWA+`- z%^*y#)O7ko_RwGJl;bcEpP03FOrhlLWs`V_OUCrR-g>NJz*pN|itmN6O@Hw05Zq;Xtif%+sp4Py0{<7<^c zeoHHhRq>2EtYy9~2dZywm&OSk`u2ECWh6dJY?;fT-3-$U`!c(o$&hhPC%$~fT&bw3 zyj+8aXD;G!p*>BC6rpvx#6!|Qaic;KEv5>`Y+R(6F^1eIeYG6d1q3D3OL{7%7iw3R zwO)W7gMh27ASSB>-=OfP(YrKqBTNFv4hL@Im~~ombbSu44p~VoH$H-6+L_JW>Amkl zhDU~|r77?raaxD!-c$Ta?WAAi{w3T}YV=+S?1HQGC0+{Bny_^b+4Jum}oW4c=$ z#?D<}Ds{#d5v`L`${Pee;W84X*osNQ96xsKp^EAzuUh9#&zDX=eqdAp$UY)EGrkU% z(6m35n=46B$TNnejNSlih_!<)Iu@K!PW5S@Ya^0OK+EMWM=1w=GUKW^(r59U%i?d zzbo?|V4tDWGHHsrAQ}}ma#<`9r=M8%XF#%a=@Hn(p3wFBlkZ2L@8=*@J-^zuyF0aN zzJ7f!Jf8I+^6Tt$e+IIh zb80@?7y#Iz3w-0VEjgbHurqI>$qj<@n916)&O340!_5W9DtwR)P5mk6v2ljyK*DG5 zYjzE~m`>tq8HYXl%1JJ%e-%BqV4kRdPUZB1Cm$BQZr(fzp_@rn_W+;GwI$?L2Y4;b z)}c5D$#LT}2W8Si<`EHKIa_X+>+2PF(C*u~F=8E!jL(=IdQxY40%|( zoNg2Z&Aob@LEui-lJ#@)Ts)tE0_!*3{Uk)r{;-IZpX`N4mZX`#E|A;viQWImB6flI z?M_|xHCXV$5LOY-!U1_O1k;OWa=EchwlDCK4xHwBW2jE-6&%}og+9NILu${v10Z^Z#* zap|)B9a-AMU~>$r)3&|dQuP#MA$jnw54w*Ax~*_$iikp+j^OR8I5Fo<_UR#B-c>$? zeg)=;w^sGeAMi<3RGDRj$jA30Qq$e|zf2z;JyQ}tkU)ZI_k6tY%(`#AvL)p)iYXUy z5W9Su3NJ8mVyy)WqzFSk&vZM!;kUh8dVeA-myqcV%;xUne`PbHCPpvH?br`U2Y&dM zV!nJ!^n%`!H&!QSlpzLWnZpgi;#P0OAleH+<CfLa?&o|kyw1}W%6Pij zp$Vv5=;Z0LFN|j9i&9>zqX>*VnV3h#>n!2L?5gO6HJS3~kpy5G zYAVPMaB-FJOk3@OrxL(*-O~OB9^d{!G0K>wlzXuBm*$&%p1O#6SQ*?Q0CETLQ->XpfkW7< zj&Nep(}eAH1u$wWFvLV*lA{JOltP_%xKXC*a8DB&;{fD&2bATy>rC^kFY+$hFS7us;Y) zy_H?cv9XTHYz<4C<0b`WKC#{nJ15{F=oaq3x5}sYApT?Po+(Cmmo#dHZFO^{M#d~d znRT=TFATGVO%z_FNG-@G;9az|udZ>t@5l+A-K)BUWFn_|T#K3=d3EXRNqHyi#>;hX z*JQ`pT3#&tH>25laFlL6Rllu(seA*OboEd%rxMtz3@5v-+{qDP9&BcoS$2fgjgvp$ zc8!3=p0p@Ee1$u{Gg}Kkxg@M*qgZfYLlnD88{uwG1T?zxCbBR+x(RK$JB(eWJH#~; zZoY6L+esVRV?-*QmRCG}h`rB*Lv=uE%URF@+#l-g!Artx>Y9D;&G=jY2n2`J z{6-J%WX~Glx*QBmOOJ(RDRIzhfk&ibsm1t&&7aU{1P3U0uM%F2zJb4~50uby_ng+# zN)O9lK=dkJpxsUo7u8|e`Y~mmbxOTDn0i!i;d;ml#orN(Lc=j+n422NoSnlH6?0<0?th-qB7u}`5My%#?ES}>@RldOQz}WILz<$+cN~&ET zwUI01HCB((TyU$Ej8bxsE8oLmT-c7gA1Js?Iq`QMzIHV|)v)n2 zT_L(9x5%8*wU(C`VapaHoicWcm|0X@9TiNtbc|<4N6_H1F6&qgEEj=vjegFt;hC7- zLG7_=vedRFZ6Chbw!{#EpAlM?-sc#pc<~j#537n)M%RT)|L}y(ggi_-SLpsE3qi3V z=EEASxc>a{Su)jXcRS41Z@Mxk&0B7B<(?Izt5wpyyIBO|-M}ex8BhbIgi*X4 zDZ+Yk1<6&=PoZ=U-!9`!?sBVpYF#Y!JK<`fx}bXN651o0VVaW;t6ASVF@gq-mIDV_)?F^>rq1XX0NYy~(G=I6x%Fi5C2rMtvs z%P`g2>0{xLUy~#ye)%QAz^NkD5GUyPYl}K#;e-~UQ96`I$U0D!sMdQ>;%+c0h>k*Y z)sD1mi_@|rZnQ+zbWq~QxFlBQXj8WEY7NKaOYjUxAkGB8S#;l@b^C?;twRKl=mt0< zazifrBs`(q7_r14u1ZS`66VmsLpV>b5U!ktX>g4Nq~VPq6`%`3iCdr(>nS~uxxylU z>h(2p$XPJVh9BDpRLLzTDlNdp+oq8sOUlJ#{6boG`k)bwnsw5iy@#d{f_De-I|}vx6evw;ch97=;kLvM)-DBGwl6%fA%JItoMeyqjCR*_5Q70yd!KN zh=>ek8>f#~^6CJR0DXp0;7ifZjjSGBn}Cl{HeX!$iXMbtAU$F+;`%A<3TqbN#PCM& z&ueq$cB%pu2oMm_-@*aYzgn9`OiT@2ter*d+-$Aw42(@2Ng4mKG%M-IqX?q%3R|_( zN|&n$e1L#Ev=YMX5F53!O%))qDG3D(0rsOHblk;9ghWyqEOpg)mC$OduqpHAuIxr_>*|zy+|=EmOFn zFM+Ni%@CymLS-3vRWn=rVk?oZEz0V#y356IE6HR5#>7EigxZ05=cA|4<_tC8jyBJ| zgg!^kNwP7S^ooIj6riI9x`jFeQfRr4JCPumr<82M zto$j^Qb~MPmJ-|*2u{o7?yI8BI``zDaOCg2tG_5X;w<|uj5%oDthnLx-l4l)fmUGx z6N^jR|DC);yLi4q-ztTkf>*U$@2^w5(lhxu=OC|=WuTTp^!?2Nn27R`2FY_ zLHY-zFS}r+4|XyZw9b0D3)DmS!Gr+-LSdI}m{@-gL%^8CFSIYL?UZaCVd)2VI3|ay zwue39zshVrB+s2lp*};!gm<79@0HkjhgF^>`UhoR9Mi`aI#V#fI@x&1K3f&^8kaq% zkHVg$CTBoaGqEjrL)k*Y!rtiD2iQLYZ%|B}oBl8GHvR%n>HiIQN*+$mCN>I=c7H2N z&K4$4e@E^ff-cVHCbrHNMh4Dy|2Q;M{{xu|DYjeaRh2FK5QK!bG_K`kbBk$l$S4UF zq?F-%7UrX_Q?9M)a#WvcZ^R-fzJB5IFP>3uEoeCAAhN5W-ELRB&zsCnWY6#E?!)E56Pe+bxHjGF6;R9Hps)+t092-bf4 z_Wieg+0u5JL++k)#i0r?l`9*k)3ZlHOeMJ1DTdx9E1J2@BtdD3qX;&S_wMExOGv$T zl^T%oxb+)vq6vJvR`8{+YOsc@8}wSXpoK%v0k@8X*04Se3<8f)rE|fRXAoT!$6MdrKSuzeK@L*yug?MQs8oTbofqW)Df# zC2J3irHAaX_e~SGlBoRhEW`W6Z}&YX|5IMfzskAt{B*m z*w=3i!;x5Gfgc~>y9fPXFAPMhO@Si}SQESjh`P|dlV5HPRo7j(hV=$o8UMIT7~7+k z*@Sd>f%#{ARweJYhQs~ECpHie!~YXL|FJA;KS4m|CKFnT{fN`Ws>N?CcV@(>7WMPYN} z1}Wg+XU2(Yjpq7PJ|aSn;THEZ{4s8*@N!dz&bjys_Zk7%HiD+56;cF26`-a zEIo!B(T|L*uMXUvqJs&54`^@sUMtH-i~rOM9%$xGXTpmow$DxI>E5!csP zAHe|);0w%`I<==_Zw9t$e}?R+lIu%|`coRum(1p~*+20mBc?Z=$+z<0n&qS0-}|L4 zrgq|(U*eB%l3nfC=U1Y?(Tf@0x8bhdtsU2w&Y-WvyzkiyJ>GZqUP6c+<_p0`ZOnIK z#a~ynuzRWxO6c;S@*}B1pTjLJQHi(+EuE2;gG*p^Fq%6UoE1x95(^BY$H$$soSf=vpJ)_3E zp&$l=SiNaeoNLAK8x%XaHp3-So@F7 z3NMRRa@%k+Z$a%yb25ud&>Cdcb<+}n>=jZ`91)a z{wcA(j$%z#RoyB|&Z+B4%7Pe*No`pAX0Y;Ju4$wvJE{VF*Qej8C}uVF=xFpG^rY6Y+9mcz$T9^x(VP3uY>G3Zt&eU{pF*Bu<4j9MPbi4NMC=Z$kS6DMW9yN#vhM&1gd1t}8m(*YY9 zh2@s)$1p4yYT`~lYmU>>wKu+DhlnI1#Xn4(Rnv_qidPQHW=w3ZU!w3(@jO*f;4;h? zMH0!08(4=lT}#QA=eR(ZtW1=~llQij7)L6n#?5iY_p>|_mLalXYRH!x#Y?KHyzPB^ z6P3YRD}{ou%9T%|nOpP_??P;Rmra7$Q*Jz-f?42PF_y>d)+0Q^)o5h8@7S=je}xG# z2_?AdFP^t{IZHWK)9+EE_aPtTBahhUcWIQ7Awz?NK)ck2n-a$gplnd4OKbJ;;tvIu zH4vAexlK2f22gTALq5PZ&vfFqqERVT{G_d`X)eGI%+?5k6lRiHoo*Vc?ie6dx75_t z6hmd#0?OB9*OKD7A~P$e-TTv3^aCdZys6@`vq%Vi_D8>=`t&q9`Jn1=M#ktSC>SO3 z1V?vuIlQs6+{aHDHL?BB&3baSv;y#07}(xll9vs9K_vs2f9gC9Biy+9DxS77=)c z6dMbuokO-L*Te5JUSO$MmhIuFJRGR&9cDf)@y5OQu&Q$h@SW-yU&XQd9;_x;l z<`{S&Hnl!5U@%I~5p)BZspK894y7kVQE7&?t7Z|OOlnrCkvEf7$J5dR?0;Jt6oANc zMnb_Xjky|2ID#fhIB2hs-48Er>*M?56YFnjC)ixiCes%fgT?C|1tQupZ0Jon>yr|j z6M66rC(=;vw^orAMk!I1z|k}1Ox9qOILGJFxU*ZrMSfCe?)wByP=U73z+@Pfbcndc=VzYvSUnUy z+-B+_n`=f>kS8QBPwk+aD()=#IqkdxHPQMJ93{JGhP=48oRkmJyQ@i$pk(L&(p6<0 zC9ZEdO*i+t`;%(Ctae(SjV<@i%r5aune9)T4{hdzv33Uo9*K=V18S$6VVm^wgEteF za0zCLO(9~!U9_z@Qrh&rS|L0xG}RWoE1jXiEsrTgIF4qf#{0rl zE}|NGrvYLMtoORV&FWaFadDNCjMt|U8ba8|z&3tvd)s7KQ!Od*Kqe(48&C7=V;?`SQV)Qc?6L^k_vNUPbJ>>!5J?sDYm5kR&h_RZk)MfZ1 znOpQ|T;Me(%mdBJR$sbEmp3!HKDDSmMDnVpeo{S13l#9e6OImR$UPzjd-eCwmMwyT zm5~g6DIbY<_!8;xEUHdT(r_OQ<6QCE9Jy|QLoS>d(B zW6GRzX)~&Mx}})ITysFzl5_6JM*~ciBfVP(WF_r zY>z4gw&AxB%UV3Y{Y6z*t*o!p@~#u3X_t{Q9Us8ar8_9?N% zN&M~6y%2R(mAZ~@Tg1Oapt?vDr&fHuJ=V$wXstq|)eIG_4lB#@eU>fniJh zwJY<8yH5(+SSQ=$Y=-$2f$@^Ak#~kaR^NYFsi{XGlFCvK(eu{S$J(owIv17|p-%0O zL-@NyUg!rx0$Uh~JIeMX6JJE>*t<7vS9ev#^{AGyc;uio_-Je1?u#mA8+JVczhA2( zhD!koe;9$`Qgaxlcly4rdQ1VlmEHUhHe9TwduB+hm3wH2o27edh?|vrY{=;1Doy4& zIhP)IDd91@{`QQqVya(ASth4}6OY z-9BQj2d-%+-N7jO8!$QPq%o$9Fy8ja{4WT$gRP+b=Q1I48g-g|iLNjbhYtoNiR*d- z{sB}~8j*6*C3eM8JQj5Jn?mD#Gd*CrVEIDicLJ-4gBqUwLA-bp58UXko;M|ql+i5` zym-&U5BIS9@iPg#fFbuXCHrprSQKRU0#@yd%qrX1hhs*85R}~hahfFDq=e@bX))mf zWH%mXxMx|h5YhrTy;P_Xi_IDH*m6TYv>|hPX*_-XTW0G9iu!PqonQneKKaCVvvF^% zgBMDpN7!N?|G5t`v{neLaCFB{OyIl>qJQ_^0MJXQ zY2%-si~ej?F^%ytIIHU(pqT+3d+|IQ{ss#!c91R{2l*00e3ry!ha|XIsR%!q=E^Fal`6Oxu`K0fmPM?P6ZgzH7|TVQhl;l2 z)2w0L9CsN-(adU5YsuUw19OY_X69-!=7MIJ^(rUNr@#9l6aB8isAL^M{n2oD0FAHk97;X* z-INjZ5li`a|NYNt9gL2WbKT!`?%?lB^)J)9|025nBcBtEmWBRXQwi21EGg8>!tU>6Wf}S3p!>7vHNFSQR zgC>pb^&OHhRQD~7Q|gh5lV)F6i++k4Hp_F2L2WrcxH&@wK}QgVDg+y~o0gZ=$j&^W zz1aP8*cvnEJ#ffCK!Kz{K>yYW`@fc8ByF9X4XmyIv+h!?4&$YKl*~`ToalM{=Z_#^ zUs<1Do+PA*XaH;&0GW^tDjrctWKPmCF-qo7jGL)MK=XP*vt@O4wN1Y!8o`{DN|Rh) znK?nvyU&`ATc@U*l}=@+D*@l^gYOj&6SE|$n{UvyPwaiRQ_ua2?{Vfa|E~uqV$BhH z^QNqA*9F@*1dA`FLbnq;=+9KC@9Mel*>6i_@oVab95LHpTE)*t@BS>}tZ#9A^X7nP z3mIo+6TpvS$peMe@&=g5EQF9Mi9*W@Q`sYs=% z`J{3llzn$q;2G1{N!-#oTfQDY`8>C|n=Fu=iTk443Ld>>^fIr4-!R3U5_^ftd>VU> zij_ix{`V$I#k6!Oy2-z#QFSZkEPrXWsYyFURAo`Kl$LkN>@A?_);LE0rZIkmjb6T$ zvhc#L-Cv^4Ex*AIo=KQn!)A4;7K`pu-E+atrm@Cpmpl3e>)t(yo4gGOX18pL#xceU zbVB`#5_@(k{4LAygT1m#@(7*7f5zqB)HWH#TCrVLd9}j6Q>?p7HX{avFSb?Msb>Jg z9Q9DChze~0Psl!h0E6mcWh?ky! z$p#@LxUe(TR5sW2tMb#pS1ng@>w3o|r~-o4m&00p$wiWQ5Sh-vx2cv5nemM~Fl1Pn z@3ALEM#_3h4-XQ&z$#6X&r~U-&ge+HK6$)-`hqPj0tb|+kaKy*LS5@a9aSk!=WAEB z7cI`gaUSauMkEbg?nl0$44TYIwTngwzvUu0v0_OhpV;%$5Qgg&)WZm^FN=PNstTzW z5<}$*L;zrw>a$bG5r`q?DRc%V$RwwnGIe?m&(9mClc}9i#aHUKPLdt96(pMxt5u`F zsVoku+IC|TC;_C5rEU!}Gu*`2zKnDQ`WtOc3i#v}_9p>fW{L4(`pY;?uq z$`&LvOMMbLsPDYP*x|AVrmCRaI$UB?QoO(7mlBcHC};gA=!meK)IsI~PL0y1&{Dfm6! zxIajDc1$a0s>QG%WID%>A#`iA+J8HaAGsH z+1JH=+eX5F(AjmZGk|`7}Gpl#jvD6_Z!&{*kn@WkECV-~Ja@tmSR|e_L@9?N9 z3hyyry*D0!XyQh_V=8-SnJco#P{XBd1+7<5S3FA)2dFlkJY!1OO&M7z9uO?$#hp8K z><}uQS-^-B;u7Z^QD!7#V;QFmx0m%{^xtl3ZvPyZdi;^O&c;sNC4CHxzvvOB8&uHl zBN;-lu+P=jNn`2k$=vE0JzL{v67psMe_cb$LsmVfxA?yG z^q7lR00E@Ud3)mBPnT0KM~pwzZiBREupva^PE3~e zBgQ9oh@kcTk2)px3Hv^VzTtMzCG?*X(TDZ1MJ6zx{v- z;$oo46L#QNjk*1przHSQn~Ba#>3BG8`L)xla=P{Ql8aZ!A^Z6rPv%&@SnTI7FhdzT z-x7FR0{9HZg8Bd(puRlmXB(tB?&pxM&<=cA-;RT5}8rI%~CSUsR^{Dr%I2WAQghoqE5 zeQ874(T`vBC+r2Mi(w`h|d zA4x%EfH35I?h933@ic#u`b+%b+T?h=<}m@x_~!>o35p|cvIkkw07W=Ny7YcgssA_^ z|KJQrnu||Nu9@b|xC#C5?8Pin=q|UB?`CTw&AW0b)lKxZVYrBw+whPwZJCl}G&w9r zr7qsqm>f2u_6F@FhZU0%1Ioc3X7bMP%by_Z?hds`Q+&3P9-_AX+3CZ=@n!y7udAV2 zp{GT6;VL4-#t0l_h~?J^;trk1kxNAn8jdoaqgM2+mL&?tVy{I)e`HT9#Tr}HKnAfO zAJZ82j0+49)E0+=x%#1_D;sKu#W>~5HZV6AnZfC`v#unnm=hLTtGWz+21|p)uV+0= zDOyrLYI2^g8m3wtm-=pf^6N4ebLJbV%x`J8yd1!3Avqgg6|ar z=EM0KdG6a2L4YK~_kgr6w5OA;dvw0WPFhMF7`I5vD}#giMbMzRotEs&-q z^ji&t1A?l%UJezWv?>ijh|$1^UCJYXJwLX#IH}_1K@sAR!*q@j(({4#DfT|nj}p7M zFBU=FwOSI=xng>2lYo5*J9K3yZPwv(=7kbl8Xv0biOba>vik>6!sfwnH(pglq1mD-GrQi8H*AmfY*J7&;hny2F zupR}4@kzq+K*BE%5$iX5nQzayWTCLJ^xTam-EEIH-L2;huPSy;32KLb>>4 z#l$W^Sx7Q5j+Sy*E;1eSQQuHHWOT;1#LjoYpL!-{7W3SP4*MXf z<~>V7^&sY|9XSw`B<^9fTGQLPEtj=;<#x^=;O9f2{oR+{Ef^oZ z@N>P$>mypv%_#=lBSIr_5sn zBF-F_WgYS81vyW6$M;D_PoE&%OkNV1&-q+qgg~`A7s}>S`}cn#E$2m z%aeUXwNA(^3tP=;y5%pk#5Yz&H#AD`Jph-xjvZm_3KZ|J>_NR@croB^RUT~K;Exu5%wC}1D4nov3+@b8 zKyU5jYuQ*ZpTK23xXzpN51kB+r*ktnQJ7kee-gP+Ij0J_#rFTS4Gux;pkVB;n(c=6 zMks#)ZuXUcnN>UKDJ-IP-u2de1-AKdHxRZDUGkp)0Q#U$EPKlSLQSlnq)OsCour)+ zIXh@3d!ImInH7VrmR>p8p4%n;Tf6l2jx1qjJu>e3kf5aTzU)&910nXa-g0xn$tFa& z2qZ7UAl*@5o=PAh`6L${6S-0?pe3thPB4pahffb$#nL8ncN(Nyos`}r{%{g64Ji^= zK8BIywT0-g4VrhTt}n~Y;3?FGL74h?EG*QfQy0A8u>BtXuI{C-BYu*$o^}U1)z;8d zVN(ssw?oCbebREPD~I$-t7}`_5{{<0d10So7Pc2%EREdpMWIJI&$|rq<0!LL+BQM4 zn7)cq=qy|8YzdO(?NOsVRk{rW)@e7g^S~r^SCawzq3kj#u(5@C!PKCK0cCy zT@Tey2IeDYafA2~1{gyvaIT^a-Yo9kx!W#P-k6DfasKEgFji`hkzrmJ#JU^Yb%Nc~ zc)+cIfTBA#N0moyxZ~K!`^<>*Nzv-cjOKR(kUa4AkAG#vtWpaD=!Ku&;(D#(>$&~B zI?V}e8@p%s(G|8L+B)&xE<({g^M`#TwqdB=+oP|5pF3Z8u>VA!=w6k)zc6w2=?Q2` zYCjX|)fRKI1gNj{-8ymwDOI5Mx8oNp2JJHG3dGJGg!vK>$ji?n>5qG)`6lEfc&0uV z)te%G&Q1rN;+7EPr-n8LpNz6C6N0*v{_iIbta7OTukSY zt5r@sO!)rjh0aAmShx zd3=DJ3c(pJXGXzIh?#RR_*krI1q)H$FJ#dwIvz);mn;w6Rlw+>LEq4CN6pP4AI;!Y zk-sQ?O=i1Mp5lZX3yka>p+XCraM+a!1)`F`h^cG>0)f0OApGe(^cz-WoOno-Y(EeB zVBy3=Yj}ak7OBj~V259{&B`~tbJCxeVy@OEE|ke4O2=TwIvf-=;Xt_l)y`wuQ-9#D z(xD-!k+2KQzr`l$7dLvWf*$c8=#(`40h6d$m6%!SB1JzK+tYQihGQEwR*-!cM>#LD>x_J*w(LZbcvHW@LTjM?RSN z0@Z*4$Bw~Ki3W|JRI-r3aMSepJNv;mo|5yDfqNLHQ55&A>H5>_V9<_R!Ip`7^ylX=D<5 zr40z>BKiC@4{wSUswebDlvprK4SK2!)w4KkfX~jY9!W|xUKGTVn}g@0fG94sSJGV- z9@a~d2gf5s>8XT@`If?Oway5SNZS!L5=jpB8mceuf2Nd%aK2Zt|2FVcg8~7O{VPgI z#?H*_Kl!9!B}MrK1=O!Aw&faUBluA0v#gWVlAmZt;QN7KC<$;;%p`lmn@d(yu9scs zVjomrund9+p!|LWCOoZ`ur5QXPFJtfr_b5%&Ajig2dI6}s&Fy~t^j}()~4WEpAPL= zTj^d;OoZTUf?weuf2m?|R-7 z*C4M6ZhWF(F@2}nsp85rOqt+!+uZz3$ReX#{MP5-r6b`ztXDWl$_mcjFn*{sEx7f*O(ck+ou8_?~a_2Ztsq6qB|SPw26k!tLk{Q~Rz z$(8F1B;zK-#>AmmDC7;;_!;g&CU7a?qiIT=6Ts0cbUNMT6yPRH9~g zS%x{(kxYd=D&GKCkx;N21sU;OI8@4vLg2}L>Lb{Qv`B*O0*j>yJd#`R5ypf^lp<7V zCc|+>fYgvG`ROo>HK+FAqlDm81MS>&?n2E-(;N7}oF>3T9}4^PhY=Gm`9i(DPpuS- zq)>2qz!TmZ6q8;&M?@B;p1uG6RM_Y8zyId{-~XQD_}bXL{Jp7w`)~IR{l5a2?7!Vg zp!OfP4E$Ty_-K3VY!wdGj%2RL%QPHTL)uKfO5Am5<$`5 zHCBtvI~7q-ochU`=NJF*pPx@^IhAk&ZEA>w$%oPGc-}6~ywV~3-0{>*sb=|ruD{y$ ze%@-m`u28vKDaf*_rmN`tzQT>&2ltg-lofR8~c;p;E@`zK!1lkgi?JR0 z+<61+rEupp7F=mB=Ch?HwEjuQm}1KOh=o@ zMbI}0J>5}!koi&v9?!B?4FJR88jvyXR_v{YDm}C)lp@2G2{a{~6V5CwSrp6vHQsfb-U<{SSrQ zhjRbS;qlDTA&TQ2#?M(4xsRXFZ^;3A+_yLw>o-9GJ5sgsauB`LnB-hGo9sJ~tJ`Q>=X7sVmg<=Fcv=JDe*DjP-SK-0mJ7)>I zaLDLOU*I}4@cro&?@C`hH3tiXmN`!(&>@S2bFyAvI&axlSgd=!4IOi#+W;sS>lQ28 zd}q&dew9=x;5l0kK@1y9JgKWMv9!I`*C;((P>8C@JJRGwP5EL;JAPHi5fI|4MqlLU z^4D!~w+OIklt7dx3^!m6Be{Lp55j{5gSGgJz=hlNd@tt_I>UG(GP5s^O{jFU;m~l0 zfd`QdE~0Ym=6+XN*P`i0ogbgAJVjD9#%eBYJGIbDZ4s(f-KRE_>8D1Dv*kgO1~NSn zigx8f+VcA_xS)V-O^qrs&N9(}L!_3HAcegFfzVAntKxmhgOtsb4k6qHOpGWq6Q0RS zZO=EomYL%;nKgmFqxD<68tSGFOEM^u0M(;;2m1#4GvSsz2$jawEJDNWrrCrbO<}g~ zkM6516erswSi_yWuyR}}+h!VY?-F!&Y5Z!Z`tkJz&`8AyQ=-mEXxkQ%abc`V1s>DE zLXd7!Q6C)`7#dmZ4Lm?>CTlyTOslb(wZbi|6|Pl5fFq3y^VIzE4DALm=q$pK>-WM> z@ETsJj5=7=*4 z#Q8(b#+V=~6Gxl?$xq|?@_yQJ2+hAYmuTj0F76c(B8K%;DPhGGWr)cY>SQS>s7%O- zr6Ml8h`}klA=1&wvbFMqk}6fml`4A%G=o@K@8LHifs$)}wD?ix~Id@9-`;?+I7 zOhQN(D)j=^%EHN16(Z3@mMRM5=V)_z(6y^1b?@Bn6m>LUW7}?nupv*6MUVPSjf!Ym zMPo5YoD~t(`-c9w)tV%RX*mYjAn;5MIsD?0L&NQ#IY`9k5}Fr#5{CeTr)O|C2fRhY z4zq(ltHY2X)P*f?yM#RY75m8c<%{Y?5feq6xvdMWrNuqnR%(o(uo8i|36NaN<#FnT ze-_O*q0DXqR>^*1sAnsz$Ueqe5*AD@Htx?pWR*RP=0#!NjnaE-Gq3oUM~Kc9MO+o6 z7qc6wsBxp7GXx+hwEunnebz!|CX&`z{>loyCFSF-zg za}zec;B1H7rhGMDfn+t9n*wt|C_0-MM~XO*wx7-`@9~-%t?IegrHM(6oVSG^u?q`T zO<+YuVbO2fonR-MCa6@aND4dBy^~awRZcp!&=v+#kH@4jYvxt=)zsHV0;47XjlvDC8M1hSV zm!GB(KGLwSd{F-?dmMAe%W0oxkgDv8ivbs__S{*1U}yQ=tsqHJYI9)jduSKr<63$> zp;a-B^6Hg3OLUPi1UwHnptVSH=_Km$SXrCM2w8P z%F#Boi&CcZ5vAGjR1axw&YNh~Q%)VDYUDZ6f^0;>W7_sZr&QvRWc2v~p^PqkA%m=S zCwFUg2bNM(DaY>=TLmOLaDW&uH;Za?8BAwQo4+Xy4KXX;Z}@D5+}m)U#o?3UF}+(@jr$M4ja*`Y9gy~Y`0 z6Aex1*3ng@2er)@{%E9a3A;cts9cAor=RWt7ege)z=$O3$d5CX&hORZ3htL>jj5qT zW#KGQ;AZ|YbS0fvG~Y)CvVwXnBLJkSps7d~v;cj$D3w=rB9Tx>a&4>(x00yz!o*SOd*M!yIwx;NgqW?(ysFv8XLxs6Lrh8-F`3FO$}V{Avztc4qmZ zoz&YQR`*wWy_^&k-ifJ&N8Qh=E-fH6e}-}0C{h~hYS6L^lP>=pLOmjN-z4eQL27!6 zIe2E}knE;dxIJ_!>Mt|vXj%uGY=I^8(q<4zJy~Q@_^p@JUNiGPr!oUHfL~dw9t7C4I9$7RnG5p9wBpdw^)PtGwLmaQM=KYe z;Dfw@%nquH^nOI6gjP+K@B~0g1+WROmv1sk1tV@SUr>YvK7mxV3$HR4WeQ2&Y-{q~ z4PAR&mPOEsTbo~mRwg&EJE2Dj?TOZPO_@Z|HZX9-6NA!%Pb3h;G3F5J+30BoT8-PU z_kbx`I>&nWEMtfv(-m>LzC}s6q%VdBUVI_GUv3@^6SMkEBeVjWplD5y58LyJhikp4VLHhyf?n%gk0PBr(PZ3 z+V`qF971_d@rCO8p#7*#L0^v$DH>-qB!gy@ut`3 zy3cQ8*t@@{V7F*ti(u{G4i55*xY9Erw3{JZ8T4QPjo5b{n=&z4P^}wxA;x85^fwmD z6mEq9o;kx<5VneT_c-VUqa|zLe+BFgskp_;A)b>&EDmmP7Gx#nU-T@;O+(&&n7ljK zqK7&yV!`FIJAI+SaA6y=-H=tT`zWvBlaed!3X^_Lucc%Q=kuiG%65@@6IeG}e@`ieesOL} zKHBJBso6u&7gzlrpB%_yy<>TFwDI>}Ec|Gieb4=0fGwY|3YGW2Dq46=a1 zVo`Vi%yz+L9)9hbb%FLTC@-G(lODgJ(f&WmSCK9zV3-IV7XI<{2j}ms_Vmb!os)06 zhVIZPZF)hW--kWTCyDVRd2T&t|P&aDrtO5kzXy<*A+5$k7$>4+y%;% znYN-t#1^#}Z6d+ahj*Gzor+@kBD7@f|IGNR$4U=Y0J2#D2)YSxUCtiC1weJg zLp0Q&JFrt|In8!~1?fY0?=fPyaqPy$iQXJDhHP>N%B42Yck`Qz-OM_~GMuWow)>=Q z0pCCC7d0Z^Ipx29`}P3;?b{dO?7z0e{L|O*Z}nxi>X|RL8XAw$1eOLKd5j@f{RQ~Y zG?7$`hy@s7IoRF2@KA%2ZM6{ru9T5Gj)iDCz};VvlG$WuT+>_wCTS~J6`I9D{nsrU z2;X#OyopBgo778Q>D%_E>rMN~Po~d5H<`8|Zcv}F`xL5~NCVLX4Wkg007HhMgj9Pa z94$km3A+F&LzOJlpeFR*j+Y%M!Qm42ziH~cKM&3b;15s)ycD@3_tL-dk{+xP@J7#o z-)bYa-gd2esfy<&-nrj>1{1^_L>j&(MA1#WNPg3UD?reL*}V{ag{b!uT755x>mfbZ z0PzwF+kx91`qqOn`1>xw@801XAJlH>{`~|pyi6J;3s=cTOfelA&K5HX#gBp6s<|r5 zjSSj+CU*-TulqlnlP`}?)JkJ_7fg){;bRlXf+&^e8CWwFqGY@SZ=%NmLCXpYb+}7* z$4k}%iFUi^kBdeJg^kHt)f~<;Ovlz!9frq20cIj>2eIcG(dh57ry;^E^2T)E_8#;_9iJT>4sdCB_db|zO?Z^*lBN zNCs~f+Jkx%EUgkN2-xFF?B%TMr4#)%wq?-~+Nh;g9=n3tM>i5ZcH&nkVcPXgYRjG@ zf(Y7WN@hGV7o0bjx_2@bthJ`hjXXpfaes_(lWIw!(QK_nkyqj?{j#uFKpNVpV@h?7_WC3~&%)xHR1kKo`Cypj15#%0m z-o0GXem63g^|IltM?eZV=b+Z2e8&Z1%{0;*zmFc62mNqLTy$Y_c|9HiH0l>K z+mAx7DVYoHhXfdCE8Bs@j=t0f*uM++Idd25BgIm`Ad;I_{$mO?W%=JF82blr8rl>yMk6?pM z^tMluJ-ckG_}OkxP91t2o>CQ_O8^VZn$s$M_APWIXBGBq0Lt^YrTD5(Vwe2ta4y#DEYa(W~=eLOy7rD^%Vd$kL27M)MSpwgoP3P{ z!yS$zc|uP{yzaIqCwE!AfYNS;KW|OdP1Q%!LZviA0e^WDsIS5#= z!B{TW)VB)VHg{LoS#W7i6W>*sFz!qr^YS0t2kh90y=Je5{p>8)~D@dLS@QM(F# zIp{6M*#(@?tsu1Rq-Mdq+eV}ibRSpv#976C_5xlI`$#1tN`sK1?)5M+sj=OXG6dNu zV1K{y>!i0&9w8O{a>`IA#mo(3a zf*+Q=&HW7&(nX8~C1tiHZj%>;asBEp$p_Q!@Y0T8R~OuPEy3Lq@^t$8=~(FhPVmJJ z#VF8`(fNzK-b%Iin7|cxWP0xr*M&zoz|fCx@=Y!-0j_~cuxsDHHpmSo)qOalZ$bRl z2F$j0k3llJ$>28HH3l_W(KjF^!@LwtLej_b9;i;{ku2x+&WA@jKTO0ad71@_Yta!{ z2oqhO4zaU433LK371>E{bZ?+3kLZ9WQ2+3PTZAP90%P13Yy3lr3mhmy|>eN6(SHs1C%Q39p)YsUr7(kuaoIJGJhXV-PyG zjnxhcAC;fqY@6;MWWBnRK6ocG`%T&0&*k95#yK7DFtZV?;cy;!RD_*YJjsb6Q`$;K zy)&X{P`*5xEgjTQ9r=oh0|>Z_yeFm?ev!p z7q;JA4mtu@qa39v%6i)Z4%qwdxcHuOMO;a1wFMP_290FqH1OsmCG{ zq^afYrz2BQyQ0*JGE}1h!W9fKgk$b!)|!%q(1x?5=}PpmZQ$e;2EB*k4%+&+u;(E* z2n@=9HsqMv;4>Nn^2v&@4T-YTkd`TdWU^U*;sA5|r7TjZGnLY*xC=_K-GmDfkWEGC z;oN&!c1xB-<4J7=9 zJ(BedZwZhG4|64<=wvCn4)}w%Zx_TEs6ehmjVG&p5pi46r zg=3-3Q~;v55KR&8CfG;`Lv6NsXB}RqPVyNeKAfj9=Ol>fQlEUl2cH7=mPV!68+;jgtKvo5F#8&9m? z``w+#S5UR=QHFGM~noocC zVFa#v2%oo{%;wi~_~R2ci}`=B|0@ zinDfNxV3%iHIS(7{h_WEXqu!v~`CMH+7^SkvLe_3i}=pyDRah zN#L)F-`JLj6BiG}sj*WBmrdZuVVEo86Z<6VB}s)T$ZcWvG?i0cqI}WhUq2Y#{f~x# zi1LjxSZCwiKX}*ETGVzZ157=jydo*xC^}mJ<+)!DDCd4sx?VM%Y;&CTpw5;M*ihZ| zJ!FBJj0&j&-oJs?9a_I$;jzd%7|pdsQ3m`bPBe$nLoV1!YV8?Pw~0D zmSD-5Ue60>L$Rw;yk{_2d~v@CnvZa%!7{{7lb$kxWx!pzyh;6G~RbN5+|mFTbxcxf!XyfbLI^zMQSb6P~xzESXmV{9 zCMp)baZSz%)j&JWkc|Gq;_*$K@zQ%tH^91X2|Byv>=SmWR$7-shf|_^>Ll;*9+c(e z{N%43;&e8}_QGW+zE0m0myb-@QU%=Qo>``5UzB(lH0sK=E``{ZBl2Ni^-QtDp0ME1 zK88E-db_XBZQaU}cuvkCgH7crju~9eE-Y`os~0P-J=s;aS#wil$HGdK;Ut?dSO71ssyrdm{QRpMAV2nXslvlIE#+Oh>l7y_~?;}F!;ENCR zO+IG#NWIRI`FLntsz^FldCkky2f!d-%Pij9iLKr>IfCK);=}}?(NL%#4PfE(4kPQN zSC%BpZJ*P+PO5mHw0Wd%!zJsn&4g<$n#_?(=)JnoR2DK(mCPHp6e6VdV>?E5KCUF@ zf7W9wm%G#Wfm*NxTWIcJX-qtR=~NFxz4PSmDVAU8(B2wIm#IdHae-F{3jKQFiX?8NlKEhXR2Z|JCUd@HMnNVwqF~V9YJtD+T zQlOroDX-mg2% zBKV^Q5m5ECK{nWjJ7FHOSUi*a-C_?S_yo~G5HuRZH6R``^dS3Bh6u!nD`kFbxYThD zw~2%zL4tHA26rcdln4^=A(C+f9hLlcuMCv{8`u;?uoEVbU=YVNkBP#s3KnM@Oi)fQ zt_F3VjY)zASub%Q{Y?XgzlD3M5#gUBUuhW;$>uBSJH9UBfBtug*S|-;h?|L#^Z&uE zB&)spqM89dWg9ZrXi#F{KtL@r9g^xeR8J+$EhL~2u@cf`dS{8GUC76JP0hHtCKRg0 zt*rVyl&jaJAez;!fb!yX^+So4-8XMNpP@d3H*eF%t_?I|zN^1Iu5aGBXSm+}eCqn3 z^+vzcM*J>wV-FJRrx@^5;l>h0{OYT)lg{dr8!{s7(i{5T|3bivDoTonV1yo1@nVPR zXxEgGg^x5KHgp?=$xBwm_cKHeDurCgO>$B$GSO`Cd<~J8@>ni>Z-Ef!3+ck(MHVy@ z@#<*kCOb5S$V+Fvc@{Qv$oLfnOAG&YO5z_E2j6E z7a+c(>-`H)>g+6DeY1Y*ag-B6>Cl@@VhkZY@Uihe!{LlRpuTsmIsN4;+UDsHd954n9WZV6qq*{qZ5j<W)`UorOmXtVnLo3T{t#h3q^fooqQ~A+EY<$TDG4RKP*cK0liX95STt= zToC<2M2*(H1tZ)0s|v~iSAa^F-9jMwCy4cK0HM*3$@1Q`Pz}FFYm`PGP0wuamWrt*ehz3(|Fn%;0;K4}!Q~cx{0U0L=cs6lcrY^Y%Vf_rXpQIw~DfxB-72tZU6gdK8C~ea6(2P@kGH}!2N?>r(Ca{ zsI!6B!alPl%j1CHq97PTVRng$!~?s2{+6ffC#;X2z(Xb#9GsSYYe@9zY~7Dc7Hfgh z5Tq!})o30pA3ywg<9W3NpvUs;E%Cehz=s?EfLzcV0H?b{=q?vJCih2y%dhls6w3j$ zk9LB0L&(15mtul3T^QSK7KIZVTod#Sc)?1gzY~M=?ay87V}6G?F>~AIv()-N zD3rHX`;r;L{9N|Z8REN}OZB&SZ|5a80B%dQd-CNESP7HnuNn43T~Agcl1YOF@#W03 z1b*t!>t5G@XwVygHYczDIC|RdMB+ z$s5_5_W-EXN-u_5Pb{((!+8xa+?@_#dwtYHeJ_49Dql%3Fv0yXeV?!cC&Iqx@s~P%$X6%1 zYzS9pqaUv&aBQqO zBQs7d63FZIL1B&<8^oni%CZOdf6&;^oNqQ-9j-NBuQ^|9baQuZ^Jtyt&?cHq$Q9JE z5D>QY1?MU7%VVbvjysl~-a&ImiE(uFwHo{!kp;Jd`OLE!^4k8ID{`e-&>2uB7XB~= z+nIQGZ8-Sbfa}OrVPL}!mdieCrs3Nq8Ic_lpTKMIJ{h>XS$C3`h~ z?p2AbK~%t$t(NcOq5ZB3V|`a0io8A))v_PMt)Hg3x+07RL>i zGUq@t&+VV`kj55_snp?)Y@0rKZr`riC`9Q(B1P^nxffV9AvBLPrE<8D>ZP{HCDY@JIvYcYNRz8 z0Rf+Q0riSU@KaVpK)0M{2}Wuh!o~t*6>)EZSCQD{=}N4Oxjo1KO-MNpPYuPABh}E|rM!=TSl^F%NV^dg+>WNGi@Q5C z%JGsP#em`4LxDdIzA@VF&`2bLDv%J)(7vedDiXDqx{y6$Y0o~j*nVY73pINPCY?9y z$Rd&^64MN)Pkxr-CuZ+WqAJx6vuIAwmjkN{aPkrJ0I4F5-Bl}$hRzhRhZ^xN&Oe5$ za4Wrh6PyFfDG+Nzd8NTp2})j>pGtyejb&;NkU3C5-_H;{?>xK1QQ9S`xaHoMgee=2 zEbEh+*I!ggW@{T{qENlruZT)ODp~ZXHBc_Ngqu{jyC#qjyYGAQsO8VT^lts$z0HP+ z2xs^QjUwWuiEh863(PqO4BAosmhaK`pEI{-geBD9UuIn8ugOt-|6S(xkBLeGhW~)< z8aWBs0)bzOnY4wC$yW{M@&(iTe{8zhDnKP<1yr9J8akUK)1svAuxC)}x-<>S!9(?F zcA?{_C?@ZV2Aei`n#l(9zu`WS-hJsAXWt(SGp4(xg7~3*c5@odW;kXXbGuLOFMj{d z{gx81mQREmRAUHhfp#zoWh>z}GuS|raw1R#en%9R3hSR`qGglQhaq>#K!M%tooG;? zzjo}>sL7a3M5jW*s8R;#Y8b(l;%*I$@YH9)YzWR!T6WLI{$8ScBvw+5&()>NhPzd! z{>P(yk8{(G&2ovV^|#1HbcVMvXU&;0pk&6CxBTvBAB>#tK~qALsH`Ad1P0tAKWHv+BR8Fv4!`+>Obu1UX^Ov zmOpuS@Ui|NK4k-)TbG?+9T$)rkvq+?=0RDa=xdmY#JHLastjqPXdDbShqW>7NrHZ7 z7(9(HjM1-Ef(^`%3TlhySDJ27vQ?H`xr9VOM%0ANsA|A3-jj|r`KAo%oTajX3>^E` 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 YM{}PByk10KD_nuQ4E7Du?}+~TKh4V)`~Uy| literal 0 HcmV?d00001 diff --git a/S2/DevWeb/Projet/.mvn/wrapper/maven-wrapper.properties b/S2/DevWeb/Projet/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..40ca015 --- /dev/null +++ b/S2/DevWeb/Projet/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.5/apache-maven-3.8.5-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar \ No newline at end of file diff --git a/S2/DevWeb/Projet/Sujet.pdf b/S2/DevWeb/Projet/Sujet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..eaa225126e1cc6764db72883d00c9468c8be21c6 GIT binary patch literal 115914 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 literal 0 HcmV?d00001 diff --git a/S2/DevWeb/Projet/docker-compose.yaml b/S2/DevWeb/Projet/docker-compose.yaml new file mode 100644 index 0000000..3082431 --- /dev/null +++ b/S2/DevWeb/Projet/docker-compose.yaml @@ -0,0 +1,13 @@ +version: '2' +services: + db: + image: mysql:latest + volumes: + - ./mysql:/docker-entrypoint-initdb.d + environment: + - MYSQL_DATABASE=db + - MYSQL_ROOT_PASSWORD=root + ports: + - "6033:3306" + expose: + - "3306" \ No newline at end of file diff --git a/S2/DevWeb/Projet/mvnw b/S2/DevWeb/Projet/mvnw new file mode 100755 index 0000000..8a8fb22 --- /dev/null +++ b/S2/DevWeb/Projet/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/S2/DevWeb/Projet/mvnw.cmd b/S2/DevWeb/Projet/mvnw.cmd new file mode 100644 index 0000000..1d8ab01 --- /dev/null +++ b/S2/DevWeb/Projet/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/S2/DevWeb/Projet/mysql/init.sql b/S2/DevWeb/Projet/mysql/init.sql new file mode 100644 index 0000000..ad3d0d6 --- /dev/null +++ b/S2/DevWeb/Projet/mysql/init.sql @@ -0,0 +1,38 @@ +CREATE DATABASE IF NOT EXISTS db; +USE db; + +-- Table: User +CREATE TABLE IF NOT EXISTS User +( + id_user INT NOT NULL AUTO_INCREMENT, + username VARCHAR(255) NOT NULL, + password VARCHAR(255) NOT NULL, + birth_date DATE NOT NULL, + sexe VARCHAR(255) NOT NULL, + PRIMARY KEY (id_user) +); + +-- Table: Game +CREATE TABLE IF NOT EXISTS Game +( + id_game INT NOT NULL AUTO_INCREMENT, + date DATE NOT NULL, + starting_time TIME NOT NULL, + PRIMARY KEY (id_game) +); + +CREATE TABLE IF NOT EXISTS Player +( + id_player INT NOT NULL AUTO_INCREMENT, + id_game INT NOT NULL, + id_user INT NOT NULL, + score INT NOT NULL, + winner BOOLEAN NOT NULL, + nb_clicks INT NOT NULL, + nb_good_clicks INT NOT NULL, + nb_rapid_clicks INT NOT NULL, + PRIMARY KEY (id_player), + FOREIGN KEY (id_game) REFERENCES Game (id_game), + FOREIGN KEY (id_user) REFERENCES User (id_user) +) + diff --git a/S2/DevWeb/Projet/pom.xml b/S2/DevWeb/Projet/pom.xml new file mode 100644 index 0000000..2eaa3eb --- /dev/null +++ b/S2/DevWeb/Projet/pom.xml @@ -0,0 +1,51 @@ + + + 4.0.0 + + tp4 + Project + 1.0-SNAPSHOT + TP4_mysql_2 + + + UTF-8 + 11 + 11 + 5.9.2 + + + + + org.eclipse.persistence + org.eclipse.persistence.jpa + 3.0.2 + + + + mysql + mysql-connector-java + 8.0.12 + + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + + + + + + diff --git a/S2/DevWeb/Projet/src/main/java/project/EntityManagerProvider.java b/S2/DevWeb/Projet/src/main/java/project/EntityManagerProvider.java new file mode 100644 index 0000000..8b22a69 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/EntityManagerProvider.java @@ -0,0 +1,28 @@ +package project; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.EntityManagerFactory; +import jakarta.persistence.Persistence; + +public final class EntityManagerProvider { + + private static EntityManager instance; + private static EntityManagerFactory factory; + private final static String PERSISTANCE_UNIT_NAME = "default"; + + public static EntityManager getInstance() { + if (factory == null) { + factory = Persistence.createEntityManagerFactory(PERSISTANCE_UNIT_NAME); + } + + if (instance == null) { + instance = factory.createEntityManager(); + } + return instance; + } + + public static void close() { + if (instance.isOpen()) instance.close(); + if (factory.isOpen()) factory.close(); + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/Main.java b/S2/DevWeb/Projet/src/main/java/project/Main.java new file mode 100644 index 0000000..9159c23 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/Main.java @@ -0,0 +1,51 @@ +package project; + +import java.util.Calendar; +import project.dao.DAO; +import project.dao.DAOException; +import project.dao.jpa.Game_JPA_DAO_Factory; +import project.pojo.Game; +import project.pojo.Player; +import project.pojo.User; + +public class Main { + + public static void main(String[] args) { + try { + Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory(); + DAO daoJpaUser = jpaDaoFactory.getDAOUser(); + DAO daoJpaGame = jpaDaoFactory.getDAOGame(); + DAO daoJpaPlayer = jpaDaoFactory.getDAOPlayer(); + + // Contenu de la BD au début + User[] users = daoJpaUser.findAll(); + for (User u : users) { + System.out.println(u.toString()); + } + System.out.println(); + + // Ajout d'un joueur : + Calendar calendarUser1 = Calendar.getInstance(); + calendarUser1.set(1996,Calendar.FEBRUARY,20); + + User user1 = new User("Kevin", "Mitresse", calendarUser1.getTime(), User.Sexe.HOMME); + + Calendar calendarUser2 = Calendar.getInstance(); + calendarUser2.set(2002,Calendar.JUNE,28); + + User user2 = new User("Lucàs", "Vabre", calendarUser1.getTime(), User.Sexe.HOMME); + + users = daoJpaUser.findAll(); + for (User u : users) { + System.out.println(u.toString()); + } + System.out.println(); + + EntityManagerProvider.close(); + } catch (DAOException e) { + e.printStackTrace(); + } catch (Exception e) { + System.out.println("Error : : : : "); + } + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/AbstractDAOFactory.java b/S2/DevWeb/Projet/src/main/java/project/dao/AbstractDAOFactory.java new file mode 100644 index 0000000..729d2ff --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/dao/AbstractDAOFactory.java @@ -0,0 +1,20 @@ +/* + * AbstractDAOFactory.java, 09/02/2024 + * UPPA M1 TI 2023-2024 + * Pas de copyright, aucun droits + */ + +package project.dao; + +import project.dao.jpa.Game_JPA_DAO_Factory; + +/** + * Factory renvoyant une factory de DAO en fonction du support de persistance choisi + */ +public class AbstractDAOFactory { + + public static GameDAOFactory getDAOFactory(PersistenceKind type) { + if (type.equals(PersistenceKind.JPA)) return new Game_JPA_DAO_Factory(); + return null; + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/DAO.java b/S2/DevWeb/Projet/src/main/java/project/dao/DAO.java new file mode 100644 index 0000000..5596f20 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/dao/DAO.java @@ -0,0 +1,55 @@ +/* + * DAO.java, 21/02/2024 + * UPPA M1 TI 2023-2024 + * Pas de copyright, aucun droits + */ + +package project.dao; + +/** + * DAO abstrait et générique pour tout type de données + * + * @param la classe paramétrant le DAO + */ +public abstract class DAO { + + public void DAO() throws DAOException { + + } + + /** + * Retourne à partir du support de persistance un objet en fonction de son identifiant + * + * @param id identifiant de l'objet + * @return l'instance de l'objet + * @throws DAOException en cas de problème + */ + public abstract D findById(int id) throws DAOException; + + public abstract D[] findAll() throws DAOException; + + /** + * Rend persistant un objet qui n'avait pas encore de réprésentation sur le support de persistance + * + * @param data l'objet à rendre persistant + * @throws DAOException en cas de problème + */ + public abstract void create(D data) throws DAOException; + + /** + * Met à jour le contenu correspondant à l'objet sur le support persistant (l'objet + * avait déjà une représentation sur le support persistant) + * + * @param data l'objet modifié dont le contenu est à mettre à jour + * @throws DAOException en cas de problème + */ + public abstract void update(D data) throws DAOException; + + /** + * Efface du support persistant le contenu équivalent à l'objet + * + * @param data l'objet à supprimer + * @throws DAOException en cas de problème + */ + public abstract void delete(D data) throws DAOException; +} diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/DAOException.java b/S2/DevWeb/Projet/src/main/java/project/dao/DAOException.java new file mode 100644 index 0000000..93c4712 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/dao/DAOException.java @@ -0,0 +1,21 @@ +/* + * DAOException.java, 09/02/2024 + * UPPA M1 TI 2023-2024 + * Pas de copyright, aucun droits + */ + +package project.dao; + +/** + * Exception spécifique aux problèmes d'accès aux données via un DAO + */ +public class DAOException extends Exception { + + public DAOException() { + super(); + } + + public DAOException(String message) { + super(message); + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/GameDAOFactory.java b/S2/DevWeb/Projet/src/main/java/project/dao/GameDAOFactory.java new file mode 100644 index 0000000..7aa518b --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/dao/GameDAOFactory.java @@ -0,0 +1,34 @@ +/* + * SportsDAOFactory.java, 09/02/2024 + * UPPA M1 TI 2023-2024 + * Pas de copyright, aucun droits + */ + +package project.dao; + +import project.pojo.*; + +/** + * Fabrique abstraite de DAO pour le schéma sports + */ +public abstract class GameDAOFactory { + + /** + * @return le DAO pour la classe/table User + * @throws DAOException en cas de problème + */ + public abstract DAO getDAOUser() throws DAOException; + + /** + * @return le DAO pour la classe/table Game + * @throws DAOException en cas de problème + */ + public abstract DAO getDAOGame() throws DAOException; + + /** + * @return le DAO pour la classe/table Player + * @throws DAOException en cas de problème + */ + public abstract DAO getDAOPlayer() throws DAOException; + +} diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/PersistenceKind.java b/S2/DevWeb/Projet/src/main/java/project/dao/PersistenceKind.java new file mode 100644 index 0000000..d11bf74 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/dao/PersistenceKind.java @@ -0,0 +1,14 @@ +/* + * PersistenceKind.java, 09/02/2024 + * UPPA M1 TI 2023-2024 + * Pas de copyright, aucun droits + */ + +package project.dao; + +/** + * Type de support de persistance pour les données + */ +public enum PersistenceKind { + JDBC, JPA, XML +} diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Game.java b/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Game.java new file mode 100644 index 0000000..bc2486f --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Game.java @@ -0,0 +1,52 @@ +package project.dao.jpa; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; +import java.math.BigDecimal; +import java.util.List; +import project.EntityManagerProvider; +import project.dao.DAO; +import project.dao.DAOException; +import project.pojo.Game; + +public class DAO_JPA_Game extends DAO { + + private final EntityManager entityManager; + + public DAO_JPA_Game() throws DAOException { + this.entityManager = EntityManagerProvider.getInstance(); + } + + @Override + public Game findById(int id) throws DAOException { + Game result = entityManager.find(Game.class, new BigDecimal(id)); + entityManager.flush(); + return result; + } + + @Override + public Game[] findAll() throws DAOException { + TypedQuery query = entityManager.createQuery("SELECT g FROM Game g", Game.class); + List results = query.getResultList(); + return results.toArray(new Game[0]); + } + + @Override + public void create(Game data) throws DAOException { + update(data); + } + + @Override + public void update(Game data) throws DAOException { + entityManager.getTransaction().begin(); + entityManager.merge(data); + entityManager.getTransaction().commit(); + } + + @Override + public void delete(Game data) throws DAOException { + entityManager.getTransaction().begin(); + entityManager.remove(data); + entityManager.getTransaction().commit(); + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Player.java b/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Player.java new file mode 100644 index 0000000..8da155d --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Player.java @@ -0,0 +1,52 @@ +package project.dao.jpa; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; +import java.math.BigDecimal; +import java.util.List; +import project.EntityManagerProvider; +import project.dao.DAO; +import project.dao.DAOException; +import project.pojo.Player; + +public class DAO_JPA_Player extends DAO { + + private final EntityManager entityManager; + + public DAO_JPA_Player() throws DAOException { + this.entityManager = EntityManagerProvider.getInstance(); + } + + @Override + public Player findById(int id) throws DAOException { + Player result = entityManager.find(Player.class, new BigDecimal(id)); + entityManager.flush(); + return result; + } + + @Override + public Player[] findAll() throws DAOException { + TypedQuery query = entityManager.createQuery("SELECT p FROM Player p", Player.class); + List results = query.getResultList(); + return results.toArray(new Player[0]); + } + + @Override + public void create(Player data) throws DAOException { + update(data); + } + + @Override + public void update(Player data) throws DAOException { + entityManager.getTransaction().begin(); + entityManager.merge(data); + entityManager.getTransaction().commit(); + } + + @Override + public void delete(Player data) throws DAOException { + entityManager.getTransaction().begin(); + entityManager.remove(data); + entityManager.getTransaction().commit(); + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_User.java b/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_User.java new file mode 100644 index 0000000..647fca7 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_User.java @@ -0,0 +1,52 @@ +package project.dao.jpa; + +import jakarta.persistence.EntityManager; +import jakarta.persistence.TypedQuery; +import java.math.BigDecimal; +import java.util.List; +import project.dao.DAO; +import project.dao.DAOException; +import project.EntityManagerProvider; +import project.pojo.User; + +public class DAO_JPA_User extends DAO { + + private final EntityManager entityManager; + + public DAO_JPA_User() throws DAOException { + this.entityManager = EntityManagerProvider.getInstance(); + } + + @Override + public User findById(int id) throws DAOException { + User result = entityManager.find(User.class, new BigDecimal(id)); + entityManager.flush(); + return result; + } + + @Override + public User[] findAll() throws DAOException { + TypedQuery query = entityManager.createQuery("SELECT u FROM User u", User.class); + List results = query.getResultList(); + return results.toArray(new User[0]); + } + + @Override + public void create(User data) throws DAOException { + update(data); + } + + @Override + public void update(User data) throws DAOException { + entityManager.getTransaction().begin(); + entityManager.merge(data); + entityManager.getTransaction().commit(); + } + + @Override + public void delete(User data) throws DAOException { + entityManager.getTransaction().begin(); + entityManager.remove(data); + entityManager.getTransaction().commit(); + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/Game_JPA_DAO_Factory.java b/S2/DevWeb/Projet/src/main/java/project/dao/jpa/Game_JPA_DAO_Factory.java new file mode 100644 index 0000000..90c0903 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/dao/jpa/Game_JPA_DAO_Factory.java @@ -0,0 +1,41 @@ +/* + * Sports_JDBC_DAOFactory.java, 09/02/2024 + * UPPA M1 TI 2023-2024 + * Pas de copyright, aucun droits + */ + +package project.dao.jpa; + +import project.dao.DAO; +import project.pojo.*; +import project.dao.DAOException; +import project.dao.GameDAOFactory; + +/** + * Fabrique concrète de DAO pour le schéma relationnel sports avec une implémentation en JDBC. + */ +public class Game_JPA_DAO_Factory extends GameDAOFactory { + + private DAO_JPA_User daoUser = null; + + private DAO_JPA_Game daoGame = null; + + private DAO_JPA_Player daoPlayer = null; + + @Override + public DAO getDAOUser() throws DAOException { + if (daoUser == null) daoUser = new DAO_JPA_User(); + return daoUser; + } + + @Override + public DAO getDAOGame() throws DAOException { + if (daoGame == null) daoGame = new DAO_JPA_Game(); + return daoGame; + } + @Override + public DAO getDAOPlayer() throws DAOException { + if (daoPlayer == null) daoPlayer = new DAO_JPA_Player(); + return daoPlayer; + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/pojo/Card.java b/S2/DevWeb/Projet/src/main/java/project/pojo/Card.java new file mode 100644 index 0000000..302f3b8 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/pojo/Card.java @@ -0,0 +1,24 @@ +package project.pojo; + +public class Card { + + public enum Color{coeur, carreau, pique, trèfle} + + public enum Value{un, deux, trois, quatre, cinq, six, sept, huit, neuf, dix, valet, dame, roi} + private Color color; + + private Value value; + + public Card(Color color, Value value) { + this.color = color; + this.value = value; + } + + public Color getColor() { + return color; + } + + public Value getValue() { + return value; + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/pojo/Deck.java b/S2/DevWeb/Projet/src/main/java/project/pojo/Deck.java new file mode 100644 index 0000000..8f338fb --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/pojo/Deck.java @@ -0,0 +1,31 @@ +package project.pojo; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class Deck { + private Set cards; + + public Deck(){ + cards = new HashSet<>(); + initializeDeck(); + shuffleDeck(); + } + + private void initializeDeck() { + for (Card.Color color : Card.Color.values()){ + for (Card.Value value : Card.Value.values()) { + cards.add(new Card(color, value)); + } + } + } + + private void shuffleDeck() { + List cardList = new ArrayList<>(cards); + Collections.shuffle(cardList); + cards = new HashSet<>(cardList); + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/pojo/Game.java b/S2/DevWeb/Projet/src/main/java/project/pojo/Game.java new file mode 100644 index 0000000..d2312ba --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/pojo/Game.java @@ -0,0 +1,96 @@ +package project.pojo; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import java.io.Serializable; +import java.math.BigDecimal; +import java.sql.Timestamp; +import java.util.Date; +import java.util.Objects; +import java.util.Set; + +@Entity +@Table(name = "game") +public class Game implements Serializable { + + @Id + @Column(name = "id_game") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private BigDecimal id; + + @Temporal(TemporalType.DATE) + @Column(name="date") + private Date date; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name="starting_time") + private Timestamp startTime; + + @OneToMany(mappedBy = "game", cascade = CascadeType.ALL, fetch = FetchType.LAZY) + private Set players; + + public Game() { + + } + + public Game(Date date, Timestamp startTime) { + this.date = date; + this.startTime = startTime; + } + + @Override + public int hashCode() { + return Objects.hash(id, date); + } + public BigDecimal getId() { + return id; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public Timestamp getStartTime() { + return startTime; + } + + public void setStartTime(Timestamp startTime) { + this.startTime = startTime; + } + + public Set getPlayers() { + return players; + } + + public void setPlayers(Set players) { + this.players = players; + } + + public void addPlayers(Player player) { + this.players.add(player); + } + + + + @Override + public String toString() { + return "Game{" + + "id=" + id + + ", date=" + date + + ", players=" + players + + '}'; + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/pojo/Player.java b/S2/DevWeb/Projet/src/main/java/project/pojo/Player.java new file mode 100644 index 0000000..dd8bfb8 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/pojo/Player.java @@ -0,0 +1,157 @@ +package project.pojo; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Objects; + +@Entity +@Table(name = "player") +public class Player implements Serializable { + + @Id + @Column(name = "id_player") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private BigDecimal id; + + @ManyToOne + @JoinColumn(name = "id_game", nullable = false) + private Game game; + + @ManyToOne + @JoinColumn(name = "id_user", nullable = false) + private User user; + + @Column(name = "score") + private int score; + + @Column(name = "winner") + private boolean winner; + + @Column(name = "nb_clicks") + private int nbClicks; + + @Column(name = "nb_right_clicks") + private int nbRightClicks; + + @Column(name = "nb_rapid_clicks") + private int nbRapidClick; + + public Player() { + + } + + public Player(Game game, User user) { + this.game = game; + this.user = user; + this.score = 0; + this.winner = false; + this.nbClicks = 0; + this.nbRightClicks = 0; + this.nbRapidClick = 0; + } + + public Player(Game game, User user, int score, boolean winner, int nbClicks, int nbRightClicks, int nbRapidClick) { + this.game = game; + this.user = user; + this.score = score; + this.winner = winner; + this.nbClicks = nbClicks; + this.nbRightClicks = nbRightClicks; + this.nbRapidClick = nbRapidClick; + } + + @Override + public int hashCode() { + return Objects.hash(game, user, score, winner, nbClicks, nbRightClicks, nbRapidClick); + } + + public Game getGame() { + return game; + } + + public void setGame(Game game) { + this.game = game; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public int getScore() { + return score; + } + + public void setScore(int score) { + this.score = score; + } + + public void updateScore(int points) { this.score += points; } + + public boolean isWinner() { + return winner; + } + + public void setWinner() { + this.winner = true; + } + + public int getNbClicks() { + return nbClicks; + } + + public void setNbClicks(int nbClicks) { + this.nbClicks = nbClicks; + } + + public void addClick() { + this.nbClicks++; + } + + public int getNbRightClicks() { + return nbRightClicks; + } + + public void setNbRightClicks(int nbRightClicks) { + this.nbRightClicks = nbRightClicks; + } + + public void addRightClick() { + this.nbRapidClick++; + } + public int getNbRapidClick() { + return nbRapidClick; + } + + public void setNbRapidClick(int nbRapidClick) { + this.nbRapidClick = nbRapidClick; + } + + public void addRapidClick() { + this.nbRapidClick++; + } + + @Override + public String toString() { + return "Player{" + + "game=" + game + + ", user=" + user + + ", score=" + score + + ", winner=" + winner + + ", nbClicks=" + nbClicks + + ", nbRightClicks=" + nbRightClicks + + ", nbRapidClick=" + nbRapidClick + + '}'; + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/pojo/User.java b/S2/DevWeb/Projet/src/main/java/project/pojo/User.java new file mode 100644 index 0000000..0b1b35e --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/project/pojo/User.java @@ -0,0 +1,144 @@ +package project.pojo; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.FetchType; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import jakarta.persistence.Temporal; +import jakarta.persistence.TemporalType; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.Objects; +import java.util.Set; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +@Entity +@Table(name = "user") +public class User implements Serializable { + + public enum Sexe {FEMME, HOMME, NONBINAIRE}; + + @Id + @Column(name = "id_user") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private BigDecimal id; + + @Column(name = "username") + private String username; + + @Column(name = "password") + private String password; + + @Temporal(TemporalType.DATE) + @Column(name = "birth_date") + private Date bithDate; + + @Column(name = "sexe") + @Enumerated( EnumType.STRING) + private Sexe sexe; + @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY) + private Set playedGame; + public User() {} + public User(String username, String password, Date birthDate, Sexe sexe) { + this.username = username; + String hashedPassword = hashPassword(password); + this.password = hashedPassword; + this.bithDate = birthDate; + this.sexe = sexe; + + } + + public User(BigDecimal id, String username, String password) { + this.id = id; + this.username = username; + this.password = password; + } + + @Override + public int hashCode() { + return Objects.hash(id, username, password, bithDate, sexe); + } + public BigDecimal getId(){ + return id; + } + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + String hashedPassword = hashPassword(password); + this.password = hashedPassword; + } + + public Date getBithDate() { + return bithDate; + } + + public void setBithDate(Date bithDate) { + this.bithDate = bithDate; + } + + public Sexe getSexe() { + return sexe; + } + + public void setSexe(Sexe sexe) { + this.sexe = sexe; + } + + public int getAge(){ + //TODO: Implement this function + return 1; + } + + private String hashPassword(String password) { + try { + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + + byte[] encodedhash = digest.digest(password.getBytes()); + + StringBuilder hexString = new StringBuilder(); + for (byte b : encodedhash) { + String hex = Integer.toHexString(0xff & b); + if (hex.length() == 1) hexString.append('0'); + hexString.append(hex); + } + + return hexString.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + return null; + } + } + + public boolean verifyPassword(String password) { + String hashedPassword = hashPassword(password); + return hashedPassword != null && hashedPassword.equals(this.password); + } + + @Override + public String toString() { + return "User{" + + "id=" + id + + ", username='" + username + '\'' + + ", age=" + getAge() + + ", sexe=" + sexe + + '}'; + } +} diff --git a/S2/DevWeb/Projet/src/main/resources/META-INF/persistence.xml b/S2/DevWeb/Projet/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..c4737b9 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,22 @@ + + + + + project.pojo.User + project.pojo.Game + project.pojo.Player + + + + + + + + + + + +