// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.education;

import org.openstreetmap.josm.data.coor.EastNorth;
import org.openstreetmap.josm.data.coor.LatLon;
import org.openstreetmap.josm.data.osm.DataSet;
import org.openstreetmap.josm.data.osm.Node;
import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
import org.openstreetmap.josm.plugins.opendata.core.io.tabular.DefaultCsvHandler;
import org.openstreetmap.josm.plugins.opendata.modules.fr.datagouvfr.datasets.DataGouvDataSetHandler;

public class Etab1er2ndDegreHandler extends DataGouvDataSetHandler {

    private class EtabCsvHandler extends DefaultCsvHandler {
        
        public EtabCsvHandler() {
            setCharset(OdConstants.ISO8859_15);
            setHandlesProjection(true);
        }
        
        @Override
        public LatLon getCoor(EastNorth en, String[] fields) {
            return getLatLonByDptCode(en, fields[0].substring(0, 3), false);
        }
    }
    
    public Etab1er2ndDegreHandler() {
        super("Géolocalisation-des-établissements-d'enseignement-du-premier-degré-et-du-second-degré-du-ministère-d-30378093");
        setName("Établissements d'enseignement du premier degré et du second degré");
        setDownloadFileName("MENJVA_etab_geoloc.csv");
        setCsvHandler(new EtabCsvHandler());
    }
    
    @Override
    public boolean acceptsFilename(String filename) {
        return acceptsCsvFilename(filename, "MENJVA_etab_geoloc(\\.csv-fr)?");
    }

    @Override
    public void updateDataSet(DataSet ds) {
        for (Node n : ds.getNodes()) {
            n.put("amenity", "school");
            replace(n, "numero_uai", "ref:FR:UAI");
            replace(n, "appellation_officielle_uai", "name");
            add(n, "lib_nature", "school:FR", 
                    new String[]{".*MATERNELLE.*", ".*ELEMENTAIRE.*", "COLLEGE.*", "LYCEE.*"}, 
                    new String[]{"maternelle", "élémentaire", "college", "lycée"});
            n.remove("etat_etablissement"); // Toujours a 1
            n.remove("nature_uai"); // cle numerique associe au champ lib_nature, redondant, donc
            n.remove("patronyme_uai"); // deja dans le nom
            n.remove("sous_fic"); // cycle ? 1 pour ecoles, 3 pour colleges et lycees
            // Voir http://www.infocentre.education.fr/bcn/domaine/voir/id/31
        }
    }
}
