1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
public static void f03ChargerVols() {
System.out.println("f03ChargerVols");
System.out.println("\n");
// definir le fichier a lire
File file = new File("/home/grub/Documents/java/Exercices_a_faire/01_gestion_des_vols/Cie_Air_Relax.txt");
try {
// cree 1 objet de type Scanner
Scanner scanFile = new Scanner(file);
// definit 1 List de type ArrayList qui n'accepte
// que des String
List<String> liste = new ArrayList<String>();
// boucle pr lire le fichier
while(scanFile.hasNext()) {
// ajoute chaque ligne du fichier
// ds la ArrayList
liste.add(scanFile.nextLine());
}
// boucle pr agir sur chaque element
// contenu desormais ds la ArrayList
// on extrait les 4 informat° necessaires
// - le n° du vol
// - la destinat° du vol
// - la date du vol
// - le nbre de reservat° du vol
for(int i = 0; i < liste.size(); i++) {
// affichage de chaque elt complet de la ArrayList
// 1 elt de cette liste = 1 L du fichier texte
// System.out.println(liste.get(i));
// definir la source a traiter
// (ici, Les L 1 a 1 de la ArrayList)
String source = liste.get(i);
// variables pr pvoir modifier
// le type (de String en int)
// des infos extraites depuis la
// ArrayList
// (initialisat° des variables obligatoire?)
int intNumeroDuVol = 0;
String destinationDuVol = "";
Date d = null;
int intNombreDeReservations = 0;
// variables de type Pattern regex pr extraire les donnees
Pattern pNumeroDuVol = Pattern.compile("(^[0-9]+)");
Pattern pDestination = Pattern.compile("([a-zA-Z-\\p{L}]+ [a-zA-Z-\\p{L}]+ [a-zA-Z-\\p{L}]+|[a-zA-Z-\\p{L}]+ [a-zA-Z-\\p{L}]+|[a-zA-Z-\\p{L}]+)");
Pattern pDateDuVol = Pattern.compile("((?:[0-9][0-9] [0-9][0-9] [0-9][0-9][0-9][0-9]))");
Pattern pNombreDeReservations = Pattern.compile("([0-9]+$)");
// variables de type Matcher pr etablir la
// correspondance avec les pattern regex ci-dessus
Matcher mNumeroDuVol = pNumeroDuVol.matcher(source);
Matcher mDestination = pDestination.matcher(source);
Matcher mDateDuVol = pDateDuVol.matcher(source);
Matcher mNombreDeReservations = pNombreDeReservations.matcher(source);
// extrait le n° du vol de la L
if(mNumeroDuVol.find()) {
// System.out.println("Numero du vol: " + mNumeroDuVol.group(0));
String numeroDuVol = mNumeroDuVol.group(0);
// modificat° du type de la donnee
intNumeroDuVol = Integer.parseInt(numeroDuVol);
}
// extrait la destination du vol de la L
if(mDestination.find()) {
// System.out.println("destination du vol: " + mDestination.group(0));
destinationDuVol = mDestination.group(0);
}
// extrait la date, le jour, le mois et l'annee du vol de la L
// modifie le type (de String en int) des 3 dernières infos
if(mDateDuVol.find()) {
// System.out.println("date du vol: " + mDateDuVol.group(0));
// System.out.println("jour du vol: " + mDateDuVol.group(0).substring(0, 2));
String jourDuVol = mDateDuVol.group(0).substring(0, 2);
// modificat° du type de la donnee
int intJourDuVol = Integer.parseInt(jourDuVol);
// System.out.println("mois du vol: " + mDateDuVol.group(0).substring(3, 5));
String moisDuVol = mDateDuVol.group(0).substring(3, 5);
// modificat° du type de la donnee
int intMoisDuVol = Integer.parseInt(moisDuVol);
// System.out.println("Annee du vol: " + mDateDuVol.group(0).substring(6, 10));
String anneeDuVol = mDateDuVol.group(0).substring(6, 10);
// modificat° du type de la donnee
int intAnneeDuVol = Integer.parseInt(anneeDuVol);
// creat° d'objets de type Date
// on est tjs ds la boucle for)
d = new Date(intJourDuVol, intMoisDuVol, intAnneeDuVol);
}
// extrait le nbre de resa du vol de la L
if(mNombreDeReservations.find()) {
// System.out.println("Nbre de resas du vol: " + mNombreDeReservations.group(0));
String nombreDeReservations = mNombreDeReservations.group(0);
// modificat° du type de la donnee
intNombreDeReservations = Integer.parseInt(nombreDeReservations);
}
// creat° d'objets de type Vol
// (on est tjs ds la boucle for)
Vol v = new Vol(intNumeroDuVol, destinationDuVol, d, intNombreDeReservations);
// remplit la List (ArrayList) qui
// stocke les vols
vols.add(v);
}
// ferme l'objet de type Scanner
// scanFile.close();
// ferme le fichier
// peut etre qu'il est fermé automatiquement
// TODO: verifier si la fermeture du fichier est necessaire
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
} |
Partager