Changeset 28044 in osm for applications/editors/josm


Ignore:
Timestamp:
2012-03-11T17:50:51+01:00 (13 years ago)
Author:
donvip
Message:

opendata: allow to download Paris and Toulouse data

Location:
applications/editors/josm/plugins/opendata
Files:
7 added
51 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/opendata/build.xml

    r28021 r28044  
    2828    <property name="commit.message" value="Commit message"/>
    2929    <!-- enter the *lowest* JOSM version this plugin is currently compatible with -->
    30     <property name="plugin.main.version" value="5056"/>
     30    <property name="plugin.main.version" value="5068"/>
    3131    <!-- should not be necessary to change the following properties -->
    3232    <property name="josm" location="../../core/dist/josm-custom.jar"/>
  • applications/editors/josm/plugins/opendata/modules/fr.paris/src/org/openstreetmap/josm/plugins/opendata/modules/fr/paris/ParisConstants.java

    r28000 r28044  
    2828         * Portal
    2929         */
    30         public static final String PORTAL = "http://opendata.paris.fr/opendata/jsp/site/Portal.jsp?";
     30        public static final String PORTAL = "http://opendata.paris.fr/opendata/";
    3131
    3232        /**
  • applications/editors/josm/plugins/opendata/modules/fr.paris/src/org/openstreetmap/josm/plugins/opendata/modules/fr/paris/datasets/ParisDataSetHandler.java

    r28000 r28044  
    2626       
    2727        private int documentId;
    28         private int portletId;
     28        private static final int portletId = 106; // FIXME
    2929       
    30         public ParisDataSetHandler(int documentId, int portletId) {
    31                 init(documentId, portletId);
     30        public ParisDataSetHandler(int documentId) {
     31                init(documentId);
    3232        }
    3333       
    34         public ParisDataSetHandler(int documentId, int portletId, String relevantTag) {
     34        public ParisDataSetHandler(int documentId, String relevantTag) {
    3535                super(relevantTag);
    36                 init(documentId, portletId);
     36                init(documentId);
    3737        }
    3838       
    39         public ParisDataSetHandler(int documentId, int portletId, boolean relevantUnion, String ... relevantTags) {
     39        public ParisDataSetHandler(int documentId, boolean relevantUnion, String ... relevantTags) {
    4040                super(relevantUnion, relevantTags);
    41                 init(documentId, portletId);
     41                init(documentId);
    4242        }
    4343
    44         public ParisDataSetHandler(int documentId, int portletId, String ... relevantTags) {
    45                 this(documentId, portletId, false, relevantTags);
     44        public ParisDataSetHandler(int documentId, String ... relevantTags) {
     45                this(documentId, false, relevantTags);
    4646        }
    4747
    48         public ParisDataSetHandler(int documentId, int portletId, boolean relevantUnion, Tag ... relevantTags) {
     48        public ParisDataSetHandler(int documentId, boolean relevantUnion, Tag ... relevantTags) {
    4949                super(relevantUnion, relevantTags);
    50                 init(documentId, portletId);
     50                init(documentId);
    5151        }
    5252
    53         private final void init(int documentId, int portletId) {
     53        private final void init(int documentId) {
    5454                this.documentId = documentId;
    55                 this.portletId = portletId;
    5655        }
    5756
     
    7574                try {
    7675                        if (documentId > 0) {
    77                                 return new URL(PORTAL + "document_id="+documentId + "&portlet_id="+portletId);
     76                                return new URL(PORTAL + "jsp/site/Portal.jsp?document_id="+documentId + "&portlet_id="+portletId);
     77                        }
     78                } catch (MalformedURLException e) {
     79                        e.printStackTrace();
     80                }
     81                return null;
     82        }
     83       
     84        protected abstract String getDirectLink();
     85
     86        /* (non-Javadoc)
     87         * @see org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler#getDataURL()
     88         */
     89        @Override
     90        public URL getDataURL() {
     91                try {
     92                        if (documentId > 0) {
     93                                return new URL(PORTAL + "rating/download/?id_resource="+documentId + "&type_resource=document&url="+getDirectLink());
    7894                        }
    7995                } catch (MalformedURLException e) {
  • applications/editors/josm/plugins/opendata/modules/fr.paris/src/org/openstreetmap/josm/plugins/opendata/modules/fr/paris/datasets/urbanisme/SanisettesHandler.java

    r28000 r28044  
    1616package org.openstreetmap.josm.plugins.opendata.modules.fr.paris.datasets.urbanisme;
    1717
     18import java.util.ArrayList;
     19import java.util.Iterator;
     20import java.util.List;
     21
     22import org.openstreetmap.josm.corrector.UserCancelException;
    1823import org.openstreetmap.josm.data.osm.DataSet;
     24import org.openstreetmap.josm.data.osm.Node;
     25import org.openstreetmap.josm.data.osm.Way;
     26import org.openstreetmap.josm.plugins.opendata.core.datasets.WayCombiner;
    1927import org.openstreetmap.josm.plugins.opendata.modules.fr.paris.datasets.ParisDataSetHandler;
    2028
     
    2230
    2331        public SanisettesHandler() {
    24                 super(93, 106);
     32                super(93);
     33                setName("Sanisettes");
    2534        }
    2635
    2736        @Override
    2837        public boolean acceptsFilename(String filename) {
    29                 return acceptsShpFilename(filename, "sanisettes");
     38                return acceptsShpFilename(filename, "sanisettes") || acceptsZipFilename(filename, "sanisettes");
     39        }
     40
     41        private boolean wayBelongsTo(Way a, List<Way> ways) {
     42                for (Way b : ways) {
     43                        if (a.getNode(0).equals(b.getNode(0)) || a.getNode(0).equals(b.getNode(b.getNodesCount()-1))
     44                         || a.getNode(a.getNodesCount()-1).equals(b.getNode(0)) || a.getNode(a.getNodesCount()-1).equals(b.getNode(b.getNodesCount()-1))) {
     45                                return true;
     46                        }
     47                }
     48                return false;
     49        }
     50       
     51        private boolean wayProcessed(Way a, List<List<Way>> waysToCombine) {
     52                for (List<Way> ways : waysToCombine) {
     53                        for (Way b : ways) {
     54                                if (a.equals(b)) {
     55                                        return true;
     56                                }
     57                        }
     58                }
     59                return false;
     60        }
     61       
     62        @Override
     63        public void updateDataSet(DataSet ds) {
     64               
     65                List<Way> sourceWays = new ArrayList<Way>(ds.getWays());
     66                List<List<Way>> waysToCombine = new ArrayList<List<Way>>();
     67               
     68                for (Iterator<Way> it = sourceWays.iterator(); it.hasNext();) {
     69                        Way w = it.next();
     70                        it.remove();
     71                        if (!wayProcessed(w, waysToCombine)) {
     72                                List<Way> list = new ArrayList<Way>();
     73                                list.add(w);
     74                                boolean finished = false;
     75                                List<Way> sourceWays2 = new ArrayList<Way>(sourceWays);
     76                                while (!finished) {
     77                                        int before = list.size();
     78                                        for (Iterator<Way> it2 = sourceWays2.iterator(); it2.hasNext();) {
     79                                                Way w2 = it2.next();
     80                                                if (wayBelongsTo(w2, list)) {
     81                                                        list.add(w2);
     82                                                        it2.remove();
     83                                                }
     84                                        }
     85                                        int after = list.size();
     86                                        finished = (after == before);
     87                                }
     88                                if (list.size() > 1) {
     89                                        waysToCombine.add(list);
     90                                }
     91                        }
     92                }
     93                               
     94                for (List<Way> ways : waysToCombine) {
     95                        try {
     96                                WayCombiner.combineWays(ways);
     97                        } catch (UserCancelException e) {
     98                                return;
     99                        }
     100                }
     101               
     102                for (Way w : ds.getWays()) {
     103                        if (w.getNodesCount() <= 3) {
     104                                ds.removePrimitive(w);
     105                                for (Node n : w.getNodes()) {
     106                                        ds.removePrimitive(n);
     107                                }
     108                        } else {
     109                                w.put("amenity", "toilets");
     110                        }
     111                }
    30112        }
    31113
    32114        @Override
    33         public void updateDataSet(DataSet ds) {
     115        protected String getDirectLink() {
     116                return PORTAL+"hn/sanisettes.zip";
     117        }
     118
     119        /* (non-Javadoc)
     120         * @see org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler#checkShpNodeProximity()
     121         */
     122        @Override
     123        public boolean checkShpNodeProximity() {
     124                return true;
    34125        }
    35126}
  • applications/editors/josm/plugins/opendata/modules/fr.sncf/src/org/openstreetmap/josm/plugins/opendata/modules/fr/sncf/datasets/EquipementsHandler.java

    r28000 r28044  
    1515        @Override
    1616        public boolean acceptsFilename(String filename) {
    17                 return acceptsXlsFilename(filename, "gare_20......");
     17                return acceptsCsvXlsFilename(filename, "gare_20......");
    1818        }
    1919
     
    3131        @Override
    3232        public LatLon getSpreadSheetCoor(EastNorth en, String[] fields) {
    33                 // Lambert II coordinates offset by 2000000 (see http://fr.wikipedia.org/wiki/Projection_conique_conforme_de_Lambert#Projections_officielles_en_France_m.C3.A9tropolitaine)
     33                // Lambert II coordinates offset by 2000000 (see http://fr.wikipedia.org/wiki/Projection_conique_conforme_de_Lambert#Projections_officielles_en_France_métropolitaine)
    3434                return super.getSpreadSheetCoor(new EastNorth(en.getX(), en.getY()-2000000), fields);
    3535        }
  • applications/editors/josm/plugins/opendata/modules/fr.sncf/src/org/openstreetmap/josm/plugins/opendata/modules/fr/sncf/datasets/SncfDataSetHandler.java

    r28000 r28044  
    8282                return null;
    8383        }
     84
     85        /* (non-Javadoc)
     86         * @see org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler#getLicenseURL()
     87         */
     88        @Override
     89        public URL getLicenseURL() {
     90                try {
     91                        return new URL("http://test.data-sncf.com/licence");
     92                } catch (MalformedURLException e) {
     93                        e.printStackTrace();
     94                }
     95                return null;
     96        }
    8497}
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseConstants.java

    r28022 r28044  
    1616package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse;
    1717
     18import org.openstreetmap.josm.plugins.opendata.core.datasets.DataSetCategory;
    1819import org.openstreetmap.josm.plugins.opendata.core.datasets.fr.FrenchConstants;
    1920
     
    4647         */
    4748        public static final String TOULOUSE_NEPTUNE_XSD = "/neptune_toulouse/neptune.xsd";
     49       
     50        /**
     51         * Categories: TODO: icons
     52         */
     53        public static final DataSetCategory CAT_ASSOCIATIONS = new DataSetCategory("Associations", "");
     54        public static final DataSetCategory CAT_CITOYENNETE = new DataSetCategory("Citoyenneté", "");
     55        public static final DataSetCategory CAT_CULTURE = new DataSetCategory("Culture", "");
     56        public static final DataSetCategory CAT_ENFANCE = new DataSetCategory("Enfance", "");
     57        public static final DataSetCategory CAT_ENVIRONNEMENT = new DataSetCategory("Environnement", "");
     58        public static final DataSetCategory CAT_PATRIMOINE = new DataSetCategory("Patrimoine", "");
     59        public static final DataSetCategory CAT_SPORT = new DataSetCategory("Sport", "");
     60        public static final DataSetCategory CAT_TOPOGRAPHIE = new DataSetCategory("Topographie", "");
     61        public static final DataSetCategory CAT_TRANSPORT = new DataSetCategory("Transport", "");
     62        public static final DataSetCategory CAT_URBANISME = new DataSetCategory("Urbanisme", "");
    4863}
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/ToulouseDataSetHandler.java

    r28022 r28044  
    9898
    9999        /* (non-Javadoc)
     100         * @see org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler#getDataURL()
     101         */
     102        @Override
     103        public URL getDataURL() {
     104                try {
     105                        return new URL(getLocalPortalURL().toString()+"/resource/document");
     106                } catch (MalformedURLException e) {
     107                        e.printStackTrace();
     108                }
     109                return null;
     110        }
     111
     112        /* (non-Javadoc)
    100113         * @see org.openstreetmap.josm.plugins.fr.opendata.datasets.AbstractDataSetHandler#getWikiURL()
    101114         */
     
    113126       
    114127        protected final void setWikiPage(String wikiPage) {
    115                 this.wikiPage = wikiPage;
     128                this.wikiPage = wikiPage.replace(" ", "_");
     129                setName(wikiPage.replace("_", " "));
    116130        }
    117131}
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/associations/Club3eAgeHandler.java

    r28000 r28044  
    2525                super(12587, "leisure=club", "club=elderly");
    2626                setWikiPage("Clubs du 3ème âge");
     27                setCategory(CAT_ASSOCIATIONS);
    2728        }
    2829       
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/BureauxVoteHandler.java

    r28000 r28044  
    2525                super(12550, "polling_station");
    2626                setWikiPage("Bureaux de vote 2012");
     27                setCategory(CAT_CITOYENNETE);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/MairieAnnexeHandler.java

    r28000 r28044  
    2424        public MairieAnnexeHandler() {
    2525                super(12560, "Mairies annexes");
     26                setCategory(CAT_CITOYENNETE);
    2627        }
    2728
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/MairieHandler.java

    r28000 r28044  
    2424        public MairieHandler() {
    2525                this(12554, "Mairies");
     26                setCategory(CAT_CITOYENNETE);
    2627        }
    2728       
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/PolesTerritoriauxHandler.java

    r28000 r28044  
    2424        public PolesTerritoriauxHandler() {
    2525                super(12568);
     26                setName("Pôles territoriaux ");
     27                setCategory(CAT_CITOYENNETE);
    2628        }
    2729
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/QuartiersHandler.java

    r28000 r28044  
    2525                super(12574, "admin_level=11");
    2626                setWikiPage("Quartiers de proximité");
     27                setCategory(CAT_CITOYENNETE);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/citoyennete/SecteursHandler.java

    r28000 r28044  
    2525                super(12580, "admin_level=10");
    2626                setWikiPage("Secteurs de proximité");
     27                setCategory(CAT_CITOYENNETE);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/culture/BibliothequesHandler.java

    r28000 r28044  
    2525                super(12402, "amenity=library");
    2626                setWikiPage("Médiathèques, bibliothèques et bibliobus");
     27                setCategory(CAT_CULTURE);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/culture/EquipementCulturelBalmaHandler.java

    r28000 r28044  
    2525                super(13997);
    2626                setWikiPage("Équipements Culturels");
     27                setCategory(CAT_CULTURE);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/culture/LudothequeHandler.java

    r28000 r28044  
    2525                super(12420, "amenity=toy_library");
    2626                setWikiPage("Ludothèques");
     27                setCategory(CAT_CULTURE);
    2728        }
    2829       
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/culture/MuseeHandler.java

    r28000 r28044  
    2626                super(12426, "tourism=museum");
    2727                setWikiPage("Musées");
     28                setCategory(CAT_CULTURE);
    2829        }
    2930
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/culture/TheatreHandler.java

    r28000 r28044  
    2525                super(12448, "amenity=theatre");
    2626                setWikiPage("Théâtres");
     27                setCategory(CAT_CULTURE);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/CrechesHandler.java

    r28000 r28044  
    2525                super(12462, "amenity=kindergarten");
    2626                setWikiPage("Crèches");
     27                setCategory(CAT_ENFANCE);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/EcoleBalmaHandler.java

    r28000 r28044  
    2525                super(13993, "amenity=school");
    2626                setWikiPage("Écoles");
     27                setCategory(CAT_ENFANCE);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/EcoleElementaireHandler.java

    r28000 r28044  
    2525                super(12474, "amenity=school");
    2626                setWikiPage("Écoles élémentaires publiques");
     27                setCategory(CAT_ENFANCE);
    2728                for (String forbidden : new String[]{"maternelle","primaire","collège","lycée","secondaire"}) {
    2829                        addForbiddenTag("school:FR="+forbidden);
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/EcoleMaternelleHandler.java

    r28000 r28044  
    2525                super(12490, "amenity=school");
    2626                setWikiPage("Écoles maternelles publiques");
     27                setCategory(CAT_ENFANCE);
    2728                for (String forbidden : new String[]{"élémentaire","primaire","collège","lycée","secondaire"}) {
    2829                        addForbiddenTag("school:FR="+forbidden);
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/enfance/PetiteEnfanceEtJeunesseBalmaHandler.java

    r28000 r28044  
    2525                super(14001);
    2626                setWikiPage("Petite enfance et jeunesse");
     27                setCategory(CAT_ENFANCE);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/environnement/RecupEmballageHandler.java

    r28000 r28044  
    2525                super(12494, "amenity=recycling");
    2626                setWikiPage("Récup' Emballage");
     27                setCategory(CAT_ENVIRONNEMENT);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/environnement/RecupVerreHandler.java

    r28000 r28044  
    2525                super(12496, "amenity=recycling");
    2626                setWikiPage("Récup' Verre");
     27                setCategory(CAT_ENVIRONNEMENT);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/environnement/StationEpurationHandler.java

    r28000 r28044  
    2525                super(12500, "man_made=wastewater_plant");
    2626                setWikiPage("Stations d'épuration");
     27                setCategory(CAT_ENVIRONNEMENT);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/patrimoine/Parcelles1680Handler.java

    r28000 r28044  
    2424        public Parcelles1680Handler() {
    2525                super(12514);
     26                setName("Parcellaire de 1680");
     27                setCategory(CAT_PATRIMOINE);
    2628        }
    2729
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/patrimoine/Parcelles1830Handler.java

    r28000 r28044  
    2424        public Parcelles1830Handler() {
    2525                super(12534);
     26                setName("Parcellaire de 1830");
     27                setCategory(CAT_PATRIMOINE);
    2628        }
    2729
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/sport/InstallationSportiveBalmaHandler.java

    r28000 r28044  
    2525                super(14010);
    2626                setWikiPage("Installations sportives");
     27                setCategory(CAT_SPORT);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/topographie/AltimetrieVoieHandler.java

    r28000 r28044  
    2424        public AltimetrieVoieHandler() {
    2525                super(12660, "ele");
     26                setName("Altimétrie des voies");
     27                setCategory(CAT_TOPOGRAPHIE);
    2628        }
    2729
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/HorodateurHandler.java

    r28000 r28044  
    2929                super(12540, "vending=parking_tickets");
    3030                setWikiPage("Horodateurs");
     31                setCategory(CAT_TRANSPORT);
    3132        }
    3233
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/MetroStationHandler.java

    r28000 r28044  
    2424        public MetroStationHandler() {
    2525                super(12542, "subway=yes");
     26                setName("Stations de métro");
     27                setCategory(CAT_TRANSPORT);
    2628        }
    2729
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/PMRHandler.java

    r28000 r28044  
    2525                super(12538, "amenity=parking_space");
    2626                setWikiPage("PMR");
     27                setCategory(CAT_TRANSPORT);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/PistesCyclablesHandler.java

    r28000 r28044  
    4141        public PistesCyclablesHandler() {
    4242                this("Nom_voie");
     43                setCategory(CAT_TRANSPORT);
    4344        }
    4445       
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/ReseauTisseoHandler.java

    r28031 r28044  
    1717
    1818import java.io.File;
     19import java.net.MalformedURLException;
    1920import java.net.URL;
    2021
     
    3132                super(14022, "network=fr_tisseo");
    3233                NeptuneReader.registerSchema(neptuneSchemaUrl);
     34                setName("Réseau Tisséo (Métro, Bus, Tram)");
     35                setCategory(CAT_TRANSPORT);
    3336        }
    3437
     
    5457        }
    5558
     59        /* (non-Javadoc)
     60         * @see org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.ToulouseDataSetHandler#getWikiURL()
     61         */
     62        @Override
     63        public URL getWikiURL() {
     64                try {
     65                        return new URL("http://wiki.openstreetmap.org/wiki/Toulouse/Transports_en_commun#Réseau_Tisséo");
     66                } catch (MalformedURLException e) {
     67                        e.printStackTrace();
     68                }
     69                return null;
     70        }
     71
    5672        @Override
    5773        public void updateDataSet(DataSet ds) {
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/TramwayStationHandler.java

    r28000 r28044  
    2424        public TramwayStationHandler() {
    2525                super(12611, "tram=yes");
     26                setName("Stations de tramway");
     27                setCategory(CAT_TRANSPORT);
    2628        }
    2729
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/VeloToulouseHandler.java

    r28000 r28044  
    2626                super(12546, "amenity=bicycle_rental");
    2727                setWikiPage("Vélô Toulouse");
     28                setCategory(CAT_TRANSPORT);
    2829        }
    2930
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/Zone30Handler.java

    r28000 r28044  
    2525                super(12548, "Street", "maxspeed=30");
    2626                setWikiPage("Zones 30");
     27                setCategory(CAT_TRANSPORT);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/urbanisme/CommuneHandler.java

    r28000 r28044  
    2424        public CommuneHandler() {
    2525                super(12582, "admin_level=8");
     26                setName("Communes");
     27                setCategory(CAT_URBANISME);
    2628        }
    2729
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/urbanisme/NumerosRueHandler.java

    r28000 r28044  
    3131                super(12673, "addr:housenumber");
    3232                setWikiPage("Numéros de rue");
     33                setCategory(CAT_URBANISME);
    3334        }
    3435
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/urbanisme/SanisetteHandler.java

    r28000 r28044  
    2525                super(12584, "amenity=toilets");
    2626                setWikiPage("Sanisettes");
     27                setCategory(CAT_URBANISME);
    2728        }
    2829
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/urbanisme/VoirieHandler.java

    r28000 r28044  
    3737        public VoirieHandler() {
    3838                this(12693, "lib_off", "highway");
     39                setName("Filaire de voirie");
     40                setCategory(CAT_URBANISME);
    3941        }
    4042       
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/OdPlugin.java

    r28031 r28044  
    1616package org.openstreetmap.josm.plugins.opendata;
    1717
     18import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
     19import static org.openstreetmap.josm.tools.I18n.marktr;
     20
     21import java.awt.event.KeyEvent;
    1822import java.io.File;
    1923import java.util.Arrays;
     24import java.util.HashMap;
    2025import java.util.List;
     26import java.util.Map;
     27
     28import javax.swing.JMenu;
    2129
    2230import org.openstreetmap.josm.Main;
    2331import org.openstreetmap.josm.actions.ExtensionFileFilter;
     32import org.openstreetmap.josm.gui.MainMenu;
    2433import org.openstreetmap.josm.gui.MapFrame;
    2534import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
     
    2736import org.openstreetmap.josm.plugins.PluginInformation;
    2837import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
     38import org.openstreetmap.josm.plugins.opendata.core.actions.DownloadDataAction;
     39import org.openstreetmap.josm.plugins.opendata.core.actions.DownloadDataTask;
     40import org.openstreetmap.josm.plugins.opendata.core.actions.OpenPreferencesActions;
     41import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
     42import org.openstreetmap.josm.plugins.opendata.core.datasets.DataSetCategory;
    2943import org.openstreetmap.josm.plugins.opendata.core.gui.OdDialog;
    3044import org.openstreetmap.josm.plugins.opendata.core.gui.OdPreferenceSetting;
     
    3852import org.openstreetmap.josm.plugins.opendata.core.io.tabular.OdsImporter;
    3953import org.openstreetmap.josm.plugins.opendata.core.io.tabular.XlsImporter;
     54import org.openstreetmap.josm.plugins.opendata.core.modules.Module;
    4055import org.openstreetmap.josm.plugins.opendata.core.modules.ModuleHandler;
    4156import org.openstreetmap.josm.plugins.opendata.core.modules.ModuleInformation;
     
    4661       
    4762        public final XmlImporter xmlImporter;
     63       
     64        private final JMenu menu;
    4865       
    4966        public OdPlugin(PluginInformation info) { // NO_UCD
     
    6582        // Load modules
    6683        loadModules();
     84        // Add menu
     85        menu = Main.main.menu.addMenu(marktr("Open Data"), KeyEvent.VK_O, Main.main.menu.defaultMenuPos, ht("/Plugin/OpenData"));
     86        buildMenu();
     87        // Add download task
     88        Main.main.menu.openLocation.addDownloadTaskClass(DownloadDataTask.class);
    6789        }
    6890       
    6991        public static final OdPlugin getInstance() {
    7092                return instance;
     93        }
     94       
     95        private void buildMenu() {
     96        for (Module module : ModuleHandler.moduleList) {
     97                Map<DataSetCategory, JMenu> catMenus = new HashMap<DataSetCategory, JMenu>();
     98                JMenu moduleMenu = null;
     99                for (AbstractDataSetHandler handler: module.getHandlers()) {
     100                        if (handler.getDataURL() != null) {
     101                                if (moduleMenu == null) {
     102                                        String moduleName = module.getDisplayedName();
     103                                        if (moduleName == null || moduleName.isEmpty()) {
     104                                                moduleName = module.getModuleInformation().getName();
     105                                        }
     106                                        moduleMenu = new JMenu(moduleName);
     107                                        moduleMenu.setIcon(module.getModuleInformation().getScaledIcon());
     108                                }
     109                                DataSetCategory cat = handler.getCategory();
     110                                JMenu endMenu = null;
     111                                if (cat != null) {
     112                                        if ((endMenu = catMenus.get(cat)) == null) {
     113                                                catMenus.put(cat, endMenu = new JMenu(cat.getName()));
     114                                                moduleMenu.add(endMenu);
     115                                        }
     116                                }
     117                                if (endMenu == null) {
     118                                        endMenu = moduleMenu;
     119                                }
     120                                endMenu.add(new DownloadDataAction(handler));
     121                        }
     122                }
     123                if (moduleMenu != null) {
     124                        menu.add(moduleMenu);
     125                }
     126        }
     127        menu.addSeparator();
     128        MainMenu.add(menu, new OpenPreferencesActions());
    71129        }
    72130
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java

    r28022 r28044  
    5353import org.openstreetmap.josm.data.projection.proj.LambertConformalConic.Parameters2SP;
    5454import org.openstreetmap.josm.gui.preferences.SourceEditor.ExtendedSourceEntry;
     55import org.openstreetmap.josm.io.AbstractReader;
    5556import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
    5657import org.openstreetmap.josm.plugins.opendata.core.util.NamesFrUtils;
     
    9293        }
    9394
     95        private String name;
     96        private DataSetCategory category;
    9497        private String sourceDate;
    9598        private File associatedFile;
     
    170173        public URL getWikiURL() {return null;}
    171174       
    172         public abstract URL getLocalPortalURL();
    173         public abstract URL getNationalPortalURL();
     175        public URL getLocalPortalURL() {return null;}
     176       
     177        public URL getNationalPortalURL() {return null;}
    174178
    175179        public URL getLicenseURL() {return null;}
     180
     181        public URL getDataURL() {return null;}
     182       
     183        public AbstractReader getReaderForUrl(String url) {return null;}
     184
     185        public final DataSetCategory getCategory() {
     186                return category;
     187        }
     188
     189        public final void setCategory(DataSetCategory category) {
     190                this.category = category;
     191        }
    176192
    177193        public final Collection<String> getOsmXapiRequests(Bounds bounds) {
     
    340356        }
    341357
    342         /**
    343          * @return the source
    344          */
    345358        public String getSource() {
    346359                return null;
    347360        }
    348361               
    349         /**
    350          * @return the sourceDate
    351          */
    352362        public final String getSourceDate() {
    353363                return sourceDate;
    354364        }
    355365       
    356         /**
    357          * @param sourceDate the sourceDate to set
    358          */
    359366        public final void setSourceDate(String sourceDate) {
    360367                this.sourceDate = sourceDate;
    361368        }
    362        
     369
     370        public final String getName() {
     371                return name;
     372        }
     373       
     374        public final void setName(String name) {
     375                this.name = name;
     376        }
     377
    363378        public String getLocalPortalIconName() {
    364379                return ICON_CORE_24;
     
    503518                return null;
    504519        }
     520
     521        public boolean checkShpNodeProximity() {
     522                return false;
     523        }
    505524}
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/AbstractImporter.java

    r28018 r28044  
    1818import java.io.File;
    1919import java.io.IOException;
    20 import java.text.SimpleDateFormat;
    21 import java.util.Date;
    2220
    23 import org.openstreetmap.josm.Main;
    2421import org.openstreetmap.josm.actions.ExtensionFileFilter;
    2522import org.openstreetmap.josm.data.osm.DataSet;
     
    3027import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
    3128import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
     29import org.openstreetmap.josm.plugins.opendata.core.datasets.DataSetUpdater;
    3230import org.openstreetmap.josm.plugins.opendata.core.layers.OdDataLayer;
    3331import org.openstreetmap.josm.plugins.opendata.core.modules.Module;
     
    7371        @Override
    7472        protected OsmDataLayer createLayer(DataSet dataSet, File associatedFile, String layerName) {
    75                 if (handler != null) {
    76                         handler.setAssociatedFile(associatedFile);
    77                         handler.setSourceDate(new SimpleDateFormat("yyyy-MM-dd").format(new Date(associatedFile.lastModified())));
    78                         if (!Main.pref.getBoolean(PREF_RAWDATA)) {
    79                                 handler.updateDataSet(dataSet);
    80                         }
    81                         handler.checkDataSetSource(dataSet);
    82                         handler.checkNames(dataSet);
    83                 }
     73                DataSetUpdater.updateDataSet(dataSet, handler, associatedFile);
    8474                return new OdDataLayer(dataSet, layerName, associatedFile, handler);
    8575        }
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReader.java

    r28031 r28044  
    5050        private final ZipInputStream zis;
    5151        private final AbstractDataSetHandler handler;
     52       
     53        private File file;
    5254   
    53     public ZipReader(ZipInputStream zis, AbstractDataSetHandler handler) {
    54         this.zis = zis;
     55    public ZipReader(InputStream in, AbstractDataSetHandler handler) {
     56        this.zis = in instanceof ZipInputStream ? (ZipInputStream) in : new ZipInputStream(in);
    5557        this.handler = handler;
    5658    }
    5759
    5860        public static DataSet parseDataSet(InputStream in, AbstractDataSetHandler handler, ProgressMonitor instance) throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException {
    59                 return new ZipReader(new ZipInputStream(in), handler).parseDoc(instance);
     61                return new ZipReader(in, handler).parseDoc(instance);
     62        }
     63       
     64        public final File getReadFile() {
     65                return file;
    6066        }
    6167       
     
    8187        }
    8288
    83         private DataSet parseDoc(ProgressMonitor instance) throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException  {
     89        public DataSet parseDoc(ProgressMonitor instance) throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException  {
    8490               
    8591            final File temp = createTempDir();
     
    9197                                File file = new File(temp + File.separator + entry.getName());
    9298                            if (file.exists() && !file.delete()) {
    93                                 throw new IOException("Could not delete temp file: " + file.getAbsolutePath());
     99                                throw new IOException("Could not delete temp file/dir: " + file.getAbsolutePath());
    94100                            }
    95                                 if (!file.createNewFile()) {
    96                                         throw new IOException("Could not create temp file: " + file.getAbsolutePath());
    97                                 }
    98                                 FileOutputStream fos = new FileOutputStream(file);
    99                                 byte[] buffer = new byte[8192];
    100                                 int count = 0;
    101                                 while ((count = zis.read(buffer, 0, buffer.length)) > 0) {
    102                                         fos.write(buffer, 0, count);
    103                                 }
    104                                 fos.close();
    105                                 for (String ext : new String[] {
    106                                                 CSV_EXT, KML_EXT, KMZ_EXT, XLS_EXT, ODS_EXT, SHP_EXT, MIF_EXT, TAB_EXT, XML_EXT
    107                                 }) {
    108                                         if (entry.getName().toLowerCase().endsWith("."+ext)) {
    109                                                 candidates.add(file);
    110                                                 System.out.println(entry.getName());
    111                                                 break;
     101                            if (!entry.isDirectory()) {
     102                                if (!file.createNewFile()) {
     103                                        throw new IOException("Could not create temp file: " + file.getAbsolutePath());
     104                                }
     105                                        FileOutputStream fos = new FileOutputStream(file);
     106                                        byte[] buffer = new byte[8192];
     107                                        int count = 0;
     108                                        while ((count = zis.read(buffer, 0, buffer.length)) > 0) {
     109                                                fos.write(buffer, 0, count);
    112110                                        }
     111                                        fos.close();
     112                                        long time = entry.getTime();
     113                                        if (time > -1) {
     114                                                file.setLastModified(time);
     115                                        }
     116                                        for (String ext : new String[] {
     117                                                        CSV_EXT, KML_EXT, KMZ_EXT, XLS_EXT, ODS_EXT, SHP_EXT, MIF_EXT, TAB_EXT, XML_EXT
     118                                        }) {
     119                                                if (entry.getName().toLowerCase().endsWith("."+ext)) {
     120                                                        candidates.add(file);
     121                                                        System.out.println(entry.getName());
     122                                                        break;
     123                                                }
     124                                        }
     125                                } else if (!file.mkdir()) {
     126                                        throw new IOException("Could not create temp dir: " + file.getAbsolutePath());
    113127                                }
    114128                        }
    115129                       
    116                         File file = null;
     130                        file = null;
    117131                       
    118132                        if (candidates.size() > 1) {
     
    159173                                }
    160174                        }
    161                        
     175            } catch (IllegalArgumentException e) {
     176                System.err.println(e.getMessage());
    162177            } finally {
    163178                deleteDir(temp);
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/geographic/ShpReader.java

    r28000 r28044  
    371371        }
    372372       
     373        private Node getNode(Point p, String key) {
     374                Node n = nodes.get(key);
     375                if (n == null && handler != null && handler.checkShpNodeProximity()) {
     376                        LatLon ll = new LatLon(p.getY(), p.getX());
     377                        for (Node node : nodes.values()) {
     378                                if (node.getCoor().equalsEpsilon(ll)) {
     379                                        return node;
     380                                }
     381                        }
     382                }
     383                return n;
     384        }
     385       
    373386        private Node createOrGetNode(Point p) throws MismatchedDimensionException, TransformException {
    374387                if (transform != null) {
    375388                        Point p2 = (Point) JTS.transform(p, transform);
    376389                        String key = p2.getX()+"/"+p2.getY();
    377                         Node n = nodes.get(key);
     390                        //String key = LatLon.roundToOsmPrecisionStrict(p2.getX())+"/"+LatLon.roundToOsmPrecisionStrict(p2.getY());
     391                        Node n = getNode(p2, key);
    378392                        if (n == null) {
    379393                                nodes.put(key, n = new Node(new LatLon(p2.getY(), p2.getX())));
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/AbstractModule.java

    r28000 r28044  
    5555        public List<AbstractDataSetHandler> getHandlers() {
    5656                return handlers;
     57        }
     58
     59        /* (non-Javadoc)
     60         * @see org.openstreetmap.josm.plugins.opendata.core.modules.Module#getDisplayedName()
     61         */
     62        @Override
     63        public String getDisplayedName() {
     64                return info.name;
    5765        }
    5866
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/modules/Module.java

    r28000 r28044  
    2323public interface Module {
    2424
     25        public String getDisplayedName();
     26
    2527        public List<AbstractDataSetHandler> getHandlers();
    2628       
Note: See TracChangeset for help on using the changeset viewer.