package database;

import java.sql.SQLException;
import java.util.List;
/*****************************************************************************
 * Classe: Crud
 * 
 * 
 * 
 * Liste des dependances
 * - 
 * -
 * -
 * 
 * Projet Orford
 *****************************************************************************
 * Modification: 
 * Nom: 
 * Date: 
 ****************************************************************************/
/**
 * @author Martin Robinson
 *
 * @param <DATASET> , dataset correspondant à une table
 */
public interface Crud<DATASET> {
	/**
	 * du dataset
	 * ajouter un enregistrement avec les données fournis
	 * noté que le ID sera changé
	 * @param dataset as Object
	 * @return le ID de l'enregistrement
	 * @throws SQLException
	 */
	public int create(DATASET dataset) throws SQLException;
	
	/**
	 * de la base de donnée, lire l'enregistrement où le id
	 * correspond et construit un dataset avec les données de l'enregistrement
	 * @param id de l'enregistrement
	 * @return un dataset avec les données de l'enregistrement 
	 * @throws SQLException
	 */
	public DATASET readById(int id) throws SQLException;
	
	/**
	 * lire TOUTES les enregistrements de la table
	 * @return List<DATASET> , liste de dataset
	 * @throws SQLException
	 */
	public List<DATASET> readAll() throws SQLException;
	
	/**
	 * mettre à jours un dataset dans la base de donnée
	 * utilisant le id inclus dans ce dernier
	 * @param dataset à mettre à jours
	 * @return vrai sur un success
	 * @throws SQLException
	 */
	public boolean update(DATASET dataset) throws SQLException;
	
	/**
	 * detruire un enregistrement correspondant au dataset
	 * @param dataset à detruire
	 * @return vrais sur un success
	 * @throws SQLException
	 */
	public boolean destroy(DATASET dataset) throws SQLException;
	
	/**
	 * Obtient le nouveau id de la table sequence
	 * @param dataset
	 * @return
	 * @throws SQLException
	 */
	public int getNewSequenceId() throws SQLException;
}
