commit 7ae77d87665708c964a53f27e9683a5a0b807fcd Author: ines <> Date: Thu Jan 9 21:29:22 2025 +0100 1er commit diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..7a2bc2e --- /dev/null +++ b/build.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + Builds, tests, and runs the project appli3. + + + diff --git a/nbproject/ant-deploy.xml b/nbproject/ant-deploy.xml new file mode 100644 index 0000000..785fa0b --- /dev/null +++ b/nbproject/ant-deploy.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml new file mode 100644 index 0000000..89b5e6a --- /dev/null +++ b/nbproject/build-impl.xml @@ -0,0 +1,1434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set build.web.dir + Must set build.generated.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.war + + + + + + + + + +The Java EE server classpath is not correctly set up - server home directory is missing. +Either open the project in the IDE and assign the server or setup the server classpath manually. +For example like this: + ant -Dj2ee.server.home=<app_server_installation_directory> + + +The Java EE server classpath is not correctly set up. Your active server type is ${j2ee.server.type}. +Either open the project in the IDE and assign the server or setup the server classpath manually. +For example like this: + ant -Duser.properties.file=<path_to_property_file> (where you put the property "j2ee.platform.classpath" in a .properties file) +or ant -Dj2ee.platform.classpath=<server_classpath> (where no properties file is used) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +The libs.CopyLibs.classpath property is not set up. +This property must point to +org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part +of NetBeans IDE installation and is usually located at +<netbeans_installation>/java<version>/ant/extra folder. +Either open the project in the IDE and make sure CopyLibs library +exists or setup the property manually. For example like this: + ant -Dlibs.CopyLibs.classpath=a/path/to/org-netbeans-modules-java-j2seproject-copylibstask.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.jsp.includes + + + + + + + + + + + + + + + + + + + + + + + + + + Must select a file in the IDE or set jsp.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Browser not found, cannot launch the deployed application. Try to set the BROWSER environment variable. + + + Launching ${browse.url} + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties new file mode 100644 index 0000000..02263d5 --- /dev/null +++ b/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=9e76b6dd +build.xml.script.CRC32=5c202745 +build.xml.stylesheet.CRC32=1707db4f@1.100.0.1 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=9e76b6dd +nbproject/build-impl.xml.script.CRC32=0271ca75 +nbproject/build-impl.xml.stylesheet.CRC32=334708a0@1.100.0.1 diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..9107674 --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,88 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=true +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +build.classes.dir=${build.web.dir}/WEB-INF/classes +build.classes.excludes=**/*.java,**/*.form +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +build.web.dir=${build.dir}/web +build.web.excludes=${build.classes.excludes} +client.urlPart= +compile.jsps=false +conf.dir=${source.root}/conf +debug.classpath=${build.classes.dir}:${javac.classpath} +debug.test.classpath=\ + ${run.test.classpath} +display.browser=true +# Files to be excluded from distribution war +dist.archive.excludes= +dist.dir=dist +dist.ear.war=${dist.dir}/${war.ear.name} +dist.javadoc.dir=${dist.dir}/javadoc +dist.war=${dist.dir}/${war.name} +excludes= +file.reference.jakarta.servlet.jsp.jstl-2.0.0.jar=C:\\Users\\noobm\\Downloads\\drive-download-20250105T160443Z-001\\jakarta.servlet.jsp.jstl-2.0.0.jar +file.reference.jakarta.servlet.jsp.jstl-api-2.0.0.jar=C:\\Users\\noobm\\Downloads\\drive-download-20250105T160443Z-001\\jakarta.servlet.jsp.jstl-api-2.0.0.jar +file.reference.mysql-connector-java-8.0.23.jar=C:\\Users\\noobm\\Downloads\\drive-download-20250105T160443Z-001\\mysql-connector-java-8.0.23.jar +includes=** +j2ee.compile.on.save=true +j2ee.copy.static.files.on.save=true +j2ee.deploy.on.save=true +j2ee.platform=10-web +j2ee.platform.classpath=${j2ee.server.home}/bin/tomcat-juli.jar:${j2ee.server.home}/lib/annotations-api.jar:${j2ee.server.home}/lib/catalina-ant.jar:${j2ee.server.home}/lib/catalina-ha.jar:${j2ee.server.home}/lib/catalina-ssi.jar:${j2ee.server.home}/lib/catalina-storeconfig.jar:${j2ee.server.home}/lib/catalina-tribes.jar:${j2ee.server.home}/lib/catalina.jar:${j2ee.server.home}/lib/ecj-4.27.jar:${j2ee.server.home}/lib/el-api.jar:${j2ee.server.home}/lib/jakartaee-migration-1.0.8-shaded.jar:${j2ee.server.home}/lib/jasper-el.jar:${j2ee.server.home}/lib/jasper.jar:${j2ee.server.home}/lib/jaspic-api.jar:${j2ee.server.home}/lib/jsp-api.jar:${j2ee.server.home}/lib/servlet-api.jar:${j2ee.server.home}/lib/tomcat-api.jar:${j2ee.server.home}/lib/tomcat-coyote-ffm.jar:${j2ee.server.home}/lib/tomcat-coyote.jar:${j2ee.server.home}/lib/tomcat-dbcp.jar:${j2ee.server.home}/lib/tomcat-i18n-cs.jar:${j2ee.server.home}/lib/tomcat-i18n-de.jar:${j2ee.server.home}/lib/tomcat-i18n-es.jar:${j2ee.server.home}/lib/tomcat-i18n-fr.jar:${j2ee.server.home}/lib/tomcat-i18n-ja.jar:${j2ee.server.home}/lib/tomcat-i18n-ko.jar:${j2ee.server.home}/lib/tomcat-i18n-pt-BR.jar:${j2ee.server.home}/lib/tomcat-i18n-ru.jar:${j2ee.server.home}/lib/tomcat-i18n-zh-CN.jar:${j2ee.server.home}/lib/tomcat-jdbc.jar:${j2ee.server.home}/lib/tomcat-jni.jar:${j2ee.server.home}/lib/tomcat-util-scan.jar:${j2ee.server.home}/lib/tomcat-util.jar:${j2ee.server.home}/lib/tomcat-websocket.jar:${j2ee.server.home}/lib/websocket-api.jar:${j2ee.server.home}/lib/websocket-client-api.jar +j2ee.server.type=Tomcat +jar.compress=false +javac.classpath=\ + ${file.reference.jakarta.servlet.jsp.jstl-2.0.0.jar}:\ + ${file.reference.jakarta.servlet.jsp.jstl-api-2.0.0.jar}:\ + ${file.reference.mysql-connector-java-8.0.23.jar} +# Space-separated list of extra javac options +javac.compilerargs= +javac.debug=true +javac.deprecation=false +javac.processorpath=\ + ${javac.classpath} +javac.source=17 +javac.target=17 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=false +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.preview=true +javadoc.private=false +javadoc.splitindex=true +javadoc.use=true +javadoc.version=false +javadoc.windowtitle= +lib.dir=${web.docbase.dir}/WEB-INF/lib +no.dependencies=false +persistence.xml.dir=${conf.dir} +platform.active=default_platform +resource.dir=setup +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +# Space-separated list of JVM arguments used when running a class with a main method or a unit test +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value): +runmain.jvmargs= +source.encoding=UTF-8 +source.root=src +src.dir=${source.root}/java +test.src.dir=test +war.content.additional= +war.ear.name=${war.name} +war.name=appli3.war +web.docbase.dir=web +webinf.dir=web/WEB-INF diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..88eaf61 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,31 @@ + + + org.netbeans.modules.web.project + + + appli3 + 1.6.5 + + + ${file.reference.jakarta.servlet.jsp.jstl-2.0.0.jar} + WEB-INF/lib + + + ${file.reference.jakarta.servlet.jsp.jstl-api-2.0.0.jar} + WEB-INF/lib + + + ${file.reference.mysql-connector-java-8.0.23.jar} + WEB-INF/lib + + + + + + + + + + + + diff --git a/src/conf/MANIFEST.MF b/src/conf/MANIFEST.MF new file mode 100644 index 0000000..58630c0 --- /dev/null +++ b/src/conf/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/src/java/Servlet/AuthentificationServlet.java b/src/java/Servlet/AuthentificationServlet.java new file mode 100644 index 0000000..5500008 --- /dev/null +++ b/src/java/Servlet/AuthentificationServlet.java @@ -0,0 +1,116 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/Servlet.java to edit this template + */ +package Servlet; + +import beans.Pompier; +import form.AuthentifForm; +import java.io.IOException; +import java.io.PrintWriter; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; + +/** + * + * @author noobm + */ +public class AuthentificationServlet extends HttpServlet { + + /** + * Processes requests for both HTTP GET and POST + * methods. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setContentType("text/html;charset=UTF-8"); + try (PrintWriter out = response.getWriter()) { + /* TODO output your page here. You may use following sample code. */ + out.println(""); + out.println(""); + out.println(""); + out.println("Servlet authentificationServlet"); + out.println(""); + out.println(""); + out.println("

