Compare commits

..

21 Commits

Author SHA1 Message Date
clementine.desrucques
5287b5ff74 Merge origin/master
Conflicts:
	web/WEB-INF/feuilleGardes.jsp
	web/css/mycss.css
2021-12-16 16:50:32 +01:00
clementine.desrucques
623728d3e3 Merge origin/master
Conflicts:
	web/WEB-INF/feuilleGardes.jsp
	web/css/mycss.css
2021-12-15 11:54:20 +01:00
clementine.desrucques
ad612c663c Merge origin/master
Conflicts:
	web/WEB-INF/feuilleGardes.jsp
	web/css/mycss.css
2021-12-15 10:39:48 +01:00
clementine.desrucques
3162d0eeb3 Merge origin/master
Conflicts:
	web/WEB-INF/feuilleGardes.jsp
	web/css/mycss.css
2021-12-15 07:59:53 +01:00
clementine.desrucques
332960f92d Merge origin/master
Conflicts:
	web/WEB-INF/feuilleGardes.jsp
	web/css/mycss.css
2021-12-14 09:51:00 +01:00
clementine.desrucques
cac0c6423f Merge origin/master
Conflicts:
	web/WEB-INF/feuilleGardes.jsp
	web/css/mycss.css
2021-12-14 09:31:59 +01:00
clementine.desrucques
f74104e7ff Merge origin/master
Conflicts:
	web/WEB-INF/feuilleGardes.jsp
	web/css/mycss.css
2021-12-14 09:07:12 +01:00
clementine.desrucques
f293ce8b0f Merge origin/master
Conflicts:
	web/WEB-INF/feuilleGardes.jsp
	web/css/mycss.css
2021-12-14 08:43:01 +01:00
clementine.desrucques
c1b8fa7a27 Merge origin/master
Conflicts:
	web/WEB-INF/feuilleGardes.jsp
	web/css/mycss.css
2021-12-13 17:37:55 +01:00
clementine.desrucques
0783dfd5ab Merge origin/master
Conflicts:
	web/WEB-INF/feuilleGardes.jsp
	web/css/mycss.css
2021-12-13 16:42:37 +01:00
funcha.ahamadi
40db789d06 Merge origin/master
Conflicts:
	src/java/bdd/gardeMySQL.java
	src/java/bean/Gardes.java
	src/java/servlet/GardesServlet.java
	web/WEB-INF/jspf/header.jspf
2021-12-13 15:45:52 +01:00
clementine.desrucques
80aa3ed6ea Merge origin/master
Conflicts:
	src/java/bdd/gardeMySQL.java
	src/java/servlet/PompierServlet.java
	web/WEB-INF/feuilleGardes.jsp
2021-12-13 15:42:14 +01:00
clementine.desrucques
b4da29af06 Merge origin/master
Conflicts:
	src/java/bdd/gardeMySQL.java
	src/java/servlet/PompierServlet.java
	web/WEB-INF/feuilleGardes.jsp
2021-12-13 15:09:34 +01:00
funcha.ahamadi
07aaf3248d Merge origin/master
Conflicts:
	src/java/bdd/gardeMySQL.java
	src/java/bean/Gardes.java
	src/java/servlet/GardesServlet.java
	web/WEB-INF/jspf/header.jspf
2021-12-13 15:07:08 +01:00
clementine.desrucques
e23f0e37e2 Merge origin/master
Conflicts:
	nbproject/project.properties
	src/java/bean/Pompier.java
	src/java/servlet/PompierServlet.java
	src/java/util/TrmtDate.java
	web/WEB-INF/jspf/formulairePompier.jspf
	web/WEB-INF/jspf/header.jspf
	web/WEB-INF/web.xml
2021-12-13 14:57:10 +01:00
clementine.desrucques
fb1699b16f Merge origin/master
Conflicts:
	nbproject/project.properties
	src/java/bean/Pompier.java
	src/java/servlet/PompierServlet.java
	src/java/util/TrmtDate.java
	web/WEB-INF/jspf/formulairePompier.jspf
	web/WEB-INF/jspf/header.jspf
	web/WEB-INF/web.xml
2021-12-13 14:42:07 +01:00
funcha.ahamadi
93022f82e3 Merge origin/master
Conflicts:
	src/java/bdd/PompierMySql.java
	src/java/com/test/servlets/authentifServlet.java
	web/WEB-INF/CreaPompier.jsp
2021-12-13 11:33:34 +01:00
clementine.desrucques
03780acc84 Merge origin/master
Conflicts:
	nbproject/project.properties
	src/java/bean/Pompier.java
	src/java/servlet/PompierServlet.java
	src/java/util/TrmtDate.java
	web/WEB-INF/jspf/formulairePompier.jspf
	web/WEB-INF/jspf/header.jspf
	web/WEB-INF/web.xml
2021-12-13 11:33:05 +01:00
clementine.desrucques
8c53a38e4b Merge origin/master
Conflicts:
	nbproject/project.properties
	src/java/bean/Pompier.java
	src/java/servlet/PompierServlet.java
	src/java/util/TrmtDate.java
	web/WEB-INF/jspf/formulairePompier.jspf
	web/WEB-INF/jspf/header.jspf
	web/WEB-INF/web.xml
2021-12-13 11:07:06 +01:00
clementine.desrucques
785442caf6 2021-12-13 10:22:45 +01:00
clementine.desrucques
5729a4a7eb 2021-12-13 09:34:20 +01:00
20 changed files with 2290 additions and 1862 deletions

142
build.xml
View File

