// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.opendata.core.datasets.fr;
public abstract class FrenchAdministrativeUnit {
private final String code;
private final String name;
private FrenchAdministrativeUnit(String code, String name) {
this.code = code;
this.name = name;
}
public final String getCode() {
return code;
}
public final String getName() {
return name;
}
public static final class FrenchDepartment extends FrenchAdministrativeUnit {
private FrenchDepartment(String code, String name) {
super(code, name);
}
}
public static final class FrenchRegion extends FrenchAdministrativeUnit {
private FrenchRegion(String code, String name) {
super(code, name);
}
}
public static final FrenchDepartment[] allDepartments = new FrenchDepartment[] {
new FrenchDepartment("001", "Ain"),
new FrenchDepartment("002", "Aisne"),
new FrenchDepartment("003", "Allier"),
new FrenchDepartment("004", "Alpes-de-Haute-Provence"),
new FrenchDepartment("005", "Hautes-Alpes"),
new FrenchDepartment("006", "Alpes-Maritimes"),
new FrenchDepartment("007", "Ardèche"),
new FrenchDepartment("008", "Ardennes"),
new FrenchDepartment("009", "Ariège"),
new FrenchDepartment("010", "Aube"),
new FrenchDepartment("011", "Aude"),
new FrenchDepartment("012", "Aveyron"),
new FrenchDepartment("013", "Bouches-du-Rhône"),
new FrenchDepartment("014", "Calvados"),
new FrenchDepartment("015", "Cantal"),
new FrenchDepartment("016", "Charente"),
new FrenchDepartment("017", "Charente-Maritime"),
new FrenchDepartment("018", "Cher"),
new FrenchDepartment("019", "Corrèze"),
new FrenchDepartment("02A", "Corse-du-Sud"),
new FrenchDepartment("02B", "Haute-Corse"),
new FrenchDepartment("021", "Côte-d'Or"),
new FrenchDepartment("022", "Côtes-d'Armor"),
new FrenchDepartment("023", "Creuse"),
new FrenchDepartment("024", "Dordogne"),
new FrenchDepartment("025", "Doubs"),
new FrenchDepartment("026", "Drôme"),
new FrenchDepartment("027", "Eure"),
new FrenchDepartment("028", "Eure-et-Loir"),
new FrenchDepartment("029", "Finistère"),
new FrenchDepartment("030", "Gard"),
new FrenchDepartment("031", "Haute-Garonne"),
new FrenchDepartment("032", "Gers"),
new FrenchDepartment("033", "Gironde"),
new FrenchDepartment("034", "Hérault"),
new FrenchDepartment("035", "Ille-et-Vilaine"),
new FrenchDepartment("036", "Indre"),
new FrenchDepartment("037", "Indre-et-Loire"),
new FrenchDepartment("038", "Isère"),
new FrenchDepartment("039", "Jura"),
new FrenchDepartment("040", "Landes"),
new FrenchDepartment("041", "Loir-et-Cher"),
new FrenchDepartment("042", "Loire"),
new FrenchDepartment("043", "Haute-Loire"),
new FrenchDepartment("044", "Loire-Atlantique"),
new FrenchDepartment("045", "Loiret"),
new FrenchDepartment("046", "Lot"),
new FrenchDepartment("047", "Lot-et-Garonne"),
new FrenchDepartment("048", "Lozère"),
new FrenchDepartment("049", "Maine-et-Loire"),
new FrenchDepartment("050", "Manche"),
new FrenchDepartment("051", "Marne"),
new FrenchDepartment("052", "Haute-Marne"),
new FrenchDepartment("053", "Mayenne"),
new FrenchDepartment("054", "Meurthe-et-Moselle"),
new FrenchDepartment("055", "Meuse"),
new FrenchDepartment("056", "Morbihan"),
new FrenchDepartment("057", "Moselle"),
new FrenchDepartment("058", "Nièvre"),
new FrenchDepartment("059", "Nord"),
new FrenchDepartment("060", "Oise"),
new FrenchDepartment("061", "Orne"),
new FrenchDepartment("062", "Pas-de-Calais"),
new FrenchDepartment("063", "Puy-de-Dôme"),
new FrenchDepartment("064", "Pyrénées-Atlantiques"),
new FrenchDepartment("065", "Hautes-Pyrénées"),
new FrenchDepartment("066", "Pyrénées-Orientales"),
new FrenchDepartment("067", "Bas-Rhin"),
new FrenchDepartment("068", "Haut-Rhin"),
new FrenchDepartment("069", "Rhône"),
new FrenchDepartment("070", "Haute-Saône"),
new FrenchDepartment("071", "Saône-et-Loire"),
new FrenchDepartment("072", "Sarthe"),
new FrenchDepartment("073", "Savoie"),
new FrenchDepartment("074", "Haute-Savoie"),
new FrenchDepartment("075", "Paris"),
new FrenchDepartment("076", "Seine-Maritime"),
new FrenchDepartment("077", "Seine-et-Marne"),
new FrenchDepartment("078", "Yvelines"),
new FrenchDepartment("079", "Deux-Sèvres"),
new FrenchDepartment("080", "Somme"),
new FrenchDepartment("081", "Tarn"),
new FrenchDepartment("082", "Tarn-et-Garonne"),
new FrenchDepartment("083", "Var"),
new FrenchDepartment("084", "Vaucluse"),
new FrenchDepartment("085", "Vendée"),
new FrenchDepartment("086", "Vienne"),
new FrenchDepartment("087", "Haute-Vienne"),
new FrenchDepartment("088", "Vosges"),
new FrenchDepartment("089", "Yonne"),
new FrenchDepartment("090", "Territoire de Belfort"),
new FrenchDepartment("091", "Essonne"),
new FrenchDepartment("092", "Hauts-de-Seine"),
new FrenchDepartment("093", "Seine-Saint-Denis"),
new FrenchDepartment("094", "Val-de-Marne"),
new FrenchDepartment("095", "Val-d'Oise"),
new FrenchDepartment("971", "Guadeloupe"),
new FrenchDepartment("972", "Martinique"),
new FrenchDepartment("973", "Guyane"),
new FrenchDepartment("974", "La Réunion"),
new FrenchDepartment("976", "Mayotte"),
};
public static final FrenchRegion[] allRegions = new FrenchRegion[] {
new FrenchRegion("42", "Alsace"),
new FrenchRegion("72", "Aquitaine"),
new FrenchRegion("83", "Auvergne"),
new FrenchRegion("25", "Basse-Normandie"),
new FrenchRegion("26", "Bourgogne"),
new FrenchRegion("53", "Bretagne"),
new FrenchRegion("24", "Centre"),
new FrenchRegion("21", "Champagne-Ardenne"),
new FrenchRegion("94", "Corse"),
new FrenchRegion("43", "Franche-Comté"),
new FrenchRegion("23", "Haute-Normandie"),
new FrenchRegion("11", "Île-de-France"),
new FrenchRegion("91", "Languedoc-Roussillon"),
new FrenchRegion("74", "Limousin"),
new FrenchRegion("41", "Lorraine"),
new FrenchRegion("73", "Midi-Pyrénées"),
new FrenchRegion("31", "Nord-Pas-de-Calais"),
new FrenchRegion("52", "Pays de la Loire"),
new FrenchRegion("22", "Picardie"),
new FrenchRegion("54", "Poitou-Charentes"),
new FrenchRegion("93", "Provence-Alpes-Côte d'Azur"),
new FrenchRegion("82", "Rhône-Alpes"),
new FrenchRegion("01", "Guadeloupe"),
new FrenchRegion("02", "Martinique"),
new FrenchRegion("03", "Guyane"),
new FrenchRegion("04", "La Réunion"),
new FrenchRegion("05", "Mayotte")
};
private static <T extends FrenchAdministrativeUnit> T getUnitFor(String code, T[]units) {
for (T u : units) {
if (u.getCode().equals(code)) {
return u;
}
}
return null;
}
public static FrenchDepartment getDepartmentFor(String dptCode) {
return getUnitFor(dptCode, allDepartments);
}
public static FrenchRegion getRegionFor(String regCode) {
return getUnitFor(regCode, allRegions);
}
}