package modele.chauffeur;
import gui.PrjException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Set;
import javax.swing.JOptionPane;
/**
* Classe Chauffeur
* @author Kasandra
*
*/
public class Chauffeur implements IChauffeur {
private final Integer id;
private String nom;
private String prenom;
private String rue;
private String numRue;
private Localite localite;
private int cp;
private String commune;
private Ville ville;
private Date dtNais;
//private String age;
private String numNat;
private String sexe;
private String etCiv;
private String nbPers;
private String tel;
private String gsm;
private String mail;
private String numCpte;
private String typePermis;
private Date datePermis;
private Date dateEcheaPermis;
private String etat;
private Date dtVisitMed;
private String certifBVM;
private Set<PeriodeDeTravail> periodesDeTravailExistantes = null;
private Set<Avertissement> avertissements = null;
private Date current = new Date(new GregorianCalendar().getTime().getTime());
/**
* Constructeur
*/
public Chauffeur(){
this.id=null;
}
/**
* Constructeur
* @param id
*/
public Chauffeur(int id){
this.id=id;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom.toUpperCase();
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = Character.toUpperCase(prenom.charAt(0)) + prenom.substring(1).toLowerCase();
}
public String getRue() {
return rue;
}
public void setRue(String rue) {
this.rue = rue;
}
public String getNumRue() {
return numRue;
}
public void setNumRue(String numRue) {
this.numRue = numRue;
}
public Localite getLocalite() {
return localite;
}
public void setLocalite(Localite localite) {
this.localite = localite;
}
public Ville getVille() {
return ville;
}
public void setVille(Ville ville) {
this.ville = ville;
}
/*
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
*/
public String getNumNat() {
return numNat;
}
public void setNumNat(String numNat) {
this.numNat = numNat;
}
public String getSexe() {
return sexe;
}
public void setSexe(String sexe) {
this.sexe = sexe;
}
public String getEtCiv() {
return etCiv;
}
public void setEtCiv(String etCiv) {
this.etCiv = etCiv;
}
public String getNbPers() {
return nbPers;
}
public void setNbPers(String nbPers) {
this.nbPers = nbPers;
}
public String getTel() {
return tel;
}
public int getCp() {
return cp;
}
public void setCp(int cp) {
this.cp = cp;
}
public String getCommune() {
return commune;
}
public void setCommune(String commune) {
this.commune = commune;
}
public Date getDtNais() {
return dtNais;
}
public void setDtNais(Date dtNais) {
this.dtNais = dtNais;
}
public Date getDatePermis() {
return datePermis;
}
public void setDatePermis(Date datePermis) {
this.datePermis = datePermis;
}
public Date getDateEcheaPermis() {
return dateEcheaPermis;
}
public void setDateEcheaPermis(Date dateEcheaPermis) {
this.dateEcheaPermis = dateEcheaPermis;
}
public Date getDtVisitMed() {
return dtVisitMed;
}
public void setDtVisitMed(Date dtVisitMed) {
this.dtVisitMed = dtVisitMed;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getGsm() {
return gsm;
}
public void setGsm(String gsm) {
this.gsm = gsm;
}
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
public String getNumCpte() {
return numCpte;
}
public void setNumCpte(String numCpte) {
this.numCpte = numCpte;
}
public String getTypePermis() {
return typePermis;
}
public void setTypePermis(String typePermis) {
this.typePermis = typePermis;
}
public String getEtat() {
return etat;
}
public void setEtat(String etat) {
this.etat = etat;
}
public String getCertifBVM() {
return certifBVM;
}
public void setCertifBVM(String certifBVM) {
this.certifBVM = certifBVM;
}
public Set<PeriodeDeTravail> getPeriodesDeTravailExistantes() {
return periodesDeTravailExistantes;
}
public void setPeriodesDeTravailExistantes(
Set<PeriodeDeTravail> periodesDeTravailExistantes) {
this.periodesDeTravailExistantes = periodesDeTravailExistantes;
}
public Set<Avertissement> getAvertissements() {
return avertissements;
}
public void setAvertissements(Set<Avertissement> avertissements) {
this.avertissements = avertissements;
}
public Date getCurrent() {
return current;
}
public void setCurrent(Date current) {
this.current = current;
}
public Integer getId() {
return id;
}
public void ajoutePeriodeDeTravail(PeriodeDeTravail nouvellePeriodeDeTravail) throws PrjException {
if (!periodesDeTravailInitialisees()) {
throw new IllegalStateException("La liste des p�riodes de travail doit �tre initialis�e avant de pouvoir ajouter un contrat.");
}
for (PeriodeDeTravail periodeExistante : periodesDeTravailExistantes) {
if (nouvellePeriodeDeTravail.getPeriode().couvre(periodeExistante.getPeriode())) {
throw new PrjException("Un contrat couvre enti�rement ou partiellement la m�me p�riode que le nouveau contrat");
}
}
periodesDeTravailExistantes.add(nouvellePeriodeDeTravail);
}
public void initializePeriodesDeTravail(Set<PeriodeDeTravail> periodesDeTravail) {
this.periodesDeTravailExistantes = periodesDeTravail;
}
public boolean periodesDeTravailInitialisees() {
return periodesDeTravailExistantes != null;
}
// Ceci ne peut �tre appel� que depuis la base de donn�es.
public void initialiseAvertissements(Set<Avertissement> avertissements) {
this.avertissements = avertissements;
}
public void ajouteAvertissement(Avertissement nouveauAvertissement) {
}
public void supprimeAvertissement(Avertissement avertissement) {
}
public Avertissement getAvertissement(int idAvertissement) {
return null;
}
/**
* Change String en Date
* @param sDate
* @return
* @throws Exception
*/
Date transformeStringToDate(String sDate) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
return sdf.parse(sDate);
}
/**
* Calcule l'�ge de quelqu'un
* @param dateACalculerE
* @param dateJour
* @return
*/
public int calculeDate(Date dateACalculerE, Date dateJour) {
Calendar dtAcalcluler = new GregorianCalendar();
Calendar cToday = new GregorianCalendar();
dtAcalcluler.setTime(dateACalculerE);
cToday.setTime(dateJour);
int yearDiff = cToday.get(Calendar.YEAR) - dtAcalcluler.get(Calendar.YEAR);
dtAcalcluler.set(Calendar.YEAR, cToday.get(Calendar.YEAR));
if (dtAcalcluler.before(cToday)){
return yearDiff;
}
else {
return Math.max(0, yearDiff-1);
}
}
/**
* Calcule l'�ge du chauffeur
* @param anNais
* @param anSys
* @return
* @throws Exception
*/
public int calculeAge(String anNais, String anSys) throws Exception{
int age=0;
Date dtNais;
try {
dtNais = transformeStringToDate(anNais);
age=calculeDate(dtNais, current);
return age;
}
catch(PrjException e) {
throw new PrjException(e.RetourMessage());
}
}
/**
* Teste l'�ge du chauffeur
*/
public boolean testeAgeChauffeur(int age){
if(age < 21){
JOptionPane.showMessageDialog(null,"N'a pas l'�ge de rouler","Attention !",JOptionPane.ERROR_MESSAGE);
return false;
}
else
return true;
}
/**
* Teste dur�e permis
* si elle est < 5 elle retoune false
* @param duree
* @return
*/
public boolean testeDur�eChauffeur(int duree){
if(duree < 5){
JOptionPane.showMessageDialog(null,"Ce permis n'est pas valable dur�e < 5 ans ","Attention !",JOptionPane.ERROR_MESSAGE);
return false;
}
else
return true;
}
}