@@ -1,71 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for --> <!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. --> <!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) --> <!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. --> <!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if --> <!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. --> <!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting --> <!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.--> <!-- in the project's Project Properties dialog box.-->
<project name="sdis29M1" default="default" basedir="."> <project name="sdis29M1" default="default" basedir=".">
<description>Builds, tests, and runs the project sdis29M1.</description> <description>Builds, tests, and runs the project sdis29M1.</description>
<import file="nbproject/build-impl.xml"/> <import file="nbproject/build-impl.xml"/>
<!-- <!--
There exist several targets which are by default empty and which can be There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed used for execution of your tasks. These targets are usually executed
before and after some main targets. They are: before and after some main targets. They are:
-pre-init: called before initialization of project properties -pre-init: called before initialization of project properties
-post-init: called after initialization of project properties -post-init: called after initialization of project properties
-pre-compile: called before javac compilation -pre-compile: called before javac compilation
-post-compile: called after javac compilation -post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file -pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file -post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests -pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests -post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test -pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test -post-compile-test-single: called after javac compilation of single JUunit test
-pre-dist: called before archive building -pre-dist: called before archive building
-post-dist: called after archive building -post-dist: called after archive building
-post-clean: called after cleaning build products -post-clean: called after cleaning build products
-pre-run-deploy: called before deploying -pre-run-deploy: called before deploying
-post-run-deploy: called after deploying -post-run-deploy: called after deploying
Example of pluging an obfuscator after the compilation could look like Example of pluging an obfuscator after the compilation could look like
<target name="-post-compile"> <target name="-post-compile">
<obfuscate> <obfuscate>
<fileset dir="${build.classes.dir}"/> <fileset dir="${build.classes.dir}"/>
</obfuscate> </obfuscate>
</target> </target>
For list of available properties check the imported For list of available properties check the imported
nbproject/build-impl.xml file. nbproject/build-impl.xml file.
Other way how to customize the build is by overriding existing main targets. Other way how to customize the build is by overriding existing main targets.
The target of interest are: The target of interest are:
init-macrodef-javac: defines macro for javac compilation init-macrodef-javac: defines macro for javac compilation
init-macrodef-junit: defines macro for junit execution init-macrodef-junit: defines macro for junit execution
init-macrodef-debug: defines macro for class debugging init-macrodef-debug: defines macro for class debugging
do-dist: archive building do-dist: archive building
run: execution of project run: execution of project
javadoc-build: javadoc generation javadoc-build: javadoc generation
Example of overriding the target for project execution could look like Example of overriding the target for project execution could look like
<target name="run" depends="<PROJNAME>-impl.jar"> <target name="run" depends="<PROJNAME>-impl.jar">
<exec dir="bin" executable="launcher.exe"> <exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/> <arg file="${dist.jar}"/>
</exec> </exec>
</target> </target>
Notice that overridden target depends on jar target and not only on Notice that overridden target depends on jar target and not only on
compile target as regular run target does. Again, for list of available compile target as regular run target does. Again, for list of available
properties which you can use check the target you are overriding in properties which you can use check the target you are overriding in
nbproject/build-impl.xml file. nbproject/build-impl.xml file.
--> -->
</project> </project>

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
build.xml.data.CRC32=b54f128f build.xml.data.CRC32=b54f128f
build.xml.script.CRC32=111e10f7 build.xml.script.CRC32=111e10f7
build.xml.stylesheet.CRC32=1707db4f@1.87.0.1 build.xml.stylesheet.CRC32=1707db4f@1.86.0.1
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # 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. # 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=b54f128f nbproject/build-impl.xml.data.CRC32=b54f128f
nbproject/build-impl.xml.script.CRC32=bc2b5756 nbproject/build-impl.xml.script.CRC32=bc2b5756
nbproject/build-impl.xml.stylesheet.CRC32=334708a0@1.87.0.1 nbproject/build-impl.xml.stylesheet.CRC32=334708a0@1.86.0.1

View File

