From 1aa3a0bd8c896933144ab3b80faebd8d85e96bb2 Mon Sep 17 00:00:00 2001 From: Othemane KHACHNANE <khachnaneothemane@gmail.com> Date: Fri, 28 Feb 2025 11:49:35 +0100 Subject: [PATCH] =?UTF-8?q?=C3=A0=20finir=20les=20likes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sae/.vscode/settings.json | 56 +++++++ sae/README.md | 93 +++++++++++ sae/WEB-INF/classes/controleur/Accueil.class | Bin 0 -> 1975 bytes sae/WEB-INF/classes/controleur/CreerFil.class | Bin 0 -> 2715 bytes .../classes/controleur/EnvoyerMessage.class | Bin 0 -> 4162 bytes sae/WEB-INF/classes/controleur/Fil.class | Bin 0 -> 2212 bytes sae/WEB-INF/classes/controleur/GetFils.class | Bin 0 -> 3621 bytes .../classes/controleur/ListerFil.class | Bin 0 -> 1778 bytes sae/WEB-INF/classes/controleur/Login.class | Bin 0 -> 2284 bytes sae/WEB-INF/classes/controleur/Logout.class | Bin 0 -> 1393 bytes sae/WEB-INF/classes/controleur/Register.class | Bin 0 -> 2454 bytes .../classes/controleur/SuivreFil.class | Bin 0 -> 2040 bytes sae/WEB-INF/classes/modele/Abonnement.class | Bin 0 -> 1639 bytes .../classes/modele/AbonnementDao.class | Bin 0 -> 3812 bytes sae/WEB-INF/classes/modele/DS.class | Bin 0 -> 1119 bytes .../classes/modele/FilDeDiscussion.class | Bin 0 -> 1312 bytes .../classes/modele/FilDeDiscussionDAO.class | Bin 0 -> 3393 bytes sae/WEB-INF/classes/modele/Message.class | Bin 0 -> 2489 bytes sae/WEB-INF/classes/modele/MessageDao.class | Bin 0 -> 4401 bytes sae/WEB-INF/classes/modele/Utilisateur.class | Bin 0 -> 1810 bytes .../classes/modele/UtilisateurDao.class | Bin 0 -> 3817 bytes sae/WEB-INF/src/controleur/GetFils.java | 2 + sae/WEB-INF/src/controleur/Like.java | 38 +++++ sae/WEB-INF/src/modele/DS.java | 8 +- sae/WEB-INF/src/modele/Message.java | 16 +- sae/WEB-INF/src/modele/MessageDao.java | 36 +++++ sae/compilation.md | 1 + sae/script.sql | 151 ++++++++++++++++++ sae/uploads/Abr.png | Bin 0 -> 22686 bytes 29 files changed, 395 insertions(+), 6 deletions(-) create mode 100644 sae/.vscode/settings.json create mode 100644 sae/README.md create mode 100644 sae/WEB-INF/classes/controleur/Accueil.class create mode 100644 sae/WEB-INF/classes/controleur/CreerFil.class create mode 100644 sae/WEB-INF/classes/controleur/EnvoyerMessage.class create mode 100644 sae/WEB-INF/classes/controleur/Fil.class create mode 100644 sae/WEB-INF/classes/controleur/GetFils.class create mode 100644 sae/WEB-INF/classes/controleur/ListerFil.class create mode 100644 sae/WEB-INF/classes/controleur/Login.class create mode 100644 sae/WEB-INF/classes/controleur/Logout.class create mode 100644 sae/WEB-INF/classes/controleur/Register.class create mode 100644 sae/WEB-INF/classes/controleur/SuivreFil.class create mode 100644 sae/WEB-INF/classes/modele/Abonnement.class create mode 100644 sae/WEB-INF/classes/modele/AbonnementDao.class create mode 100644 sae/WEB-INF/classes/modele/DS.class create mode 100644 sae/WEB-INF/classes/modele/FilDeDiscussion.class create mode 100644 sae/WEB-INF/classes/modele/FilDeDiscussionDAO.class create mode 100644 sae/WEB-INF/classes/modele/Message.class create mode 100644 sae/WEB-INF/classes/modele/MessageDao.class create mode 100644 sae/WEB-INF/classes/modele/Utilisateur.class create mode 100644 sae/WEB-INF/classes/modele/UtilisateurDao.class create mode 100644 sae/WEB-INF/src/controleur/Like.java create mode 100644 sae/compilation.md create mode 100644 sae/script.sql create mode 100644 sae/uploads/Abr.png diff --git a/sae/.vscode/settings.json b/sae/.vscode/settings.json new file mode 100644 index 0000000..2c88a55 --- /dev/null +++ b/sae/.vscode/settings.json @@ -0,0 +1,56 @@ +{ + "java.project.sourcePaths": [ + "WEB-INF/src" + ], + "java.project.referencedLibraries": [ + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/websocket-client-api.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/websocket-api.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-websocket.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-util-scan.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-util.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-jni.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-jdbc.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-i18n-zh-CN.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-i18n-ru.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-i18n-pt-BR.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-i18n-ko.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-i18n-ja.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-i18n-fr.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-i18n-es.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-i18n-de.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-i18n-cs.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-dbcp.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-coyote-ffm.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-coyote.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/tomcat-api.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/stax2-api-4.2.2.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/servlet-api.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/postgresql-42.7.5.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/postgresql-42.2.16.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jsp-api.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jjwt-jackson-0.12.5.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jjwt-impl-0.12.5.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jjwt-api-0.12.5.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jaspic-api.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jasper-el.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jasper.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jakartaee-migration-1.0.9-shaded.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jakartaee-migration-1.0.8-shaded.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jackson-datatype-jsr310-2.13.0.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jackson-dataformat-xml-2.15.3.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jackson-databind-2.15.3.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jackson-core-2.15.3.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/jackson-annotations-2.15.3.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/el-api.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/ecj-4.27.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/commons-text-1.13.0.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/commons-lang3-3.17.0.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/catalina-tribes.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/catalina-storeconfig.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/catalina-ssi.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/catalina-ha.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/catalina-ant.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/catalina.jar", + "/home/infoetu/othemane.khachnane.etu/tomcat/lib/annotations-api.jar" + ] +} diff --git a/sae/README.md b/sae/README.md new file mode 100644 index 0000000..244d8e9 --- /dev/null +++ b/sae/README.md @@ -0,0 +1,93 @@ +# S4.A02.1-H-Adrien.fryson-Othemane.khachnane + + + +## Getting started + +To make it easy for you to get started with GitLab, here's a list of recommended next steps. + +Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! + +## Add your files + +- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files +- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: + +``` +cd existing_repo +git remote add origin https://gitlab.univ-lille.fr/othemane.khachnane.etu/s4.a02.1-h-adrien.fryson-othemane.khachnane.git +git branch -M main +git push -uf origin main +``` + +## Integrate with your tools + +- [ ] [Set up project integrations](https://gitlab.univ-lille.fr/othemane.khachnane.etu/s4.a02.1-h-adrien.fryson-othemane.khachnane/-/settings/integrations) + +## Collaborate with your team + +- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) +- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) +- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) +- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) +- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) + +## Test and Deploy + +Use the built-in continuous integration in GitLab. + +- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) +- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) +- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) +- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) +- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) + +*** + +# Editing this README + +When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template. + +## Suggestions for a good README + +Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. + +## Name +Choose a self-explaining name for your project. + +## Description +Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. + +## Badges +On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. + +## Visuals +Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. + +## Installation +Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. + +## Usage +Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. + +## Support +Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. + +## Roadmap +If you have ideas for releases in the future, it is a good idea to list them in the README. + +## Contributing +State if you are open to contributions and what your requirements are for accepting them. + +For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. + +You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. + +## Authors and acknowledgment +Show your appreciation to those who have contributed to the project. + +## License +For open source projects, say how it is licensed. + +## Project status +If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. diff --git a/sae/WEB-INF/classes/controleur/Accueil.class b/sae/WEB-INF/classes/controleur/Accueil.class new file mode 100644 index 0000000000000000000000000000000000000000..1a28c778be963150fd134e64f332347b3b53d4ab GIT binary patch literal 1975 zcmX^0Z`VEs1_oP(I4%Yz24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B? zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b zsl~;a`FV^Csv1$6K6tc(m05%A;saU4&&Z&nL4*bl20=y!*3{g@%p7h8VFnR)22mac zF$Qt`-UM65$iS1HTH;tzQk0ogT9V4hpr+xIl~|UjpOcuEt{+@dl$n=q4RQiZ$UiA7 zHMs=rMoAt9DF$gq2EO#v66gH9lGKWlfW(pvMg|eEqhUIrh6ph*Fv#*S$T7$>GKl9U zW~Vym=OrhWglCpyIOpdTmn7zu6ce@{Y8W?zB7+h;gE9|;3WF*mg9e^31xIgCYH>k+ zUU4cT15a^kUP@4EN@h`NatR}YC^qkgu`{SMG6<lD0~doPgBCl3HV=ai$P=3RMd|v9 z1&PTSsrt$Jxw-jy#rmKyfQFiDadKioYG_GjPB9|`cPg0YQIeZu0*YQe9tM2|1F&n5 z1797BYmlM?8uprD91KQ`3=;a`u1>n1es20@rK$Rf$;qXunK^n{#RVV>On4Yf8O#_N zMAB1BplQ)1v$!C!Bsn9sh>^h@i$$PVM$Ho#8m+k*EEp`=8LW61tQl+=85GgO9YY5r z1AAJ2QF&rf3L}FH$Wl}rpqUM-%^D+bz~v#)XRR5=&S1yLAe5Y+S5lOplUiD&?+EcY zBLj<beo87M1HVsZUaDVdZc=JdNMce>DkB4HO1^t)2_r)orv2!-9;ZVv6~bM_$iN$1 zl9-(Bn^*v~kju3qIkli9Ge57Goxu%DE`)juu8f_*gONcPoZd3?^*#OJ5{wL7!TF^{ z$*FFcAfNC+J*x*&%E%xYRGL?knVTAxS)7@alj@k4mtT?yww94W9V09g;nMoysYy^L zSTi!PmL=wtrZO^cz|s&SgMd?heo1jjQDT8_YDq?ZN-;khLm(GJ5JNCKLkK7jhcYs# zfZPBnCNlHN^0QN+=^m1;-4c^a@{1}N8D@Y29aa=T6+#U4NX$#gNiA0K$<NO&Eda$m zOc^wjBc*&4jUkl<saTXpBdLew6eJ<25zdJ@Il-AFsn#3};fxIIjQTnG>6v+q3_PBB zd8tLtIf=!^sm1IJQH%_#7#_stZgz$kMg}?jN*Nj0Af9AUWUysmVgLaq21Za##K6d4 z4=NZL7#SED7#LW!wlgqpWME)mWN=_$U|<6a@-nb6I5IdfFoBiMW?*JuWnf^4)n?ww zz|O>Qj6qm?Cj&1dgOI>Z1|cSf;|!uY+B+E}7#Vgk$S^SMWKdvY*a%VKrwdhcfI)2s zgN7B0wvd1%%T5MeW(I8`!<`JqObpsOI~mNG89+{80y{y8frEj8L4ZMuL6AY4L5M+z zL4?7WL6pInL5#tdL7X9mL4v`Vfq{XAfk{e`!3FGSCI(jqcLo*)PX-1CCI&ACZw3Yi xJ_bex9|lGS-)IKLVg^43e+C8y4hBYs00u^eFop;Q1_mw$Mutd+Xogq@NdSIuG_n8y literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/controleur/CreerFil.class b/sae/WEB-INF/classes/controleur/CreerFil.class new file mode 100644 index 0000000000000000000000000000000000000000..68182c701dd8a0f5026c6dd3e090b40856ded113 GIT binary patch literal 2715 zcmX^0Z`VEs1_oP(4lV{J24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B? zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b zsl~;a`FV^Csv1$6K6tc(m05%A;saU4&&Z&nL4*bl20=y!*3{g@%p7h8VFnR)22mac zF$Qt`-UM65$iS1HTH;tzQk0ogT9V4hpr+xIl~|UjpOcuEt{+@dl$n=q4RQiZ$UiA7 zHMs=rMoAt9DF$gq2EO#v66gH9lGKWlfW(pvMg|eEqhUIrh6ph*Fv#*S$T7$>GKl9U zW~Vym=OrhWglCpyIOpdTmn7zu6ce@{Y8W?zB7+h;gE9|;3WF*mg9e^31xIgCYH>k+ zUU4cT15a^kUP@4EN@h`NatR}YC^qkgaWJSeGDzx&yE^H5`nl<sm8R+^7p0~axn<_) zWfd2IB1n^mL5o3~kwGLqwFDa3E}6vzi6zMysYQ$o=Ge@|h<Xf-*4zxb40`Mg`aBE< z42Fyhis&B0(80*So|a!!o>-K^$lwC96g62xQ!`YXHHHh|@{sVc)(m53FlJ<s%*{_p z%}LdF%gk{}b;&GFE(NC+7e{|C1|tS$4hAzu2Ijo{Tu?|@@Gw|{A{CU70uqZ7b5l!F zi?|r98En`YY<U>$KysS-Md|v91&PTSsrt$Jxw-jy#rmN10!?AA#mR{Usi7sAImL_& z+^JxmM@epu2?v7%BLi=8QEFmIYH1NTg>x`CF*0zcq!uR^WfqiV=I609xG*w^LLCe; zBeNK++9ffci@}+J8AQ1AFnBO{g3JbG64#2%Vo+kk8u?Ki4BnvJR8*8-#KGXp$RO&Y z4z^e!Pdyc+F;$@;u~-k}bAKL&0ER$tnnKP(>Y!*qOZ`Zh3YvpJAsx)fAO>|fT1ay- zgffJ&GlcUnL@-1$GKhooWJzXjs=iNta$=54Vo7R9W^O7t7RnhJq+vM@Q;9VfLl8qW zsMw2PWC+&qL~;o<GeJbK=!8fhmjsw1nqi<65y!(2&yc{#zy^sbkb``%d(2uhOo)Mz zL6)5%nUO&_IX|zYC_g8)v`F6>n!y+uSe)}yQW+WeeKPY>{YrC_Qj0<olX6lS8CX;D z-BU{#8NxsTjGE5Ti*K9>9#bJa<ufwy2A3ozXZt1=KrQ5Qtw>G<C$eI8hHNawDKz`Q zm9aDAGBOB*BP%ms-_sv1!N|atk{^&?T*A&!z{nr~R)G|-j0{}C`K3k4scxAdkMhC- zLl2~okwG%3G!GO%VVT95Nja&Gd3pIIiJ-J!%*ddQk*5>k()!`4Nl+(RGcvH2CFYc- zGBR+&3o}Lr0jK=@lH!u0!~);cl8pS6VtzJ;N-l;fhH7?(8c=Cn%gCStas;G8$jmFt z&rXHrT1WxzmY7_UUsTD+Fas1Tuw)Na2r<+nF)t-2wOGX`KR>&)08|LUl%b?RaCo3- z45=(g#iBeKDH+0Y6Os_r2<OC{oZ!roRBH}~dPW9zM*W=p^vpaChDJsPZbto_%;FMo zfzHUl<C&M2TI8IQSX`W1%+Aol$e@bhV{9H_XJ}(&ki)N(k%0~3YX(JzBnBo15MX9t z1T{h!7#UJPbs_^J10w?i1FP0{2F8sH3=E76sSFGZY+yk_1{Q`ihI9rdu+lsRW(H;k z1_m2#=A8`eObo{ugtd1v@G>$83G8GLVq!SXAgZIilR<)!VHbl81H(=R1tx}#+CpkO z88ny}v~_ke=rA*YY+wT0AjZJTz`!8NAjKfYpv@r8pu-@^V9g-Kkio#fz{0>JCCHEo zb_Wwf7DEmL3qu~<9p4x@7&sUh7@Bu87)5SpF!9qCGTq5w&cv{T!ODt7TgV>HVbvCL zgmc(-GdM?XXK=M*mt>b@-NxWHi$PXf$V<p)Cxag|1G+nPcQXV<GD))RU<i?9m1Nt_ z5VegV7Vf=7nD-bM7$DxUV&G$7V31?rV321JWl&&HVo+qzXHa6WU{GdoVo+i5VNhj= zW>8~@VbEYmVbEsCW6)qIWYA}5VlV)ES&@P9KSK-y2RlO&JBU<dXE0)C$cG_k1_pR| z<S=A0urL&YtuA6HW?*38V_;+`VPIq^jb>mhW+-DQ2a7Q=R4_0y)Pczch9(9E1}+9h MhGvFVhIR%?08H)h%K!iX literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/controleur/EnvoyerMessage.class b/sae/WEB-INF/classes/controleur/EnvoyerMessage.class new file mode 100644 index 0000000000000000000000000000000000000000..a85ec4e38e5a09c52765c899b4c08ee18966cc1d GIT binary patch literal 4162 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 P21bSl438L|Fh~LbQo?@5 literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/controleur/Fil.class b/sae/WEB-INF/classes/controleur/Fil.class new file mode 100644 index 0000000000000000000000000000000000000000..3ed1a7e3d82fe9b323a3251fdcfa8663664d9470 GIT binary patch literal 2212 zcmX^0Z`VEs1_oP(A}$6d24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B? zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b zsl~;a`FV^Csv1$6K6tc(m05%A;saU4&&Z&nL4*bl20=y!*3{g@%p7h8VFnR)22mac zF$Qt`-UM65$iS1HTH;tzQk0ogT9V4hpr+xIl~|UjpOcuEt{+@dl$n=q4RQiZ$UiA7 zHMs=rMoAt9DF$gq2EO#v66gH9lGKWlfW(pvMg|eEqhUIrh6ph*Fv#*S$T7$>GKl9U zW~Vym=OrhWglCpyIOpdTmn7zu6ce@{Y8W?zB7+h;gE9|;3WF*mg9e^31xIgCYH>k+ zUU4cT15a^kUP@4EN@h`NatR}YC^qkgaWJSeGB9PPfMP<Ehd~SEW>7c<Bo-y+rk11@ zaWUvH=(02D@i6E!7%(yjB7)2_uOu}+wTO{{qad-UIMp)`mnEL;3`UF$0tlTDudy?j zFfxeb=BK3Qr0P2+<>%$4=BDPAxFqItF&Hy2g9vjT1`7sDMh1?|Vu%7p1~Dw&@YIYF zVqj#D1-aFRhryP?j*)@AEHS4v)jtiS!xK4Lq0R=!s{;>%BZCt-sE|{JIu<*S(h4+T zXohhxxG*w^=!d&H>3aIP>6ewJ>ZfJq=w%fbfP&MFhryk}gONcbJ+%ayNnA3E3ld9` zGeDtcj>Qs?J5e($hDK{{1}_G0b_O3F244n0Mg~Rn1c9N0k%2uezo<O1D20*11!O6z z4bV~ms?8cB)57H;>B?F&jGZBXk%2EcKd+=HKPR=cNZ&0phmnEBIX@+pk%8YQGcVPz zG&d==C?qi{CzX+bH6`CYwS<u&4AXA(q6nuWFcrdG!^prJT#}fa?VDHtwUEoTB0067 zBr`v+n4KYlkwF-o@-p-FJ^kS_><m#@$_%Jq;i?!JxPtRbi;`2_GC@A!a0A6|Vp$?1 zgJe)?UP)$dYFK7*W>QY7V_sf<Ng~)vMh10^FieC?>xZW%L2a>SWMBm+Qbq<AP`Y7c z5OB)RFDWi5N-XeAEy>7FDduNmNakWlVMt|XNCOop>5L32V9$WdtjxT!{OnX{(FG}E z+!B*Z@{1}N8D@Y28&)ns6+#U4NX$#gNiA0K$<NO&Eda$gOc^9wB8#AC45=(gMV5pr zkH(TSkc6N{I49=h1ZS3{T5~XDGBU6;>gVLAXXbG*WHT~wGwSDL7MG+Jfs+xBXI@@v zk#kOBadB!fI|HaH!SFFQkFYZoFfz#DSIWr12Jtn6B7;8z69Wh^F))JaNd`uSKv1#G zz{tSJz`($&wVi=+BLf2iBSR1a0|OgakcWYhA($bAfeEbi2?H|&8v_GFk2dp826iTf zV+_LDI~jNx8H5COG6*p-9A^;K(cZ}*!N{<SL56{0CxZeL!$xf(wVezaObk01wCzw- zA7C)FV%g1L9J!sr)QVM-Rgy(^8-v*_Br~j#%#hu|V7-&Uo|!>g$ayD&D-(mZ&Q1nT zW(JUpnZPbKV&Gw5VBlkrV&G@cW)NV|VGv@lU=U{TVh~{nW)NkFV-RD=XAoy7V31^} zVUS|zW{_qG1?ymz68y*D%*f7Q$j)HQ5C--=6GJ#dBm)aWGy?+z6GIF`ELbHYLmUGm qLwqy?V=+SlLn2s=i6M!Bks$+2W-;V2Ffed2Ff!ya<TDg9NCE&xMQI2C literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/controleur/GetFils.class b/sae/WEB-INF/classes/controleur/GetFils.class new file mode 100644 index 0000000000000000000000000000000000000000..0a1a34ef3ccc10154a256dde033a045c5df81264 GIT binary patch literal 3621 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 F1ON>d3?={o literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/controleur/ListerFil.class b/sae/WEB-INF/classes/controleur/ListerFil.class new file mode 100644 index 0000000000000000000000000000000000000000..2b87ced72d52b7cd0b0429fc1e91fa962be23a88 GIT binary patch literal 1778 zcmX^0Z`VEs1_oP(U@itG24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B? zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b zsl~;a`FV^Csv1$6K6tc(m05%A;saU4&&Z&nL4*bl20=y!*3{g@%p7h8VFnR)22mac zF$Qt`-UM65$iS1HTH;tzQk0ogT9V4hpr+xIl~|UjpOcuEt{+@dl$n=q4RQiZ$UiA7 zHMs=rMoAt9DF$gq2EO#v66gH9lGKWlfW(pvMg|eEqhUIrh6ph*Fv#*S$T7$>GKl9U zW~Vym=OrhWglCpyIOpdTmn7zu6ce@{Y8W?zB7+h;gE9|;3WF*mg9e^31xIgCYH>k+ zUU4cT15a^kUP@4EN@h`NatR}YC^qkgaWJSeGDzu%yE^H5`nl<sm8R<FWEPjC7P)2S z=w%fbfMQ6Khe3-$n~^~zJ+%ZH+b)^K1&Jle8L35#4CdGj#)x|ijn>=@x(s^k4Ej6_ z1`LLb42tMJ!_dLVz@C<0RGwIr!pPtPvJ^F4Lz6R9n>B_D;PQ|Fvepb^XE0`D5J}F@ zD=Es)Ni8kX_knqxk%7fIKP8osf!`-HFV(L!Hz~C!Brz!`m63rpCEq=@gpnZ((*@`` z3#U^s6~f)b$iN$1l9-(Bn^*v~kju3qIkli9Ge57Goxz%sK^UBBGxPO5{oyj~47OOZ z0My5DRg4T=!TF^{$*FFcAfNETy{iW@l953&s5Gx6GdDFXvp6#;C)F`8FTW%aY%wE) zI!1UV!lm`YQ<I=}Su--QmL=wtrZO^cAyN_}gMd?heo1jjQDT8_YDq?ZN-;khgBurv zJA(&1gC{7jcrh}lfLsB|j+uF7`Pr$^TnWiOZi&ey`9+nC3^PCh56f~;g%CqM67y1W zQj1l5^7FGx3qUCVrVN^ykTN`q#*oT_R4mG)k<>#=1LOh%YJ_uQPEK%UNvbsmgAXGE zJEMM1etKpeBLk0TUS4XEb53G$acVI;gFhpKDuxHKxtpCKkdZ+Szfwj9Hi#z~6d8;d zm>58SiGdMR;xjNZn1Bi(21W)(1_lOJt?dkq8yOfF7#U0%7#P^Vg4_&@3}y`G3`}69 zc?`@9%nS?+HrmWP8Q7T^jxh*p?_}U*WDpYA$sokUaGXI@M|&rO1S7*P1{ns1oeT<0 z3>&qD)OIpxFfnNB>}1ekW&qj11hzqpft7)QftNvwfsa9(fuBK#L6E_kL5RVEfq{XA zfk{e`!4m8aCI%}88wM5zI|c>@CI)*32L=WPJ_bexM+Qa)r)UPoVg_dh7X}6f4hBXB ZR|ZA~Zw6lm1_mw$Mg~8I0EQq2NdWf>|5gA1 literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/controleur/Login.class b/sae/WEB-INF/classes/controleur/Login.class new file mode 100644 index 0000000000000000000000000000000000000000..d41d887165f8658b7f4d0bb7ec25ce9a839d7bfe GIT binary patch literal 2284 zcmX^0Z`VEs1_oP(GA;%t24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B? zl7e7}03!pNO=ezZi5(*Yvxa6E2LlHqgP4A}tCOy$pPPPJX{vrsetKq}URH4dHv<;~ zH#-9l4+Ad)A0vZ0A)|v*3rkarOBfkM(o;*I9GA@Eg2a;KjMO4V26GLcti-ZJ{hY+S zbp7CxqRhN>YfT??Q!zAJb2A7q2(mK>@h}K8h%hoJ64b%Sz@C<0RGwIr!pPtPvJ^E) zpdkUZ$Qr{1aQWhb{Ji2+YfvbOF*2~G<|bz5fC5E=he47-ijjdQJ+&ktu_!S&wFKlp zHIP+U{D&sQ#UR5V%g!Lj!ypebL^HoAT|coPF*zeuKRG`)H$Sgfza+Jy1R6rF#mR{U zsi7sAImL_&+^JxmM@epu2?v8BBLi1%eo0DdL1J-nDm#NRBZFveeoAUisy;}4W^rOk zYH5*6Vm=px5(6`cP~%}xXV73|U`@_QP0nUyP{-n8EO8XY$)Lrc&Ca01!=THc$H*Xn z6pfX|C8@cL49xkZC5#NB5Y3tS`T<3mc_qOmMX8Co)*K85j0{4~`FVM%6`A>Y3Pp!k zmKGOhrgAYDF&MKmnD8)|GMF(k2!l;U)yv4hUH~#FCy$Xq6pLdu!$9$2!NXw5V8zJ5 zm7ZD>oLXF*nV-kVprV19wvaLdSd}$5gAIc%JA)k$gFS--{@erBz{tQ;oLb^oQc{$e zR9ccsFa-URvQm>vtRc>H;$d)RaA9QNOHVCv&d&oyazJ891|x$A*r{mAM2LZb!HtK( z9h64Ia}%>uo%8dO6HCG~OER4E^NLFn^Gb@j89W)h*crTe7<@n>sDYj{ko*fS4T4f3 zNgC{pyp*8Sl+2>k<Pr`BKSl;&L<AjPnVgYddU$235CbEF8#_ZFBZEM4eqKpYeoks> zk-iV8fM8@`an4UkWn|#@$;?ajE6q(xEec6Y%1LEpU`@$)Pc30&2m?hJYSzPa5V**| z%!8N;AuhMp3}a;Aa;->CEhx#%&nsqUh(Jm?p8jwdc7`Y{@d?e^a8-;9Y$^Ex`Jh6J zH@GA*Iomg}0PG8PhB(x84lb@38MuP;ON)|I-7-NQ<pPI<9w^;1GDrrM=9OgTriNt} zXC~#OI_Bl&mn4GS$jG3MQN|>~rS-#8lc3JBW@KP3OUx-vWn^H36vK=R0#5n)CB-F0 zi3Pr?B^miC#r$jx>0AsM44Lc<S)k;R&B&kvasi}R&CDyy&rXGw9gq~`mY7_UUsTD+ zFas1Huv7+B2r<+nF)t-2wOGX`KR>&)02CWAWzb?8lCQx9H;TrP%7RoZ%A=9g!?FO9 z5Y!0g#GIVq%#u`V4u)Jt22Mu(#N_1C)XW?XhI~c_c1BnT@Ob9sr4~8ofC{-{c7`HG z22~9IV)F(&LkS~;9Db#Y3~UfTGbl0yFfcKI05bz4s4it-WC&tlV31{CWME`qU|`kS z&cL{lfq{XMA((-IfekFk%fQGG!Vt>91XilUz|6qRz`!7&EyTW)fs=_rTW2Q&KQjYD z7pSskVBlxqXAocr1DnFc5Y7<Ez{n5{H{}omGXom~14E&<kmybZaVCZx4AOquLJBap z70Yf0rO53JDpstLth$mc+Za@5GU#q%&=k_&#$c$ulfj&kK}b}0CxbOJgO2u221iDQ zT@0=a3_BS-m>8Bb$beM(ZeuWn%lSj)K+a?Wdrpgii-Cbbn1P2ugh7%)ltGC>j6s({ zoWYbqg29<Vk|CTynjxM+hM|B#jv<Bt<RPYi4B_kyv0$Vmf#Nq7hIj@B1}26ChC~Ji y20jKxh9m|?hU91l#$tvPhE%W^6GIvUBSQ|D%ws5EU|`^4U}Pv{C}t>SkOTm}G<+BU literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/controleur/Logout.class b/sae/WEB-INF/classes/controleur/Logout.class new file mode 100644 index 0000000000000000000000000000000000000000..47db334fd4f25652266583b20ac7307fa5ad19d7 GIT binary patch literal 1393 zcmX^0Z`VEs1_oOOM=k~?24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B? zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b zsl~;a`FV^Csv1$6K6tc(m05E$@G<bSGYIf72oiECSOX&iS7u&WVoqjCVo55<p~5^2 zA`GI841DRSCC>SIC8-r90f{9Uj0_?gAnVH#^>Y&Q()EK&iZb)kt%VpE7{qxPBp4(a z8N_oFvs0b(^O6%w!ZS-Uob&UFOA_-+iWwQyG<>oW(R5-ljGIB4L57_{mWM%(L7tI8 z1CM9H;U1J)T#%nvoXW_+Q=FQY5|o;fS(KVw!pI<s&Au>p21P~&!Q}kBlA`>a)Y2k- zpZxUv(h^1n7U%qwR7M7VpUk{eztY^K)S{5Yq?}Yn2G*2(_tX+bhA@zM_@f*eXV&;) z2*uIXnqiC#yul@j$=SY%1yBpQTq}}O3raHc^NQISG#MF$!NHc9ukYy(mtkkn#*ze~ zDG#oSk%22XzqBYh)h!d`6K;rK^+4t^GDrrM=9OgTriNt}XC~#OI_Bl&mn4F1Wn@st z@IfM6T0cBB32KowBLiz$Voqr)BLlmB4m2PIobvNaic5+T3w%>cGV)W3`PmpuxEM?s z%-9*sL8-)okwFFI1V|dn%qz>!PK72VNWyVTOfJbUs$^uC0Sa<hl7T9O80wLjmy(lO ztm2cOpIur23UHV*XqrSyYbY8+DhpDvD33-`@1K;Fnp|RyoHn6GI49=h1ZS3{T5~X1 zF*2|-g8ZDB$H>6rnU|MZ<eZaOT%20W&S1;Ppo-x^Z0=@fuxDhD!>^Q)feqqG21N!1 z1||j&U}9hd6+#S*3`z_P46+Q242%p646It)85lP*FfcGOC^IlHuz>}67#JB;7*rXU zz)GVSm>5_X7#LKvnRha<Gcow-9%JCt-O0eq$e^RWlR=1)VHblK1H(=RDJBMxNlajq z#28o^7#R2%I2iaDco+m2gcyVvlo^B>)EF2TI2aiJFbJ_T@G+=^?POxmV9;V<VbEb< zU|?d<WzYlbWMt51U}P|eW?(F4Fk~=-=wmQuU}Uglux4Oj;9_88uwk%caA1%G079{Y AkN^Mx literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/controleur/Register.class b/sae/WEB-INF/classes/controleur/Register.class new file mode 100644 index 0000000000000000000000000000000000000000..3ad8ee7a3668bb5e3ee876f44783e5867731b463 GIT binary patch literal 2454 zcmX^0Z`VEs1_oP(DlP^l24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B? zl7e7}03!pNO=ezZi5(*Yvxa6E2LlHqgQR}AtCOy$pPPPJX{vrvYI<gINotW^R&fD0 z0~Z4~I|C0711|#~BZE32(}PkAOH+$W7#T#;Q%j&6m(1dV#FFHU)FMU(a}A%Y#Ii*F zoW#6z{os<K%)E4KO&@eqF*I6pGYBvUvNH(rFbFe<Ffu3-)WOKWo|a!!o>-K^$lwC9 z6g5<!fdRG18p8!}`Qn27yy8@A%`kQbF-8W_-29Z(oK*eLlFXdU;>42F(ju3{d@cr2 z24)ThNk#_N)ZE0(98jQ1^DxLT$TBkUq^FhyBo-y+rj~&GuLg1o7XPCOaWTj<D6lgq z@-QfY4AIOlO4m;;NKDR1)lbgP&CSm%)-Oq|D1nBcYjJX7K`O{i#f%KxsbHQ*Np6k_ z2ZIVD16OW-NlI!#VsUXQ2ZI_T19M(}F380iJPeu)S|AM|H@jA37MBz=GKgYxU=#;~ z4#;ywMfpV>40?<VGCt~HpDLslmnfthUYT`xfkG)bOb)Nq19{(ohry7+h>?M(IJLyF zq@*Y_sk9`OkwG1c=|~B}KPf9Uxda^8CX5V1n1Rj3V8&q1&S1gAV98*`$RG|*OC_1P zsro+o$%#2Gi6yBanYpQ8PnI(>NNa%7R#~DxrV?u|24e;rP^PhEWC+6VEND7Kawv)j z7Q;2eKp||;!{ET+$jHE!nOB@zRKmz0uHl2}Cu_|xP>4D6Ft{+dGBR+br<Me#78hsc z=P@#<fIWbkbdfSNSd}$5gFAx(JA()Q%nw!zvdD{v!JEN{k%2EgwZu6;50s7q5=$}| z8AQOAp`}D21_lN{9tM9<G8E5E%uaRA&r41$3C}FaaL&&wE=kNQDduJfWC&ts2<Bl3 zVF+bp&_K_eNG=AKNkOTQTm?=Zc_~4uDVas7$t5@vUl=<>I3t5_a(-S(QGQNpX_0;q zw18q{U~$e*No8c<_sPsl^()OyN-YXWOv*`RWMECncTX*0WC#PrEY9$Qx&~ZiVU_{7 zoNcWc#>l|sT9KSuP?DLSSIo{3hb8EtB?w#@J3|5^gD^P3X6EaA`okp{8Q4<t1M)$I zCU0;_Vsf@`Vgc9}><lT43<6*sNW~>116Oc<X;E^jTPDb(ys*H~11V%=kPIr#10~3? z%;L<XoK(lWy!?_xurnDM)G>;=M7Xqmcxn>V$<~YvtYwKgrKyYzobbwkkwL&IKfk27 zq$sh#H?<@qKc$$TjUktdA&()SouL4fLJAofR6ve^6z-XMW%=2u&=LxgXxtK$OY(~< z85w4PVg;7apb8;|dL-th<fIm>_~hqjmllBH1f~on%YnlKMPo>1K`IvI(MXvVR=OYw zL5*-u%*hGPEJ?NIU?^r};AGTKOinIM&CFqB;PK4MOD%HF0hOM`><nd$45}Dj#O88# zh6+XoIs8f)8Q37+WKd)XV_;$c0cHk9P(9AT$PmH6z#z-O$iT?Jz`&}toq=&90|Nsi zLnH$O0~=V7pMixTiXobT39M9yfti7sfq_9lTZnxp11A%Mw$4rler5)QE>J^(fkBvo zpFxBn25brwLo7o)0}DeU+>~z&><sJ-3=EyS8AKzuGl=_X3rXx`kYZxk!60YFqAjEh z=dfxEslqvIx{@s07}RGn$ZHE}3+e7;&}U{qbH{Q9bKTtx#*vb2k}Q&}I~Yv2Ggxn9 zu+!ej;KaxvBq7PNlfjLdK}UNhgC`@yE(Tu)hMf!nOkn3Tfjw=;z{|kEAi==FAju%g zAjP1>AkCo9Aj4q6Aj{yyAjc5GpuiB%pu&*Kpumv9pvF+npw7_2pvjQLz`!8S!1SLX zgn^x%A&i}Yi=82mok5hHAsK=g7>v=vBb9-Hfr%lFA)SGNfscWaA%lUDAv2nRv6vx? iA)A4LfrEjOA%}sHp@^Y`fq{XGfsvt<p`4+TK@tG&+pG}) literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/controleur/SuivreFil.class b/sae/WEB-INF/classes/controleur/SuivreFil.class new file mode 100644 index 0000000000000000000000000000000000000000..a300bccc79e70957f3d3a2d461ecbe356c26c148 GIT binary patch literal 2040 zcmX^0Z`VEs1_oP(bS?%a24;2!79Ivx1~x_pg{;Kv#G;Z!{o>T3vYgZs{fv^50)3B? zl7e7}03!pNO=ezZi5(*Yvxa6EHv<O)Cp!Zd4+A#?4<my*A?-n_g{7&*C5#MQ>8T~b zsl~;a`FV^Csv1$6K6tc(m05%A;saU4&&Z&nL4*bl20=y!*3{g@%p7h8VFnR)22mac zF$Qt`-UM65$iS1HTH;tzQk0ogT9V4hpr+xIl~|UjpOcuEt{+@dl$n=q4RQiZ$UiA7 zHMs=rMoAt9DF$gq2EO#v66gH9lGKWlfW(pvMg|eEqhUIrh6ph*Fv#*S$T7$>GKl9U zW~Vym=OrhWglCpyIOpdTmn7zu6ce@{Y8W?zB7+h;gE9|;3WF*mg9e^31xIgCYH>k+ zUU4cT15a^kUP@4EN@h`NatR}YC^qkgaWJSeGB9PPfMP<Ehd~SEW>7c<Bo-y+rk11@ zaWUvH=(02D@i6E!7%(yjB7)2_uOu}+wTO{{qad-UIMp)`mnEL;3`UF$0tlTDudy?j zFfxeb=BK3Qr0P2+<>%$4=BDPAxFqItF&Hy2g9vjT1`7sDMh5mouyhe4gBTWHcxr}m zFjzA(Na=^WI_Y})x#^dcrt0Tp7MG+Jxn<_)Wfd2Iyl2b9V8>w3$RLuQS^`b9E}6vz zi6zMyAYYhcF&UH`P%{sPMr&>cM+PT$24@}y7Y0{G21WD;!qCCUz@C<0RGwIr!pPtP zvJ}+@Xs(26v&P6oaCt~PTWf}~Gq^J{h$QFdl@#UYq?Q)x2bX4+6{Wgm<}fm_IOnIN zGBWV{Wag#%mF6a;7KJ1x<)kt)u%_g@r<O1>gkib>y@0^!6ikJ1H!(8s2A3ozXZt1= zKrQ5Qtw>HSD9OyvD`sc#XJiltr-#gZeNTV53_C+0mYfXrF<ccR16Oc<X;CuBhpCJV zd~omTfsABikPIr#E6L1F4a+RfOv*`h%*)F!Nd#NW$e@l9o{4a2{qWQzs9n~K46J2| zIi;zL3|#ufh~N}(%Fiz;E-6YZ@J%hr$WJNeXJd%sVu)slVP}X1W%)Qp1{IJiAf-xX zURi#2DztEclmc#v$tC$km5dBCKmiXcIiLz5hI%CCrR1a*tN7&SXO|X$QUFXDB;z29 zplA%KEJ#I`ges3lD(9eu8Yp4I422ruoS2gnoLQ1;&B2hs$iU91pOc@Sna9Y$<C&M2 zTI8IQSX`W1%+8R^$e@bhL2T}3XGmpaki)N(k%0~3Nd`p*HwGpK5MW|p1XWxNj0_&2 za+HCQfsuiMfmLfe1LH;p1_nk3PX-1CHn1QM10#bMgEs>cSm{~@W(GC}28L{H=A8`e zObo{ugtd1v@G>$83G8GLVq!SXAgZIilR<)!VHbl81H(=R1tx}#+CpkO88ny}b}(q$ zp{PE<U}(j%o5478JA<het0b!=i|jTAGi@QOoeVZi4B9$78621yKn`L8J4lUzlYxPO zk3ouopFx{JfI){rh{1wEn8Axdgdvzglp&fyj3J9boWX~Ifq{jANlK8x7wiot20w-X z1{Q`O1_lNuhG2#euqliTp$v=+VbKhX#SGyL5ey6r91M&MkqnFs@eGL!3=CWhj0{N( JDGX^0k^oBeL5%<a literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/modele/Abonnement.class b/sae/WEB-INF/classes/modele/Abonnement.class new file mode 100644 index 0000000000000000000000000000000000000000..ee41e5d8f300de99d400c65350de040019988fdf GIT binary patch literal 1639 zcmX^0Z`VEs1_oOO2QCIC24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SP6iGJPId+^9tLg(9!3Vi-29Z(oK$_sr2M?R)ZEm(5=I7r(vr-a%;Ln7 z)Y2l?+{DZrMg}1tgt5UTMVWc&)*yrUco_H@1Q;1uGgI6^${0OCqCz|j!VDse416hx zC8@{;i$Y8($;?gF_sLIA%yCI9Nwwx;5MvN$XOQ4wkYtcT@c_goMh5n>#GKMp|1?Gh zH4TUnNdB|dL=uANuohxqV36TqkY$i#WDw6y%uaRA&r41$3C}FaaL&&wE=kNQDQ0A_ zL^cen(-YG$Eao#ZusG+Zq%tz_`();&`jzG;r51%GCgr3uGHByA6wTk7VT=sI>8T~5 z7@;kqfz?joVr+^<u~-N)nj<~6#1j%N%o>`Wj0_ybZ~+z#PmmJ9^wbhi6d=cuILvM| z*D^8)7GtWGfLe~G7-Tp{Nj@Y@85y{O^Gl18Q{6H_0mP56O%If)7#Red^7BiIONtT; zd{av@@>7cW*%*wu7)%&U*%{10v1rc7paN0~N!FQpW%=2u`Vhk*5$l$iT#{c@$;dDR z>K<_VfGUI->XDe2l9O7j;*+1BU0Ps`8O=x{C>ld53sSKtk491t$!I7E5o&~UVopwQ zW=X0w2ZJRegC)Z2)#!Q5mQhCmoQpsV)Qn@xSj))3<C&M2TI8IQSX`W1%+6rL$e@Z5 zB-nh)&S1yLActQmBLf>GSQr!;I2f217#Nrtm_X$N0|NsSD2Ib-VFnQf1_n+BMo>Y+ zz{nuaz`&r$z{tSJz`($&wVi=+BLf2iBZC410|Tf`0+B2X++gJ(Wgz7?3``6x3=9k+ zAmv)xTN&83WVSN!YUyre5Jcz}V_;=qVBlq7Vc=unWZ-AuV-R2vW)NgxWKd#IhFUBO zw|EN!`v$nhY+%=jFfcNxFsMS6DlssD{lo^g5Md3(krE8743Z3t3~CJOQ1!@0^R7WN zT84p<L4!dPsuW?g^i~F5bfXm*Siu3L#h?vUk8HFcx~o+f7#VaJbfHQSMr)%44#d?O z46I;B=)nU-mw_4VcTue^4D4E47<jd|FbM8o5Z%Qf&A@<e6-co@I8qH53>g?0I2afi Xj2IXhEEuf7vB$_@&0x!5&mai^F<f=4 literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/modele/AbonnementDao.class b/sae/WEB-INF/classes/modele/AbonnementDao.class new file mode 100644 index 0000000000000000000000000000000000000000..81902b953d1071f9235d21aa8cc166c1e97b8116 GIT binary patch literal 3812 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 literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/modele/DS.class b/sae/WEB-INF/classes/modele/DS.class new file mode 100644 index 0000000000000000000000000000000000000000..0c876cb2214110b5d54f530a86c7693661d5ef41 GIT binary patch literal 1119 zcmX^0Z`VEs1_oOOdoBhh24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00S4h9ZJ2GRVYbiIQ7;*#{D)Z)S%J(r@)veY6j1}+9}b_O0E23`g}Mh1R_ zNzOTm#l?&a>}mN$eu=rMj0~z8J_y<1lA_GKbZbo{A+QE(b_M}P24RFk*NWuSf|AVq zJWd8724Qvv5grCn1~C*j2UixCq~<a*Fz1(+FfxcjjLgi}4=BpaD+w+sN=?kQ=3?My zkl<mEWRPNH;7U&|@l7o*PE1c_WDwCnb_3K|TnsV{vg{0UJPh&-3NYuOn#jn&UH~#b zCy$Xq6r0b&I2e=|8RWB4l9H_u!DgkeUr=0_Q=D2<rk_+=V#L9q!pI<!Uy_lUo0ylH zospQFk(Zd4np#rI!Jx*-z?_?($;F_-pvlgl#lxV@pu@-@1`eCz!W?}_4EQGIC8nnq zF*5L`r<OS9=jEj)gMy2Z!553GAYlWJX{c8*MWEpUvH@Y7H9LbIBLin{eoAUis=iAw z7lSSXGbe*CgCP%t5rZ)!14m|FaY<rcaw;POw+~#IH6sIybAC!HBLlxrW?rgaX>L+# zQAlD^PAVe<Z*WOsa<*?`0hBKeiwO*yEm5NzoOIY3tYHy@s-BU7!zMWgntHi{^Gl18 zQ{6H_7P7kp>wyA~L6Je1fr){Efsug|<ah=K24)5(P*z}IWH4c1U`S?Q0?SKkZD(K< zV&B2Q8NQr>&u0^Zp!PNf@ofy!8yOfGSQxk%cp3N^m>5hM7#O4&*cccXI2l+NxEZ(@ z_!xK@c)+9t13!Zq0|SEq1Ji#7UIs>X23-)r&&9yVpv_<owXl<c8LVGjNYO_~*;h!_ zkI{-nTSs>XgSr*Vas~k_)=dn8lB^KRC0RBwFf#Bkh%ku5tyg2<WME(rVqj(vW?*9w zVc=vCW#C~DXAohKVi0GLV31^xWKdy{20KLt<P>oRR(1wmb_NR=vI0Achk=8^hJg+0 rEM;&gFfefMX3&k?&Y-`U!C)ge*g!r8DPmw?XJBNoWnf@nVz2`MK;HM- literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/modele/FilDeDiscussion.class b/sae/WEB-INF/classes/modele/FilDeDiscussion.class new file mode 100644 index 0000000000000000000000000000000000000000..af362b08855ab40f70ebaea35cdc9fc11329cb1a GIT binary patch literal 1312 zcmX^0Z`VEs1_oOO11<(824;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SP6iGJPId+^9tLg(9!3VS-29Z(oK$_c%p8|gm(1ei(&FOG{5(bmrpy#Z z21ZYiay}jgeg*+X2Ijo{Tt)^VAA}9TB}JKe>DC}cLOcw@3?hsSJSmAKsm?{Ii6vlT zBq6FxGILY)ee#nNb6gTjQbRIxQ^A_Vco@V%Ci5nPG^Camx#lKj=75Zo<YABk$#AEn z7AF^F7C=m6an4UkWn|#@$;?ajE6q(xEec6Y%1LEp2-fg~SOoSs)L9S_ELKA#FqI;U zXofK|u%@S$c&32E&6AOVwHU%<(eMOGvZbe%_<;gML_-tPKt=|(VyL{R2BtK~0RHsU z5>RL$0!tcZ5*9ZzGVm9ptCxYAj72%f0)h0@60qU0fMsM5D8>-t133dZkoiFNAPaB> z=a&{Gr@Cc=LRthZrRafD1A`(12LlrW0|P4q6DVCVFfcHI(hQguW)K0>;tT>{S_(|_ zFff7=ECVBhGy?;JA_F4>BS^p2b_T|c3=9m63^EK144|~lz`(=6!oUkwE(=v2z`(@7 z#=yX!08*|cy_JDoOJ^$sua@ps20<-JmaPn;T9T|=86*%U$uY1qFfi~lurLTPa54xo z@G%H62r~#XNHT~p$TNsCFfzz7$U{vB*#dFQ76$e;aL2HLT`0l8$e;jrFUZ|W3`}5u zvw<CfunyvI83tAckYP#;%2<r%-GFAa0s|w13WF+CDZ*&&tqi>AMyoKef>o+9s6*9* zEP}aO5Z!1E21W)A22H3^6r%;vjn-jcWzc0{WYEIuYEg8f4Hy_1w83sc4G`_E45H{p sn=r64m@+Uj=wLNk0^Mi}21W*5>_#I+EhMaM7+4u>85kM#z-de$0AdW`_y7O^ literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/modele/FilDeDiscussionDAO.class b/sae/WEB-INF/classes/modele/FilDeDiscussionDAO.class new file mode 100644 index 0000000000000000000000000000000000000000..e9ac7a035fe79dcdda1a830dc60a468eaae94523 GIT binary patch literal 3393 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 S8N^Z29!LON%3BWh^a=pARV8Ks literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/modele/Message.class b/sae/WEB-INF/classes/modele/Message.class new file mode 100644 index 0000000000000000000000000000000000000000..2deedf46a92b710b28785acd9f7e0bca2f388681 GIT binary patch literal 2489 zcmX^0Z`VEs1_oP(Xf6gO24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SP6iGJPId+^9tLg(9!3Vf-29Z(oK$_^)Z*gA^i)O$rpy#Z21ZYiGCm## zeg*+X2KMCqypq(sQbq<LAB5?_B}JKe>DC~HLOcw@3?hsS{3(egsR5-)Iho0cC7Jno zj0}<x4JDbmsro+o$%#2Gi6yBanYpQ8ePTQe;vh$`re)@MrhrV6<YABkS;?JPT9R5? z<eHn9nFA7+;bD*kiF2f7=A`;1=B9En$TKLgGbr*fC^0Cb_!{CaMh5n>#GKMp|1?Gh zH4TU>kOIY86G;f7!&-=efkBmrL5)G3kwH8+F+0^cKQB44Bs{Yu!#O{%xFj*Jq?nPx zN5d0SE2an*MOdt4WRMIh%>#u_SY~l%QckL4US56)IP8iU8FYP;^K<pn5{pYxiz;$+ z^s^F^vy1cd^b_HV^u3Dn^W5@_auZ9e85vlMGZG6@85xX8(Wep&(qzrZz!n@5<mu<m z$iQBZSW=Q&l*h;*T3K0Hsq5>jo06g)qVC~gm78l-T+GP8;+&t7%E-X)lbM(5SDKrY zS`?C)l#|NH5P~~!K%PWP0$9QbGaxm?7#Ud8Q%gKk!0Fc$<V^^VMZ*&$$(5d3;tWfm zA{tmjnX4E{jVN+*fW|$@Affcs5>WC)Nx;%D1F^WDkwK^!ixwHE`B-#-tl>ycEdi%@ zMh1@J)DkyP(r0AgOHVCvM5K8}2EJl60q%6LVsPqbWZ;Hqh4MH`@*y5!WZ(+UFD*(= zb;|_B2M;t`>w&T@BZGibett=DNl{{fZ)!<Keo8Sv8-phogBOE0JA)4><@+)+sDPA0 z%8$&vvi$5+eTd1B%;1)oT#{c@$;dDR>Pc{(f+~a<>XDe2l9O7j;*+1BU0Ps`8KX!d zC>ld53sSKtk491tDbY|eFVqO<#GIVq%#u`V4hDZl24|?ht20w<8Fdt(<rj#FRziV< zz>xuBAeA|`jJ1pmJf3-ZsYT8?iN(dK#q110j0}b(WJpNHVrK|pWY8u-8zTcNI7hNG zgflXzVnhbEFlJ|nWMq)TuauF24H6*?iVPeKObiSRYz$1GDu983feBR1gK1#~5e7yE z4F(1VAqGYUO$H_gtyBhW1|0_7Vg@}1CQxY&Rwu<E0H$TZG(Q6)sP184WYA||U{GXW zWME`qU|`kS&cL{lfq{XM!GM8*0aQ&fFbFWPFbIN`8$y*wF)%T(GcYiyfs|`WZ)ITD z(%H(utEIb@K~PJSWh;ZImL%&|1_>=mwyg}(2=kN}I2afhgc(>EL>M?3L>c%P#2ADb z#2F+RBpBowBpFm0q!<_(j2Mie_Q=AWwS|Fw4cu95V7G!KO&Cm}N|hLxARz>H4#G-^ z7Ze#-8I%|p8O#{Wq3S`pAwJ&1z`Fs>XjKMA1`7sDs8WQ{+FKcT(T&z*U}ex^U}Ugj zu!gEfHd+wfXk7+I1{(%js8ST81<{Q*WME}5Vqj#j!x|u>=m7!>3VZAUB8qObB?Bvi z6$2xK1J(eMKzB9By^h!eL;~GtM+Q~~Ck93aC#*(GqZ{qYz{uc?-Dsqg1BpgY237_y z21W)KxY4EztdPW@wS|FQYYPLf))ofA9Sm|>TNp&OwlGNSVo+gVK)2G5ftkS-oEO{} n+!+`cI2afiJQx@m{1^hjxrm7&kRg~M)IpLVj3I&{ia`<pNv|&7 literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/modele/MessageDao.class b/sae/WEB-INF/classes/modele/MessageDao.class new file mode 100644 index 0000000000000000000000000000000000000000..233da6210d41314d7a9ca38de6f36051e97bf56a GIT binary patch literal 4401 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 T#LfUo3CO{-hk=2CiD54Q;gI_l literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/modele/Utilisateur.class b/sae/WEB-INF/classes/modele/Utilisateur.class new file mode 100644 index 0000000000000000000000000000000000000000..0f9e1d29260afe61797c09c56070ffccb66a82ed GIT binary patch literal 1810 zcmX^0Z`VEs1_oOOCoTpi24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk- z5<5l)W)00SP6iGJPId+^9tLg(9!3VC-29Z(oK*eLlFXdU;>42F(jrC%=Dhq|Mg}1t zgi*mIMVWc&)*#J%JPiCGovf+3iJ3Vd5kVdXA&>}HZhnbNYCvLfaVkhygoi<tL5z`s zKP9mw)ibX+xhS)sBr`vckwFq-a!F=xs=iNta$=54Vo7R9W^SrA7lQ<YBs+r?4}&y= z42owUE?{I}FH6iRP4!P>WKh$97=z?jYfU5}hz@HZ1_lN>9tL>^1x5z(+{Elu=ls0n z#FFsLk__kkyyB9?ypm!@1}|j8pgJ+l!W6+`AtM8ebAC!HBLlxrW?rgaX>L+#QAlD^ zPAVfq5Sg|>?8OpZnqiC#Z0V^bexL{w(ZK2&wqmHfC>Gm625_XOmbii<laYa=7|!HP zPc89<M<^o$Z!s!gC_S|V6mKXoD-Cl37Pm4o2o+<|A_H|579C*6mE=RBgOPzNIKQ+g zIn^x_6qEu;DOL}ZP#GBnobvNaic5+T3w%>cGV)W3`PmpuxfskC%-I<%Kq<hIkwFEd z6p}qM^UCtGQ}rRHLlT8sVsc4-Q6(e845*{PX$z_lVyH)AUP?}Cv5HTAes*brH6&)h z${+?Ii=b!>sVqoEmV_#gMlu1CVNnt>)ClLqoSfjyl2mIB25UwJ<lL$djh4M^8FduE zSrf#_%g?oCjAdlt@yyFhEppBQ<;`Mt20KOuRg8eZ=0A1@2Sx@t{7M-a*dT$ypvb_% zz{J47z{0=;DqR>D7??n11(+6M-~rR33}Orn4BQNipyG;wkwKAxfkBahk%5tcfq_+P zI|JiJ1_lO31|<dt22jZcQp&=>16HmKRqn>X#K6kHz#s)uuBE+|fn7^yD+8~V?p6i? zElHNG48jOAq!`#37#R2%SQz*jI2i;O_!tBkgc*bwBpHMm7#UO;RH0_d!kw^%fqetq z32b0@i7_xTs4=KRl`1hXfqlsawi;m-#JN%otPIi&j0_rBjpju+T8@E{K@+>tyy!+N zF|aa#!axhF(E{j3t1&P#Xk#~80NrRU237`b21W)Q23@Exkpn~+-Do`qMg~0weW+5D z06_|SNPrkIure4kFftgxU9HQ&3=URNtt||~I~c^ZwlMH&ZDC;F#URVTfNqsJ12cmm jIOP~I7&9<1a4;}3m@qIhSTWdulL#Y&ErUISBZDLWPJEKL literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/classes/modele/UtilisateurDao.class b/sae/WEB-INF/classes/modele/UtilisateurDao.class new file mode 100644 index 0000000000000000000000000000000000000000..ec400bcf77f08c69a12bdf1fd4bdb55c1d6e6361 GIT binary patch literal 3817 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 literal 0 HcmV?d00001 diff --git a/sae/WEB-INF/src/controleur/GetFils.java b/sae/WEB-INF/src/controleur/GetFils.java index d7376b1..f9fe82c 100644 --- a/sae/WEB-INF/src/controleur/GetFils.java +++ b/sae/WEB-INF/src/controleur/GetFils.java @@ -22,6 +22,8 @@ import modele.FilDeDiscussionDAO; import modele.Message; import modele.MessageDao; +//http GET http://localhost:8080/sae/getFils Cookie:"JSESSIONID=ton_session_id" --> F12>Storage>JSESSIONID + @WebServlet("/getFils") public class GetFils extends HttpServlet { @Override diff --git a/sae/WEB-INF/src/controleur/Like.java b/sae/WEB-INF/src/controleur/Like.java new file mode 100644 index 0000000..6224d8e --- /dev/null +++ b/sae/WEB-INF/src/controleur/Like.java @@ -0,0 +1,38 @@ +package controleur; + + +import java.io.IOException; + +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import modele.MessageDao; + +@WebServlet("/Like") +public class Like extends HttpServlet { + + @Override + protected void service(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { + String userEmail = (String) req.getSession().getAttribute("email"); + if (userEmail == null) { + res.sendRedirect(req.getContextPath() + "/login"); + return; + } + + int messageId = Integer.parseInt(req.getParameter("messageId")); + MessageDao messageDao = new MessageDao(); + + if (req.getParameter("like") != null) { + messageDao.like(messageId, userEmail); + } else { + messageDao.unlike(messageId, userEmail); + } + + res.sendRedirect(req.getHeader("Referer")); + + //TODO: Implement the like and unlike methods in MessageDao + } + +} diff --git a/sae/WEB-INF/src/modele/DS.java b/sae/WEB-INF/src/modele/DS.java index 9c3ebc1..f34509c 100644 --- a/sae/WEB-INF/src/modele/DS.java +++ b/sae/WEB-INF/src/modele/DS.java @@ -15,9 +15,9 @@ public class DS { } public Connection getConnection() { - String url = "jdbc:postgresql://localhost:5432/postgres"; - String login = "postgres"; - String pwd = ""; + String url = "jdbc:postgresql://psqlserv/but2"; + String login = "othemanekhachnaneetu"; + String pwd = "moi"; Connection con = null; try { con = DriverManager.getConnection(url, login, pwd); @@ -26,4 +26,4 @@ public class DS { } return con; } -} +} \ No newline at end of file diff --git a/sae/WEB-INF/src/modele/Message.java b/sae/WEB-INF/src/modele/Message.java index f046418..6bdb0bb 100644 --- a/sae/WEB-INF/src/modele/Message.java +++ b/sae/WEB-INF/src/modele/Message.java @@ -12,17 +12,20 @@ public class Message { private int filId; private String auteurEmail; private String fileName; + private int likeCount; public Message() { } - public Message(int id, String contenu, LocalDateTime datePublication, int filId, String auteurEmail, String fileName) { + public Message(int id, String contenu, LocalDateTime datePublication, int filId, String auteurEmail, + String fileName) { this.id = id; this.contenu = contenu; this.datePublication = datePublication; this.filId = filId; this.auteurEmail = auteurEmail; this.fileName = fileName; + this.likeCount = 0; } public int getId() { @@ -73,8 +76,17 @@ public class Message { this.fileName = fileName; } + public int getLikeCount() { + return likeCount; + } + + public void setLikeCount(int likeCount) { + this.likeCount = likeCount; + } + @Override public String toString() { - return "Message{" + "id=" + id + ", contenu=" + contenu + ", datePublication=" + datePublication + ", filId=" + filId + ", auteurEmail=" + auteurEmail + '}'; + return "Message{" + "id=" + id + ", contenu=" + contenu + ", datePublication=" + datePublication + ", filId=" + + filId + ", auteurEmail=" + auteurEmail + "like" + likeCount + '}'; } } diff --git a/sae/WEB-INF/src/modele/MessageDao.java b/sae/WEB-INF/src/modele/MessageDao.java index 0687ea3..4294c7b 100644 --- a/sae/WEB-INF/src/modele/MessageDao.java +++ b/sae/WEB-INF/src/modele/MessageDao.java @@ -21,6 +21,7 @@ public class MessageDao { message.setFilId(rs.getInt("filId")); message.setAuteurEmail(rs.getString("auteurEmail")); message.setFileName(rs.getString("fileName")); + message.setLikeCount(rs.getInt("likeCount")); } else { System.out.println("Message inexistant"); } @@ -43,6 +44,7 @@ public class MessageDao { message.setFilId(rs.getInt("filId")); message.setAuteurEmail(rs.getString("auteurEmail")); message.setFileName(rs.getString("fileName")); + message.setLikeCount(rs.getInt("likeCount")); messages.add(message); } } catch (Exception e) { @@ -65,6 +67,7 @@ public class MessageDao { message.setFilId(rs.getInt("filId")); message.setAuteurEmail(rs.getString("auteurEmail")); message.setFileName(rs.getString("fileName")); + message.setLikeCount(rs.getInt("likeCount")); messages.add(message); } } catch (Exception e) { @@ -112,4 +115,37 @@ public class MessageDao { System.out.println(e.getMessage()); } } + + public boolean like(int id, String email) { + boolean liked = false; + try(Connection con = DS.instance.getConnection()) { + PreparedStatement ps = con.prepareStatement("SELECT * FROM like WHERE messageid = ? AND auteuremail = ?"); + ps.setInt(1, id); + ps.setString(2, email); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + liked = true; + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return liked; + } + + public boolean unlike(int id, String email) { + boolean unliked = false; + try(Connection con = DS.instance.getConnection()) { + PreparedStatement ps = con.prepareStatement("SELECT * FROM like WHERE messageid = ? AND auteuremail = ?"); + ps.setInt(1, id); + ps.setString(2, email); + ResultSet rs = ps.executeQuery(); + if (rs.next()) { + unliked = true; + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return unliked; + } + } diff --git a/sae/compilation.md b/sae/compilation.md new file mode 100644 index 0000000..ed1bf26 --- /dev/null +++ b/sae/compilation.md @@ -0,0 +1 @@ +javac -d WEB-INF/classes -cp ../../lib/servlet-api.jar:../../lib/commons-lang3-3.17.0.jar:../../lib/commons-text-1.13.0.jar:../../lib/jackson-datatype-jsr310-2.13.0.jar:../../lib/jackson-annotations-2.15.3.jar:../../lib/jackson-core-2.15.3.jar:../../lib/jackson-databind-2.15.3.jar:../../lib/jackson-dataformat-xml-2.15.3.jar WEB-INF/src/controleur/*.java WEB-INF/src/modele/*.java diff --git a/sae/script.sql b/sae/script.sql new file mode 100644 index 0000000..1932907 --- /dev/null +++ b/sae/script.sql @@ -0,0 +1,151 @@ +DROP TABLE IF EXISTS Abonnement; +DROP TABLE IF EXISTS Message; +DROP TABLE IF EXISTS FilDeDiscussion; +DROP TABLE IF EXISTS Utilisateur; + +CREATE TABLE Utilisateur ( + email VARCHAR(100) UNIQUE NOT NULL, + nom VARCHAR(100) NOT NULL, + motDePasse VARCHAR(255) NOT NULL, + dateInscription TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT pk_utilisateur PRIMARY KEY (email) +); + +CREATE TABLE FilDeDiscussion ( + id SERIAL, + nom VARCHAR(100) NOT NULL, + dateCreation TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + createurEmail VARCHAR(100), + description TEXT, + CONSTRAINT pk_fil PRIMARY KEY (id), + CONSTRAINT fk_createur FOREIGN KEY (createurEmail) REFERENCES Utilisateur(email) + ON DELETE SET NULL +); + +CREATE TABLE Message ( + id SERIAL, + contenu TEXT NOT NULL, + datePublication TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + filId INTEGER, + auteurEmail VARCHAR(100), + fileName VARCHAR(255), + likeCount Boolean DEFAULT FALSE, + CONSTRAINT pk_message PRIMARY KEY (id), + CONSTRAINT fk_fil FOREIGN KEY (filId) REFERENCES FilDeDiscussion(id) + ON DELETE CASCADE, + CONSTRAINT fk_auteur FOREIGN KEY (auteurEmail) REFERENCES Utilisateur(email) + ON DELETE SET NULL +); + +CREATE TABLE Abonnement ( + utilisateurEmail VARCHAR(100), + filId INTEGER, + dateAbonnement TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + CONSTRAINT pk_abonnement PRIMARY KEY (utilisateurEmail, filId), + CONSTRAINT fk_utilisateur FOREIGN KEY (utilisateurEmail) REFERENCES Utilisateur(email) + ON DELETE CASCADE, + CONSTRAINT fk_fil FOREIGN KEY (filId) REFERENCES FilDeDiscussion(id) + ON DELETE CASCADE +); + +-- Insertion des utilisateurs +INSERT INTO Utilisateur (email, nom, motDePasse) +VALUES +('utilisateur1@exemple.com', 'Utilisateur 1', MD5('motdepasse123')), +('utilisateur2@exemple.com', 'Utilisateur 2', MD5('motdepasse123')), +('utilisateur3@exemple.com', 'Utilisateur 3', MD5('motdepasse123')); + +-- Insertion des fils de discussion +INSERT INTO FilDeDiscussion (nom, createurEmail, description) +VALUES +('Discussion Générale', 'utilisateur1@exemple.com', 'Un fil pour discuter de tout et de rien.'), +('Tech Talk', 'utilisateur2@exemple.com', 'Discussions sur les dernières technologies.'), +('Sports', 'utilisateur3@exemple.com', 'Discussions sur les sports et les événements sportifs.'); + +-- Insertion des messages +INSERT INTO Message (contenu, filId, auteurEmail, fileName) VALUES +('Bonjour, ceci est mon premier message !', 1, 'utilisateur1@exemple.com', NULL), +('Quelquun a des nouvelles sur la dernière mise à jour de Java ?', 2, 'utilisateur2@exemple.com', NULL), +('Qui a regardé le match hier soir ?', 3, 'utilisateur3@exemple.com', NULL), +('Bienvenue à tous dans ce fil de discussion !', 1, 'utilisateur2@exemple.com', NULL), +('Je pense que la nouvelle version de Python est géniale.', 2, 'utilisateur3@exemple.com', NULL), +('Le match était incroyable, quelle performance !', 3, 'utilisateur1@exemple.com', NULL); + +-- Insertion des abonnements +INSERT INTO Abonnement (utilisateurEmail, filId) +VALUES +('utilisateur1@exemple.com', 1), +('utilisateur1@exemple.com', 2), +('utilisateur2@exemple.com', 1), +('utilisateur2@exemple.com', 3), +('utilisateur3@exemple.com', 2), +('utilisateur3@exemple.com', 3); + +-- Lister tous les utilisateurs : + +-- SELECT * FROM Utilisateur; + +-- Lister tous les fils de discussion avec le nom du créateur : + +-- SELECT f.id, f.nom, u.nom AS nomCreateur +-- FROM FilDeDiscussion f +-- JOIN Utilisateur u ON f.createurEmail = u.email; + +-- Lister tous les messages d'un fil de discussion spécifique avec le nom de l'auteur : + +-- SELECT m.contenu, u.nom AS nomAuteur, m.datePublication +-- FROM Message m +-- JOIN Utilisateur u ON m.auteurEmail = u.email +-- WHERE m.filId = 1 +-- ORDER BY m.datePublication; + +-- Lister tous les abonnements d'un utilisateur spécifique : + +-- SELECT f.nom AS nomFil, a.dateAbonnement +-- FROM Abonnement a +-- JOIN FilDeDiscussion f ON a.filId = f.id +-- WHERE a.utilisateurEmail = 'utilisateur1@exemple.com'; + +-- Lister les fils de discussion auxquels un utilisateur n'est pas abonné : + +-- SELECT f.id, f.nom +-- FROM FilDeDiscussion f +-- LEFT JOIN Abonnement a ON f.id = a.filId AND a.utilisateurEmail = 'utilisateur1@exemple.com' +-- WHERE a.utilisateurEmail IS NULL; + +-- Compter le nombre de messages par fil de discussion : + +-- SELECT f.nom AS nomFil, COUNT(m.id) AS nombreMessages +-- FROM FilDeDiscussion f +-- LEFT JOIN Message m ON f.id = m.filId +-- GROUP BY f.nom; + +-- Trouver les utilisateurs qui ont publié des messages dans un fil spécifique : + +-- SELECT DISTINCT u.nom, u.email +-- FROM Utilisateur u +-- JOIN Message m ON u.email = m.auteurEmail +-- WHERE m.filId = 1; + +-- Lister les 5 derniers messages publiés dans un fil de discussion : + +-- SELECT m.contenu, u.nom AS nomAuteur, m.datePublication +-- FROM Message m +-- JOIN Utilisateur u ON m.auteurEmail = u.email +-- WHERE m.filId = 1 +-- ORDER BY m.datePublication DESC +-- LIMIT 5; + +-- Compter le nombre d'abonnés par fil de discussion : + +-- SELECT f.nom AS nomFil, COUNT(a.utilisateurEmail) AS nombreAbonnes +-- FROM FilDeDiscussion f +-- LEFT JOIN Abonnement a ON f.id = a.filId +-- GROUP BY f.nom; + +-- Lister les utilisateurs qui ne sont abonnés à aucun fil de discussion : + +-- SELECT u.email, u.nom +-- FROM Utilisateur u +-- LEFT JOIN Abonnement a ON u.email = a.utilisateurEmail +-- WHERE a.utilisateurEmail IS NULL; \ No newline at end of file diff --git a/sae/uploads/Abr.png b/sae/uploads/Abr.png new file mode 100644 index 0000000000000000000000000000000000000000..104b2328ee7164628311b8ee28dc54376ec0b75d GIT binary patch literal 22686 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 literal 0 HcmV?d00001 -- GitLab