package importation.csv;
import gui.MainWindow;
import gui.util.TaxiGuiUtil;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import dao.ITourneeDao;
import modele.course.Tournee;
import modele.course.Trajet;
public class CSVTrajetDecodeur implements ICsvDecodeur<Trajet> {
private final ITourneeDao tourneeDao;
private static final int INDEX_CHAMP_CODE_TOURNEE = 0;
private static final int INDEX_CHAMP_ADRESSE_DEPART = 1;
private static final int INDEX_CHAMP_KM_TAXISMETRE_DEPART = 2;
private static final int INDEX_CHAMP_DATE_HEURE_DEPART = 3;
private static final int INDEX_CHAMP_ADRESSE_ARRIVEE = 4;
private static final int INDEX_CHAMP_KM_TAXISMETRE_ARRIVE = 5;
private static final int INDEX_CHAMP_DATE_HEURE_ARRIVEE = 6;
private static final int INDEX_CHAMP_PRIX_COURSE = 7;
private static final int INDEX_CHAMP_PRIX_SUPPLEMENT = 8;
/**
* Constructeur
* @param tourneeDao
*/
public CSVTrajetDecodeur(ITourneeDao tourneeDao) {
this. tourneeDao = tourneeDao;
}
/**
* construit un trajet
* � partir de d'une ligne de donn�e
*
*/
public Trajet decode(String[] ligne) {
Trajet trajet = new Trajet();
Tournee tournee = tourneeDao.find(Integer.parseInt(ligne[INDEX_CHAMP_CODE_TOURNEE]));
trajet.setTournee(tournee);
trajet.setAddresseDepart(ligne[INDEX_CHAMP_ADRESSE_DEPART]);
trajet.setKilometrageTaximetreDepart(Long.parseLong(ligne[INDEX_CHAMP_KM_TAXISMETRE_DEPART]));
Date dateDebutTrajet = null;
String format = gui.MotsCleProjet.DATE_TIME_FORMAT;
try {
dateDebutTrajet = new SimpleDateFormat(format).parse(ligne[INDEX_CHAMP_DATE_HEURE_DEPART]);
trajet.setHeureDepart(dateDebutTrajet);
} catch (ParseException e) {
TaxiGuiUtil.MessageBox(MainWindow.desktop(), "Le format de date est invalide : attendu " + format, "Erreur");
}
trajet.setAddresseArrivee(ligne[INDEX_CHAMP_ADRESSE_ARRIVEE]);
trajet.setKilometrageTaximetreArrivee(Long.parseLong(ligne[INDEX_CHAMP_KM_TAXISMETRE_ARRIVE]));
Date dateFinTrajet = null;
try {
dateFinTrajet = new SimpleDateFormat(format).parse(ligne[INDEX_CHAMP_DATE_HEURE_ARRIVEE]);
trajet.setHeureArrivee(dateFinTrajet);
} catch (ParseException e) {
TaxiGuiUtil.MessageBox(MainWindow.desktop(), "Le format de date est invalide : attendu " + format, "Erreur");
}
trajet.setPrixCourse(new BigDecimal(ligne[INDEX_CHAMP_PRIX_COURSE]));
trajet.setPrixSupplementaire(new BigDecimal(ligne[INDEX_CHAMP_PRIX_SUPPLEMENT]));
return trajet;
}
}