@@ -36,7 +36,7 @@ j2ee.compile.on.save=true
j2ee.copy.static.files.on.save=true j2ee.copy.static.files.on.save=true
j2ee.deploy.on.save=true j2ee.deploy.on.save=true
j2ee.platform=1.7-web j2ee.platform=1.7-web
j2ee.platform.classpath=${j2ee.server.domain}/lib/annotations-api.jar:${j2ee.server.domain}/lib/catalina-ant.jar:${j2ee.server.domain}/lib/catalina-ha.jar:${j2ee.server.domain}/lib/catalina-ssi.jar:${j2ee.server.domain}/lib/catalina-storeconfig.jar:${j2ee.server.domain}/lib/catalina-tribes.jar:${j2ee.server.domain}/lib/catalina.jar:${j2ee.server.domain}/lib/ecj-4.20.jar:${j2ee.server.domain}/lib/el-api.jar:${j2ee.server.domain}/lib/jakartaee-migration-1.0.0-shaded.jar:${j2ee.server.domain}/lib/jasper-el.jar:${j2ee.server.domain}/lib/jasper.jar:${j2ee.server.domain}/lib/jaspic-api.jar:${j2ee.server.domain}/lib/jsp-api.jar:${j2ee.server.domain}/lib/servlet-api.jar:${j2ee.server.domain}/lib/tomcat-api.jar:${j2ee.server.domain}/lib/tomcat-coyote.jar:${j2ee.server.domain}/lib/tomcat-dbcp.jar:${j2ee.server.domain}/lib/tomcat-i18n-cs.jar:${j2ee.server.domain}/lib/tomcat-i18n-de.jar:${j2ee.server.domain}/lib/tomcat-i18n-es.jar:${j2ee.server.domain}/lib/tomcat-i18n-fr.jar:${j2ee.server.domain}/lib/tomcat-i18n-ja.jar:${j2ee.server.domain}/lib/tomcat-i18n-ko.jar:${j2ee.server.domain}/lib/tomcat-i18n-pt-BR.jar:${j2ee.server.domain}/lib/tomcat-i18n-ru.jar:${j2ee.server.domain}/lib/tomcat-i18n-zh-CN.jar:${j2ee.server.domain}/lib/tomcat-jdbc.jar:${j2ee.server.domain}/lib/tomcat-jni.jar:${j2ee.server.domain}/lib/tomcat-util-scan.jar:${j2ee.server.domain}/lib/tomcat-util.jar:${j2ee.server.domain}/lib/tomcat-websocket.jar:${j2ee.server.domain}/lib/websocket-api.jar j2ee.platform.classpath=${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.20.jar:${j2ee.server.home}/lib/el-api.jar:${j2ee.server.home}/lib/jakartaee-migration-1.0.0-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.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.type=Tomcat j2ee.server.type=Tomcat
jar.compress=false jar.compress=false
javac.classpath=\ javac.classpath=\

View File

@@ -1,31 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1"> <project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.web.project</type> <type>org.netbeans.modules.web.project</type>
<configuration> <configuration>
<data xmlns="http://www.netbeans.org/ns/web-project/3"> <data xmlns="http://www.netbeans.org/ns/web-project/3">
<name>sdis29M1</name> <name>sdis29M1</name>
<minimum-ant-version>1.6.5</minimum-ant-version> <minimum-ant-version>1.6.5</minimum-ant-version>
<web-module-libraries> <web-module-libraries>
<library dirs="200"> <library dirs="200">
<file>${file.reference.jakarta.servlet.jsp.jstl-2.0.0.jar}</file> <file>${file.reference.jakarta.servlet.jsp.jstl-2.0.0.jar}</file>
<path-in-war>WEB-INF/lib</path-in-war> <path-in-war>WEB-INF/lib</path-in-war>
</library> </library>
<library dirs="200"> <library dirs="200">
<file>${file.reference.jakarta.servlet.jsp.jstl-api-2.0.0.jar}</file> <file>${file.reference.jakarta.servlet.jsp.jstl-api-2.0.0.jar}</file>
<path-in-war>WEB-INF/lib</path-in-war> <path-in-war>WEB-INF/lib</path-in-war>
</library> </library>
<library dirs="200"> <library dirs="200">
<file>${file.reference.mysql-connector-java-8.0.26.jar}</file> <file>${file.reference.mysql-connector-java-8.0.26.jar}</file>
<path-in-war>WEB-INF/lib</path-in-war> <path-in-war>WEB-INF/lib</path-in-war>
</library> </library>
</web-module-libraries> </web-module-libraries>
<web-module-additional-libraries/> <web-module-additional-libraries/>
<source-roots> <source-roots>
<root id="src.dir"/> <root id="src.dir"/>
</source-roots> </source-roots>
<test-roots> <test-roots>
<root id="test.src.dir"/> <root id="test.src.dir"/>
</test-roots> </test-roots>
</data> </data>
</configuration> </configuration>
</project> </project>

View File

@@ -0,0 +1,214 @@
/*
* 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 bdd;
import bean.Caserne;
import bean.Gardes;
import bean.Pompier;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.TrmtDate;
/**
*
* @author funcha.ahamadi
*/
public class GardeMySQL {
private final Connection theConnection = Connexion.getConnect("localhost",
"sdis29",
"adminBDsdis",
"mdpBDsdis");
public ArrayList<Gardes> getLesDisponibilite(Calendar[] lesDates, int[] lesPeriodes,HttpServletRequest request) {
ArrayList<Gardes> lesDispo = new ArrayList<>();
Gardes uneDispo;
/* a. Initialisation de la collection lesVentil pour la période,
création d'une ventil par salarié, par date et période
*/
int indiceDateFin = lesDates.length - 1;
Pompier lePompier;
PompierMySQL pm = new PompierMySQL();
HttpSession maSession = request.getSession();
ArrayList<Pompier> lesPompiers = (ArrayList<Pompier>) maSession.getAttribute("lesPompiers");
Pompier lePompierConnecte =(Pompier) maSession.getAttribute("lePompierConnecte");
if(lesPompiers==null){
lesPompiers = new ArrayList<>();
lesPompiers.add(lePompierConnecte);
}
for (Pompier unPompier : lesPompiers) {
for (Calendar uneDate : lesDates) {
for (int unePeriode : lesPeriodes) {
uneDispo = new Gardes(uneDate, unePeriode, unPompier);
lesDispo.add(uneDispo);
}
}
}
/* b) Maj de la collection lesVentil
*/
readAll(lesDispo, lesDates[0], lesDates[indiceDateFin]);
System.out.println("lesDispo : " + lesDispo);
return lesDispo;
}
public void readAll(ArrayList<Gardes> lesDispo, Calendar d1, Calendar d2) {
Pompier lePompier;
Gardes uneDispo;
Gardes laDispoTrouvee;
String sql = "SELECT * FROM gardes "
+ "INNER JOIN pompier on idPompier = id "
+ "WHERE jourGarde BETWEEN ? and ?;";
try {
PreparedStatement prepStmt = theConnection.prepareStatement(sql);
prepStmt.setDate(1, TrmtDate.getSQLDate(d1));
prepStmt.setDate(2, TrmtDate.getSQLDate(d2));
ResultSet resultat = prepStmt.executeQuery();
while (resultat.next()) {
CaserneMySQL laCaserneMySQL = new CaserneMySQL();
int idCaserne = resultat.getInt("idCaserne");
Caserne laCaserne = laCaserneMySQL.read(idCaserne);
lePompier = new Pompier(laCaserne,
resultat.getInt("id"),
resultat.getString("nom"),
resultat.getString("prenom"));
uneDispo = new Gardes(TrmtDate.getCalDate(resultat.getDate("jourGarde")),
resultat.getInt("periode")
,lePompier);
// Recherche si uneDispo existe dans les Dispos
int indice = lesDispo.indexOf(uneDispo);
if (indice > -1) {
laDispoTrouvee = lesDispo.get(indice);
laDispoTrouvee.setDisponibilite(resultat.getInt("disponibilite"));
laDispoTrouvee.setIsInBDD(true);
}
}
prepStmt.close();
resultat.close();
} catch (SQLException ex) {
System.out.println("SQLExeption : " + ex.getMessage());
System.out.println("SQLState : " + ex.getSQLState());
System.out.println("Code erreur : " + ex.getErrorCode());
}
}
/**
* Suppression de la garde passé en paramètre
*
* @param g ventilation à supprimer
* @return nb ligne a supprimer
*/
public int delete(Gardes g) {
int nbMaj = -1;
String sql = "DELETE FROM gardes "
+ "WHERE idPompier=?"
+ " AND periode=?"
+ " AND jourGarde= ?;";
try {
PreparedStatement prepStmt = theConnection.prepareStatement(sql);
prepStmt.setInt(1, g.getPompier().getId());
prepStmt.setInt(2, g.getPeriode());
prepStmt.setDate(3, TrmtDate.getSQLDate(g.getJourGarde()));
nbMaj = prepStmt.executeUpdate();
} catch (SQLException ex) {
System.out.println("SQLExeption : " + ex.getMessage());
System.out.println("SQLState : " + ex.getSQLState());
System.out.println("Code erreur : " + ex.getErrorCode());
}
return nbMaj;
}
/**
* Creation de la ventilation passé en paramètre ventilation à créer
*
* @return : identifiant de la ventilation créé, ou -1 si erreur
*/
public int create(Gardes g) {
int idCree = -1;
String sql = "INSERT into gardes "
+ "(jourGarde, periode, idPompier, disponibilite, deGarde) "
+ "VALUES (?, ?, ?,?,?);";
try {
// PreparedStatement prepStmt = null;
// prepStmt = theConnection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
PreparedStatement prepStmt = theConnection.prepareStatement(sql);
prepStmt.setDate(1, TrmtDate.getSQLDate(g.getJourGarde()));
prepStmt.setInt(2, g.getPeriode());
prepStmt.setInt(3, g.getPompier().getId());
prepStmt.setInt(4, g.getDisponibilite());
prepStmt.setBoolean(5, g.isDeGarde());
System.out.println(prepStmt);
int nbLigne = prepStmt.executeUpdate();
// Recherche du no du pompier créé
if (nbLigne > 0) {
ResultSet result = prepStmt.getGeneratedKeys();
if (result.next()) {
idCree = result.getInt(1);
}
}
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 idCree;
}
/**
* Mise à jour de la ventilation passée en paramètre
*
* @param v : ventilation à mettre à jour
* @return : nb lignes mises à jour, -1 si erreur
*/
public int update(Gardes g) {
int nbMAJ = -1;
String sql = "UPDATE gardes "
+ "SET disponibilite = ?, deGarde = ? "
+ "WHERE idPompier = ? "
+ "AND jourGarde = ? "
+ "AND periode = ?;";
try {
PreparedStatement prepStmt = theConnection.prepareStatement(sql);
prepStmt.setInt(1, g.getDisponibilite());
prepStmt.setBoolean(2, g.isDeGarde());
prepStmt.setInt(3, g.getPompier().getId());
prepStmt.setDate(4, TrmtDate.getSQLDate(g.getJourGarde()));
prepStmt.setInt(5, g.getPeriode());
System.out.println("update : " + prepStmt);
nbMAJ = prepStmt.executeUpdate();
} catch (SQLException ex) {
Logger.getLogger(GardeMySQL.class.getName()).log(Level.SEVERE, null, ex);
}
return nbMAJ;
}
}

View File

@@ -1,98 +0,0 @@
/*
* 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 bdd;
import bean.Gardes;
import bean.Pompier;
import com.sdis29a.util.TrmtDate;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
/**
*
* @author funcha.ahamadi
*/
public class gardeMySQL {
private final Connection theConnection = Connexion.getConnect("localhost",
"sdis29",
"adminBDsdis",
"mdpBDsdis");
public ArrayList<Gardes> getLesDisponibilite(Calendar[] lesDates, int[] lesPeriodes) {
ArrayList<Gardes> lesDispo = new ArrayList<>();
Gardes uneDispo;
/* a. Initialisation de la collection lesVentil pour la période,
création d'une ventil par salarié, par date et période
*/
int indiceDateFin = lesDates.length - 1;
Pompier lePompier;
PompierMySQL pm = new PompierMySQL();
ArrayList<Pompier> lesPompiers = pm.readLesPompiersCaserne(idCaserne);
for (Pompier unPompier : lesPompiers) {
for (Calendar uneDate : lesDates) {
for (int unePeriode : lesPeriodes) {
uneDispo = new Gardes(uneDate, unePeriode, unPompier);
lesDispo.add(uneDispo);
}
}
}
/* b) Maj de la collection lesVentil
*/
readAll(lesDispo, lesDates[0], lesDates[indiceDateFin]);
//System.out.println("lesDispo : " + lesDispo);
return lesDispo;
}
public void readAll(ArrayList<Gardes> lesDispo, Calendar d1, Calendar d2) {
Pompier lePompier;
Gardes uneDispo;
Gardes laDispoTrouvee;
String sql = "SELECT * FROM gardes "
+ "INNER JOIN pompier on idPompier = id "
+ "WHERE jourGarde BETWEEN ? and ?;";
try {
PreparedStatement prepStmt = theConnection.prepareStatement(sql);
prepStmt.setDate(1, TrmtDate.getSQLDate(d1));
prepStmt.setDate(2, TrmtDate.getSQLDate(d2));
ResultSet resultat = prepStmt.executeQuery();
while (resultat.next())
// public Pompier(Caserne laCaserne, int id, String nom, String prenom) {
lePompier = new Pompier(resultat.getCaserne("laCaserne"),
resultat.getString("nom"),
resultat.getString("prenom");
uneDispo = new Gardes(TrmtDate.getCalDate(resultat.getDate("jourGarde")),
resultat.getInt("periode")
,lePompier);
// Recherche si uneDispo existe dans les Dispos
int indice = lesDispo.indexOf(uneDispo);
if (indice > -1) {
laDispoTrouvee = lesDispo.get(indice);
laDispoTrouvee.setActivite(resultat.getInt("disponibilite"));
laDispoTrouvee.setIsInDB(true);
}
prepStmt.close();
resultat.close();
} catch (SQLException ex) {
System.out.println("SQLExeption : " + ex.getMessage());
System.out.println("SQLState : " + ex.getSQLState());
System.out.println("Code erreur : " + ex.getErrorCode());
}
}
}

View File

@@ -13,26 +13,38 @@ import java.util.Objects;
* @author funcha.ahamadi * @author funcha.ahamadi
*/ */
public class Gardes { public class Gardes {
private Calendar jourGarde; Calendar jourGarde;
private int periode; int periode;
private Pompier pompier; Pompier pompier;
private int disponibilite; int disponibilite;
private boolean isInBDD; boolean isInBDD;
boolean deGarde;
public Gardes(Calendar jourGarde, int periode, Pompier pompier, int disponibilite, boolean isInBDD) { public Gardes(Calendar jourGarde, int periode, Pompier pompier, int disponibilite, boolean isInBDD, boolean deGarde) {
this.jourGarde = jourGarde; this.jourGarde = jourGarde;
this.periode = periode; this.periode = periode;
this.pompier = pompier; this.pompier = pompier;
this.disponibilite = disponibilite; this.disponibilite = disponibilite;
this.isInBDD = isInBDD; this.isInBDD = isInBDD;
this.deGarde = deGarde;
} }
public Gardes(Calendar jourGarde, int periode, Pompier pompier, boolean deGarde) {
this.jourGarde = jourGarde;
this.periode = periode;
this.pompier = pompier;
this.deGarde = deGarde;
}
public Gardes(Calendar jourGarde, int periode, Pompier pompier) { public Gardes(Calendar jourGarde, int periode, Pompier pompier) {
this.jourGarde = jourGarde; this.jourGarde = jourGarde;
this.periode = periode; this.periode = periode;
this.pompier = pompier; this.pompier = pompier;
} }
public Calendar getJourGarde() { public Calendar getJourGarde() {
return jourGarde; return jourGarde;
} }
@@ -73,14 +85,23 @@ public class Gardes {
this.isInBDD = isInBDD; this.isInBDD = isInBDD;
} }
public boolean isDeGarde() {
return deGarde;
}
public void setDeGarde(boolean deGarde) {
this.deGarde = deGarde;
}
@Override @Override
public int hashCode() { public int hashCode() {
int hash = 7; int hash = 5;
hash = 43 * hash + Objects.hashCode(this.jourGarde); hash = 37 * hash + Objects.hashCode(this.jourGarde);
hash = 43 * hash + this.periode; hash = 37 * hash + this.periode;
hash = 43 * hash + Objects.hashCode(this.pompier); hash = 37 * hash + Objects.hashCode(this.pompier);
hash = 43 * hash + this.disponibilite; hash = 37 * hash + this.disponibilite;
hash = 43 * hash + (this.isInBDD ? 1 : 0); hash = 37 * hash + (this.isInBDD ? 1 : 0);
hash = 37 * hash + (this.deGarde ? 1 : 0);
return hash; return hash;
} }
@@ -105,6 +126,9 @@ public class Gardes {
if (this.isInBDD != other.isInBDD) { if (this.isInBDD != other.isInBDD) {
return false; return false;
} }
if (this.deGarde != other.deGarde) {
return false;
}
if (!Objects.equals(this.jourGarde, other.jourGarde)) { if (!Objects.equals(this.jourGarde, other.jourGarde)) {
return false; return false;
} }
@@ -116,8 +140,9 @@ public class Gardes {
@Override @Override
public String toString() { public String toString() {
return "Gardes{" + "jourGarde=" + jourGarde + ", periode=" + periode + ", pompier=" + pompier + ", disponibilite=" + disponibilite + ", isInBDD=" + isInBDD + '}'; return "\nGardes{" + "jourGarde=" + jourGarde.getTime() + ", periode=" + periode + ", pompier=" + pompier + ", disponibilite=" + disponibilite + ", isInBDD=" + isInBDD + ", deGarde=" + deGarde + '}';
} }
} }

View File

@@ -59,7 +59,6 @@ public class Pompier {
this.nom = nom; this.nom = nom;
this.prenom = prenom; this.prenom = prenom;
} }
public int getId() { public int getId() {
return id; return id;

View File

@@ -10,6 +10,6 @@ Variables de session :
Variables mises en session dans PompierServlet.java) Variables mises en session dans PompierServlet.java)
lePompier : pompier à afficher dans pompierJSP lePompier : pompier à afficher dans pompierJSP
Attributs utilisés entre la servet PompierServlet.java et pompierJSP : Attributs utilisés entre la serlvet PompierServlet.java et pompierJSP :
page : 2 --> affichage des données du pompier connecté page : 2 --> affichage des données du pompier connecté
3 --> affichage des données d'un pompier de la caserne pour le chef de centre 3 --> affichage des données d'un pompier de la caserne pour le chef de centre

View File

@@ -0,0 +1,122 @@
/*
* 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 form;
import bdd.GardeMySQL;
import bean.Gardes;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.Map;
import javax.swing.JCheckBox;
/**
*
* @author clementine.desrucques
*/
public class DispoForm {
HttpServletRequest request;
public void verifDispo(HttpServletRequest request) {
HttpSession maS = request.getSession();
ArrayList<Gardes> lesG = (ArrayList<Gardes>) maS.getAttribute("lesVentilInit");
GardeMySQL vm = new GardeMySQL();
Map<String, String[]> map = request.getParameterMap();
String[] lesNvVentil = map.get("lesActivites");
String[] lesNvGardes = map.get("cbGarde");
ArrayList<Integer> lesNvGardesN = new ArrayList<>();
if(lesNvGardes != null){
for(String uneGarde : lesNvGardes){
lesNvGardesN.add(Integer.parseInt(uneGarde));
}
}
int i = 0;
for (Gardes uneGarde : lesG) {
int oldAct = uneGarde.getDisponibilite();
int newAct = Integer.parseInt(lesNvVentil[i]);
if (oldAct != newAct) {
if (uneGarde.isIsInBDD()) {
if (newAct == 0) {
vm.delete(uneGarde);
uneGarde.setIsInBDD(false);
uneGarde.setDisponibilite(newAct);
} else {
uneGarde.setDisponibilite(newAct);
vm.update(uneGarde);
}
} else {
uneGarde.setDisponibilite(newAct);
vm.create(uneGarde);
uneGarde.setIsInBDD(true);
}
}
boolean oldGarde = uneGarde.isDeGarde();
boolean newGarde = lesNvGardesN.contains(i)?true:false;
System.out.println("1: "+oldGarde +" "+ newGarde);
if(oldGarde!= newGarde){
uneGarde.setDeGarde(newGarde);
System.out.println("2: "+oldGarde +" "+ newGarde);
if (uneGarde.isIsInBDD()) {
vm.update(uneGarde);
}else{
vm.create(uneGarde);
uneGarde.setIsInBDD(true);
System.out.println("3: "+oldGarde +" "+ newGarde);
}
}
i++;
}
}
public void verifGarde(HttpServletRequest request) {
HttpSession maS = request.getSession();
ArrayList<Gardes> lesG = (ArrayList<Gardes>) maS.getAttribute("lesVentilInit");
GardeMySQL vm = new GardeMySQL();
Map<String, String[]> map = request.getParameterMap();
String[] lesNvVentil = map.get("cbGarde");
// JCheckBox garde = new JCheckBox();
int i = 0;
for (Gardes uneGarde : lesG) {
boolean oldAct = uneGarde.isDeGarde();
int newAct = Integer.parseInt(lesNvVentil[i]);
boolean newActO = (newAct==Integer.parseInt(lesNvVentil[i]));
if (oldAct != newActO) {
if (uneGarde.isIsInBDD()) {
if (newActO == false) {
vm.delete(uneGarde);
uneGarde.setIsInBDD(false);
uneGarde.isDeGarde();
} else {
uneGarde.isDeGarde();
vm.update(uneGarde);
}
} else {
uneGarde.isDeGarde();
vm.create(uneGarde);
uneGarde.setIsInBDD(true);
}
}
i++;
}
}
}

View File

@@ -66,6 +66,7 @@ public class AuthentifServlet extends HttpServlet {
maSession.removeAttribute("lePompierConnecte"); maSession.removeAttribute("lePompierConnecte");
maSession.removeAttribute("lesPompiers"); maSession.removeAttribute("lesPompiers");
maSession.removeAttribute("lePompier"); maSession.removeAttribute("lePompier");
maSession.removeAttribute("lesVentilInit");
getServletContext().getRequestDispatcher("/WEB-INF/authentifJSP.jsp").forward(request, response); getServletContext().getRequestDispatcher("/WEB-INF/authentifJSP.jsp").forward(request, response);
} }

View File

@@ -5,8 +5,12 @@
*/ */
package servlet; package servlet;
import bdd.GardeMySQL;
import bean.Gardes;
import bean.Pompier; import bean.Pompier;
import com.sdis29a.util.TrmtDate; import form.DispoForm;
import util.TrmtDate;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import jakarta.servlet.ServletException; import jakarta.servlet.ServletException;
@@ -63,25 +67,44 @@ public class GardesServlet extends HttpServlet {
throws ServletException, IOException { throws ServletException, IOException {
//processRequest(request, response); //processRequest(request, response);
HttpSession maSession = request.getSession(); HttpSession maSession = request.getSession();
if(maSession.getAttribute("lesVentilInit") == null){
ArrayList<Pompier> lesPompiers = (ArrayList<Pompier>) maSession.getAttribute("lesPompiers"); ArrayList<Pompier> lesPompiers = (ArrayList<Pompier>) maSession.getAttribute("lesPompiers");
Calendar[] lesDates = new Calendar[7]; Calendar[] lesDates = new Calendar[7];
String[] lesDatesEnString = new String[7]; String[] lesDatesEnString = new String[7];
lesDates[0] = TrmtDate.getDateDebutSemaine(); lesDates[0] = TrmtDate.getDateDebutSemaine();
lesDatesEnString[0] = TrmtDate.getDateAAfficher(lesDates[0]); lesDatesEnString[0] = TrmtDate.getDateAAfficher(lesDates[0]);
for (int i = 1; i < lesDates.length; i++) { for (int i = 1; i < lesDates.length; i++) {
lesDates[i] = TrmtDate.addDays(lesDates[0], i); lesDates[i] = TrmtDate.addDays(lesDates[0], i);
lesDatesEnString[i] = TrmtDate.getDateAAfficher(lesDates[i]); lesDatesEnString[i] = TrmtDate.getDateAAfficher(lesDates[i]);
} }
maSession.setAttribute("lesDates", lesDates); maSession.setAttribute("lesDates", lesDates);
maSession.setAttribute("lesDatesEnString", lesDatesEnString); maSession.setAttribute("lesDatesEnString", lesDatesEnString);
System.out.println(lesDatesEnString.toString());
/*Initialisation des periodes */ /*Initialisation des periodes */
int[] lesPeriodes = {1,2,3,4}; int[] lesPeriodes = {1,2,3,4};
maSession.setAttribute("lesPeriodes", lesPeriodes); // maSession.setAttribute("lesPeriodes", lesPeriodes);
System.out.println(lesPeriodes.toString());
/* Recherche des ventilations */
GardeMySQL vm = new GardeMySQL();
ArrayList<Gardes> lesVentilInit = vm.getLesDisponibilite(lesDates, lesPeriodes,request);
//System.out.println("lesVentilInit : " + lesVentilInit);
maSession.setAttribute("lesVentilInit", lesVentilInit);
// GardeMySQL dg = new GardeMySQL();
// ArrayList<Gardes> lesgardes = dg.();
// //System.out.println("lesVentilInit : " + lesVentilInit);
// maSession.setAttribute("lesVentilInit", lesVentilInit);
/* Initialisation des couleurs */
String[] lesCouleurs = {"blanc", "gris", "jaune"};
maSession.setAttribute("lesCouleurs", lesCouleurs);
}
/* Affichage de la page de ventilation */ /* Affichage de la page de ventilation */
getServletContext().getRequestDispatcher("/WEB-INF/ventilJSP.jsp").forward(request, response); getServletContext().getRequestDispatcher("/WEB-INF/feuilleGardes.jsp").forward(request, response);
} }
/** /**
@@ -95,7 +118,11 @@ public class GardesServlet extends HttpServlet {
@Override @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { throws ServletException, IOException {
processRequest(request, response); // processRequest(request, response);
DispoForm vf = new DispoForm();
vf.verifDispo(request);
getServletContext().getRequestDispatcher("/WEB-INF/pompierJSP.jsp").forward(request, response);
} }
/** /**

View File

@@ -36,7 +36,7 @@ public class PompierServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response) protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8"); response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) { try ( PrintWriter out = response.getWriter()) {
/* TODO output your page here. You may use following sample code. */ /* TODO output your page here. You may use following sample code. */
out.println("<!DOCTYPE html>"); out.println("<!DOCTYPE html>");
out.println("<html>"); out.println("<html>");
@@ -74,7 +74,7 @@ public class PompierServlet extends HttpServlet {
boolean isNumeric = StringUtils.isStrictlyNumeric(pageEnString); boolean isNumeric = StringUtils.isStrictlyNumeric(pageEnString);
if (isNumeric) { if (isNumeric) {
pageDemandee = Integer.parseInt(pageEnString); pageDemandee = Integer.parseInt(pageEnString);
if (pageDemandee != 2 && pageDemandee != 3) { // erreur if (pageDemandee != 2 && pageDemandee != 3 && pageDemandee != 5) { // erreur
erreur = true; erreur = true;
} }
} else { } else {
@@ -101,12 +101,13 @@ public class PompierServlet extends HttpServlet {
page = 3; page = 3;
} }
} }
if (erreur) { if (erreur) {
request.getRequestDispatcher("/authentification").forward(request, response); // redirection servlet request.getRequestDispatcher("/authentification").forward(request, response); // redirection servlet
} else { } else {
request.setAttribute("page", page); request.setAttribute("page", page);
maSession.setAttribute("lePompier", lePompier); maSession.setAttribute("lePompier", lePompier);
getServletContext().getRequestDispatcher("/WEB-INF/" + jsp).forward(request, response); getServletContext().getRequestDispatcher("/WEB-INF/" + jsp).forward(request, response);
} }
} }
@@ -126,16 +127,16 @@ public class PompierServlet extends HttpServlet {
depuis la validation du formulaire de choix du pompier à afficher (btAfficherPompier = "Afficher") depuis la validation du formulaire de choix du pompier à afficher (btAfficherPompier = "Afficher")
depuis le bouton Ajouter du formulaire du choix du pompier (btAfficherPompier = "Ajouter") depuis le bouton Ajouter du formulaire du choix du pompier (btAfficherPompier = "Ajouter")
depuis le bouton de validation de mise à jour d'un pompier (btAfficherPompier = "ValiderMaj") depuis le bouton de validation de mise à jour d'un pompier (btAfficherPompier = "ValiderMaj")
*/ */
int erreur = 0; int erreur = 0;
String btValue = null; String btValue = null;
ArrayList<String> valeursBt = new ArrayList<String>() ; ArrayList<String> valeursBt = new ArrayList<String>();
valeursBt.add("Afficher") ; valeursBt.add("Afficher");
valeursBt.add("Ajouter") ; valeursBt.add("Ajouter");
valeursBt.add("ValiderMaj") ; valeursBt.add("ValiderMaj");
// Test du bouton btAfficherPompier // Test du bouton btAfficherPompier
if (request.getParameter("btAfficherPompier")==null) { if (request.getParameter("btAfficherPompier") == null) {
erreur = 1; erreur = 1;
} else { } else {
btValue = request.getParameter("btAfficherPompier"); btValue = request.getParameter("btAfficherPompier");
@@ -148,7 +149,7 @@ public class PompierServlet extends HttpServlet {
//response.sendRedirect("/sdis29M1/authentification"); //response.sendRedirect("/sdis29M1/authentification");
return; return;
} }
HttpSession maSession = request.getSession(); HttpSession maSession = request.getSession();
ArrayList<Pompier> lesPompiers = (ArrayList<Pompier>) maSession.getAttribute("lesPompiers"); ArrayList<Pompier> lesPompiers = (ArrayList<Pompier>) maSession.getAttribute("lesPompiers");
if (request.getParameter("btAfficherPompier").equals("Afficher") if (request.getParameter("btAfficherPompier").equals("Afficher")
@@ -158,12 +159,12 @@ public class PompierServlet extends HttpServlet {
maSession.setAttribute("lePompier", lesPompiers.get(noPompier)); maSession.setAttribute("lePompier", lesPompiers.get(noPompier));
request.setAttribute("page", 3); request.setAttribute("page", 3);
} }
if (request.getParameter("btAfficherPompier").equals("Ajouter")) { if (request.getParameter("btAfficherPompier").equals("Ajouter")) {
maSession.removeAttribute("lePompier"); maSession.removeAttribute("lePompier");
} }
if (request.getParameter("btAfficherPompier").equals("ValiderMaj")) { if (request.getParameter("btAfficherPompier").equals("ValiderMaj")) {
PompierForm pf = new PompierForm(request); PompierForm pf = new PompierForm(request);
boolean valid = pf.ctrlPompier(); boolean valid = pf.ctrlPompier();
// if (maSession.getAttribute("lePompier")==null) { // if (maSession.getAttribute("lePompier")==null) {
@@ -178,8 +179,8 @@ public class PompierServlet extends HttpServlet {
// } // }
// } // }
pf.majBDD(); pf.majBDD();
} }
getServletContext().getRequestDispatcher("/WEB-INF/pompierJSP.jsp").forward(request, response); getServletContext().getRequestDispatcher("/WEB-INF/pompierJSP.jsp").forward(request, response);
} }

View File

@@ -1,129 +1,129 @@
package com.sdis29a.util; package util;
/* /*
* Classe abstraite facilitant le traitement des dates * Classe abstraite facilitant le traitement des dates
* Toutes les méthodes sont statiques, appel : TrmtDate.nomMéthode * Toutes les méthodes sont statiques, appel : TrmtDate.nomMéthode
*/ */
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.GregorianCalendar; import java.util.GregorianCalendar;
import java.util.Locale; import java.util.Locale;
import java.util.TimeZone; import java.util.TimeZone;
/** /**
* *
* @author Dominique_2 * @author Dominique_2
*/ */
public abstract class TrmtDate { public abstract class TrmtDate {
static Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("Europe/Paris")); static Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("Europe/Paris"));
/** /**
* Recherche de la date du début de la semaine courante * Recherche de la date du début de la semaine courante
* @return date du lundi de la semaine, format Calendar * @return date du lundi de la semaine, format Calendar
*/ */
public static Calendar getDateDebutSemaine() { public static Calendar getDateDebutSemaine() {
return getDateDebutSemaine(getDateDuJour()); return getDateDebutSemaine(getDateDuJour());
} }
/** /**
* Recherche de la date du début de semaine à partir de la date passée en paramètre * Recherche de la date du début de semaine à partir de la date passée en paramètre
* @param c Calendar, date de recherche * @param c Calendar, date de recherche
* @return Calendar, début semaine à partir de c * @return Calendar, début semaine à partir de c
*/ */
public static Calendar getDateDebutSemaine(Calendar c) { public static Calendar getDateDebutSemaine(Calendar c) {
Calendar leCal = getClone(c); Calendar leCal = getClone(c);
leCal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); leCal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
//System.out.println("Date du lundi correspondant : " + nvCal.getTime()); //System.out.println("Date du lundi correspondant : " + nvCal.getTime());
return leCal; return leCal;
} }
/** /**
* Retourne la date passée en paramètre sous la forme : lun.05/10 par exemple * Retourne la date passée en paramètre sous la forme : lun.05/10 par exemple
* @param d date à transformer * @param d date à transformer
* @return chaine de car., forme lun.05/10 par exemple * @return chaine de car., forme lun.05/10 par exemple
*/ */
public static String getDateAAfficher(Calendar d) { public static String getDateAAfficher(Calendar d) {
Locale locale = Locale.getDefault(); Locale locale = Locale.getDefault();
String dateAAfficher = d.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, locale); String dateAAfficher = d.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, locale);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM"); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM");
String jrMois = sdf.format(d.getTime()); String jrMois = sdf.format(d.getTime());
dateAAfficher += jrMois; dateAAfficher += jrMois;
return dateAAfficher; return dateAAfficher;
} }
/** /**
* Retourne une date égale à la date passée en paramètre plus le nb jours indiqués * Retourne une date égale à la date passée en paramètre plus le nb jours indiqués
* @param dateInit date initiale, format Calendar * @param dateInit date initiale, format Calendar
* @param days nb jours à ajouter * @param days nb jours à ajouter
* @return dateInit + days, format Calendar * @return dateInit + days, format Calendar
*/ */
public static Calendar addDays(Calendar dateInit, int days) { public static Calendar addDays(Calendar dateInit, int days) {
Calendar leCal = getClone(dateInit); Calendar leCal = getClone(dateInit);
leCal.setTime(dateInit.getTime()); leCal.setTime(dateInit.getTime());
leCal.add(Calendar.DAY_OF_MONTH, days); leCal.add(Calendar.DAY_OF_MONTH, days);
return leCal; return leCal;
} }
/** /**
* Retourne une instance de Calendar correspondant à la date au format SQl * Retourne une instance de Calendar correspondant à la date au format SQl
* passée en paramètre * passée en paramètre
* @param sqlDate : date au format java.sql.Date * @param sqlDate : date au format java.sql.Date
* @return instance de Calendar * @return instance de Calendar
*/ */
public static Calendar getCalDate(java.sql.Date sqlDate) { public static Calendar getCalDate(java.sql.Date sqlDate) {
cal.setTime(new java.util.Date(sqlDate.getTime())); cal.setTime(new java.util.Date(sqlDate.getTime()));
return cal; return cal;
} }
/** /**
* Retourne une date sql à partir d'une instance de Calendar * Retourne une date sql à partir d'une instance de Calendar
* @param unCal * @param unCal
* @return date sql * @return date sql
*/ */
public static java.sql.Date getSQLDate(Calendar unCal) { public static java.sql.Date getSQLDate(Calendar unCal) {
return new java.sql.Date(unCal.getTimeInMillis()); return new java.sql.Date(unCal.getTimeInMillis());
} }
/** /**
* Retourne une instance de Calendar correspondant à la date * Retourne une instance de Calendar correspondant à la date
* passée en paramètre * passée en paramètre
* @param utilDate : date au format java.util.Date * @param utilDate : date au format java.util.Date
* @return instance de Calendar * @return instance de Calendar
*/ */
public static Calendar getCalDate(java.util.Date utilDate) { public static Calendar getCalDate(java.util.Date utilDate) {
cal.setTime(utilDate); cal.setTime(utilDate);
return cal; return cal;
} }
/** /**
* Retourne la date du jour au format SQL * Retourne la date du jour au format SQL
* @return Date au format sql * @return Date au format sql
*/ */
public static java.sql.Date getSQLDateDuJour() { public static java.sql.Date getSQLDateDuJour() {
return java.sql.Date.valueOf(java.time.LocalDate.now()); return java.sql.Date.valueOf(java.time.LocalDate.now());
} }
/** /**
* Retourne la date du jour au format Calendar * Retourne la date du jour au format Calendar
* @return Calendar * @return Calendar
*/ */
public static Calendar getDateDuJour() { public static Calendar getDateDuJour() {
Calendar nvCal = new GregorianCalendar(TimeZone.getTimeZone("Europe/Paris")); Calendar nvCal = new GregorianCalendar(TimeZone.getTimeZone("Europe/Paris"));
nvCal.set(Calendar.HOUR_OF_DAY, 0); nvCal.set(Calendar.HOUR_OF_DAY, 0);
nvCal.set(Calendar.MINUTE, 0); nvCal.set(Calendar.MINUTE, 0);
nvCal.set(Calendar.SECOND, 0); nvCal.set(Calendar.SECOND, 0);
nvCal.set(Calendar.MILLISECOND, 0); nvCal.set(Calendar.MILLISECOND, 0);
//System.out.println("Date du jour : " + nvCal.getTime()); //System.out.println("Date du jour : " + nvCal.getTime());
return nvCal; return nvCal;
} }
/** /**
* Permet d'obtenir une autre instance de Calendar identique à celle passée en paramètre * Permet d'obtenir une autre instance de Calendar identique à celle passée en paramètre
* @param c Calendar à cloner * @param c Calendar à cloner
* @return nouvelle instance de Calendar * @return nouvelle instance de Calendar
*/ */
public static Calendar getClone(Calendar c) { public static Calendar getClone(Calendar c) {
Calendar leCal = Calendar.getInstance(); Calendar leCal = Calendar.getInstance();
leCal.setTime(c.getTime()); leCal.setTime(c.getTime());
return leCal; return leCal;
} }
} }

