package application.modeles;
import java.sql.CallableStatement;
import java.sql.SQLException;
import application.exceptions.DataFormatException;
import application.outils.Database;
public class ModeleFilm {
private int _num;
private String _titre;
private ModeleIndividu _realisateur;
private Database _DB;
/**
*
* Constructeur
*
* @param DB Connexion a la base de donnees
*
*/
public ModeleFilm(Database DB)
{
_num = 0;
_titre = null;
_realisateur = null;
_DB = DB;
}
/**
*
* Constructeur
*
* @param DB Connexion a la base de donnees
* @param titre Titre du film
* @param prenomRealisateur Prenom du realisateur
* @param nomRealisateur Nom du reliasateur
* @throws DataFormatException Si parametre incorrect
*
*/
public ModeleFilm(Database DB, String titre, String prenomRealisateur, String nomRealisateur) throws DataFormatException
{
_DB = DB;
setTitre(titre);
}
/**
*
* Getters
*
*/
public int getNum() { return _num; }
public String getTitre() { return _titre; }
public String getPrenomRealisateur() { return _realisateur.getPrenom(); }
public String getNomrealisateur() { return _realisateur.getNom(); }
/**
*
* Setters
*
*/
public void setNum(int num) throws DataFormatException
{
if(num < 1)
throw new DataFormatException("Le numero d'identifiant du film est incorrect.");
_num = num;
}
public void setTitre(String titre) throws DataFormatException
{
if(titre.length() < 1 || titre.length() > 50)
throw new DataFormatException("Le titre du film doit faire entre 1 et 50 caracteres.");
_titre = titre;
}
public void setRealisateur(ModeleIndividu realisateur) throws DataFormatException
{
_realisateur = realisateur;
}
/**
*
* Methode ajouter
*
* Ajoute le film dans la base de donnees
*
* @return Le numero d'identifiant du film
* @throws DataFormatException Si un attribut manque
* @throws SQLException Si une erreur lors de l'ajout
*
*/
public int ajouter() throws DataFormatException, SQLException
{
if((_titre == null) || (_realisateur.getPrenom() == null) || (_realisateur.getNom() == null))
throw new DataFormatException("Les attributs titre et realisateur doivent etre renseignes.");
// Ajout dans la base de donnees
CallableStatement cst = _DB.prepareCall("{? = call majVideotheque.ajouterFilm(?, ?, ?)}");
cst.setString(2, _titre);
cst.setString(3, _realisateur.getNom() );
cst.setString(4, _realisateur.getPrenom());
cst.registerOutParameter(1, java.sql.Types.INTEGER);
cst.execute();
return cst.getInt(1);
}
}