Servlet authentificationServlet at " + request.getContextPath() + "

"); + out.println(""); + out.println(""); + } + } + + // + /** + * Handles the HTTP GET method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + HttpSession Session = request.getSession(); + Session.removeAttribute("lePompierConnecte"); + Session.removeAttribute("lesPompiers"); + Session.removeAttribute("lePompier"); + request.getRequestDispatcher("/WEB-INF/views/AuthentificationJSP.jsp").forward(request, response); + } + + /** + * Handles the HTTP POST method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + Pompier lePompier = null; + AuthentifForm authentif = new AuthentifForm(request); + if (authentif.ctrlAuthentif() && authentif.ctrlBDD()) { + HttpSession maSession = request.getSession(); + lePompier = (Pompier) maSession.getAttribute("lePompierConnecte"); + + if (lePompier != null) { + if (lePompier.getStatut() == 1) { + getServletContext().getRequestDispatcher("/WEB-INF/views/AccueilPompierJSP.jsp").forward(request, response); + } else if (lePompier.getStatut() == 2) { + + getServletContext().getRequestDispatcher("/WEB-INF/views/AccueilResponsableJSP.jsp").forward(request, response); + + } else { + request.setAttribute("message", "Statut non reconnu."); + getServletContext().getRequestDispatcher("/WEB-INF/views/AuthentificationJSP.jsp").forward(request, response); + } + } else { + request.setAttribute("message", "Erreur interne : utilisateur non trouvé."); + getServletContext().getRequestDispatcher("/WEB-INF/views/AuthentificationJSP.jsp").forward(request, response); + } + } else { + getServletContext().getRequestDispatcher("/WEB-INF/views/AuthentificationJSP.jsp").forward(request, response); + } + } + + + /** + * Returns a short description of the servlet. + * + * @return a String containing servlet description + */ + @Override + public String getServletInfo() { + return "Short description"; + }// + +} diff --git a/src/java/Servlet/EditionProfilServlet.java b/src/java/Servlet/EditionProfilServlet.java new file mode 100644 index 0000000..d47a06c --- /dev/null +++ b/src/java/Servlet/EditionProfilServlet.java @@ -0,0 +1,118 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/Servlet.java to edit this template + */ +package Servlet; + +import beans.Pompier; +import form.EditionForm; +import java.io.IOException; +import java.io.PrintWriter; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; + +/** + * + * @author noobm + */ +public class EditionProfilServlet extends HttpServlet { + + /** + * Processes requests for both HTTP GET and POST + * methods. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setContentType("text/html;charset=UTF-8"); + try (PrintWriter out = response.getWriter()) { + /* TODO output your page here. You may use following sample code. */ + out.println(""); + out.println(""); + out.println(""); + out.println("Servlet EditionPompierServlet"); + out.println(""); + out.println(""); + out.println("

Servlet EditionPompierServlet at " + request.getContextPath() + "

"); + out.println(""); + out.println(""); + } + } + + // + /** + * Handles the HTTP GET method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + Pompier lePompier = null; + HttpSession maSession = request.getSession(); + lePompier = (Pompier) maSession.getAttribute("lePompierConnecte"); + + if (lePompier != null) { + request.setAttribute("pompier", lePompier); + request.getRequestDispatcher("/WEB-INF/views/EditionPompierJSP.jsp").forward(request, response); + } else { + response.sendRedirect("/WEB-INF/views/AuthentificationJSP.jsp"); + } + } + + /** + * Handles the HTTP POST method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + EditionForm edition = new EditionForm(request); + Pompier lePompier = null; + HttpSession maSession = request.getSession(); + lePompier = (Pompier) maSession.getAttribute("lePompierConnecte"); + if (edition.ctrlEdition() && lePompier != null){ + + lePompier.setNom(request.getParameter("nom")); + lePompier.setPrenom(request.getParameter("prenom")); + lePompier.setLogin(request.getParameter("login")); + lePompier.setMail(request.getParameter("mail")); + lePompier.setAdresse(request.getParameter("adresse")); + lePompier.setCp(request.getParameter("cp")); + lePompier.setVille(request.getParameter("ville")); + lePompier.setBip(request.getParameter("bip")); + lePompier.setGrade(Integer.parseInt(request.getParameter("grade"))); + lePompier.setCommentaire(request.getParameter("commentaire")); + + + request.getSession().setAttribute("lePompierConnecte", lePompier); + response.sendRedirect("/WEB-INF/views/ProfilJSP.jsp");} + + else { + response.sendRedirect("/WEB-INF/views/AuthentificationJSP.jsp"); // Rediriger si pas de pompier connecté + } + } + + /** + * Returns a short description of the servlet. + * + * @return a String containing servlet description + */ + @Override + public String getServletInfo() { + return "Short description"; + }// + +} diff --git a/src/java/Servlet/ProfilPompierServlet.java b/src/java/Servlet/ProfilPompierServlet.java new file mode 100644 index 0000000..d31a7ff --- /dev/null +++ b/src/java/Servlet/ProfilPompierServlet.java @@ -0,0 +1,93 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/JSP_Servlet/Servlet.java to edit this template + */ +package Servlet; + +import beans.Pompier; +import java.io.IOException; +import java.io.PrintWriter; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; + +/** + * + * @author noobm + */ +public class ProfilPompierServlet extends HttpServlet { + + /** + * Processes requests for both HTTP GET and POST + * methods. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + response.setContentType("text/html;charset=UTF-8"); + try (PrintWriter out = response.getWriter()) { + /* TODO output your page here. You may use following sample code. */ + out.println(""); + out.println(""); + out.println(""); + out.println("Servlet AccueilPompierServlet"); + out.println(""); + out.println(""); + out.println("

