package application.modeles;
import java.sql.CallableStatement;
import java.sql.SQLException;
import application.exceptions.DataFormatException;
import application.outils.Database;
/**
*
* Classe representant les individus, qui peuvent être
* soit des acteurs, soit des realisateurs
*
* @author logan.soumar
*
*/
public class ModeleIndividu {
private int _num;
private String _prenom;
private String _nom;
private boolean _existe;
private Database _DB;
/**
* Constructeur sans paramètres
*/
public ModeleIndividu(){
_num = 0;
_prenom = null;
_nom = null;
_existe = false;
_DB = null;
}
/**
*
* Constructeur
*
* @param DB Connexion a la base de donnees
*
*/
public ModeleIndividu(Database db){
_DB = db;
_num = 0;
_prenom = null;
_nom = null;
_existe = false;
}
/**
*
* Constructeur
*
* @param db Connexion a la base de donnees
* @param prenom Prenom de l'individu
* @param nom Nom de l'individu
* @param existe Permet de savoir s'il existe deja
* @throws DataFormatException
*
*/
public ModeleIndividu(Database db, String prenom, String nom) throws DataFormatException{
_DB = db;
set(prenom, nom);
}
public ModeleIndividu(String prenom, String nom) throws DataFormatException {
set(prenom, nom);
}
/* (non-Javadoc)
*
* Permet de nettoyer l'objet avant que le systeme de
* Garbage Collector ne s'en charge.
*
* @see java.lang.Object#finalize()
*/
public void finalize(){
}
/**
*
* Getters
*
*/
public int getNum() { return _num; }
public String getPrenom() { return _prenom; }
public String getNom() { return _nom; }
public boolean getExiste() { return _existe; }
/**
*
* Setters
*
*/
public void setNum(int num) throws DataFormatException
{
if(num < 1)
throw new DataFormatException("Le numero d'identifiant de l'individu est incorrect.");
_num = num;
}
public void setPrenom(String prenom) throws DataFormatException
{
if(prenom != null && prenom.length() > 30)
throw new DataFormatException("Le prenom doit faire entre 1 et 30 caracteres.");
_prenom = prenom;
}
public void setNom(String nom) throws DataFormatException
{
if(nom != null && nom.length() > 30)
throw new DataFormatException("Le nom doit faire entre 1 et 30 caracteres.");
_nom = nom;
}
public void setExiste(boolean existe) { _existe = existe; }
public void set(String prenom, String nom) throws DataFormatException
{
setPrenom(prenom);
setNom(nom);
}
public void set(int num, String prenom, String nom, boolean existe) throws DataFormatException
{
setNum(num);
setPrenom(prenom);
setNom(nom);
setExiste(existe);
}
public void setDB(Database DB) { _DB = DB; }
/**
*
* Methode d'ajout d'individu
*
* @return le numero de l'individu cree
* @throws DataFormatException Si un attribut manque
* Si instance en lecture
* seule
* @throws SQLException Si une erreur lors de l'ajout
*
*/
public int ajouter() throws DataFormatException, SQLException
{
if(!(_DB instanceof Database))
throw new DataFormatException("Cet object individu est en lecture seule.");
if((_prenom == null) || (_nom == null))
throw new DataFormatException("Les attributs prenom et nom doivent etre renseignes.");
// Ajout dans la base de donnees
CallableStatement cst = _DB.prepareCall("{? = call MAJVIDEOTHEQUE.AJOUTERINDIVIDU(?, ?)}");
cst.setString(2, _nom);
cst.setString(3, _prenom);
cst.registerOutParameter(1, java.sql.Types.INTEGER);
cst.execute();
setNum(cst.getInt(1));
return _num;
}
/**
*
* Methode d'ajout d'individu
*
* @param cst Requete preparee pour optimiser
* @return le numero de l'individu cree
* @throws DataFormatException Si un attribut manque
* Si instance en lecture
* seule
* @throws SQLException Si une erreur lors de l'ajout
*
*/
public int ajouter(CallableStatement cst) throws DataFormatException, SQLException
{
if(!(_DB instanceof Database))
throw new DataFormatException("Cet object individu est en lecture seule.");
if((_prenom == null) || (_nom == null))
throw new DataFormatException("Les attributs prenom et nom doivent etre renseignes.");
// Ajout dans la base de donnees
cst.setString(2, _nom);
cst.setString(3, _prenom);
cst.registerOutParameter(1, java.sql.Types.INTEGER);
cst.execute();
setNum(cst.getInt(1));
return _num;
}
}