Skip to content
Commits on Source (2)
...@@ -13,6 +13,27 @@ ...@@ -13,6 +13,27 @@
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.3.3</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>2.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>jakarta.platform</groupId> <groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId> <artifactId>jakarta.jakartaee-api</artifactId>
......
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Other/File.java to edit this template
*/
package controllers;
import dao.CollaborateurDao;
import entities.Collaborateur;
import forms.CreerCollaborateurFormChecker;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author cberge
*/
@WebServlet("/creer_collaborateur")
@SuppressWarnings("serial")
public class CreerCollaborateur extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher ("/WEB-INF/jsp/creerCollaborateur.jsp"). forward(req, resp);
}
@Override
protected void doPost (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding(StandardCharsets.UTF_8.toString());
CreerCollaborateurFormChecker nv = new CreerCollaborateurFormChecker(req);
Collaborateur collaborateur = nv.checkForm();
if (nv.getErrors().isEmpty()){
CollaborateurDao collaborateurDao = new CollaborateurDao();
// Appel de la méthode create du DOA
// Si une erreur dans l'insert alors une SQLException est levé
// On l'intercepte dans le catch et on affiche un msg d'erreur à l'utilisateur
try {
collaborateurDao.create(collaborateur);
Collaborateur collab = collaborateurDao.read(collaborateur.getId());
req.setAttribute("collaborateur", collab);
req.setAttribute("message", "Votre collaborateur est bien enregistré");
req.getRequestDispatcher("/WEB-INF/jsp/collaborateur.jsp").forward(req, resp);
} catch (SQLException ex) {
Logger.getLogger(CreerCollaborateur.class.getName()).log(Level.SEVERE, null, ex);
req.setAttribute("errorMsg", "Votre formulaire comporte des erreurs");
req.getRequestDispatcher("/WEB-INF/jsp/creerCollaborateur.jsp/").forward(req, resp);
}
}else{
req.setAttribute("errorMsg", "Votre formulaire comporte des erreurs");
req.getRequestDispatcher("/WEB-INF/jsp/creerCollaborateur.jsp").forward(req, resp);
}
}
}
\ No newline at end of file
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Other/File.java to edit this template
*/
package controllers;
import dao.CollaborateurDao;
import entities.Collaborateur;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
*
* @author cberge
*/
@WebServlet("/collaborateur")
public class FicheCollaborateur extends HttpServlet {
@Override
protected void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//req.setCharacterEncoding(StandardCharsets.UTF_8.toString());
// Récupérer l'identifiant du collaborateur depuis la requête
int collaborateurId = 3;
CollaborateurDao collaborateurDao = new CollaborateurDao ();
// Lire les informations du collaborateur depuis la base de données
Collaborateur collaborateur = collaborateurDao.read(collaborateurId);
// Transmettre les informations du collaborateur à la page JSP
req.setAttribute("collaborateur", collaborateur);
req.getRequestDispatcher("/WEB-INF/jsp/collaborateur.jsp").forward(req, resp);
}
}
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Other/File.java to edit this template
*/
package dao;
import entities.Collaborateur;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
/**
*
* @author cberge
*/
public class CollaborateurDao extends Dao<Collaborateur> {
public CollaborateurDao() {
super("Collaborateur");
}
@Override
public Collaborateur read(Integer id) {
Collaborateur obj = null;
String sql = "SELECT * FROM collaborateur WHERE id_collaborateur=?";
PreparedStatement pstmt;
try {
pstmt = connexion.prepareStatement(sql);
pstmt.setInt(1, id);
ResultSet rs = pstmt.executeQuery();
if (rs.first()) {
obj = new Collaborateur();
obj.setId(rs.getInt("id_collaborateur"));
obj.setMatricule(rs.getInt("matricule"));
obj.setNom(rs.getString("nom"));
obj.setPrenom(rs.getString("prenom"));
obj.setDate_de_naissance(rs.getDate("date_de_naissance").toLocalDate());
obj.setNumero_voie(rs.getString("numero_voie"));
obj.setAdresse(rs.getString("adresse"));
obj.setCode_postal(rs.getInt("code_postal"));
obj.setVille(rs.getString("ville"));
obj.setTelephone_personnel(rs.getString("telephone_personnel"));
obj.setStatut(rs.getString("statut"));
obj.setCategorie(rs.getString("categorie"));
obj.setGenre(rs.getString("genre"));
obj.setRqth(rs.getString("rqth"));
obj.setMetier(rs.getString("metier"));
}
} catch (SQLException ex) {
System.err.println("Erreur lors de la lecture : " + ex.getMessage());
}
return obj;
}
@Override
protected Collaborateur createObject(ResultSet rs) throws SQLException {
Collaborateur obj = new Collaborateur();
obj.setId(rs.getInt("id_" + table));
obj.setMatricule(rs.getInt("matricule"));
obj.setNom(rs.getString("nom"));
obj.setPrenom(rs.getString("prenom"));
obj.setDate_de_naissance(rs.getDate("date_de_naissance").toLocalDate());
obj.setNumero_voie(rs.getString("numero_voie"));
obj.setAdresse(rs.getString("adresse"));
obj.setCode_postal(rs.getInt("code_postal"));
obj.setVille(rs.getString("ville"));
obj.setTelephone_personnel(rs.getString("telephone_personnel"));
obj.setStatut(rs.getString("statut"));
obj.setCategorie(rs.getString("categorie"));
obj.setGenre(rs.getString("genre"));
obj.setRqth(rs.getString("rqth"));
obj.setMetier(rs.getString("metier"));
return obj;
}
@Override
public void create(Collaborateur obj) throws SQLException{
String sql = "INSERT INTO collaborateur (matricule, nom, prenom, date_de_naissance, numero_voie, adresse, code_postal, ville, telephone_personnel, statut, categorie, genre, rqth, metier)"
+ "VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try {
PreparedStatement pstmt = connexion.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
pstmt.setInt(1, obj.getMatricule());
pstmt.setString(2, obj.getNom());
pstmt.setString(3, obj.getPrenom());
LocalDate localDate = obj.getDate_de_naissance();
if (localDate != null) {
pstmt.setDate(4, java.sql.Date.valueOf(localDate));
} else {
pstmt.setDate(4, null);
}
pstmt.setString(5, obj.getNumero_voie());
pstmt.setString(6, obj.getAdresse());
pstmt.setInt(7, obj.getCode_postal());
pstmt.setString(8, obj.getVille());
pstmt.setString(9, obj.getTelephone_personnel());
pstmt.setString(10, obj.getStatut());
pstmt.setString(11, obj.getCategorie());
pstmt.setString(12, obj.getGenre());
pstmt.setString(13, obj.getRqth());
pstmt.setString(14, obj.getMetier());
int nbLines = pstmt.executeUpdate();
if (nbLines == 1) {
ResultSet autoGeneratedKeys = pstmt.getGeneratedKeys();
autoGeneratedKeys.first();
int id = autoGeneratedKeys.getInt(1);
obj.setId(id);
}
} catch (SQLException ex) {
System.err.println("Erreur lors de l'insertion : " + ex.getMessage());
throw ex;
}
}
@Override
public void update (Collaborateur obj){
String sql = "UPDATE collaborateur SET matricule=?, nom=?, prenom=?, date_de_naissance=?, numero_voie=?, adresse=?, code_postal=?, ville=?, telephone_personnel=?, statut=?, categorie=?, genre=?, rqth=?, metier=?"
+ "WHERE id_collaborateur=?";
try{
PreparedStatement pstmt = connexion.prepareStatement(sql);
pstmt.setInt(1, obj.getMatricule());
pstmt.setString(2, obj.getNom());
pstmt.setString(3, obj.getPrenom());
LocalDate localDate = obj.getDate_de_naissance();
if (localDate != null) {
pstmt.setDate(4, java.sql.Date.valueOf(localDate));
} else {
pstmt.setDate(4, null);
}
pstmt.setString(5, obj.getNumero_voie());
pstmt.setString(6, obj.getAdresse());
pstmt.setInt(7, obj.getCode_postal());
pstmt.setString(8, obj.getVille());
pstmt.setString(9, obj.getTelephone_personnel());
pstmt.setString(10, obj.getStatut());
pstmt.setString(11, obj.getCategorie());
pstmt.setString(12, obj.getGenre());
pstmt.setString(13, obj.getRqth());
pstmt.setString(14, obj.getMetier());
pstmt.executeUpdate();
}catch (SQLException ex){
System.out.println("Erreur lors de l'update : " + ex.getMessage());
}
}
}
...@@ -30,7 +30,17 @@ public abstract class Dao<T extends Identifiable> { ...@@ -30,7 +30,17 @@ public abstract class Dao<T extends Identifiable> {
protected abstract T createObject (ResultSet rs) throws SQLException; protected abstract T createObject (ResultSet rs) throws SQLException;
protected abstract void create(T obj)throws SQLException;
protected abstract void update(T obj);
public void save (T obj) throws SQLException{
if (obj.getId() == null) {
create(obj);
}else{
update(obj);
}
}
public T read (Integer id){ public T read (Integer id){
T obj = null; T obj = null;
String sql = "SELECT * FROM " + table + "WHERE id_" + table + "=?"; String sql = "SELECT * FROM " + table + "WHERE id_" + table + "=?";
......
...@@ -9,6 +9,16 @@ package dao; ...@@ -9,6 +9,16 @@ package dao;
* @author cberge * @author cberge
*/ */
public class DaoFactory { public class DaoFactory {
private static CollaborateurDao collaborateurDao;
private DaoFactory(){
}
public static CollaborateurDao getCollaborateurDao(){
if (collaborateurDao == null) {
collaborateurDao = new CollaborateurDao();
}
return collaborateurDao;
}
} }
/* +
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Other/File.java to edit this template
*/
package dao;
import entities.Collaborateur;
/**
*
* @author cberge
*/
public class TestCollaborateur {
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
// TODO code application logic here
CollaborateurDao collDao = new CollaborateurDao();
Collaborateur collab = collDao.read(1);
System.out.println("collab : " + collab.getId() + " " + collab.getMatricule() + " " + collab.getNom() + " " + collab.getPrenom() + " " + collab.getDate_de_naissance() + " " + collab.getNumero_voie() + " "
+ collab.getAdresse() + " " + collab.getCode_postal() + " " + collab.getVille() + " " + collab.getTelephone_personnel() + " " + collab.getStatut() + " " + collab.getCategorie() + " " + collab.getGenre() + " "
+ collab.getRqth() + " " + collab.getMetier());
}
}
package entities;
import java.io.Serializable;
import java.util.Objects;
import java.time.LocalDate;
/**
*
* @author cberge
*/
@SuppressWarnings("serial")
public class Collaborateur implements Identifiable, Serializable {
private Integer id;
private Integer matricule;
private String nom;
private String prenom;
private LocalDate date_de_naissance;
private String numero_voie;
private String adresse;
private Integer code_postal;
private String ville;
private String telephone_personnel;
private String statut;
private String categorie;
private String genre;
private String rqth;
private String metier;
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Collaborateur{");
sb.append("id=").append(id);
sb.append(", matricule=").append(matricule);
sb.append(", nom=").append(nom);
sb.append(", prenom=").append(prenom);
sb.append(", date_de_naissance=").append(date_de_naissance);
sb.append(", numero_voie=").append(numero_voie);
sb.append(", adresse=").append(adresse);
sb.append(", code_postal=").append(code_postal);
sb.append(", ville=").append(ville);
sb.append(", telephone_personnel=").append(telephone_personnel);
sb.append(", statut=").append(statut);
sb.append(", categorie=").append(categorie);
sb.append(", genre=").append(genre);
sb.append(", rqth=").append(rqth);
sb.append(", metier=").append(metier);
sb.append('}');
return sb.toString();
}
@Override
public int hashCode() {
int hash = 7;
hash = 89 * hash + Objects.hashCode(this.id);
hash = 89 * hash + Objects.hashCode(this.matricule);
hash = 89 * hash + Objects.hashCode(this.nom);
hash = 89 * hash + Objects.hashCode(this.prenom);
hash = 89 * hash + Objects.hashCode(this.date_de_naissance);
hash = 89 * hash + Objects.hashCode(this.numero_voie);
hash = 89 * hash + Objects.hashCode(this.adresse);
hash = 89 * hash + Objects.hashCode(this.code_postal);
hash = 89 * hash + Objects.hashCode(this.ville);
hash = 89 * hash + Objects.hashCode(this.telephone_personnel);
hash = 89 * hash + Objects.hashCode(this.statut);
hash = 89 * hash + Objects.hashCode(this.categorie);
hash = 89 * hash + Objects.hashCode(this.genre);
hash = 89 * hash + Objects.hashCode(this.rqth);
hash = 89 * hash + Objects.hashCode(this.metier);
return hash;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Collaborateur other = (Collaborateur) obj;
if (!Objects.equals(this.nom, other.nom)) {
return false;
}
if (!Objects.equals(this.prenom, other.prenom)) {
return false;
}
if (!Objects.equals(this.adresse, other.adresse)) {
return false;
}
if (!Objects.equals(this.ville, other.ville)) {
return false;
}
if (!Objects.equals(this.statut, other.statut)) {
return false;
}
if (!Objects.equals(this.categorie, other.categorie)) {
return false;
}
if (!Objects.equals(this.genre, other.genre)) {
return false;
}
if (!Objects.equals(this.rqth, other.rqth)) {
return false;
}
if (!Objects.equals(this.metier, other.metier)) {
return false;
}
if (!Objects.equals(this.id, other.id)) {
return false;
}
if (!Objects.equals(this.matricule, other.matricule)) {
return false;
}
if (!Objects.equals(this.date_de_naissance, other.date_de_naissance)) {
return false;
}
if (!Objects.equals(this.numero_voie, other.numero_voie)) {
return false;
}
if (!Objects.equals(this.code_postal, other.code_postal)) {
return false;
}
return Objects.equals(this.telephone_personnel, other.telephone_personnel);
}
@Override
public Integer getId() {
return id;
}
@Override
public void setId(Integer id) {
this.id = id;
}
public Integer getMatricule() {
return matricule;
}
public void setMatricule(Integer matricule) {
this.matricule = matricule;
}
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 LocalDate getDate_de_naissance() {
return date_de_naissance;
}
public void setDate_de_naissance(LocalDate date_de_naissance) {
this.date_de_naissance = date_de_naissance;
}
public String getNumero_voie() {
return numero_voie;
}
public void setNumero_voie(String numero_voie) {
this.numero_voie = numero_voie;
}
public String getAdresse() {
return adresse;
}
public void setAdresse(String adresse) {
this.adresse = adresse;
}
public Integer getCode_postal() {
return code_postal;
}
public void setCode_postal(Integer code_postal) {
this.code_postal = code_postal;
}
public String getVille() {
return ville;
}
public void setVille(String ville) {
this.ville = ville;
}
public String getTelephone_personnel() {
return telephone_personnel;
}
public void setTelephone_personnel(String telephone_personnel) {
this.telephone_personnel = telephone_personnel;
}
public String getStatut() {
return statut;
}
public void setStatut(String statut) {
this.statut = statut;
}
public String getCategorie() {
return categorie;
}
public void setCategorie(String categorie) {
this.categorie = categorie;
}
public String getGenre() {
return genre;
}
public void setGenre(String genre) {
this.genre = genre;
}
public String getRqth() {
return rqth;
}
public void setRqth(String rqth) {
this.rqth = rqth;
}
public String getMetier() {
return metier;
}
public void setMetier(String metier) {
this.metier = metier;
}
}
package forms;
import dao.DaoFactory;
import entities.Collaborateur;
import forms.FormChecker;
import jakarta.servlet.http.HttpServletRequest;
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class CreerCollaborateurFormChecker extends FormChecker<Collaborateur> {
public CreerCollaborateurFormChecker(HttpServletRequest request) {
super(request);
}
@Override
public Collaborateur checkForm() {
Collaborateur obj = new Collaborateur();
String matriculeStr = request.getParameter("matricule");
String nom = request.getParameter("nom");
String prenom = request.getParameter("prenom");
String dateDeNaissanceStr = request.getParameter("date_de_naissance");
String numero_voie = request.getParameter("numero_voie");
String adresse = request.getParameter("adresse");
String codePostalStr = request.getParameter("code_postal");
String ville = request.getParameter("ville");
String telephone_personnel = request.getParameter("telephone_personnel");
String statut = request.getParameter("statut");
String categorie = request.getParameter("categorie");
String genre = request.getParameter("genre");
String rqth = request.getParameter("rqth");
String metier = request.getParameter("metier");
// Convertir les champs Integer
try {
Integer matricule = Integer.parseInt(matriculeStr);
obj.setMatricule(matricule);
} catch (NumberFormatException e) {
System.err.println("Erreur de conversion pour le champ matricule : " + e.getMessage());
}
try {
Integer code_postal = Integer.parseInt(codePostalStr);
obj.setCode_postal(code_postal);
} catch (NumberFormatException e) {
System.err.println("Erreur de conversion pour le champ code_postal : " + e.getMessage());
}
/* Convertir les champs Date
String dateDeNaissanceStr = getParameter("date_de_naissance");
Date date_de_naissance = null;
if (dateDeNaissanceStr != null && !dateDeNaissanceStr.isEmpty()) {
try {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
date_de_naissance = formatter.parse(dateDeNaissanceStr);
obj.setDate_de_naissance(date_de_naissance);
} catch (ParseException e) {
System.err.println("Erreur de conversion pour le champ date_de_naissance : " + e.getMessage());
}
} else {
System.err.println("Le champ date_de_naissance est vide ou non valide.");
}*/
// Convertir les champs Date
LocalDate date_de_naissance = null;
if (dateDeNaissanceStr != null && !dateDeNaissanceStr.isEmpty()) {
try {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
date_de_naissance = LocalDate.parse(dateDeNaissanceStr, formatter);
obj.setDate_de_naissance(date_de_naissance);
} catch (DateTimeParseException e) {
setError("date_de_naissance", "Erreur de conversion pour le champ date_de_naissance : " + e.getMessage());
}
} else {
setError("date_de_naissance", "Le champ date_de_naissance est vide ou non valide.");
}
// Traiter les autres champs String
obj.setNom(nom);
obj.setPrenom(prenom);
obj.setNumero_voie(numero_voie);
obj.setAdresse(adresse);
obj.setVille(ville);
obj.setTelephone_personnel(telephone_personnel);
obj.setStatut(statut);
obj.setCategorie(categorie);
obj.setGenre(genre);
obj.setRqth(rqth);
obj.setMetier(metier);
if(errors.isEmpty()){
//DaoFactory.getCollaborateurDao().save(obj);
}
request.setAttribute("bean", obj);
return obj;
}
}
\ No newline at end of file
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Other/File.java to edit this template
*/
package forms;
import jakarta.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author cberge
*/
public abstract class FormChecker <T>{
protected Map<String, String> errors;
protected HttpServletRequest request;
public FormChecker(HttpServletRequest request) {
this.errors = new HashMap<>();
this.request = request;
}
public abstract T checkForm();
public Map<String, String> getErrors() {
return errors;
}
public boolean hasErrors() {
return !errors.isEmpty();
}
protected void setError(String key, String value) {
this.errors.put(key, value);
}
protected String getParameter(String key) {
return request.getParameter(key)
== null ? "" : request.getParameter(key);
}
}
...@@ -8,4 +8,11 @@ ...@@ -8,4 +8,11 @@
30 30
</session-timeout> </session-timeout>
</session-config> </session-config>
<!--<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
</jsp-config>-->
</web-app> </web-app>
<!DOCTYPE html>
<html>
<head>
<title>Start Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>