package fr.unice.article.dao;

import fr.unice.article.Stylo;
import fr.unice.article.bd.ConfigConnection;

import java.util.Collection;
import java.sql.*;
import java.util.ArrayList;
import java.io.IOException;

/**
 * DAO pour les stylos. 
 **** SQUELETTE DE CLASSE A COMPLETER ****
 */
public class DaoStylo {

  /**
   * Renvoie un DAO pour les stylos.
   */
  public static DaoStylo getDAO() {
  }

  /**
   * Crée un nouveau stylo.
   * 
   * @param reference référence du stylo
   * @param descriptif description du stylo
   * @param pu prix unitaire
   * @param couleur couleur
   * @return le nouveau stylo.
   * @throws DaoException si un article avec cette référence existe 
   * déjà ou s'il y a un autre problème de persistance.
   */
  public Stylo create(String reference, String descriptif, double pu,
		      String couleur) throws DaoException {
  }

  /**
   * Modifie un stylo dont on donne la référence.
   *
   * @param reference référence du stylo
   * @param descriptif description du stylo
   * @param pu prix unitaire
   * @param couleur couleur
   * @throws DaoException si aucun stylo n'a cette référence ou 
   * s'il y a un autre problème de persistance.
   */
  public void update(String reference, String descriptif, double pu,
		     String couleur) throws DaoException {
  }

  /**
   * Renvoie un stylo dont on donne la référence. Renvoie <code>null</code>
   * si aucun stylo n'a cette référence.
   * 
   * @param reference référence du stylo cherché.
   * @return Stylo le stylo cherché.
   * @throws DaoException s'il y a un problème de persistance.
   */
  public Stylo findByReference(String reference) throws DaoException {
  }

  /**
   * Renvoie une collection qui contient tous les stylos. La collection sera
   * vide s'il n'existe aucun stylo dans la base.
   * 
   * @return la collection qui contient les stylos.
   * @throws DaoException s'il y a un problème de persistance.
   */
  public Collection<Stylo> findAll() throws DaoException {
  }

  /**
   * Récupère une connexion à la base de données.
   *** Vous pouvez utiliser cette méthode privée si vous voulez ***
   */
  private Connection getConnection() throws DaoException {
    try {
      return ConfigConnection.getConnection("connexion.properties");
    } catch (IOException e) {
      throw new DaoException("Problème pour lire le fichier de configuration", 
                             e);
    } catch (ClassNotFoundException e) {
      throw new DaoException("Impossible de trouver la classe du driver JDBC", 
                             e);
    } catch (SQLException e) {
      throw new DaoException("Impossible d'ouvrir une connexion", e);
    }
  }
}