View File

@@ -3,52 +3,121 @@
Created on : 6 déc. 2021, 15:07:45 Created on : 6 déc. 2021, 15:07:45
Author : funcha.ahamadi Author : funcha.ahamadi
--%> --%>
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page contentType="text/html" pageEncoding="UTF-8"%>
<legend> <%@include file= "jspf/debutJSP.jspf" %>
Feuille de gardes <body>
</legend> <%@include file= "jspf/header.jspf" %>
<form action="gardes" method="POST"> <div class="container">
<table class="table"> <section id="contenuAffiche" class="row">
<thead>
<tr>
<th rowspan="2">N° de BIP</th>
<th rowspan="2">Nom Prenom</th> <fieldset class="row mt-1 mb-10">
<c:forEach items='${sessionScope.lesDatesEnString}' var="uneDate" varStatus="status">
<th colspan="2" class="text-center"> ${uneDate}</th> <legend>
</c:forEach> Feuille de gardes
</legend>
</tr> <form action="gardes" method="POST">
<tr> <table class="table">
<c:forEach var="i" begin="0" end="4" step="1"> <thead>
<c:forEach items='${sessionScope.lesPeriodes}' var="unePeriode" varStatus="status"> <tr>
<td class="text-center">${unePeriode}</td> <th rowspan="2">No</th>
</c:forEach> <th rowspan="2">Nom Prenom</th>
</c:forEach> <c:forEach items='${sessionScope.lesDatesEnString}' var="uneDate" varStatus="status">
</tr> <th colspan="4" class="text-center"> ${uneDate}</th>
</thead> </c:forEach>
<tbody>
<c:set var="oldId" value="-1" scope="page"/> </tr>
<tr> <tr>
<c:forEach items='${sessionScope.lesVentilInit}' var="uneVentil" varStatus="status"> <c:forEach var="i" begin="0" end="6" step="1">
<c:set var="newId" value='${uneVentil.getPompier().getId()}' scope="page"/> <c:forEach items='${sessionScope.lesPeriodes}' var="unePeriode" varStatus="status">
<c:if test='${oldId != newId}' var="test" scope="page">
</tr><tr> <td class="text-center">${unePeriode.getCode()}</td>
<td>${uneVentil.getPompier().getId()}</td> </c:forEach>
<td>${uneVentil.getPompier().getNom()} ${uneVentil.getPompier().getPrenom()}</td> </c:forEach>
</tr>
<c:set var="oldId" value='${newId}' scope="page"/> </thead>
</c:if> <tbody>
<c:set var="activite" value='${uneVentil.getActivite()}' scope="page"/>
<td> <c:set var="oldId" value="-1" scope="page"/>
<input readonly type="text" value='${activite}' name="lesActivites"class="ztVentil ${sessionScope.lesCouleurs[activite]}"/> <tr>
</td>
</c:forEach> <c:forEach items='${sessionScope.lesVentilInit}' var="uneVentil" varStatus="status">
</tr> <c:set var="newId" value='${uneVentil.getPompier().getId()}' scope="page"/>
<c:if test='${oldId != newId}' var="test" scope="page">
</tbody> </tr><tr>
<td>${uneVentil.getPompier().getId()}</td>
</table> <td>${uneVentil.getPompier().getNom()} ${uneVentil.getPompier().getPrenom()}</td>
<c:set var="oldId" value='${newId}' scope="page"/>
</c:if>
<c:set var="activite" value='${uneVentil.getDisponibilite()}' scope="page"/>
<c:set var="check" value="" scope="page"/>
<c:if test="${uneVentil.isDeGarde() == true}" var="test" scope="page">
<c:set var="check" value="checked" scope="page"/>
</c:if>
<c:choose>
<c:when test="${sessionScope.lePompierConnecte.getLeStatut().getCode() eq 2}">
<td>
<input readonly type="text" value='${activite}' name="lesActivites" class="ztVentil ${sessionScope.lesCouleurs[activite]}"/>
<input type="checkbox" ${check} name="cbGarde" value="${status.count +1}">
</td>
</c:when>
<c:otherwise>
<td>
<input readonly type="text" value='${activite}' name="lesActivites" class="ztVentil ${sessionScope.lesCouleurs[activite]}"/>
<input type="checkbox" ${check} name="cbGarde" value="${status.count +1}" onclick="return false">
</td>
</c:otherwise>
</c:choose>
</c:forEach>
</tr>
</tbody>
</table>
<div id="legendCouleur">
<span style="background-color: white">Dispo</span>
<span style="background-color: gray">Indispo</span>
<span style="background-color: yellow">Au travail</span>
<span>De garde : ☑</span>
</div>
<div class="text-center">
<button type="submit" value="Valider" class="btn btn-danger"><i class="bi bi-check2"></i> Valider</button>
</div>
</form>
</fieldset>
</section>
</div>
</body>
<script>
var st = (document.getElementById("statut").textContent).trim();
if (st != "chef de centre") {
var couleurs = ["blanc", "gris", "jaune"];
var lesAct = document.getElementsByClassName("ztVentil");
for (var uneAct of lesAct) {
uneAct.onclick = function () {
var act = this.value;
var newAct = (act + 1) % 3;
var coul = couleurs[newAct];
this.classList.remove(couleurs[act]);
this.classList.add(coul);
this.value = newAct;
}
}
}
</script>
</form><!-- comment -->