Servlet AccueilPompierServlet at " + request.getContextPath() + "

"); + out.println(""); + out.println(""); + } + } + + // + /** + * Handles the HTTP GET method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + HttpSession maSession = request.getSession(); + Pompier lePompier = (Pompier) maSession.getAttribute("lePompierConnecte"); + + if (lePompier != null) { + request.setAttribute("pompier", lePompier); + request.getRequestDispatcher("/WEB-INF/views/ProfilJSP.jsp").forward(request, response); + } else { + // Rediriger vers la page de connexion si aucun pompier n'est connecté + response.sendRedirect("login"); + } + } + /** + * Handles the HTTP POST method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + /** + * Returns a short description of the servlet. + * + * @return a String containing servlet description + */ + @Override + public String getServletInfo() { + return "Short description"; + }// + +} diff --git a/src/java/bdd/CaserneMySQL.java b/src/java/bdd/CaserneMySQL.java new file mode 100644 index 0000000..2b823a9 --- /dev/null +++ b/src/java/bdd/CaserneMySQL.java @@ -0,0 +1,37 @@ +/* + * bddd/CaserneMySQL.java + */ +package bdd; + +import beans.Caserne; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +public class CaserneMySQL { + private final Connection laConnection = Connexion.getConnect("172.20.10.5", + "sdis29", + "adminBDsdis", + "mdpBDsdis"); + public Caserne read(int id) { + Caserne laCaserne = null; + try { + PreparedStatement prepStmt = null; + String sql = "SELECT * FROM caserne WHERE id=?"; + prepStmt = laConnection.prepareStatement(sql); + prepStmt.setInt(1, id); + ResultSet result = prepStmt.executeQuery(); + if (result.next()) { + laCaserne = new Caserne(result.getInt(1), result.getString(2),result.getString(3), + result.getString(4), result.getString(5),result.getString(6)); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return laCaserne; + } +} diff --git a/src/java/bdd/Connexion.java b/src/java/bdd/Connexion.java new file mode 100644 index 0000000..3c45d8c --- /dev/null +++ b/src/java/bdd/Connexion.java @@ -0,0 +1,61 @@ +package bdd; +/* +Connexion.java +Classe permettant d'établir une connexion avec une base de données mySQL +*/ +import java.sql.Connection; +import java.sql.DriverManager; + +public class Connexion { + private static Connection connect; // Variable de connexion + + /** + * Constructeur + * @param serveur nom du serveur, localhost si local + * @param bdd nom de la base de données + * @param nomUtil nom utilisateur + * @param mdp mot de passe lié à l'utilisateur + */ + private Connexion(String serveur, String bdd, String nomUtil, String mdp) { + try { + // 1. Chargement du driver + //Class.forName("com.mysql.jdbc.Driver"); + Class.forName("com.mysql.cj.jdbc.Driver"); + System.out.println("Driver accessible"); + + // 2. Initialisation des paramètres de connexion + String host = serveur; // Serveur de bd + String dbname = bdd; // Nom bd + String url = "jdbc:mysql://" + host + "/" + dbname; // url de connexion + url += "?autoReconnect=true"; // Ajout 26/09/2021 + System.out.println("url : "+url); + String user = nomUtil; // nom du user + System.out.println("nomUtil : "+nomUtil); + String passwd = mdp; // mot de passe + System.out.println("mdp : "+mdp); + + // 3. Connexion + connect = (Connection) DriverManager.getConnection(url, user, passwd); + System.out.println("Connexion réussie !"); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * Retourne la connection établie (Création d'une connection si elle n'existe pas) + * @param serveur nom du serveur, localhost si local + * @param bdd nom de la base de données + * @param nomUtil nom utilisateur + * @param mdp mot de passe lié à l'utilisateur + * @return connection établie + */ + public static Connection getConnect(String serveur, String bdd, String nomUtil, String mdp) { + //System.out.println("getConnect"); + if (connect == null) { + new Connexion(serveur, bdd, nomUtil, mdp); + } + return connect; + } +} diff --git a/src/java/bdd/GradeMySQL.java b/src/java/bdd/GradeMySQL.java new file mode 100644 index 0000000..a7e6173 --- /dev/null +++ b/src/java/bdd/GradeMySQL.java @@ -0,0 +1,62 @@ +package bdd; + +import beans.Grade; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +/** + * + * @author noobm + */ +public class GradeMySQL { + private final Connection laConnection = Connexion.getConnect("172.20.10.5", + "sdis29", + "adminBDsdis", + "mdpBDsdis"); + + public Grade read(int id) { + Grade leGrade = null; + try { + PreparedStatement prepStmt = null; + String sql = "SELECT * FROM grade WHERE idGrade=?"; + prepStmt = laConnection.prepareStatement(sql); + prepStmt.setInt(1, id); + ResultSet result = prepStmt.executeQuery(); + if (result.next()) { + leGrade = new Grade(result.getInt(1), result.getString(2)); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return leGrade; + } + + // Lecture de tous les grades dans la base de données + public ArrayList readGrades() { + ArrayList lesGrades = new ArrayList<>(); + try { + PreparedStatement prepStmt = null; + String sql = "SELECT * FROM grade"; + prepStmt = laConnection.prepareStatement(sql); + ResultSet result = prepStmt.executeQuery(); + + + while (result.next()) { + Grade grade = new Grade(result.getInt(1), result.getString(2)); + lesGrades.add(grade); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return lesGrades; + } +} diff --git a/src/java/bdd/PompierMySQL.java b/src/java/bdd/PompierMySQL.java new file mode 100644 index 0000000..6ceb9a3 --- /dev/null +++ b/src/java/bdd/PompierMySQL.java @@ -0,0 +1,217 @@ +/* + * bdd/PompierMysql.java + */ +package bdd; + +import beans.Caserne; +import beans.Pompier; +import beans.Statut; +import beans.TypePers; +import beans.Grade; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.logging.Level; +import java.util.logging.Logger; + +public class PompierMySQL { + + private final Connection theConnection = Connexion.getConnect("172.20.10.5", + "sdis29", + "adminBDsdis", + "mdpBDsdis"); + // Tableau des attributs mis à jour + // 1ère dimension : noms des attributs en bdd + // 2ème dimension : noms des champs transmis + // 3ème dimension : type de données, i pour Integet, s pour String + private String[][] lesAttributs = { + {"id", "idCaserne", "nom", "prenom", "statut", "typePers", "mail", "login", "mdp", "adresse", "cp", "ville", "bip", "grade", "commentaire"}, + {"idPompier", "idCaserne", "nom", "prenom", "statut", "type", "mail", "login", "mdp", "adresse", "cp", "ville", "bip", "grade", "obs"}, + {"i", "i", "s", "s", "i", "i", "s", "s", "s", "s", "s", "s", "s", "i", "s"} + }; + + /** + * Recherche du pompier ayant le login et le mdp passé en paramètres + * + * @param login + * @param mdp + * @return Pompier correspondant ou null si non trouvé + */ + public Pompier readAuthentif(String login, String mdp) { + Pompier lePompier = null; + try { + PreparedStatement prepStmt; + String sql = "SELECT * FROM pompier WHERE login=? AND mdp=? "; + + prepStmt = theConnection.prepareStatement(sql); + prepStmt.setString(1, login); + prepStmt.setString(2, mdp); + ResultSet result = prepStmt.executeQuery(); + if (result.next()) { + CaserneMySQL laCaserneMySQL = new CaserneMySQL(); + Caserne laCaserne = laCaserneMySQL.read(result.getInt(2)); + lePompier = constituerLePompier(result, laCaserne); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return lePompier; + } + + /** + * Recherche les pompiers volontaires de la caserne + * + * @param idCaserne + * @return collection des pompiers concernés + */ + public ArrayList readLesPompiersCaserne(int idCaserne) { + ArrayList lesPompiers = new ArrayList(); + try { + PreparedStatement prepStmt; + String sql = "SELECT * FROM pompier WHERE idCaserne=? AND statut=1 AND typePers=2 ORDER BY nom, prenom"; + + prepStmt = theConnection.prepareStatement(sql); + prepStmt.setInt(1, idCaserne); + ResultSet result = prepStmt.executeQuery(); + CaserneMySQL laCaserneMySQL = new CaserneMySQL(); + Caserne laCaserne = laCaserneMySQL.read(idCaserne); + while (result.next()) { + Pompier unPompier = constituerLePompier(result, laCaserne); + lesPompiers.add(unPompier); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return lesPompiers; + } + + public Pompier constituerLePompier(ResultSet result, Caserne laCaserne) { + Pompier lePompier = null; + StatutMySQL leStatutMySQL = new StatutMySQL(); + GradeMySQL leGradeMySQL = new GradeMySQL(); + TypePersoMySQL leTypePersoMySQL = new TypePersoMySQL(); + try { + + Statut leStatut = leStatutMySQL.read(result.getInt("statut")); + TypePers leTypePers = leTypePersoMySQL.read(result.getInt("typePers")); + Grade leGrade = leGradeMySQL.read(result.getInt("grade")); + + lePompier = new Pompier( + result.getInt(1), + laCaserne.getId(), + result.getString(3), + result.getString(4), + leStatut.getIdStatut(), + leTypePers.getIdTypePers(), + result.getString(7), + result.getString(8), + result.getString(9), + result.getString(10), + result.getString(11), + result.getString(12), + result.getString(13), + leGrade.getIdGrade(), + result.getString(16)); + //System.out.println("lePompier " + lePompier); + } catch (SQLException ex) { + Logger.getLogger(PompierMySQL.class.getName()).log(Level.SEVERE, null, ex); + } + return lePompier; + } + + public Pompier create(HashMap lesParametres) { + Pompier lePompierCree = null; + + String valeurs [] = new String[lesAttributs[1].length]; + String sql = "INSERT INTO pompier ("; + int nbAttributsMaj = 0; + String virgule = ""; + for (HashMap.Entry unParam : lesParametres.entrySet()) { + + int i = 0; + while (i < lesAttributs[1].length && !(lesAttributs[1][i].equals(unParam.getKey()))) { + i++; + } + if (i < lesAttributs[0].length) { + sql += virgule + lesAttributs[0][i]; + valeurs[nbAttributsMaj] = "("+lesAttributs[2][i]+")" + unParam.getValue(); + nbAttributsMaj++; + virgule = ", "; + } + } + sql += ", dateEnreg) values (?"; + for (int i=0; i 0) { + ResultSet result = prepStmt.getGeneratedKeys(); + if (result.first()) { + int id = result.getInt(1); + lePompierCree = read(id); + System.out.println("lePompierCree : "+ lePompierCree); + } + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + + return lePompierCree; + } + + public Pompier read(int idP) { + Pompier unPompier = null; + try { + PreparedStatement prepStmt; + String sql = "SELECT * FROM pompier WHERE idPompier=? "; + + prepStmt = theConnection.prepareStatement(sql); + prepStmt.setInt(1, idP); + ResultSet result = prepStmt.executeQuery(); + if (result.next()) { + CaserneMySQL laCaserneMySQL = new CaserneMySQL(); + Caserne laCaserne = laCaserneMySQL.read(result.getInt(2)); + unPompier = constituerLePompier(result, laCaserne); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return unPompier; + } +} diff --git a/src/java/bdd/StatutMySQL.java b/src/java/bdd/StatutMySQL.java new file mode 100644 index 0000000..1ee049c --- /dev/null +++ b/src/java/bdd/StatutMySQL.java @@ -0,0 +1,59 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package bdd; +import beans.Statut; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +public class StatutMySQL { + private final Connection laConnection = Connexion.getConnect("172.20.10.5", + "sdis29", + "adminBDsdis", + "mdpBDsdis"); + public Statut read(int id) { + Statut leStatut = null; + try { + PreparedStatement prepStmt = null; + String sql = "SELECT * FROM statut WHERE idStatut=?"; + prepStmt = laConnection.prepareStatement(sql); + prepStmt.setInt(1, id); + ResultSet result = prepStmt.executeQuery(); + if (result.next()) { + leStatut = new Statut(result.getInt(1), result.getString(2)); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return leStatut; + } + // Lecture de tous les grades dans la base de données + public ArrayList readStatuts() { + ArrayList lesStatuts = new ArrayList<>(); + try { + PreparedStatement prepStmt = null; + String sql = "SELECT * FROM statut"; + prepStmt = laConnection.prepareStatement(sql); + ResultSet result = prepStmt.executeQuery(); + + + while (result.next()) { + Statut leStatut = new Statut(result.getInt(1), result.getString(2)); + lesStatuts.add(leStatut); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return lesStatuts; + } +} diff --git a/src/java/bdd/TrancheMySQL.java b/src/java/bdd/TrancheMySQL.java new file mode 100644 index 0000000..a5e1de9 --- /dev/null +++ b/src/java/bdd/TrancheMySQL.java @@ -0,0 +1,65 @@ +package bdd; + +import beans.Tranche; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ + +/** + * + * @author noobm + */ +public class TrancheMySQL { + private final Connection laConnection = Connexion.getConnect("172.20.10.5", + "sdis29", + "adminBDsdis", + "mdpBDsdis"); + public Tranche read(int id) { + Tranche laTranche = null; + try { + PreparedStatement prepStmt = null; + String sql = "SELECT * FROM tranche WHERE idTranche=?"; + prepStmt = laConnection.prepareStatement(sql); + prepStmt.setInt(1, id); + ResultSet result = prepStmt.executeQuery(); + if (result.next()) { + laTranche = new Tranche(result.getInt(1), result.getString(2)); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return laTranche; + } + // Lecture de tous les grades dans la base de données + public ArrayList readTranches() { + ArrayList lesTranches = new ArrayList<>(); + try { + PreparedStatement prepStmt = null; + String sql = "SELECT * FROM tranche"; + prepStmt = laConnection.prepareStatement(sql); + ResultSet result = prepStmt.executeQuery(); + + + while (result.next()) { + Tranche laTranche = new Tranche(result.getInt(1), result.getString(2)); + lesTranches.add(laTranche); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return lesTranches; + } +} diff --git a/src/java/bdd/TypePersoMySQL.java b/src/java/bdd/TypePersoMySQL.java new file mode 100644 index 0000000..4306806 --- /dev/null +++ b/src/java/bdd/TypePersoMySQL.java @@ -0,0 +1,65 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package bdd; +import beans.TypePers; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ + + + +public class TypePersoMySQL { + private final Connection laConnection = Connexion.getConnect("172.20.10.5", + "sdis29", + "adminBDsdis", + "mdpBDsdis"); + public TypePers read(int id) { + TypePers leTypePerso = null; + try { + PreparedStatement prepStmt = null; + String sql = "SELECT * FROM typePers WHERE idTypePers=?"; + prepStmt = laConnection.prepareStatement(sql); + prepStmt.setInt(1, id); + ResultSet result = prepStmt.executeQuery(); + if (result.next()) { + leTypePerso = new TypePers(result.getInt(1), result.getString(2)); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return leTypePerso; + } + // Lecture de tous les grades dans la base de données + public ArrayList readStatuts() { + ArrayList lesTypePers = new ArrayList<>(); + try { + PreparedStatement prepStmt = null; + String sql = "SELECT * FROM typePers"; + prepStmt = laConnection.prepareStatement(sql); + ResultSet result = prepStmt.executeQuery(); + + + while (result.next()) { + TypePers leTypePers = new TypePers(result.getInt(1), result.getString(2)); + lesTypePers.add(leTypePers); + } + prepStmt.close(); + } catch (SQLException ex) { + System.out.println("SQLExeption : " + ex.getMessage()); + System.out.println("SQLState : " + ex.getSQLState()); + System.out.println("Code erreur : " + ex.getErrorCode()); + } + return lesTypePers; + } +} diff --git a/src/java/beans/Caserne.java b/src/java/beans/Caserne.java new file mode 100644 index 0000000..83ffbad --- /dev/null +++ b/src/java/beans/Caserne.java @@ -0,0 +1,84 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package beans; + +public class Caserne { + private int id; + private String nom; + private String adresse; + private String tel; + private String groupement; + private String codePostal; + + public Caserne(int id, String nom, String adresse, String tel, String groupement, String codePostal) { + this.id = id; + this.nom = nom; + this.adresse = adresse; + this.tel = tel; + this.groupement = groupement; + this.codePostal = codePostal; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public String getAdresse() { + return adresse; + } + + public void setAdresse(String adresse) { + this.adresse = adresse; + } + + public String getTel() { + return tel; + } + + public void setTel(String tel) { + this.tel = tel; + } + + public String getGroupement() { + return groupement; + } + + public void setGroupement(String groupement) { + this.groupement = groupement; + } + + public String getCodePostal() { + return codePostal; + } + + public void setCodePostal(String codePostal) { + this.codePostal = codePostal; + } + + @Override + public String toString() { + return "Caserne{" + + "id=" + id + + ", nom='" + nom + '\'' + + ", adresse='" + adresse + '\'' + + ", tel='" + tel + '\'' + + ", groupement='" + groupement + '\'' + + ", codePostal='" + codePostal + '\'' + + '}'; + } +} + diff --git a/src/java/beans/Disponibilite.java b/src/java/beans/Disponibilite.java new file mode 100644 index 0000000..0ca78d7 --- /dev/null +++ b/src/java/beans/Disponibilite.java @@ -0,0 +1,41 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package beans; + +public class Disponibilite { + private int idDispo; + private String libelle; + + public Disponibilite() {} + + public Disponibilite(int idDispo, String libelle) { + this.idDispo = idDispo; + this.libelle = libelle; + } + + public int getIdDispo() { + return idDispo; + } + + public void setIdDispo(int idDispo) { + this.idDispo = idDispo; + } + + public String getLibelle() { + return libelle; + } + + public void setLibelle(String libelle) { + this.libelle = libelle; + } + + @Override + public String toString() { + return "Disponibilite{" + + "idDispo=" + idDispo + + ", libelle='" + libelle + '\'' + + '}'; + } +} diff --git a/src/java/beans/Grade.java b/src/java/beans/Grade.java new file mode 100644 index 0000000..2273f32 --- /dev/null +++ b/src/java/beans/Grade.java @@ -0,0 +1,41 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package beans; + +public class Grade { + private int idGrade; + private String libelle; + + public Grade() {} + + public Grade(int idGrade, String libelle) { + this.idGrade = idGrade; + this.libelle = libelle; + } + + public int getIdGrade() { + return idGrade; + } + + public void setIdGrade(int idGrade) { + this.idGrade = idGrade; + } + + public String getLibelle() { + return libelle; + } + + public void setLibelle(String libelle) { + this.libelle = libelle; + } + + @Override + public String toString() { + return "Grade{" + + "idGrade=" + idGrade + + ", libelle='" + libelle + '\'' + + '}'; + } +} diff --git a/src/java/beans/Pompier.java b/src/java/beans/Pompier.java new file mode 100644 index 0000000..7372ee6 --- /dev/null +++ b/src/java/beans/Pompier.java @@ -0,0 +1,202 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package beans; + +public class Pompier { + private int idPompier; + private int idCaserne; + private String nom; + private String prenom; + private int statut; + private int typePers; + private String mail; + private String login; + private String mdp; + private String adresse; + private String cp; + private String ville; + private String bip; + private int grade; + private String commentaire; + + + + public Pompier( + int idPompier, + int idCaserne, + String nom, + String prenom, + int statut, + int typePers, + String mail, + String login, + String mdp, + String adresse, + String cp, + String ville, + String bip, + int grade, + String commentaire) { + this.idPompier = idPompier; + this.idCaserne = idCaserne; + this.nom = nom; + this.prenom = prenom; + this.statut = statut; + this.typePers = typePers; + this.mail = mail; + this.login = login; + this.mdp = mdp; + this.adresse = adresse; + this.cp = cp; + this.ville = ville; + this.bip = bip; + this.grade = grade; + this.commentaire = commentaire; + } + + public int getIdPompier() { + return idPompier; + } + + public void setIdPompier(int idPompier) { + this.idPompier = idPompier; + } + + public int getIdCaserne() { + return idCaserne; + } + + public void setIdCaserne(int idCaserne) { + this.idCaserne = idCaserne; + } + + public String getNom() { + return nom; + } + + public void setNom(String nom) { + this.nom = nom; + } + + public String getPrenom() { + return prenom; + } + + public void setPrenom(String prenom) { + this.prenom = prenom; + } + + public int getStatut() { + return statut; + } + + public void setStatut(int statut) { + this.statut = statut; + } + + public int getTypePers() { + return typePers; + } + + public void setTypePers(int typePers) { + this.typePers = typePers; + } + + public String getMail() { + return mail; + } + + public void setMail(String mail) { + this.mail = mail; + } + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getMdp() { + return mdp; + } + + public void setMdp(String mdp) { + this.mdp = mdp; + } + + public String getAdresse() { + return adresse; + } + + public void setAdresse(String adresse) { + this.adresse = adresse; + } + + public String getCp() { + return cp; + } + + public void setCp(String cp) { + this.cp = cp; + } + + public String getVille() { + return ville; + } + + public void setVille(String ville) { + this.ville = ville; + } + + public String getBip() { + return bip; + } + + public void setBip(String bip) { + this.bip = bip; + } + + public int getGrade() { + return grade; + } + + public void setGrade(int grade) { + this.grade = grade; + } + + public String getCommentaire() { + return commentaire; + } + + public void setCommentaire(String commentaire) { + this.commentaire = commentaire; + } + + + @Override + public String toString() { + return "Pompier{" + + "idPompier=" + idPompier + + ", idCaserne=" + idCaserne + + ", nom='" + nom + '\'' + + ", prenom='" + prenom + '\'' + + ", statut=" + statut + + ", typePers=" + typePers + + ", mail='" + mail + '\'' + + ", login='" + login + '\'' + + ", mdp='" + mdp + '\'' + + ", adresse='" + adresse + '\'' + + ", cp='" + cp + '\'' + + ", ville='" + ville + '\'' + + ", bip='" + bip + '\'' + + ", grade=" + grade + + ", commentaire='" + commentaire + '\'' + + + '}'; + } +} + diff --git a/src/java/beans/PompierDispo.java b/src/java/beans/PompierDispo.java new file mode 100644 index 0000000..9fff260 --- /dev/null +++ b/src/java/beans/PompierDispo.java @@ -0,0 +1,63 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package beans; + +public class PompierDispo { + private int idJour; + private int idPompier; + private int idTranche; + private Integer idDisponibilite; + + public PompierDispo() {} + + public PompierDispo(int idJour, int idPompier, int idTranche, Integer idDisponibilite) { + this.idJour = idJour; + this.idPompier = idPompier; + this.idTranche = idTranche; + this.idDisponibilite = idDisponibilite; + } + + public int getIdJour() { + return idJour; + } + + public void setIdJour(int idJour) { + this.idJour = idJour; + } + + public int getIdPompier() { + return idPompier; + } + + public void setIdPompier(int idPompier) { + this.idPompier = idPompier; + } + + public int getIdTranche() { + return idTranche; + } + + public void setIdTranche(int idTranche) { + this.idTranche = idTranche; + } + + public Integer getIdDisponibilite() { + return idDisponibilite; + } + + public void setIdDisponibilite(Integer idDisponibilite) { + this.idDisponibilite = idDisponibilite; + } + + @Override + public String toString() { + return "PompierDispo{" + + "idJour=" + idJour + + ", idPompier=" + idPompier + + ", idTranche=" + idTranche + + ", idDisponibilite=" + idDisponibilite + + '}'; + } +} diff --git a/src/java/beans/Statut.java b/src/java/beans/Statut.java new file mode 100644 index 0000000..b238b2f --- /dev/null +++ b/src/java/beans/Statut.java @@ -0,0 +1,41 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package beans; + +public class Statut { + private int idStatut; + private String libelle; + + public Statut() {} + + public Statut(int idStatut, String libelle) { + this.idStatut = idStatut; + this.libelle = libelle; + } + + public int getIdStatut() { + return idStatut; + } + + public void setIdStatut(int idStatut) { + this.idStatut = idStatut; + } + + public String getLibelle() { + return libelle; + } + + public void setLibelle(String libelle) { + this.libelle = libelle; + } + + @Override + public String toString() { + return "Statut{" + + "idStatut=" + idStatut + + ", libelle='" + libelle + '\'' + + '}'; + } +} diff --git a/src/java/beans/Tranche.java b/src/java/beans/Tranche.java new file mode 100644 index 0000000..d760657 --- /dev/null +++ b/src/java/beans/Tranche.java @@ -0,0 +1,42 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package beans; + +public class Tranche { + private int idTranche; + private String libelle; + + public Tranche() {} + + public Tranche(int idTranche, String libelle) { + this.idTranche = idTranche; + this.libelle = libelle; + } + + public int getIdTranche() { + return idTranche; + } + + public void setIdTranche(int idTranche) { + this.idTranche = idTranche; + } + + public String getLibelle() { + return libelle; + } + + public void setLibelle(String libelle) { + this.libelle = libelle; + } + + @Override + public String toString() { + return "Tranche{" + + "idTranche=" + idTranche + + ", libelle='" + libelle + '\'' + + '}'; + } +} + diff --git a/src/java/beans/TypePers.java b/src/java/beans/TypePers.java new file mode 100644 index 0000000..f9730fb --- /dev/null +++ b/src/java/beans/TypePers.java @@ -0,0 +1,41 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package beans; + +public class TypePers { + private int idTypePers; + private String libelle; + + public TypePers() {} + + public TypePers(int idTypePers, String libelle) { + this.idTypePers = idTypePers; + this.libelle = libelle; + } + + public int getIdTypePers() { + return idTypePers; + } + + public void setIdTypePers(int idTypePers) { + this.idTypePers = idTypePers; + } + + public String getLibelle() { + return libelle; + } + + public void setLibelle(String libelle) { + this.libelle = libelle; + } + + @Override + public String toString() { + return "TypePers{" + + "idTypePers=" + idTypePers + + ", libelle='" + libelle + '\'' + + '}'; + } +} diff --git a/src/java/form/AuthentifForm.java b/src/java/form/AuthentifForm.java new file mode 100644 index 0000000..37ffe32 --- /dev/null +++ b/src/java/form/AuthentifForm.java @@ -0,0 +1,86 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package form; + +import bdd.GradeMySQL; +import bdd.PompierMySQL; +import bdd.StatutMySQL; +import bdd.TypePersoMySQL; +import bdd.TrancheMySQL; +import beans.Pompier; +import beans.Statut; +import beans.TypePers; +import beans.Grade; +import beans.Tranche; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; +import java.util.ArrayList; +import util.CtrlSaisie; +import util.MD5; +public class AuthentifForm { + + String message; + HttpServletRequest request; + + public AuthentifForm(HttpServletRequest request) { + this.request = request; + } + + public boolean ctrlAuthentif() { + request.removeAttribute("message"); + String[] champsObligatoires = {"username", "password"}; + if (!CtrlSaisie.CtrlChampsObligatoires(request, champsObligatoires)) { + return false; + } + + // Vérification absence de chevron + if (!CtrlSaisie.CtrlChevron(request)) { + return false; + } + return true; + } + + public boolean ctrlBDD() { + boolean trouve = false; + String login = request.getParameter("username"); + String mdp = MD5.encode(request.getParameter("password")); + PompierMySQL pompierMySQL = new PompierMySQL(); + Pompier lePompier = pompierMySQL.readAuthentif(login, mdp); + if (lePompier!= null) { + trouve = true; + HttpSession maSession = request.getSession(); + maSession.setAttribute("lePompierConnecte", lePompier); + StatutMySQL leStatutMySQL = new StatutMySQL(); + GradeMySQL leGradeMySQL = new GradeMySQL(); + TrancheMySQL lesTranchesMySQL = new TrancheMySQL(); + TypePersoMySQL leTypePersoMySQL = new TypePersoMySQL(); + + ArrayList lesGrades = leGradeMySQL.readGrades(); + maSession.setAttribute("les grades", lesGrades); + + + ArrayList lesTranches = lesTranchesMySQL.readTranches(); + maSession.setAttribute("les tranches", lesTranches); + + + ArrayList lesStatuts = leStatutMySQL.readStatuts(); + maSession.setAttribute("les statuts", lesStatuts); + + + ArrayList lesTypes = leTypePersoMySQL.readStatuts(); + maSession.setAttribute("lesTypes", lesTypes); + + if (lePompier.getStatut()== 2) { + + ArrayList lesPompiers = pompierMySQL.readLesPompiersCaserne(lePompier.getIdCaserne()); + maSession.setAttribute("lesPompiers", lesPompiers); + } + } else { + request.setAttribute("message", "Login ou mot de passe erroné"); + } + + return trouve; + } +} diff --git a/src/java/form/EditionForm.java b/src/java/form/EditionForm.java new file mode 100644 index 0000000..7300d13 --- /dev/null +++ b/src/java/form/EditionForm.java @@ -0,0 +1,45 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package form; +import bdd.GradeMySQL; +import bdd.PompierMySQL; +import bdd.StatutMySQL; +import bdd.TypePersoMySQL; +import bdd.TrancheMySQL; +import beans.Pompier; +import beans.Statut; +import beans.TypePers; +import beans.Grade; +import beans.Tranche; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; +import java.util.ArrayList; +import util.CtrlSaisie; +/** + * + * @author noobm + */ +public class EditionForm { + String message; + HttpServletRequest request; + + public EditionForm(HttpServletRequest request) { + this.request = request; + } + public boolean ctrlEdition() { + request.removeAttribute("message"); + String[] champsObligatoires = {"username", "password",}; + if (!CtrlSaisie.CtrlChampsObligatoires(request, champsObligatoires)) { + return false; + } + + // Vérification absence de chevron + if (!CtrlSaisie.CtrlChevron(request)) { + return false; + } + return true; + } + +} diff --git a/src/java/util/CtrlSaisie.java b/src/java/util/CtrlSaisie.java new file mode 100644 index 0000000..a40fba5 --- /dev/null +++ b/src/java/util/CtrlSaisie.java @@ -0,0 +1,64 @@ +/* + * util/CtrlSaisie.java + */ +package util; + +import jakarta.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Enumeration; + +/** + * + * @author domin + */ +public abstract class CtrlSaisie { + /** + * Vérifie la présence des champs obligatoires dans les paramètres transmis + * @param request + * @param champsObligatoires : tableau de chaine de caractères, avec le nom des champs obligatoires + * @return booléen + */ + public static boolean CtrlChampsObligatoires(HttpServletRequest request, String[] champsObligatoires) { + ArrayList champsPresents = new ArrayList<>(request.getParameterMap().keySet()); + int i = 0; + int nbChampsO = champsObligatoires.length; + boolean erreur = false; + while (erreur == false && i < nbChampsO && champsPresents.contains(champsObligatoires[i])){ + String value=request.getParameter(champsObligatoires[i]); + if (value.trim().length() > 0) { + i++; + } else { + erreur = true; + } + } + if (i < nbChampsO) { + request.setAttribute("message", "Veuillez renseigner toutes les zones obligatoires ("+i+')'); + } + return (i>=nbChampsO); + } + + /** + * Contrôle si un champ de saisie contient un chevron + * @param request + * @return 0 sinon, -1 si oui + */ + public static boolean CtrlChevron(HttpServletRequest request) { + // Contrôle car "<" dans les zones de texte + Enumeration lesNoms = request.getParameterNames(); + int erreur = 0; + //ArrayList parameterNames = new ArrayList(request.getParameterMap().keySet()); + while (erreur == 0 && lesNoms.hasMoreElements()) { + Object paramObjet=lesNoms.nextElement(); + String param=(String) paramObjet; + String value=request.getParameter(param); + if (value.contains("<") || value.contains("<")) { + String message = "Veuillez recommencer votre saisie, une anomalie sur une zone de saisie a été détectée "; + request.setAttribute("message", message); + erreur=1; + } + } + return (erreur > 0) ? false : true; + + } + +} diff --git a/src/java/util/MD5.java b/src/java/util/MD5.java new file mode 100644 index 0000000..cccd368 --- /dev/null +++ b/src/java/util/MD5.java @@ -0,0 +1,36 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package util; + +/** + * + * @author sio + */ + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.logging.Level; +import java.util.logging.Logger; + +public abstract class MD5 { + + public static String encode(String uneChaine){ + MessageDigest md = null; + try { + md = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException ex) { + throw new IllegalArgumentException(ex); + } + md.update(uneChaine.getBytes()); + byte[] digest = md.digest(); + //myHash = DatatypeConverter.printHexBinary(digest).toLowerCase(); + StringBuilder sb = new StringBuilder(); + for (byte b : digest) { + sb.append(String.format("%02x", b)); + } + return sb.toString(); + } +} diff --git a/web/META-INF/context.xml b/web/META-INF/context.xml new file mode 100644 index 0000000..f040549 --- /dev/null +++ b/web/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/web/WEB-INF/shared/EnteteJSP.jsp b/web/WEB-INF/shared/EnteteJSP.jsp new file mode 100644 index 0000000..0708496 --- /dev/null +++ b/web/WEB-INF/shared/EnteteJSP.jsp @@ -0,0 +1,13 @@ + + + + + + SDIS29 + + + +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> + + diff --git a/web/WEB-INF/shared/FooterJSP.jsp b/web/WEB-INF/shared/FooterJSP.jsp new file mode 100644 index 0000000..8f7ac75 --- /dev/null +++ b/web/WEB-INF/shared/FooterJSP.jsp @@ -0,0 +1,3 @@ + + + diff --git a/web/WEB-INF/shared/NavigationJSP.jsp b/web/WEB-INF/shared/NavigationJSP.jsp new file mode 100644 index 0000000..9f490ce --- /dev/null +++ b/web/WEB-INF/shared/NavigationJSP.jsp @@ -0,0 +1,19 @@ + + diff --git a/web/WEB-INF/views/AccueilPompierJSP.jsp b/web/WEB-INF/views/AccueilPompierJSP.jsp new file mode 100644 index 0000000..7eb795d --- /dev/null +++ b/web/WEB-INF/views/AccueilPompierJSP.jsp @@ -0,0 +1,38 @@ + + +
+
+
+
+ +
+
Card 1
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero.

