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 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
|
// ListeVols.java
package aeroport;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.StringTokenizer;
import java.io.*;
import java.util.Collection;
/**
*
*/
public class ListeVols {
private ArrayList<Vol> liste ;
/* constructeurs */
public ListeVols() {
liste = new ArrayList();
String titre=
"\t\tVol\t\tAvion\t\t\tHeure\tVille\t\tType\n";
}
public boolean estvide(){
return liste.isEmpty();
}
public void ajouter(Vol o){
liste.add(o);
}
public void enlever(Vol o){
liste.remove(o);
}
public boolean contient(Vol o){
return liste.contains(o);
}
public int nombre(){
return liste.size();
}
public String toString(){
return liste.toString();
}
public ArrayList<Vol> getListe(){
return liste;
}
/*
* Retourne le vol ayant le num vol passe en parametre
* retourne nul si pas trouve
*/
public Vol getElement(String num)
{
for (int i=0; i<liste.size(); i++)
{
Vol volCourant=liste.get(i); // on reccupere le vol d'indice i
if (num.equals(volCourant.getNumero()))
return volCourant; // retourne le vol courant si numero vol coincide
}
return null; // null sinon
}
/*
* Afficher les vols selon qu'ils soient du type passe en parametre :
* 0 : Atterrissages et Decollages
* 1 : Atterrissages seuls
* 2 : Decollages seuls
*/
public void afficher(int type)
{
switch (type)
{
case 1: // Atterrissages seuls
for (Vol v : liste)
{
if (v instanceof VolArrivee)
{
v.affiche();
}
}
break;
case 2: // Decollages seuls
for (Vol v : liste)
{
if (v instanceof VolDepart)
{
v.affiche();
}
}
break;
default: // Atterrissages et decollages
for (Vol v : liste)
{
v.affiche();
}
break;
}
}
//
// Initialise la liste des vols
// en fonction du fichier de donnes qui contient :
// numero vol, heure, minute, ville, numero avion (avion qui atterit)
// numero vol, heure, minute, ville, numero avion (le meme avion qui cette fois ci decolle)
//
// On indique en parametre le nom du fichier a ouvrir
// et la liste de sejours a remplir (1 sejour = 1 arrivee + 1 depart du meme avion)
//
public void initialiseLesVols(String nomFichier, ListeSejours lesSejours, ListeAvions lesAvions)
{
ListeVols lesVols = new ListeVols();
int h, mn;
String num0, num1, ville, avion;
Avion avionS;
Horaire heure0,heure1;
TrancheHoraire occupe;
String ligne=null;
Sejour sejour;
Vol volA, volD;
System.out.println("");
System.out.println("*** Debut de traitement "+nomFichier+" [");
try
{
BufferedReader entree = new BufferedReader(new FileReader(nomFichier));
StringTokenizer tokens;
while ((ligne=entree.readLine())!= null)
{
//
// lecture et traitement du vol ARRIVEE
//
tokens= new StringTokenizer(ligne," ");
num0=tokens.nextToken();
h=Integer.parseInt(tokens.nextToken());
mn=Integer.parseInt(tokens.nextToken());
heure0=new Horaire(h,mn);
ville=tokens.nextToken();
avion=tokens.nextToken();
volA=new VolArrivee(num0,heure0,ville,avion,"Atterit");
lesVols.ajouter(volA); // ajoute a la liste
System.out.print("["+num0+" : Avion "+avion+" - arrivee: "+heure0+" \t("+ville+")");
//
// lecture et traitement du vol DEPART
//
ligne=entree.readLine();
tokens= new StringTokenizer(ligne," ");
num1=tokens.nextToken();
h=Integer.parseInt(tokens.nextToken());
mn=Integer.parseInt(tokens.nextToken());
heure1=new Horaire(h,mn);
ville=tokens.nextToken();
avion=tokens.nextToken();
volD=new VolDepart(num1, heure1, ville, avion,"Decolle");
lesVols.ajouter(volD); // ajoute a la liste
System.out.println("] \t\t\t ["+num1+" : depart: "+heure1+" \t("+ville+")]");
// on creer les sejours au fur et a mesure de la lecture du fichier vol
// on se contente d'attribuer le sejour sans se preoccuper du parking pour l'instant
// (on indique un point a la place du nom de parking)
avionS=((ListeAvions) lesAvions).trouveAvion(avion);
sejour=new Sejour(volA,volD,avionS,null);
lesSejours.ajouter(sejour); // constitution liste des sejours
}
System.out.println ("] *** fin de traitement "+nomFichier);
}
catch(IOException e)
{
System.out.println ("Probleme lecture "+nomFichier);
}
}
} |