View File

@@ -126,7 +126,8 @@
value="${lePompier.getCommentaire()}" /> value="${lePompier.getCommentaire()}" />
</div><!-- fin ligne observation --> </div><!-- fin ligne observation -->
</div> <!-- fin observation --> </div> <!-- fin observation -->
<br/>
<div class="danger mt-3">${message} </div> <div class="danger mt-3">${message} </div>
<div class="text-center mt-3"> <div class="text-center mt-3">
@@ -134,10 +135,26 @@
<i class="bi bi-check2"></i> Valider <i class="bi bi-check2"></i> Valider
</button> </button>
</div> </div>
<p><em>* zone obligatoire</em></p> <p><em>* zone obligatoire</em></p>
</section> </section>
<script>
var couleurs = ["blanc", "gris", "jaune"];
var lesAct = document.getElementsByClassName("ztVentil");
for (var uneAct of lesAct) {
uneAct.onclick = function () {
var act = this.value;
var newAct = (act + 1) % 3;
var coul = couleurs[newAct];
this.classList.remove(couleurs[act]);
this.classList.add(coul);
this.value = newAct;
}
}
</script>
</div> <!-- fin div contenant aside et section --> </div> <!-- fin div contenant aside et section -->
</form> </form>

View File

@@ -14,9 +14,12 @@
<c:otherwise> <c:otherwise>
<h4>Bienvenue ${sessionScope.lePompierConnecte.getPrenom()} <h4>Bienvenue ${sessionScope.lePompierConnecte.getPrenom()}
${sessionScope.lePompierConnecte.getNom()} ( ${sessionScope.lePompierConnecte.getNom()} (
${sessionScope.lePompierConnecte.getLeStatut().getValeur()}) <span id="statut">
${sessionScope.lePompierConnecte.getLeStatut().getValeur()}
</span>
)
</h4> </h4>
<button type="button" class="btn btn-warning fs-4" title="Déconnexion"> <button type="button" class="btn btn-warning fs-4" title="Déconnexion">
<a href="authentification"> <a href="authentification">
<i class="bi bi-box-arrow-right heading" width="32" height="32" fill="currentColor"></i> Déconnexion <i class="bi bi-box-arrow-right heading" width="32" height="32" fill="currentColor"></i> Déconnexion
@@ -89,10 +92,20 @@
</c:choose> </c:choose>
</li> </li>
<li class="nav-item">
<a class="nav-link" href="gardes">Gardes</a>
</li>
</ul> </ul>
</div> </div>
</nav> </nav>
</div> <!-- fin id=identie --> </div> <!-- fin id=identie -->
</div> <!-- fin class=container --> </div> <!-- fin class=container -->
</header> </header>

