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
| public class Vehicule {
String matricule;
TypeVehicule typeVehicule;
Vehicule(String matricule, TypeVehicule typeVehicule) {
this.matricule = matricule;
this.typeVehicule = typeVehicule;
}
...
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || o.getClass() != getClass) {
return false;
}
return ((Vehicule) o).matricule = matricule;
}
}
public class TypeVehicule {
String categorie;
public TypeVehicule(String categorie) {
this.categorie = categorie;
}
...
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || o.getClass() != getClass) {
return false;
}
return ((TypeVehicule) o).categorie = categorie;
}
}
public class Parc {
Map<String, TypeVehicule> mapTypeVehiculeByCategorie = new HashMap<String, TypeVehicule>();
Map<TypeVehicule, List<Vehicule>> mapVehiculesByTypeVehicule = new HashMap<TypeVehicule, List<Vehicule>>();
List<Vehicule> listeVehicules = new ArrayList<Vehicule>();
public Vehicule newVehicule(String matricule, TypeVehicule typeVehicule) {
if (matricule = null || typeVehicule == null) {
throw IllegalArgumentException("Matricule / type de véhicule null");
}
Vehicule vehicule = new Vehicule(matricule, typeVehicule);
if (this.listeVehicules.contains(vehicule)) {
throw new IllegalArgumentException("Véhicule " + vehicule + " existe déjà");
}
String categorie = typeVehicule.getCategorie();
if (!mapTypeVehiculeByCategorie.containsKey(categorie)) {
mapTypeVehiculeByCategorie.put(categorie, typeVehicule);
}
Liste<Vehicule> vehicules =
mapVehiculesByTypeVehicule.get(typeVehicule);
if (vehicules == null) {
vehicules = new ArrayList<Vehicule>();
mapVehiculesByTypeVehicule.put(typeVehicule, vehicules);
}
vehicules.add(vehicule);
this.listeVehicules.add(vehicule);
return vehicule;
}
public List<TypeVehicule> getListeTypesVehicule() {
return Collections.unmodifiableList(mapTypesVehicule.values());
}
public List<Vehicule> getListeVehicules() {
return Collections.unmodifiableList(listeVehicules);
}
public List<Vehicule> getListeVehiculesByCategorie(String categorie) {
TypeVehicule typeVehicule = mapTypeVehiculeByCategorie.get(categorie);
if (typeVehicule == null) {
throw new IllegalargumentException("Catégorie " + categorie + " inexistante");
}
return getListeVehiculesByType(typeVehicule);
}
public List<Vehicule> getListeVehiculesByType(TypeVehicule typeVehicule) {
return Collections.unmodifiableList(mapVehiculesByTypeVehicule.get(typeVehicule));
}
} |
Partager