33import java .util .ArrayList ;
44import java .util .Arrays ;
55import java .util .Collection ;
6+ import java .util .EnumMap ;
7+ import java .util .List ;
68import java .util .Map ;
79import java .util .stream .Collectors ;
810import java .util .stream .Stream ;
911
12+ import fr .france .Caumune ;
1013import fr .france .Departement ;
1114import fr .france .Region ;
15+ import fr .france .RepertoireCaumune ;
1216import fr .france .StatutDepartement ;
1317
1418/**
@@ -28,11 +32,9 @@ private OutilsDepartement() {
2832 throw new IllegalStateException ("Class utilitaire" );
2933 }
3034
31- private static final Stream <Departement > STREAM = Arrays .asList (Departement .values ()).stream ();
32- private static final Map <Integer , Departement > REPERTOIRE_CODE = OutilsRepertoireGenerique
33- .genererMap (STREAM .map (Departement ::getCode ).collect (Collectors .toList ()), Departement .class );
34- private static final RepertoireGenerique <Departement > REPERTOIRE_DEPARTEMENT = new RepertoireGenerique <>(
35- Departement .class );
35+ private static final Map <Integer , Departement > REPERTOIRE_CODE = initialiserRepertoireCode ();
36+ private static final RepertoireGenerique <Departement > REPERTOIRE_NOM = new RepertoireGenerique <>(Departement .class );
37+ private static final Map <Departement , List <Caumune >> REPERTOIRE_CAUMUNE = initialiserRepertoireCaumune ();
3638
3739 public static Departement [] filtrerDepartementsParRegion (Region region ) {
3840 Collection <Departement > result = new ArrayList <>();
@@ -51,10 +53,30 @@ public static Departement[] filtrerDepartementsParStatut(StatutDepartement statu
5153 }
5254
5355 public static Departement rechercherParNom (String nom ) {
54- return REPERTOIRE_DEPARTEMENT .rechercherParNom (nom );
56+ return REPERTOIRE_NOM .rechercherParNom (nom );
5557 }
5658
5759 public static Departement rechercherParCode (int code ) {
5860 return REPERTOIRE_CODE .get (code );
5961 }
62+
63+ public static List <Caumune > getCaumunes (Departement departement ){
64+ return REPERTOIRE_CAUMUNE .get (departement );
65+ }
66+
67+ private static EnumMap <Departement , List <Caumune >> initialiserRepertoireCaumune () {
68+ EnumMap <Departement , List <Caumune >> result = new EnumMap <>(Departement .class );
69+ for (Caumune caumune : RepertoireCaumune .getCaumunes ()) {
70+ Departement departement = caumune .getDepartement ();
71+ List <Caumune > caumunes = result .computeIfAbsent (departement , k -> new ArrayList <>());
72+ caumunes .add (caumune );
73+ }
74+ return result ;
75+ }
76+
77+ private static Map <Integer , Departement > initialiserRepertoireCode () {
78+ return OutilsRepertoireGenerique .genererMap (
79+ Arrays .asList (Departement .values ()).stream ().map (Departement ::getCode ).collect (Collectors .toList ()),
80+ Departement .class );
81+ }
6082}
0 commit comments