+
+
+
+ +
+
+ +
+
Card 2
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero.

+
+
+
+ +
+
+ +
+
Card 3
+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero.

+
+
+
+
+
+ + + \ No newline at end of file diff --git a/web/WEB-INF/views/AccueilResponsableJSP.jsp b/web/WEB-INF/views/AccueilResponsableJSP.jsp new file mode 100644 index 0000000..959aaab --- /dev/null +++ b/web/WEB-INF/views/AccueilResponsableJSP.jsp @@ -0,0 +1,12 @@ + +<%@page contentType="text/html" pageEncoding="UTF-8"%> + + + + + JSP Page + + +

Hello World!

+ + diff --git a/web/WEB-INF/views/AuthentificationJSP.jsp b/web/WEB-INF/views/AuthentificationJSP.jsp new file mode 100644 index 0000000..1998dd8 --- /dev/null +++ b/web/WEB-INF/views/AuthentificationJSP.jsp @@ -0,0 +1,25 @@ + + +
+

Connexion

+
+
+ + +
+
+ + +
+ +
+ ${message} +
+
+ +
+
+ + + + \ No newline at end of file diff --git a/web/WEB-INF/views/EditionPompierJSP.jsp b/web/WEB-INF/views/EditionPompierJSP.jsp new file mode 100644 index 0000000..1370a2b --- /dev/null +++ b/web/WEB-INF/views/EditionPompierJSP.jsp @@ -0,0 +1,50 @@ + + + + +
+

