Package factories

Source Code of factories.FCommandes

package factories;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import base.Commande;
import factories.exceptions.FactoriesException;

/**
*
* @author brahim
*
*/
public class FCommandes {

//  private List cacheCommandes;
 
  // Selection depuis la bdd
  private String selectCommande = " select * from commande where idCommande = ?";
  private String selectCommandesClient = " select * from commande where idClient = ? ";
  private String selectLignesCommande = " select * from ligneCommande where idCommande = ? ";
 
  // Insertion dans la bdd
  private String insererCommande = " insert into commande(idCommande,dateCommande,montant,idClient) values(?,?,?,?) ";
  private String insererLigneCommande = " insert into ligneCommande(idCommande,refProduit,qte) "+
    " values(?,?,?) ";
 
  // Deletion de la bdd
  private String deleteCommande = "DELETE FROM COMMANDE WHERE IDCOMMANDE = ?";
 
  private String deleteLignesCommande = "DELETE FROM LIGNECOMMANDE WHERE IDCOMMANDE = ?";
 
 
  private PreparedStatement pSelectCommande,pSelectCommandesClient,pInsererCommande,
      pSelectLignesCommande,pInsererLigneCommande, pDeleteCommande, pDeleteLignesCommande;
 

  private FCommandes() {
//    cacheCommandes = new ArrayList<Commande>();
  }
 
  /*
   * Connexion JDBC
   */
  private Connection c;

  /*
   * Traitement du singleton de la fabrique
   */
  private static FCommandes instance;


  /**
   * Recuperation du singleton de la fabrique
   *
   * @return un singleton de la fabrique
   */
  public static FCommandes getInstance() {
    if (instance == null)
      instance = new FCommandes();
    return instance;
  }
 
  /**
   * Preparation des statements
   *
   */
  private void init() throws SQLException {
    /* Création des statements */
   
    // Statements des Select
    pSelectCommande = c.prepareStatement(selectCommande);
    pSelectCommandesClient = c.prepareStatement(selectCommandesClient);
    pSelectLignesCommande = c.prepareStatement(selectLignesCommande);
   
    // Statements d'insertion
    pInsererLigneCommande = c.prepareStatement(insererLigneCommande);
    pInsererCommande = c.prepareStatement(insererCommande);
    pDeleteCommande = c.prepareStatement(deleteCommande);
    pDeleteLignesCommande = c.prepareStatement(deleteLignesCommande);
   
  }

  /**
   * Mise en place d'une connexion JDBC au singleton
   *
   * @param c
   * @throws SQLException
   */
  public void setConnection(Connection c) throws SQLException {
    this.c = c;
    this.init();
  }
 
  /**
   *
   * @param idClient
   * @return
   * @throws SQLException
   */
  public List<String> getCommandesClient(String idClient) throws SQLException {
    pSelectCommandesClient.clearParameters();
    pSelectCommandesClient.setString(1, idClient);
   
    List<String> listIdCommandes = new ArrayList<String>();
    ResultSet rsCommandes = pSelectCommandesClient.executeQuery();
    while(rsCommandes.next()){
      listIdCommandes.add(rsCommandes.getString(1));
    }
   
    return listIdCommandes;
  }
 
  /**
   *
   * @param idCommande
   * @param idClient
   * @return
   * @throws SQLException
   */
  public Commande rechercherCommande(String idCommande,String idClient)
    throws SQLException{
    pSelectCommande.clearParameters();
    pSelectCommande.setString(1, idCommande);
    ResultSet rsCommande = pSelectCommande.executeQuery();
    Commande commande = null;
    if(rsCommande.next()){
      Date dateCommande = rsCommande.getDate(2);
      double montant = rsCommande.getDouble(3);
      commande = new Commande(idCommande,idClient,dateCommande);
      commande.setPrixTotal(montant);
     
      pSelectLignesCommande.clearParameters();
      pSelectLignesCommande.setString(1, idCommande);
      ResultSet rsLignesCommande = pSelectLignesCommande.executeQuery();
     
      // On ajoute les produits à la commande
      while(rsLignesCommande.next()){
        String refProduit = rsLignesCommande.getString(2);
        int qte = rsLignesCommande.getInt(3);
        commande.ajouterProduit(refProduit, qte);
      }
    }
   
    return commande;
  }
 
  /**
   * Creation d'une commande dans la base, et de ses lignes.
   * @param c
   * @return
   * @throws SQLException
   */
  public synchronized int creerCommande(Commande c) throws SQLException, FactoriesException{
    // verification rapide/complete de l'existence d'une commande
    /*if(rechercherCommande(c.getIdCommande(), c.getLeClient()) != null)
      throw new FactoriesException(FactoriesException.COMMANDE_EXISTE_DEJA);*/
   
    pInsererCommande.clearParameters();
   
    String idCommande = c.getIdCommande();
    String idClient = c.getLeClient();
    pInsererCommande.setString(1,idCommande);
    pInsererCommande.setDate(2,c.getDateCommande());
    pInsererCommande.setDouble(3, c.getPrixTotal());
    pInsererCommande.setString(4, idClient);
    pInsererCommande.executeUpdate();
   
    int res = -1;
   
    // Insertion des lignes de commandes
    HashMap<String,Integer> lesProduits = c.getLesProduits();
    Iterator<String> it = lesProduits.keySet().iterator();
    while(it.hasNext()){
      String refProduit = it.next();
      pInsererLigneCommande.clearParameters();
      pInsererLigneCommande.setString(1,idCommande);
      pInsererLigneCommande.setString(2, refProduit);
      pInsererLigneCommande.setInt(3, lesProduits.get(refProduit));
      pInsererLigneCommande.executeUpdate();
     
    }
   
    return res;
   
  }

 
  /**
   * Verifier si la connexion a la base de donnees existe
   * @return Confirmation d'existence ou pas d'une connexion.
   */
  public boolean hasConnection(){
    return (this.c != null);
  }
 

  /**
   * Suppression d'une commande dans la base, et de ses lignes.
   * @param idCde Reference de la commande
   * @return
   * @throws SQLException
   */
  public synchronized int supprimerCommande(Commande c)
    throws SQLException, FactoriesException{
    // verification rapide/complete de l'existence d'une commande
    if(rechercherCommande(c.getIdCommande(), c.getLeClient()) == null)
      throw new FactoriesException(FactoriesException.COMMANDE_EXISTE_PAS);
   
    pDeleteCommande.clearParameters();
    pDeleteCommande.setString(1, c.getIdCommande());
   
    pDeleteLignesCommande.clearParameters();
    pDeleteLignesCommande.setString(1, c.getIdCommande());
   
    int res = -1;

    res = pDeleteLignesCommande.executeUpdate();
    res += pDeleteCommande.executeUpdate();

    return res;
   
  }
 
}
TOP

Related Classes of factories.FCommandes

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.