// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.transport;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.openstreetmap.josm.data.osm.DataSet;
import org.openstreetmap.josm.plugins.opendata.core.datasets.fr.FrenchAdministrativeUnit;
import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.DataGouvDataSetHandler;
import org.openstreetmap.josm.tools.Pair;
public class Route500Handler extends DataGouvDataSetHandler {
private static final String OSMFR_PORTAL = "http://osm13.openstreetmap.fr/~cquest/route500/";
private static final String ARCHIVE_PATTERN = "ROUTE500_1-1_SHP_LAMB93_D..._20..-..-..";
private static final String SHP_PATTERN = "(EMPRISE|NOEUD_FERRE|TRONCON_VOIE_FERREE|ZONE_OCCUPATION_SOL|"+
"COTE_FRONTIERE|TRONCON_HYDROGRAPHIQUE|COMMUNE|LIMITE_ADMINISTRATIVE|COMMUNICATION_RESTREINTE|NOEUD_COMMUNE|NOEUD_ROUTIER|TRONCON_ROUTE|AERODROME)";
public Route500Handler() {
super("572583");
setName("Route 500");
try {
setLocalPortalURL("http://professionnels.ign.fr/route500");
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
@Override
public boolean acceptsFilename(String filename) {
return accepts7ZipFilename(filename, ARCHIVE_PATTERN)
|| acceptsShpFilename(filename, SHP_PATTERN);
}
@Override
public void updateDataSet(DataSet ds) {
// TODO
}
@Override
public List<Pair<String, URL>> getDataURLs() {
List<Pair<String, URL>> result = new ArrayList<>();
try {
for (FrenchAdministrativeUnit dpt : FrenchAdministrativeUnit.allDepartments) {
if (dpt.getCode().startsWith("0")) { // Skip DOM/TOM
result.add(getRoute500URL(dpt.getCode(), dpt.getName()));
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
return result;
}
private Pair<String, URL> getRoute500URL(String code, String name) throws MalformedURLException {
return new Pair<>(name, new URL(OSMFR_PORTAL+"ROUTE500_1-1_SHP_LAMB93_D"+code+"_2012-11-21.7z"));
}
}