Grosse MàJ
This commit is contained in:
@ -0,0 +1 @@
|
||||
classes
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* article.java
|
||||
*
|
||||
* Created on 18 janvier 2008, 14:26
|
||||
*/
|
||||
|
||||
package com.articles;
|
||||
|
||||
/**
|
||||
* Article de la base de donn<6E>e, avec la quantit<69> en plus
|
||||
* @author 3fvorillion
|
||||
*/
|
||||
public class Article
|
||||
{
|
||||
private String ref = "";
|
||||
private String categ = "";
|
||||
private String marque = "";
|
||||
private String modele = "";
|
||||
private double prix = 0;
|
||||
private String photo = "";
|
||||
private String description = "";
|
||||
private int quantite = 0;
|
||||
|
||||
public String getRef()
|
||||
{
|
||||
return this.ref;
|
||||
}
|
||||
public String getCateg()
|
||||
{
|
||||
return this.categ;
|
||||
}
|
||||
public String getMarque()
|
||||
{
|
||||
return this.marque;
|
||||
}
|
||||
public String getModele()
|
||||
{
|
||||
return this.modele;
|
||||
}
|
||||
public double getPrix()
|
||||
{
|
||||
return this.prix;
|
||||
}
|
||||
public String getPhoto()
|
||||
{
|
||||
return this.photo;
|
||||
}
|
||||
public String getDescription()
|
||||
{
|
||||
return this.description;
|
||||
}
|
||||
|
||||
public void setRef(String ref)
|
||||
{
|
||||
this.ref = ref;
|
||||
}
|
||||
public void setCateg(String categ)
|
||||
{
|
||||
this.categ = categ;
|
||||
}
|
||||
public void setMarque(String marque)
|
||||
{
|
||||
this.marque = marque;
|
||||
}
|
||||
public void setModele(String modele)
|
||||
{
|
||||
this.modele = modele;
|
||||
}
|
||||
public void setPrix(double prix)
|
||||
{
|
||||
this.prix = prix;
|
||||
}
|
||||
public void setPhoto(String photo)
|
||||
{
|
||||
this.photo = photo;
|
||||
}
|
||||
public void setDescription(String description)
|
||||
{
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public int getQuantite()
|
||||
{
|
||||
return this.quantite;
|
||||
}
|
||||
public void setQuantite(int quantite)
|
||||
{
|
||||
this.quantite = quantite;
|
||||
}
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
package com.articles;
|
||||
|
||||
/**
|
||||
* Cat<61>gorie de la base de donn<6E>e
|
||||
* @author 3fvorillion
|
||||
*/
|
||||
public class Categorie
|
||||
{
|
||||
private int id = 0;
|
||||
private String cat = "";
|
||||
|
||||
public Categorie()
|
||||
{
|
||||
;
|
||||
}
|
||||
public Categorie(int id, String cat)
|
||||
{
|
||||
this.id = id;
|
||||
this.cat = cat;
|
||||
}
|
||||
|
||||
public int getId()
|
||||
{
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void setId(int id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getCat()
|
||||
{
|
||||
return this.cat;
|
||||
}
|
||||
|
||||
public void setCat(String cat)
|
||||
{
|
||||
this.cat = cat;
|
||||
}
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package com.articles;
|
||||
|
||||
/**
|
||||
* Client qui ach<63>te des articles
|
||||
* @author 3fvorillion
|
||||
*/
|
||||
public class Client
|
||||
{
|
||||
private String nom = "";
|
||||
private String prenom = "";
|
||||
private String adresse = "";
|
||||
private String codePost = "";
|
||||
private String ville = "";
|
||||
|
||||
public String getNom()
|
||||
{
|
||||
return this.nom;
|
||||
}
|
||||
|
||||
public void setNom(String nom)
|
||||
{
|
||||
this.nom = nom;
|
||||
}
|
||||
|
||||
public String getPrenom()
|
||||
{
|
||||
return this.prenom;
|
||||
}
|
||||
|
||||
public void setPrenom(String prenom)
|
||||
{
|
||||
this.prenom = prenom;
|
||||
}
|
||||
|
||||
public String getAdresse()
|
||||
{
|
||||
return this.adresse;
|
||||
}
|
||||
|
||||
public void setAdresse(String adresse)
|
||||
{
|
||||
this.adresse = adresse;
|
||||
}
|
||||
|
||||
public String getCodePost()
|
||||
{
|
||||
return this.codePost;
|
||||
}
|
||||
|
||||
public void setCodePost(String codePost)
|
||||
{
|
||||
this.codePost = codePost;
|
||||
}
|
||||
|
||||
public String getVille()
|
||||
{
|
||||
return this.ville;
|
||||
}
|
||||
|
||||
public void setVille(String ville)
|
||||
{
|
||||
this.ville = ville;
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
package com.articles;
|
||||
|
||||
/**
|
||||
* Panier du client. Il contient des articles.
|
||||
* @author 3fvorillion
|
||||
*/
|
||||
public class Panier
|
||||
{
|
||||
private double prixTotal = 0;
|
||||
|
||||
public Panier()
|
||||
{
|
||||
;
|
||||
}
|
||||
public Panier(double prixTotal)
|
||||
{
|
||||
this.prixTotal = prixTotal;
|
||||
}
|
||||
|
||||
public double getPrixTotal()
|
||||
{
|
||||
return this.prixTotal;
|
||||
}
|
||||
|
||||
public void setPrixTotal(double prixTotal)
|
||||
{
|
||||
this.prixTotal = prixTotal;
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.gestionnaires;
|
||||
|
||||
/**
|
||||
* Beans permettant d'afficher les erreurs dans la page erreurs.jsp
|
||||
* @author 3fvorillion
|
||||
*/
|
||||
public class Erreur
|
||||
{
|
||||
private String message = "";
|
||||
|
||||
public Erreur()
|
||||
{}
|
||||
public Erreur(String message)
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return this.message;
|
||||
}
|
||||
|
||||
public void setMessage(String message)
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
}
|
@ -0,0 +1,522 @@
|
||||
package com.gestionnaires;
|
||||
|
||||
/*
|
||||
* Remarque : Type de caract<63>res utilis<69>s dans ce fichier : UTF-8
|
||||
*/
|
||||
|
||||
//JDBC
|
||||
import java.sql.*;
|
||||
import java.util.Vector;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Op<4F>rations possibles avec GestionConnexion.
|
||||
* @author 3fvorillion
|
||||
*/
|
||||
enum OperationBDD
|
||||
{
|
||||
/**
|
||||
* opération de sélection .
|
||||
*/
|
||||
OP_BDD_SELECTION,
|
||||
/**
|
||||
* opération de création de table.
|
||||
*/
|
||||
OP_BDD_CREER_TABLE,
|
||||
/**
|
||||
* opération de suppression de table.
|
||||
*/
|
||||
OP_BDD_SUPPR_TABLE
|
||||
}
|
||||
|
||||
/**
|
||||
* Gestionnaire d'une connexion à une base de données.
|
||||
* @author 3fvorillion
|
||||
*/
|
||||
public class GestionConnexion
|
||||
{
|
||||
/*
|
||||
* VARIABLES
|
||||
*/
|
||||
// param<61>tres
|
||||
private ParametresConnexion paramsConn;
|
||||
|
||||
// connexion
|
||||
private Connection connection = null;
|
||||
private Statement statement = null;
|
||||
|
||||
// requ<71>te SQL
|
||||
private String requeteSQL = "";
|
||||
private ResultSet resultSet = null;
|
||||
|
||||
// erreurs - anomalies
|
||||
private Vector<String> vs_erreurs = null;
|
||||
private Vector<String> vs_anomalies = null;
|
||||
|
||||
|
||||
/*
|
||||
* CONSTRUCTEUR
|
||||
*/
|
||||
/**
|
||||
* Constructeur par défaut.<br>
|
||||
* Instancie le gestionnaire d'une connexion à une base de données.
|
||||
* @exception ClassNotFoundException La classe n'a pas été trouvée
|
||||
*/
|
||||
public GestionConnexion()
|
||||
throws ClassNotFoundException, Exception
|
||||
{
|
||||
/*
|
||||
* Init les autres variables
|
||||
*/
|
||||
this.statement = null;
|
||||
this.resultSet = null;
|
||||
this.requeteSQL = "";
|
||||
|
||||
this.paramsConn = new ParametresConnexion();
|
||||
|
||||
//init la gestion des erreurs - anomalies
|
||||
this.vs_erreurs = new Vector<String>();
|
||||
this.vs_anomalies = new Vector<String>();
|
||||
|
||||
try
|
||||
{
|
||||
// R<>cup<75>ration du driver
|
||||
Class.forName(ParametresConnexion.CLASSE).newInstance();
|
||||
}
|
||||
catch (ClassNotFoundException ex)
|
||||
{
|
||||
//remonte l'exception
|
||||
throw new ClassNotFoundException("La classe '"+ParametresConnexion.CLASSE+"' n'a pas <20>t<EFBFBD> trouv<75>e.");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//remonte l'exception
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* METHODES D'INSTANCES
|
||||
*/
|
||||
/**
|
||||
* Ouvre une connexion avec les paramètres spécifiés.
|
||||
* @param params Objet contenant les paramètres à appliquer pour la connexion.
|
||||
*/
|
||||
public void ouvrir(ParametresConnexion params)
|
||||
{
|
||||
//V<>rifie le param<61>tre
|
||||
if (params == null)
|
||||
throw new NullPointerException();
|
||||
|
||||
//Copie les param<61>tres
|
||||
this.paramsConn.CopierDepuis(params);
|
||||
|
||||
//Appelle la m<>thode sans param<61>tres
|
||||
this.ouvrir();
|
||||
}
|
||||
/**
|
||||
* Ouvre une connexion avec les paramètres déjà chargés.<br>
|
||||
* Note : si aucun paramètre n'a été chargé, utilise les paramètres de connexion par défaut (cf classe ParametresConnexion).
|
||||
*/
|
||||
public void ouvrir()
|
||||
{
|
||||
try
|
||||
{
|
||||
// ferme la conexion pr<70>c<EFBFBD>dente
|
||||
this.fermerConnexion();
|
||||
|
||||
// init la nouvelle connexion
|
||||
this.connection = DriverManager.getConnection(this.paramsConn.Url,
|
||||
this.paramsConn.Utilisateur, this.paramsConn.Pwd);
|
||||
|
||||
this.traiterWarning(this.connection.getWarnings());
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
this.traiterSQLException(ex);
|
||||
|
||||
this.fermerConnexion();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Donne l'état de la connexion en cours.
|
||||
* @return true si la connexion est ouverte; false si fermée.
|
||||
*/
|
||||
public boolean estOuverte()
|
||||
{
|
||||
boolean bOuverte = false;
|
||||
|
||||
try
|
||||
{
|
||||
if (this.connection != null)
|
||||
bOuverte = !this.connection.isClosed();
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
this.traiterSQLException(ex);
|
||||
}
|
||||
|
||||
return bOuverte;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ferme les ressources utilisées par la requête:<br>
|
||||
* - ferme le ResultSet et le Statement;<br>
|
||||
* - vide le contenu de la requête.
|
||||
*/
|
||||
public void fermerRessourcesRequete()
|
||||
{
|
||||
try
|
||||
{
|
||||
// Ferme le resultSet
|
||||
if (this.resultSet != null)
|
||||
{
|
||||
this.resultSet.close();
|
||||
this.resultSet = null;
|
||||
}
|
||||
|
||||
// Ferme le statement
|
||||
if (this.statement != null)
|
||||
{
|
||||
this.statement.close();
|
||||
this.statement = null;
|
||||
}
|
||||
|
||||
// Vide la requ<71>te
|
||||
this.requeteSQL = "";
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
this.traiterSQLException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ferme la connexion et libère les autres ressources qui ont pu être utilisées.
|
||||
*/
|
||||
public void fermerConnexion()
|
||||
{
|
||||
try
|
||||
{
|
||||
// Ferme le statement
|
||||
this.fermerRessourcesRequete();
|
||||
|
||||
// Ferme la connexion
|
||||
if (this.connection != null)
|
||||
{
|
||||
this.connection.close();
|
||||
this.connection = null;
|
||||
}
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
this.traiterSQLException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lance la requête SQL de sélection spécifiée.
|
||||
* @param query Requête SQL de type SELECT à exécuter.
|
||||
* @return true si la requête a réussie; false sinon.
|
||||
*/
|
||||
public boolean lancerRequeteSelection(String query)
|
||||
{
|
||||
boolean res = true;
|
||||
|
||||
try
|
||||
{
|
||||
// verifie la connexion
|
||||
if (this.connection != null)
|
||||
{
|
||||
// lib<69>re les ressources de la pr<70>c<EFBFBD>dente requ<71>te
|
||||
this.fermerRessourcesRequete();
|
||||
|
||||
// prepare la requete
|
||||
this.statement = this.connection.createStatement();
|
||||
this.traiterWarning(this.statement.getWarnings());
|
||||
|
||||
// emet la requete
|
||||
this.resultSet = this.statement.executeQuery(query);
|
||||
this.traiterWarning(this.resultSet.getWarnings());
|
||||
|
||||
// si on est arriv<69> jusqu'ici, c'est qu'il n'y a pas eu de lev<65>e d'exception
|
||||
// =>actualise la requ<71>te
|
||||
this.requeteSQL = query;
|
||||
}
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
this.traiterSQLException(ex);
|
||||
|
||||
// lib<69>re les ressources utilis<69>es
|
||||
this.fermerRessourcesRequete();
|
||||
|
||||
//annonce l'<27>chec de la requ<71>te SQL
|
||||
res = false;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lance la requête SQL spécifiée qui modifie la base de donnée.
|
||||
* @param query Requête SQL de type DELETE, UPDATE, INSERT à exécuter.
|
||||
* @return nombre de lignes modifiées pour requête DDL;<br>
|
||||
* 0 pour requête ne donnant aucun r<>eacute;sultat;<br>
|
||||
* -1 si une erreur est survenue lors de l'ex<65>cution de la requ<71>te;
|
||||
*/
|
||||
public int lancerRequeteModifBDD(String query)
|
||||
{
|
||||
int res = 0;
|
||||
|
||||
try
|
||||
{
|
||||
// verifie la connexion
|
||||
if (this.connection != null)
|
||||
{
|
||||
// lib<69>re les ressources de la pr<70>c<EFBFBD>dente requ<71>te
|
||||
this.fermerRessourcesRequete();
|
||||
|
||||
// prepare la requete
|
||||
this.statement = this.connection.createStatement();
|
||||
|
||||
// emet la requete
|
||||
res = this.statement.executeUpdate(query);
|
||||
this.traiterWarning(this.statement.getWarnings());
|
||||
|
||||
// si on est arriv<69> jusqu'ici, c'est qu'il n'y a pas eu de lev<65>e d'exception
|
||||
// =>actualise la requ<71>te
|
||||
this.requeteSQL = query;
|
||||
}
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
this.traiterSQLException(ex);
|
||||
|
||||
// lib<69>re les ressources utilis<69>es
|
||||
this.fermerRessourcesRequete();
|
||||
|
||||
//annonce l'<27>chec de la requ<71>te SQL
|
||||
res = -1;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne une copie de l'objet contenant les paramètres de la connexion courante.
|
||||
* @return Copie de l'objet contenant les paramètres de connexion.
|
||||
*/
|
||||
public ParametresConnexion getParametresConnexion()
|
||||
{
|
||||
//Retourne une copie de l'objet contenant les param<61>tres de connexion
|
||||
return new ParametresConnexion(this.paramsConn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la requête SQL qui a été lancée avec succès.
|
||||
* @return Requête SQL qui a été exécutée.<br>Si pas de résultats disponibles, renvoie une cha<68>ne vide.
|
||||
*/
|
||||
public String getRequeteSQL()
|
||||
{
|
||||
return this.requeteSQL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Donne les infos sur la connexion courante.
|
||||
* @return Liste des infos de la connexion en cours.
|
||||
*/
|
||||
public Vector<String> getInfosConnexion()
|
||||
{
|
||||
Vector<String> vs_infosConn = new Vector<String>();
|
||||
DatabaseMetaData dmd;
|
||||
|
||||
try
|
||||
{
|
||||
// V<>rifie que la connexion soit ouverte
|
||||
if (this.estOuverte())
|
||||
{
|
||||
// Etat de la connexion
|
||||
vs_infosConn.add("Etat de la connexion : ouverte");
|
||||
vs_infosConn.add("------------------------------");
|
||||
|
||||
// Obtient les meta-datas de la base
|
||||
dmd = this.connection.getMetaData();
|
||||
|
||||
vs_infosConn.add("Connexion : " + dmd.getURL());
|
||||
vs_infosConn.add("Driver : " + dmd.getDriverName());
|
||||
vs_infosConn.add("Version : " + dmd.getDriverVersion());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Etat de la connexion
|
||||
vs_infosConn.add("Etat de la connexion : ferm<72>e");
|
||||
vs_infosConn.add("------------------------------");
|
||||
|
||||
vs_infosConn.add("Connexion : " + this.paramsConn.Url);//contient le Serveur, le Port et la Base
|
||||
vs_infosConn.add("Utilisateur : " + this.paramsConn.Utilisateur);
|
||||
vs_infosConn.add("Mot de passe : " + this.paramsConn.Pwd.length() + " caract<63>re(s)");
|
||||
}
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
// Erreur lors de l'obtention du nom des colonnes
|
||||
this.traiterSQLException(ex);
|
||||
}
|
||||
|
||||
return vs_infosConn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère la liste des noms des colonnes issues du résultat de la requête SQL précédemment lancée.
|
||||
* @return Liste des noms des colonnes issues du résultat de la requête SQL.
|
||||
*/
|
||||
public Vector<String> getNomsColonnes()
|
||||
{
|
||||
Vector<String> vs_cols = new Vector<String>();
|
||||
ResultSetMetaData rsmd;
|
||||
|
||||
try
|
||||
{
|
||||
// V<>rifie si la requ<71>te a d<>jà <20>t<EFBFBD> lanc<6E>e
|
||||
if (this.resultSet != null)
|
||||
{
|
||||
rsmd = this.resultSet.getMetaData(); // obtient les meta-datas de la requ<71>te
|
||||
int nbrCols = rsmd.getColumnCount();
|
||||
|
||||
for (int idCol = 1; idCol <= nbrCols; idCol++)
|
||||
if (rsmd.isSearchable(idCol))
|
||||
vs_cols.add(rsmd.getColumnName(idCol));
|
||||
}
|
||||
else if (this.statement == null)
|
||||
// anomalie
|
||||
this.vs_anomalies.add("Vous n'avez pas encore lanc<6E> la requ<71>te!!");
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
// Erreur lors de l'obtention du nom des colonnes
|
||||
this.traiterSQLException(ex);
|
||||
}
|
||||
|
||||
return vs_cols;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère le résultat de la requête SQL précédemment lancée dans un tableau d'objets.<br>
|
||||
* Note : Ce tableau est composé d'une liste de lignes.<br>Ces lignes sont elles-mêmes composées d'une liste d'objets.
|
||||
* @return Tableau d'objets correspondant au résultat de la requête SQL.
|
||||
*/
|
||||
public Vector<Vector<Object>> getDataVector()
|
||||
{
|
||||
Vector<Vector<Object>> v_datas = new Vector<Vector<Object>>();
|
||||
ResultSetMetaData rsmd;
|
||||
|
||||
try
|
||||
{
|
||||
rsmd = this.resultSet.getMetaData();
|
||||
// V<>rifie qu'il y ai un r<>sultat et place le curseur au d<>but
|
||||
if (rsmd.getColumnCount() > 0)
|
||||
{
|
||||
while (this.resultSet.next())
|
||||
{
|
||||
Vector<Object> vo_ligne = new Vector<Object>();
|
||||
// cr<63><72> la ligne
|
||||
for (int idCol = 1; idCol <= rsmd.getColumnCount(); idCol++)
|
||||
vo_ligne.add(this.resultSet.getObject(idCol));
|
||||
// ajoute la ligne au vecteur principal
|
||||
v_datas.add(vo_ligne);
|
||||
}
|
||||
}
|
||||
|
||||
if (v_datas.isEmpty()) // anomalie
|
||||
this.vs_anomalies.add("Aucune donn<6E>e trouv<75>e!!");
|
||||
}
|
||||
catch (SQLException ex)
|
||||
{
|
||||
// Probleme lors de l'obtention des donnees
|
||||
this.traiterSQLException(ex);
|
||||
}
|
||||
|
||||
return v_datas;
|
||||
}
|
||||
|
||||
/*
|
||||
* GESTION DES ERREURS - ANOMALIES
|
||||
*/
|
||||
/**
|
||||
* Trace les erreurs SQL qui ont été levées par une exception donnée.
|
||||
* @param ex SQLException à tracer.
|
||||
*/
|
||||
public void traiterSQLException(SQLException ex)
|
||||
{
|
||||
String str_ex;
|
||||
|
||||
str_ex = "********* SQLException *********\n";
|
||||
while (ex != null)
|
||||
{
|
||||
str_ex = "SQLState : " + ex.getSQLState() + "\n";
|
||||
str_ex += "Message : " + ex.getMessage() + "\n";
|
||||
str_ex += "------------------------------\n";
|
||||
this.vs_erreurs.add(str_ex);
|
||||
|
||||
ex = ex.getNextException();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Trace les anomalies SQL données.
|
||||
* @param warn Anomalies SQL à tracer.
|
||||
*/
|
||||
public void traiterWarning(SQLWarning warn)
|
||||
{
|
||||
String str_an;
|
||||
|
||||
str_an = "********* SQLWarning *********\n";
|
||||
while (warn != null)
|
||||
{
|
||||
str_an = "SQLState : " + warn.getSQLState() + "\n";
|
||||
str_an += "Message : " + warn.getMessage() + "\n";
|
||||
str_an += "------------------------------\n";
|
||||
this.vs_anomalies.add(str_an);
|
||||
|
||||
warn = warn.getNextWarning();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère la liste des erreurs tracées.
|
||||
* @return Liste des erreurs tracées.<br>Note : retourne une copie du vecteur interne pour empêcher la modification directe de celui-ci.
|
||||
*/
|
||||
public Vector<String> getErreurs()
|
||||
{
|
||||
return new Vector<String>(this.vs_erreurs);
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère la liste des anomalies tracées.
|
||||
* @return Liste des anomalies tracées.<br>Note : retourne une copie du vecteur interne pour empêcher la modification directe de celui-ci.
|
||||
*/
|
||||
public Vector<String> getAnomalies()
|
||||
{
|
||||
return new Vector<String>(this.vs_anomalies);
|
||||
}
|
||||
|
||||
/**
|
||||
* Efface la liste des erreurs tracées.
|
||||
*/
|
||||
public void effaceErreurs()
|
||||
{
|
||||
this.vs_erreurs.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Efface la liste des anomalies tracées.
|
||||
*/
|
||||
public void effaceAnomalies()
|
||||
{
|
||||
this.vs_anomalies.clear();
|
||||
}
|
||||
}
|
@ -0,0 +1,208 @@
|
||||
package com.gestionnaires;
|
||||
|
||||
import java.util.Vector;
|
||||
import com.articles.Article;
|
||||
import com.articles.Categorie;
|
||||
|
||||
/**
|
||||
* Gestionnaire des articles (et des cat<61>gories) :<br>
|
||||
* R<>cup<75>re les articles et les cat<61>gories depuis la BDD, selon des crit<69>res ou non.<br>
|
||||
* Note : il ne doit y avoir qu'une instance de cette classe : elle utilise le gestionnaire de connexion <20> la BDD.
|
||||
* @author 3fvorillion
|
||||
*/
|
||||
public class GestionnaireArticles
|
||||
{
|
||||
private static GestionnaireArticles instanceUnique = null;
|
||||
private GestionConnexion gestConn = null;
|
||||
private ParametresConnexion paramsConn = null;
|
||||
|
||||
/**
|
||||
* Instancie le gestionnaire d'articles.<br>
|
||||
* - instancie le gestionnaire de connexion <20> la BDD.
|
||||
* @throws Exception
|
||||
*/
|
||||
public GestionnaireArticles()
|
||||
throws Exception
|
||||
{
|
||||
//
|
||||
// Cr<43>ation de l'objet connexion
|
||||
//
|
||||
this.gestConn = new GestionConnexion();
|
||||
|
||||
this.paramsConn = new ParametresConnexion();
|
||||
}
|
||||
|
||||
/***
|
||||
* Donne la liste des articles correspondants aux conditions donnees.
|
||||
* @param sConditions Conditions de selection des articles.<br>Peut <20>tre null ou vide.<br>Sans la clause 'where'.
|
||||
* @return Liste des articles correspondants aux crit<69>res donn<6E>s.
|
||||
*/
|
||||
public Vector<Article> donnerListeArticles(String sConditions)
|
||||
throws Exception
|
||||
{
|
||||
Vector<Vector<Object>> vResReq = null;
|
||||
Vector<String> vLstCols = null;
|
||||
Vector<Article> vLstArts = null;
|
||||
Article tmpArt = null;
|
||||
String sReqSQL = "";
|
||||
|
||||
//
|
||||
// Se connecte <20> la base
|
||||
//
|
||||
// Ouvre la connexion si pas d<>j<EFBFBD> fait
|
||||
if (!this.gestConn.estOuverte())
|
||||
this.gestConn.ouvrir(this.paramsConn);
|
||||
|
||||
// Si pas ouverte, sort
|
||||
if ( !this.gestConn.estOuverte() )
|
||||
throw new Exception("La connexion avec la base de donn<6E>es n'a pas pu <20>tre <20>tablie.");
|
||||
|
||||
//
|
||||
// Cr<43>er la requ<71>te
|
||||
//
|
||||
sReqSQL = "SELECT * FROM ARTICLES_RANDO";
|
||||
if (sConditions != null)
|
||||
if (!sConditions.equals(""))
|
||||
sReqSQL += " WHERE " + sConditions;
|
||||
|
||||
//
|
||||
// Lance la requ<71>te et r<>cup<75>re les donn<6E>es
|
||||
//
|
||||
if (this.gestConn.lancerRequeteSelection(sReqSQL))
|
||||
{
|
||||
vResReq = this.gestConn.getDataVector();
|
||||
vLstCols = this.gestConn.getNomsColonnes();
|
||||
vLstArts = new Vector<Article>(vResReq.size());
|
||||
|
||||
for (int iArt=0; iArt<vResReq.size(); iArt++)
|
||||
{
|
||||
tmpArt = new Article();
|
||||
|
||||
//R<>cup<75>re les donn<6E>es
|
||||
for (int iCol=0; iCol<vLstCols.size(); iCol++)
|
||||
{
|
||||
if (vLstCols.get(iCol).toUpperCase().equals("REFERENCE"))
|
||||
tmpArt.setRef(String.valueOf(vResReq.get(iArt).get(iCol)));
|
||||
else if (vLstCols.get(iCol).toUpperCase().equals("CATEGORIE"))
|
||||
tmpArt.setCateg(String.valueOf(vResReq.get(iArt).get(iCol)));
|
||||
else if (vLstCols.get(iCol).toUpperCase().equals("MARQUE"))
|
||||
tmpArt.setMarque(String.valueOf(vResReq.get(iArt).get(iCol)));
|
||||
else if (vLstCols.get(iCol).toUpperCase().equals("MODELE"))
|
||||
tmpArt.setModele(String.valueOf(vResReq.get(iArt).get(iCol)));
|
||||
else if (vLstCols.get(iCol).toUpperCase().equals("PRIX"))
|
||||
tmpArt.setPrix(Double.parseDouble(vResReq.get(iArt).get(iCol).toString()));
|
||||
else if (vLstCols.get(iCol).toUpperCase().equals("PHOTO"))
|
||||
tmpArt.setPhoto(String.valueOf(vResReq.get(iArt).get(iCol)));
|
||||
else if (vLstCols.get(iCol).toUpperCase().equals("DESCRIPTION"))
|
||||
tmpArt.setDescription(String.valueOf(vResReq.get(iArt).get(iCol)));
|
||||
}
|
||||
|
||||
//Ajoute <20> la liste
|
||||
vLstArts.add(tmpArt);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Se d<>connecte de la base
|
||||
//
|
||||
// Ferme la connexion
|
||||
this.gestConn.fermerConnexion();
|
||||
|
||||
return vLstArts;
|
||||
}
|
||||
|
||||
/***
|
||||
* Donne la liste des categories correspondants aux conditions donnees.
|
||||
* @param sConditions Conditions de selection des categories.<br>Peut <20>tre null ou vide.<br>Sans la clause 'where'.
|
||||
* @return Liste des categories correspondants aux crit<69>res donn<6E>s.
|
||||
*/
|
||||
public Vector<Categorie> donnerListeCategories(String sConditions)
|
||||
throws Exception
|
||||
{
|
||||
Vector<Vector<Object>> vResReq = null;
|
||||
Vector<String> vLstCols = null;
|
||||
Vector<Categorie> vLstCats = null;
|
||||
Categorie tmpCat = null;
|
||||
String sReqSQL = "";
|
||||
|
||||
//
|
||||
// Se connecte <20> la base
|
||||
//
|
||||
// Ouvre la connexion si pas d<>j<EFBFBD> fait
|
||||
if (!this.gestConn.estOuverte())
|
||||
this.gestConn.ouvrir(this.paramsConn);
|
||||
|
||||
// Si pas ouverte, sort
|
||||
if ( !this.gestConn.estOuverte() )
|
||||
throw new Exception("La connexion avec la base de donn<6E>es n'a pas pu <20>tre <20>tablie.");
|
||||
|
||||
//
|
||||
// Cr<43>er la requ<71>te
|
||||
//
|
||||
sReqSQL = "SELECT * FROM CATEGORIE_RANDO";
|
||||
if (sConditions != null)
|
||||
if (!sConditions.equals(""))
|
||||
sReqSQL += " WHERE " + sConditions;
|
||||
|
||||
//
|
||||
// Lance la requ<71>te et r<>cup<75>re les donn<6E>es
|
||||
//
|
||||
if (this.gestConn.lancerRequeteSelection(sReqSQL))
|
||||
{
|
||||
vResReq = this.gestConn.getDataVector();
|
||||
vLstCols = this.gestConn.getNomsColonnes();
|
||||
vLstCats = new Vector<Categorie>(vResReq.size());
|
||||
|
||||
for (int iArt=0; iArt<vResReq.size(); iArt++)
|
||||
{
|
||||
tmpCat = new Categorie();
|
||||
|
||||
//R<>cup<75>re les donn<6E>es
|
||||
for (int iCol=0; iCol<vLstCols.size(); iCol++)
|
||||
{
|
||||
if (vLstCols.get(iCol).toUpperCase().equals("ID"))
|
||||
tmpCat.setId(Integer.parseInt(vResReq.get(iArt).get(iCol).toString()));
|
||||
else if (vLstCols.get(iCol).toUpperCase().equals("CAT"))
|
||||
tmpCat.setCat(String.valueOf(vResReq.get(iArt).get(iCol)));
|
||||
}
|
||||
|
||||
//Ajoute <20> la liste
|
||||
vLstCats.add(tmpCat);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Se d<>connecte de la base
|
||||
//
|
||||
// Ferme la connexion
|
||||
this.gestConn.fermerConnexion();
|
||||
|
||||
return vLstCats;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne une instance unique pour le gestionnaire des articles.
|
||||
* @return instance unique du gestionnaire des articles.
|
||||
* @throws Exception
|
||||
*/
|
||||
public static GestionnaireArticles getInstanceUnique()
|
||||
throws Exception
|
||||
{
|
||||
if (GestionnaireArticles.instanceUnique == null)
|
||||
GestionnaireArticles.instanceUnique = new GestionnaireArticles();
|
||||
|
||||
return GestionnaireArticles.instanceUnique;
|
||||
}
|
||||
|
||||
/**
|
||||
* Modifie l'instance unique pour le gestionnaire des articles.
|
||||
* @param instanceUnique
|
||||
*/
|
||||
public static void setInstanceUnique(GestionnaireArticles instanceUnique)
|
||||
{
|
||||
if (instanceUnique == null)
|
||||
return;
|
||||
|
||||
GestionnaireArticles.instanceUnique = instanceUnique;
|
||||
}
|
||||
}
|
@ -0,0 +1,117 @@
|
||||
package com.gestionnaires;
|
||||
|
||||
import java.util.Vector;
|
||||
import com.articles.Article;
|
||||
|
||||
/**
|
||||
* Traite le contenu du panier.
|
||||
* @author 3fvorillion
|
||||
*/
|
||||
public class GestionnairePanier
|
||||
{
|
||||
Vector<Article> vArticles = null;
|
||||
boolean bEstPaye = false;
|
||||
|
||||
/**
|
||||
* Instancie le panier
|
||||
*/
|
||||
public GestionnairePanier()
|
||||
{
|
||||
this.vArticles = new Vector<Article>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajoute un article au panier.
|
||||
* @param art article <20> ajouter.
|
||||
*/
|
||||
public void ajouterAchat(Article art)
|
||||
{
|
||||
Article artPan = null;
|
||||
boolean bArtTrouve = false;
|
||||
|
||||
if (art == null)
|
||||
return;
|
||||
|
||||
//V<>rifie si pas d<>j<EFBFBD> pr<70>sent
|
||||
for (int i=0; i<this.vArticles.size() && !bArtTrouve; i++)
|
||||
if (this.vArticles.get(i).getRef().equals(art.getRef()))
|
||||
{
|
||||
artPan = this.vArticles.get(i);
|
||||
bArtTrouve = true;
|
||||
}
|
||||
|
||||
//Si trouv<75>, incr<63>mente
|
||||
if (bArtTrouve)
|
||||
artPan.setQuantite(artPan.getQuantite()+1);
|
||||
//sinon, ajoute et met <20> jour la quantiti<74>
|
||||
else
|
||||
{
|
||||
art.setQuantite(1);
|
||||
this.vArticles.add(art);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Modifie la quantit<69> pour un article de r<>f<EFBFBD>rence donn<6E>e.
|
||||
* @param sRefArticle R<>f<EFBFBD>rence vers l'article.
|
||||
* @param quantite Nouvelle quantit<69>
|
||||
*/
|
||||
public void modifieAchat(String sRefArticle, int quantite)
|
||||
{
|
||||
for (int i=0; i<this.vArticles.size(); i++)
|
||||
if (this.vArticles.get(i).getRef().equals(sRefArticle))
|
||||
this.vArticles.get(i).setQuantite(quantite);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enl<6E>ve du panier l'article de r<>f<EFBFBD>rence donn<6E>e
|
||||
* @param sRefArticle R<>f<EFBFBD>rence vers l'article.
|
||||
*/
|
||||
public void enleverAchat(String sRefArticle)
|
||||
{
|
||||
for (int i=0; i<this.vArticles.size(); i++)
|
||||
if (this.vArticles.get(i).getRef().equals(sRefArticle))
|
||||
this.vArticles.remove(i);
|
||||
}
|
||||
|
||||
/**
|
||||
* Donne les articles du panier.
|
||||
* @return liste des articles du panier.
|
||||
*/
|
||||
public Vector<Article> donneContenu()
|
||||
{
|
||||
return this.vArticles;
|
||||
}
|
||||
|
||||
/**
|
||||
* Donne l'<27>tat de payement du panier.
|
||||
* @return 'true' si le panier est pass<73> '<27> la caisse'. 'fase' sinon.
|
||||
*/
|
||||
public boolean getEstPaye()
|
||||
{
|
||||
return this.bEstPaye;
|
||||
}
|
||||
|
||||
/**
|
||||
* D<>termine l'<27>tat de payement du panier.
|
||||
* @param bEstPaye 'true' si le panier est pass<73> '<27> la caisse'. 'fase' sinon.
|
||||
*/
|
||||
public void setEstPaye(boolean bEstPaye)
|
||||
{
|
||||
this.bEstPaye = bEstPaye;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calcule et retourne le prix total du panier.
|
||||
* @return Prix total du panier.
|
||||
*/
|
||||
public double getPrixTotalPanier()
|
||||
{
|
||||
double prixTotal = 0;
|
||||
|
||||
for (int i=0; i<this.vArticles.size(); i++)
|
||||
prixTotal += this.vArticles.get(i).getPrix() * this.vArticles.get(i).getQuantite();
|
||||
|
||||
return prixTotal;
|
||||
}
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
package com.gestionnaires;
|
||||
/*
|
||||
* Remarque : Type de caract<63>res utilis<69>s dans ce fichier : UTF-8
|
||||
*/
|
||||
|
||||
/**
|
||||
* Structure qui contient les paramètres d'une connexion.
|
||||
* @author 3fvorillion
|
||||
*/
|
||||
public class ParametresConnexion
|
||||
{
|
||||
/*
|
||||
* ATTRIBUTS
|
||||
*/
|
||||
/**
|
||||
* Nom du serveur sur le réseau.
|
||||
*/
|
||||
public String Serveur = "localhost";
|
||||
/**
|
||||
* Numéro du port du serveur auquel se connecter pour accéder à la base.
|
||||
*/
|
||||
public String Port = "3306";
|
||||
/**
|
||||
* Nom de la base de données à utiliser.
|
||||
*/
|
||||
public String Base = "test";
|
||||
/**
|
||||
* Login par défaut de l'utilisateur habilité sur la base de données.
|
||||
*/
|
||||
public String Utilisateur = "root";
|
||||
/**
|
||||
* Mot de passe par défaut associé au Login.
|
||||
*/
|
||||
public String Pwd = "";
|
||||
|
||||
/**
|
||||
* Mot de passe par défaut associé au Login.
|
||||
*/
|
||||
public String Url = "jdbc:mysql://localhost:3306/test";
|
||||
|
||||
/**
|
||||
* Classe qui correspond au pilote à utiliser pour se connecter à une base de données.
|
||||
*/
|
||||
public static final String CLASSE = "com.mysql.jdbc.Driver";
|
||||
|
||||
/*
|
||||
* CONSTRUCTEURS
|
||||
*/
|
||||
/**
|
||||
* Créer une instance de la classe avec les valeurs par défaut des attributs.
|
||||
*/
|
||||
public ParametresConnexion() { ; }
|
||||
|
||||
/**
|
||||
* Créer une instance de la classe en copiant les valeurs d'une autre instance de cette classe.
|
||||
* @param params Paramètres définits dans une autre instance de cette classe qui sont à recopier.
|
||||
*/
|
||||
public ParametresConnexion( ParametresConnexion params )
|
||||
{
|
||||
this.CopierDepuis(params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Créer une instance de la classe en copiant les valeurs données.
|
||||
* @param serveur Nom du serveur sur le réseau.
|
||||
* @param port Numéro du port du serveur auquel se connecter pour accéder à la base.
|
||||
* @param base Nom de la base de données à utiliser.
|
||||
* @param utilisateur Login par défaut de l'utilisateur habilité sur la base de données.
|
||||
* @param pwd Mot de passe par défaut associé au Login.
|
||||
*/
|
||||
public ParametresConnexion(String serveur, String port, String base,
|
||||
String utilisateur, String pwd, String url)
|
||||
{
|
||||
this.Serveur = serveur;
|
||||
this.Port = port;
|
||||
this.Base = base;
|
||||
this.Utilisateur = utilisateur;
|
||||
this.Pwd = pwd;
|
||||
this.Url = url;
|
||||
}
|
||||
|
||||
/*
|
||||
* METHODES
|
||||
*/
|
||||
/**
|
||||
* Copie les valeurs d'une autre instance de cette classe.
|
||||
* @param params Paramètres définits dans une autre instance de cette classe qui sont à recopier.
|
||||
*/
|
||||
public void CopierDepuis( ParametresConnexion params )
|
||||
{
|
||||
this.Serveur = params.Serveur;
|
||||
this.Port = params.Port;
|
||||
this.Base = params.Base;
|
||||
this.Utilisateur = params.Utilisateur;
|
||||
this.Pwd = params.Pwd;
|
||||
this.Url = params.Url;
|
||||
}
|
||||
}
|
@ -0,0 +1,135 @@
|
||||
/*
|
||||
* ArticlesServlet.java
|
||||
*
|
||||
* Created on 11 janvier 2008, 15:06
|
||||
*/
|
||||
|
||||
package com.servlets;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.*;
|
||||
|
||||
import java.util.Vector;
|
||||
import com.articles.Article;
|
||||
import com.articles.Categorie;
|
||||
import com.gestionnaires.Erreur;
|
||||
import com.gestionnaires.GestionnairePanier;
|
||||
import java.sql.*;
|
||||
|
||||
/**
|
||||
* Servlet G<>rant l'affichage des articles de la BDD.<br>
|
||||
* - affichage, filtrage des articles et de leurs caract<63>ristiques.
|
||||
* @author 3fvorillion
|
||||
* @version
|
||||
*/
|
||||
public class ArticlesServlet
|
||||
extends HttpServlet
|
||||
{
|
||||
com.gestionnaires.GestionnaireArticles gestArts = null;
|
||||
|
||||
/**
|
||||
* Traite les messages et affiche en cons<6E>quence.
|
||||
* @param request
|
||||
* @param response
|
||||
* @throws ServletException
|
||||
* @throws IOException
|
||||
*/
|
||||
private void affArticles(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
String sPageAffichage = "";
|
||||
Vector<Categorie> vCats = null;
|
||||
Vector<Article> vArts = null;
|
||||
String sIdCategAff;
|
||||
String sCondReqSQL = "";
|
||||
|
||||
//
|
||||
// Traite le filtre
|
||||
//
|
||||
sIdCategAff = request.getParameter("lstCategs");
|
||||
if (sIdCategAff != null)
|
||||
{
|
||||
//Si pas d<>finit ou "toutes cat<61>gorie"
|
||||
if (sIdCategAff.equals("") || sIdCategAff.equals("-1"))
|
||||
{
|
||||
sCondReqSQL = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
sCondReqSQL = "CATEGORIE="+sIdCategAff;
|
||||
}
|
||||
}
|
||||
else
|
||||
sCondReqSQL = "";
|
||||
|
||||
//R<>cup<75>re le gestionnaire d'articles
|
||||
try
|
||||
{
|
||||
//
|
||||
// R<>cup<75>re les articles depuis la base
|
||||
//
|
||||
this.gestArts = com.gestionnaires.GestionnaireArticles.getInstanceUnique();
|
||||
|
||||
//R<>cup<75>re la liste des articles (filtr<74>s)
|
||||
vArts = this.gestArts.donnerListeArticles(sCondReqSQL);
|
||||
//R<>cup<75>re la liste des articles
|
||||
vCats = this.gestArts.donnerListeCategories("");
|
||||
vCats.add(0, new Categorie(-1, "Toutes categories"));
|
||||
|
||||
if (!vArts.isEmpty())
|
||||
{
|
||||
request.setAttribute("categories", vCats);
|
||||
request.setAttribute("articles", vArts);
|
||||
|
||||
sPageAffichage = "/listeArticles.jsp";
|
||||
}
|
||||
else
|
||||
{
|
||||
sPageAffichage = "/listeArticlesVide.jsp";
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Vector<Erreur> vErrs = new Vector<Erreur>();
|
||||
vErrs.add(new Erreur(ex.getMessage()));
|
||||
request.setAttribute("erreurs", vErrs);
|
||||
|
||||
sPageAffichage = "/erreurs.jsp";
|
||||
}
|
||||
|
||||
ServletContext ctx = getServletContext();
|
||||
RequestDispatcher rd = ctx.getRequestDispatcher(sPageAffichage);
|
||||
rd.forward(request,response);
|
||||
}
|
||||
|
||||
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
|
||||
/** Handles the HTTP <code>GET</code> method.
|
||||
* @param request servlet request
|
||||
* @param response servlet response
|
||||
*/
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
this.affArticles(request, response);
|
||||
}
|
||||
|
||||
/** Handles the HTTP <code>POST</code> method.
|
||||
* @param request servlet request
|
||||
* @param response servlet response
|
||||
*/
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
this.affArticles(request, response);
|
||||
}
|
||||
|
||||
/** Returns a short description of the servlet.
|
||||
*/
|
||||
public String getServletInfo() {
|
||||
return "Gestion de articles";
|
||||
}
|
||||
// </editor-fold>
|
||||
}
|
@ -0,0 +1,187 @@
|
||||
/*
|
||||
* Panier.java
|
||||
*
|
||||
* Created on 11 janvier 2008, 15:06
|
||||
*/
|
||||
|
||||
package com.servlets;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.*;
|
||||
|
||||
import java.util.Vector;
|
||||
import com.articles.Article;
|
||||
import com.articles.Panier;
|
||||
import com.articles.Client;
|
||||
import com.gestionnaires.Erreur;
|
||||
import com.gestionnaires.GestionnairePanier;
|
||||
|
||||
/**
|
||||
* Servlet G<>rant l'affichage des commandes d'un client.<br>
|
||||
* - payement et confirmation de payement.
|
||||
* @author 3fvorillion
|
||||
* @version
|
||||
*/
|
||||
public class ClientServlet
|
||||
extends HttpServlet
|
||||
{
|
||||
com.gestionnaires.GestionnaireArticles gestArts = null;
|
||||
|
||||
/**
|
||||
* Traite les messages et affiche en cons<6E>quence.
|
||||
* @param request
|
||||
* @param response
|
||||
* @throws ServletException
|
||||
* @throws IOException
|
||||
*/
|
||||
private void affPayement(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
GestionnairePanier panier = null;
|
||||
Vector<Erreur> vErrs = new Vector<Erreur>();
|
||||
Vector<Article> vArts = null;
|
||||
Client cli = null;
|
||||
String sAction;
|
||||
String sPageAffichage;
|
||||
|
||||
//
|
||||
// R<>cup<75>re l'objet de la session
|
||||
//
|
||||
panier = PanierServlet.getPanierSession(request);
|
||||
|
||||
//
|
||||
// Traite les actions
|
||||
//
|
||||
sAction = request.getParameter("action");
|
||||
if (sAction == null)
|
||||
{ ; }
|
||||
else if (sAction.equals("payer"))
|
||||
{
|
||||
cli = new Client();
|
||||
|
||||
//R<>cup<75>re les infos de l'utilisateur
|
||||
if (request.getParameter("nomCli") != null)
|
||||
{
|
||||
if (!request.getParameter("nomCli").equals(""))
|
||||
cli.setNom(request.getParameter("nomCli"));
|
||||
else
|
||||
vErrs.add(new Erreur("Votre nom n'est pas saisi."));
|
||||
}
|
||||
else
|
||||
vErrs.add(new Erreur("Le nom du client n'est pas disponible."));
|
||||
|
||||
if (request.getParameter("prenomCli") != null)
|
||||
{
|
||||
if (!request.getParameter("prenomCli").equals(""))
|
||||
cli.setPrenom(request.getParameter("prenomCli"));
|
||||
else
|
||||
vErrs.add(new Erreur("Votre prenom n'est pas saisi."));
|
||||
}
|
||||
else
|
||||
vErrs.add(new Erreur("Le prenom du client n'est pas disponible."));
|
||||
|
||||
if (request.getParameter("addrCli") != null)
|
||||
{
|
||||
if (!request.getParameter("addrCli").equals(""))
|
||||
cli.setAdresse(request.getParameter("addrCli"));
|
||||
else
|
||||
vErrs.add(new Erreur("Votre adresse n'est pas saisi."));
|
||||
}
|
||||
else
|
||||
vErrs.add(new Erreur("L'adresse du client n'est pas disponible."));
|
||||
|
||||
if (request.getParameter("cpCli") != null)
|
||||
{
|
||||
if (!request.getParameter("cpCli").equals(""))
|
||||
cli.setCodePost(request.getParameter("cpCli"));
|
||||
else
|
||||
vErrs.add(new Erreur("Votre code postal n'est pas saisi."));
|
||||
}
|
||||
else
|
||||
vErrs.add(new Erreur("Le code postal du client n'est pas disponible."));
|
||||
|
||||
if (request.getParameter("villeCli") != null)
|
||||
{
|
||||
if (!request.getParameter("villeCli").equals(""))
|
||||
cli.setVille(request.getParameter("villeCli"));
|
||||
else
|
||||
vErrs.add(new Erreur("Votre ville n'est pas saisi."));
|
||||
}
|
||||
else
|
||||
vErrs.add(new Erreur("La ville du client n'est pas disponible."));
|
||||
}
|
||||
|
||||
if (vErrs.isEmpty())
|
||||
{
|
||||
//
|
||||
// Affiche la liste des articles du panier
|
||||
//
|
||||
//R<>cup<75>re la liste des articles
|
||||
vArts = panier.donneContenu();
|
||||
|
||||
if (!vArts.isEmpty())
|
||||
{
|
||||
request.setAttribute("articles", vArts);
|
||||
request.setAttribute("panierTotal", new Panier(panier.getPrixTotalPanier()));
|
||||
|
||||
//V<>rifie si on a d<>j<EFBFBD> saisi les infos client
|
||||
if (cli != null)
|
||||
{
|
||||
request.setAttribute("client", cli);
|
||||
|
||||
sPageAffichage = "/resultPayement.jsp";
|
||||
|
||||
//Signale que le panier est pr<70>t <20> <20>tre supprim<69>
|
||||
panier.setEstPaye(true);
|
||||
}
|
||||
else
|
||||
sPageAffichage = "/payement.jsp";
|
||||
}
|
||||
else
|
||||
{
|
||||
sPageAffichage = "/panierVide.jsp";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
request.setAttribute("erreurs", vErrs);
|
||||
|
||||
sPageAffichage = "/erreurs.jsp";
|
||||
}
|
||||
|
||||
|
||||
ServletContext ctx = getServletContext();
|
||||
RequestDispatcher rd = ctx.getRequestDispatcher(sPageAffichage);
|
||||
rd.forward(request,response);
|
||||
}
|
||||
|
||||
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
|
||||
/** Handles the HTTP <code>GET</code> method.
|
||||
* @param request servlet request
|
||||
* @param response servlet response
|
||||
*/
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
this.affPayement(request, response);
|
||||
}
|
||||
|
||||
/** Handles the HTTP <code>POST</code> method.
|
||||
* @param request servlet request
|
||||
* @param response servlet response
|
||||
*/
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
this.affPayement(request, response);
|
||||
}
|
||||
|
||||
/** Returns a short description of the servlet.
|
||||
*/
|
||||
public String getServletInfo() {
|
||||
return "Gestion du client";
|
||||
}
|
||||
// </editor-fold>
|
||||
}
|
@ -0,0 +1,228 @@
|
||||
/*
|
||||
* Panier.java
|
||||
*
|
||||
* Created on 11 janvier 2008, 15:06
|
||||
*/
|
||||
|
||||
package com.servlets;
|
||||
|
||||
import java.io.*;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.*;
|
||||
|
||||
import java.lang.*;
|
||||
import java.util.Vector;
|
||||
import com.articles.Article;
|
||||
import com.articles.Panier;
|
||||
import com.gestionnaires.Erreur;
|
||||
import com.gestionnaires.GestionnairePanier;
|
||||
|
||||
/**
|
||||
* Servlet G<>rant l'affichage des articles du panier.<br>
|
||||
* - affichage des articles et de leurs caract<63>ristiques.
|
||||
* - modification des quantit<69>s.
|
||||
* - suppression des articles du panier.
|
||||
* @author 3fvorillion
|
||||
* @version
|
||||
*/
|
||||
public class PanierServlet
|
||||
extends HttpServlet
|
||||
{
|
||||
com.gestionnaires.GestionnaireArticles gestArts = null;
|
||||
|
||||
/**
|
||||
* R<>cup<75>re le panier courant de la session courante.<br>
|
||||
* Si pas de panier disponibles, en cr<63><72> un.<br>
|
||||
* Si le painier courant en d<>j<EFBFBD> pay<61>, en cr<63><72> un autre.
|
||||
* @param request requete du servlet
|
||||
* @return le panier courant de la session
|
||||
*/
|
||||
public static GestionnairePanier getPanierSession(HttpServletRequest request)
|
||||
{
|
||||
HttpSession session = request.getSession(true);
|
||||
|
||||
//
|
||||
// R<>cup<75>re l'objet de la session
|
||||
//
|
||||
GestionnairePanier panier = (GestionnairePanier)session.getAttribute("caddy");
|
||||
if ( panier == null )
|
||||
{
|
||||
panier = new GestionnairePanier();
|
||||
panier.setEstPaye(false);
|
||||
|
||||
session.setAttribute("caddy", panier) ;
|
||||
}
|
||||
else if ( panier.getEstPaye() )
|
||||
{
|
||||
//Supprime l'ancien de la liste de la session
|
||||
session.removeAttribute("caddy") ;
|
||||
|
||||
//Cr<43><72> un nouveau
|
||||
panier = new GestionnairePanier();
|
||||
panier.setEstPaye(false);
|
||||
|
||||
session.setAttribute("caddy", panier) ;
|
||||
}
|
||||
|
||||
|
||||
return panier;
|
||||
}
|
||||
|
||||
/**
|
||||
* Traite les messages et affiche en cons<6E>quence.
|
||||
* @param request
|
||||
* @param response
|
||||
* @throws ServletException
|
||||
* @throws IOException
|
||||
*/
|
||||
private void affArticlesPanier(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
GestionnairePanier panier = null;
|
||||
Vector<Article> vArts = null;
|
||||
String sAction;
|
||||
String sPageAffichage;
|
||||
String sCondReqSQL;
|
||||
|
||||
//
|
||||
// R<>cup<75>re l'objet de la session
|
||||
//
|
||||
panier = PanierServlet.getPanierSession(request);
|
||||
|
||||
//
|
||||
// Traite les actions
|
||||
//
|
||||
sAction = request.getParameter("action");
|
||||
if (sAction == null)
|
||||
{ ; }
|
||||
else if (sAction.equals("add"))
|
||||
{
|
||||
if (request.getParameter("artRef") != null)
|
||||
{
|
||||
sCondReqSQL = "REFERENCE = '" + request.getParameter("artRef") + "'";
|
||||
|
||||
//R<>cup<75>re le gestionnaire d'articles
|
||||
try
|
||||
{
|
||||
//
|
||||
// R<>cup<75>re les articles depuis la base
|
||||
//
|
||||
this.gestArts = com.gestionnaires.GestionnaireArticles.getInstanceUnique();
|
||||
|
||||
//R<>cup<75>re la liste des articles
|
||||
vArts = this.gestArts.donnerListeArticles(sCondReqSQL);
|
||||
|
||||
if (vArts.size() == 1)
|
||||
{
|
||||
panier.ajouterAchat(vArts.get(0));
|
||||
}
|
||||
else
|
||||
{
|
||||
Vector<Erreur> vErrs = new Vector<Erreur>();
|
||||
if (vArts.isEmpty())
|
||||
vErrs.add(new Erreur("Aucun article n'est disponible dans la boutique"));
|
||||
else
|
||||
vErrs.add(new Erreur("Trop d'articles correspondent <20> la s<>lection"));
|
||||
request.setAttribute("erreurs", vErrs);
|
||||
|
||||
sPageAffichage = "/erreurs.jsp";
|
||||
|
||||
ServletContext ctx = getServletContext();
|
||||
RequestDispatcher rd = ctx.getRequestDispatcher(sPageAffichage);
|
||||
rd.forward(request,response);
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Vector<Erreur> vErrs = new Vector<Erreur>();
|
||||
vErrs.add(new Erreur(ex.getMessage()));
|
||||
request.setAttribute("erreurs", vErrs);
|
||||
|
||||
sPageAffichage = "/erreurs.jsp";
|
||||
|
||||
ServletContext ctx = getServletContext();
|
||||
RequestDispatcher rd = ctx.getRequestDispatcher(sPageAffichage);
|
||||
rd.forward(request,response);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (sAction.equals("del"))
|
||||
{
|
||||
if (request.getParameter("artRef") != null)
|
||||
panier.enleverAchat(request.getParameter("artRef"));
|
||||
}
|
||||
else if (sAction.equals("modif"))
|
||||
{
|
||||
//R<>cup<75>re la liste des articles
|
||||
vArts = panier.donneContenu();
|
||||
|
||||
for (int i=0;i<vArts.size(); i++)
|
||||
if (request.getParameter(vArts.get(i).getRef()) != null)
|
||||
panier.modifieAchat(vArts.get(i).getRef(),
|
||||
Integer.parseInt(request.getParameter(vArts.get(i).getRef())));
|
||||
}
|
||||
|
||||
//
|
||||
// Affiche la liste des articles du panier
|
||||
//
|
||||
//R<>cup<75>re la liste des articles
|
||||
vArts = panier.donneContenu();
|
||||
|
||||
if (!vArts.isEmpty())
|
||||
{
|
||||
request.setAttribute("articles", vArts);
|
||||
request.setAttribute("panierTotal", new Panier(panier.getPrixTotalPanier()));
|
||||
|
||||
//Si on valide, on affiche le r<>sum<75> (affichage normal, sans modification)
|
||||
if (sAction != null)
|
||||
{
|
||||
if (sAction.equals("valider"))
|
||||
sPageAffichage = "/resumePanier.jsp";
|
||||
else
|
||||
sPageAffichage = "/contenuPanier.jsp";
|
||||
}
|
||||
//Sinon, on affiche le panier et on permet la modification des quantit<69>s
|
||||
else
|
||||
sPageAffichage = "/contenuPanier.jsp";
|
||||
}
|
||||
else
|
||||
{
|
||||
sPageAffichage = "/panierVide.jsp";
|
||||
}
|
||||
|
||||
ServletContext ctx = getServletContext();
|
||||
RequestDispatcher rd = ctx.getRequestDispatcher(sPageAffichage);
|
||||
rd.forward(request,response);
|
||||
}
|
||||
|
||||
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
|
||||
/** Handles the HTTP <code>GET</code> method.
|
||||
* @param request servlet request
|
||||
* @param response servlet response
|
||||
*/
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
this.affArticlesPanier(request, response);
|
||||
}
|
||||
|
||||
/** Handles the HTTP <code>POST</code> method.
|
||||
* @param request servlet request
|
||||
* @param response servlet response
|
||||
*/
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException
|
||||
{
|
||||
this.affArticlesPanier(request, response);
|
||||
}
|
||||
|
||||
/** Returns a short description of the servlet.
|
||||
*/
|
||||
public String getServletInfo() {
|
||||
return "Gestion du panier";
|
||||
}
|
||||
// </editor-fold>
|
||||
}
|
50
P51/apache-tomcat-6.0.14/webapps/RandoOnLine/WEB-INF/web.xml
Normal file
50
P51/apache-tomcat-6.0.14/webapps/RandoOnLine/WEB-INF/web.xml
Normal file
@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
|
||||
<context-param>
|
||||
<param-name>com.sun.faces.verifyObjects</param-name>
|
||||
<param-value>false</param-value>
|
||||
</context-param>
|
||||
<context-param>
|
||||
<param-name>com.sun.faces.validateXml</param-name>
|
||||
<param-value>true</param-value>
|
||||
</context-param>
|
||||
<context-param>
|
||||
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
|
||||
<param-value>client</param-value>
|
||||
</context-param>
|
||||
<servlet>
|
||||
<servlet-name>PanierServlet</servlet-name>
|
||||
<servlet-class>com.servlets.PanierServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>PanierServlet</servlet-name>
|
||||
<url-pattern>/Panier</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<servlet-name>ArticlesServlet</servlet-name>
|
||||
<servlet-class>com.servlets.ArticlesServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>ArticlesServlet</servlet-name>
|
||||
<url-pattern>/Articles</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<servlet-name>ClientServlet</servlet-name>
|
||||
<servlet-class>com.servlets.ClientServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>ClientServlet</servlet-name>
|
||||
<url-pattern>/Client</url-pattern>
|
||||
</servlet-mapping>
|
||||
<session-config>
|
||||
<session-timeout>
|
||||
30
|
||||
</session-timeout>
|
||||
</session-config>
|
||||
<welcome-file-list>
|
||||
<welcome-file>
|
||||
index.jsp
|
||||
</welcome-file>
|
||||
</welcome-file-list>
|
||||
|
||||
</web-app>
|
Reference in New Issue
Block a user