View File

@@ -20,6 +20,11 @@
<servlet-name>feuilleGardes</servlet-name> <servlet-name>feuilleGardes</servlet-name>
<servlet-class>servlet.GardesServlet</servlet-class> <servlet-class>servlet.GardesServlet</servlet-class>
</servlet> </servlet>
<servlet>
<servlet-name>GPServlet</servlet-name>
<servlet-class>servlet.GPServlet</servlet-class>
</servlet>
<servlet-mapping> <servlet-mapping>
<servlet-name>AuthentifServlet</servlet-name> <servlet-name>AuthentifServlet</servlet-name>
<url-pattern>/authentification</url-pattern> <url-pattern>/authentification</url-pattern>
@@ -32,6 +37,11 @@
<servlet-name>feuilleGardes</servlet-name> <servlet-name>feuilleGardes</servlet-name>
<url-pattern>/gardes</url-pattern> <url-pattern>/gardes</url-pattern>
</servlet-mapping> </servlet-mapping>
<servlet-mapping>
<servlet-name>GPServlet</servlet-name>
<url-pattern>/PompierGarde</url-pattern>
</servlet-mapping>
<session-config> <session-config>
<session-timeout> <session-timeout>
30 30

View File

@@ -18,7 +18,7 @@ body {
} }
fieldset { fieldset {
border-radius: 5px; border-radius: 5px;
padding: 5px; padding: 3px;
border: 1px solid #DB0005; border: 1px solid #DB0005;
width: 100%; width: 100%;
} }
@@ -84,3 +84,31 @@ aside, #btAfficherPompier {
select[readonly] { select[readonly] {
pointer-events: none; pointer-events: none;
} }
.blanc {
background-color: white;
color: white;
border-color : white;
}
.gris {
background-color: gray;
color: gray;
border-color: gray;
}
.jaune {
background-color: yellow;
color: yellow;
border-color: yellow;
}
.ztVentil {
height: 20px;
width : 18px;
border-color: black;
}
.ztVentil:hover {
border-color: grey;
}