112 lines
2.4 KiB
Java
112 lines
2.4 KiB
Java
|
import java.time.LocalDateTime;
|
||
|
import java.util.*;
|
||
|
|
||
|
/**
|
||
|
* {@code PointDeVente} décrit un point de vente de carburant.
|
||
|
*/
|
||
|
|
||
|
public class PointDeVente {
|
||
|
private long identifiant;
|
||
|
private double latitude;
|
||
|
private double longitude;
|
||
|
private String adresse;
|
||
|
private String ville;
|
||
|
private String codePostal;
|
||
|
|
||
|
/** Les services proposés. */
|
||
|
private Set<String> services;
|
||
|
|
||
|
/** Les changements de prix (valeur) d'un carburant (clé) */
|
||
|
private Map<Carburant, NavigableMap<LocalDateTime, Integer>> prix;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Initialiser un point de vente.
|
||
|
* Pour des raisons d'efficacité, {@code PointDeVente} garde directement
|
||
|
* un accès sur ses paramètres. Il ne faut donc pas que ces paramètres
|
||
|
* restent accessibles du reste de l'application.
|
||
|
*/
|
||
|
public PointDeVente(long identifiant, double latitude, double longitude,
|
||
|
String adresse, String ville, String codePostal,
|
||
|
Set<String> services,
|
||
|
Map<Carburant, NavigableMap<LocalDateTime, Integer>> prix)
|
||
|
{
|
||
|
this.identifiant = identifiant;
|
||
|
this.latitude = latitude;
|
||
|
this.longitude = longitude;
|
||
|
this.adresse = adresse;
|
||
|
this.ville = ville;
|
||
|
this.codePostal = codePostal;
|
||
|
this.services = Collections.unmodifiableSet(services);
|
||
|
this.prix = Collections.unmodifiableMap(prix);
|
||
|
}
|
||
|
|
||
|
|
||
|
@Override public String toString() {
|
||
|
return "[" + getIdentifiant() + "] "
|
||
|
+ getAdresse() + ", " + getCodePostal() + " " + getVille();
|
||
|
}
|
||
|
|
||
|
|
||
|
public long getIdentifiant() {
|
||
|
return identifiant;
|
||
|
}
|
||
|
|
||
|
|
||
|
public double getLatitude() {
|
||
|
return latitude;
|
||
|
}
|
||
|
|
||
|
|
||
|
public double getLongitude() {
|
||
|
return longitude;
|
||
|
}
|
||
|
|
||
|
|
||
|
public String getAdresse() {
|
||
|
return adresse;
|
||
|
}
|
||
|
|
||
|
|
||
|
public String getVille() {
|
||
|
return ville;
|
||
|
}
|
||
|
|
||
|
|
||
|
public String getCodePostal() {
|
||
|
return codePostal;
|
||
|
}
|
||
|
|
||
|
|
||
|
public Set<String> getServices() {
|
||
|
return services;
|
||
|
}
|
||
|
|
||
|
|
||
|
public Map<Carburant, NavigableMap<LocalDateTime, Integer>> getPrix() {
|
||
|
return prix;
|
||
|
}
|
||
|
|
||
|
|
||
|
/** Obtenir le prix d'un carburant à une date donnée. Si le point ce point
|
||
|
* de vente ne propose le carburant, la valeur de 0 sera retournée.
|
||
|
* @param carburant le carburant dont on veut connaître le prix
|
||
|
* @param date la date où l'on veut connaître le prix
|
||
|
*/
|
||
|
public int getPrix(Carburant carburant, LocalDateTime date) {
|
||
|
|
||
|
NavigableMap<LocalDateTime, Integer> map = prix.get(carburant);
|
||
|
int recup;
|
||
|
|
||
|
try {
|
||
|
recup = map.get(map.floorKey(date));
|
||
|
} catch (java.lang.NullPointerException e) {
|
||
|
recup = 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
return recup;
|
||
|
}
|
||
|
|
||
|
}
|