Modifier le profil

+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ + + \ No newline at end of file diff --git a/web/WEB-INF/views/ProfilJSP.jsp b/web/WEB-INF/views/ProfilJSP.jsp new file mode 100644 index 0000000..7efd46d --- /dev/null +++ b/web/WEB-INF/views/ProfilJSP.jsp @@ -0,0 +1,29 @@ + + +
+

Informations du Pompier

+ + + + + + + + + + + + + + + + + + + + + + +
ID${pompier.idPompier}
Nom${pompier.nom}
Prénom${pompier.prenom}
Login${pompier.login}
Adresse${pompier.adresse}, ${pompier.ville}, ${pompier.cp}
+
+ \ No newline at end of file diff --git a/web/WEB-INF/web.xml b/web/WEB-INF/web.xml new file mode 100644 index 0000000..92084e9 --- /dev/null +++ b/web/WEB-INF/web.xml @@ -0,0 +1,27 @@ + + + + AuthentificationServlet + Servlet.AuthentificationServlet + + + ProfilPompierServlet + Servlet.ProfilPompierServlet + + + EditionProfilServlet + Servlet.EditionProfilServlet + + + AuthentificationServlet + / + + + ProfilPompierServlet + /Profil + + + EditionProfilServlet + /EditionProfil + + diff --git a/web/img/logo-sdis.png b/web/img/logo-sdis.png new file mode 100644 index 0000000..c15050e Binary files /dev/null and b/web/img/logo-sdis.png differ diff --git a/web/img/pompier.png b/web/img/pompier.png new file mode 100644 index 0000000..fbff3ae Binary files /dev/null and b/web/img/pompier.png differ diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..4cea0a0 --- /dev/null +++ b/web/index.html @@ -0,0 +1,15 @@ + + + + + TODO supply a title + + + + +
TODO write content
+ + diff --git a/web/ressources/mycss.css b/web/ressources/mycss.css new file mode 100644 index 0000000..5efcc82 --- /dev/null +++ b/web/ressources/mycss.css @@ -0,0 +1,39 @@ + body { + background: linear-gradient(135deg, #667eea, #764ba2); + min-height: 100vh; + display: flex; + justify-content: center; + align-items: center; + margin: 0; + } + .auth-form { + background: #fff; + border-radius: 10px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); + padding: 30px; + max-width: 400px; + width: 100%; + } + .auth-form h2 { + text-align: center; + margin-bottom: 20px; + color: #333; + } + .auth-form .btn-primary { + background: #667eea; + border-color: #667eea; + } + .auth-form .btn-primary:hover { + background: #5a67d8; + } + .form-footer { + text-align: center; + margin-top: 15px; + } + .form-footer a { + text-decoration: none; + color: #667eea; + } + .form-footer a:hover { + text-decoration: underline; + } \ No newline at end of file