// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.urbanisme;
import java.util.HashMap;
import java.util.Map;
import org.openstreetmap.josm.data.osm.DataSet;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.data.osm.Relation;
import org.openstreetmap.josm.data.osm.RelationMember;
import org.openstreetmap.josm.plugins.opendata.core.util.NamesFrUtils;
import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.ToulouseDataSetHandler;
public class NumerosRueHandler extends ToulouseDataSetHandler {
public NumerosRueHandler() {
super(12673, "addr:housenumber");
setWikiPage("Numéros de rue");
setCategory(CAT_URBANISME);
}
@Override
public boolean acceptsFilename(String filename) {
return acceptsCsvKmzTabFilename(filename, "Numeros");
}
@Override
public void updateDataSet(DataSet ds) {
Map<String, Relation> associatedStreets = new HashMap<>();
for (Node n : ds.getNodes()) {
replace(n, "no", "addr:housenumber");
n.remove("numero");
replace(n, "lib_off", "addr:street");
n.remove("mot_directeur");
n.remove("name");
n.remove("rivoli");
String fantoir = n.get("nrivoli").substring(6);
n.remove("nrivoli");
n.remove("color");
String streetName = NamesFrUtils.checkStreetName(n, "addr:street");
Relation street = associatedStreets.get(n.get("sti"));
if (street == null) {
associatedStreets.put(n.get("sti"), street = new Relation());
street.put("type", "associatedStreet");
street.put("name", streetName);
street.put("ref:FR:FANTOIR", fantoir);
ds.addPrimitive(street);
}
street.addMember(new RelationMember("house", n));
n.remove("sti");
}
}
}