Ignore:
Timestamp:
2012-03-09T22:06:09+01:00 (12 years ago)
Author:
donvip
Message:

opendata: Neptune file support, fix crash on layer righ click, view license of data sets

Location:
applications/editors/josm/plugins/opendata
Files:
1 added
1 deleted
12 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseConstants.java

    r28018 r28022  
    2121       
    2222        /**
    23          * Source
     23         * Sources
    2424         */
    25         public static final String SOURCE = "GrandToulouse";
     25        public static final String SOURCE_GRAND_TOULOUSE = "GrandToulouse";
     26        public static final String SOURCE_TISSEO = "Tisséo SMTC";
    2627       
    2728        /**
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/ToulouseModule.java

    r28018 r28022  
    4747import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport.PistesCyclablesHandler;
    4848import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport.ReseauTisseoHandler;
    49 import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport.TisseoHandler;
    5049import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport.TramwayStationHandler;
    5150import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport.VeloToulouseHandler;
     
    9695        handlers.add(new EquipementCulturelBalmaHandler());
    9796        handlers.add(new InstallationSportiveBalmaHandler());
    98         handlers.add(new TisseoHandler());
    9997    }
    10098}
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/ToulouseDataSetHandler.java

    r28000 r28022  
    5454        @Override
    5555        public String getSource() {
    56                 return SOURCE;
     56                return SOURCE_GRAND_TOULOUSE;
    5757        }
    5858
     
    8585       
    8686        /* (non-Javadoc)
     87         * @see org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler#getLicenseURL()
     88         */
     89        @Override
     90        public URL getLicenseURL() {
     91                try {
     92                        return new URL(getLocalPortalURL().toString()+"/license");
     93                } catch (MalformedURLException e) {
     94                        e.printStackTrace();
     95                }
     96                return null;
     97        }
     98
     99        /* (non-Javadoc)
    87100         * @see org.openstreetmap.josm.plugins.fr.opendata.datasets.AbstractDataSetHandler#getWikiURL()
    88101         */
  • applications/editors/josm/plugins/opendata/modules/fr.toulouse/src/org/openstreetmap/josm/plugins/opendata/modules/fr/toulouse/datasets/transport/ReseauTisseoHandler.java

    r28000 r28022  
    1616package org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.transport;
    1717
     18import java.io.File;
     19import java.net.URL;
     20
    1821import org.openstreetmap.josm.data.osm.DataSet;
     22import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1923import org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.ToulouseDataSetHandler;
    2024
     
    2731        @Override
    2832        public boolean acceptsFilename(String filename) {
    29                 return acceptsZipFilename(filename, "14022-reseau-tisseo-metro-bus-tram-");
     33                return acceptsZipFilename(filename, "14022-reseau-tisseo-metro-bus-tram-") || filename.toLowerCase().endsWith(XML_EXT);
     34        }
     35       
     36        /* (non-Javadoc)
     37         * @see org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler#acceptsFile(java.io.File)
     38         */
     39        @Override
     40        public boolean acceptsFile(File file) {
     41                return acceptsFilename(file.getName()) && (file.getName().toLowerCase().endsWith(ZIP_EXT) || acceptsXmlNeptuneFile(file));
     42        }
     43
     44        /* (non-Javadoc)
     45         * @see org.openstreetmap.josm.plugins.opendata.core.datasets.fr.FrenchDataSetHandler#getNeptuneSchema()
     46         */
     47        @Override
     48        protected URL getNeptuneSchema() {
     49                return ReseauTisseoHandler.class.getResource(TOULOUSE_NEPTUNE_XSD);
     50        }
     51
     52        /* (non-Javadoc)
     53         * @see org.openstreetmap.josm.plugins.opendata.modules.fr.toulouse.datasets.ToulouseDataSetHandler#getSource()
     54         */
     55        @Override
     56        public String getSource() {
     57                return SOURCE_TISSEO;
    3058        }
    3159
    3260        @Override
    3361        public void updateDataSet(DataSet ds) {
    34                 // TODO Auto-generated method stub
    35                
     62                for (OsmPrimitive p : ds.allPrimitives()) {
     63                        p.put("operator", "Tisséo");
     64                        p.put("network", "fr_tisseo");
     65                }
    3666        }
    3767}
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/OdConstants.java

    r28018 r28022  
    8484        public static final String ICON_OSM_24 = "osm24.png";
    8585
     86        public static final String ICON_AGREEMENT_24 = "agreement24.png";
     87
    8688    /**
    8789     * File extensions.
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/actions/OpenLinkAction.java

    r28000 r28022  
    2222import java.net.URLEncoder;
    2323
     24import javax.swing.Action;
     25
    2426import org.openstreetmap.josm.actions.JosmAction;
    2527import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
     28import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
    2629import org.openstreetmap.josm.tools.OpenBrowser;
    2730
     
    3235   
    3336    public OpenLinkAction(URL url, String icon24Name, String title, String description) {
    34         super(title, icon24Name, description, null, false);
     37        super(title, null, description, null, false);
     38        putValue(Action.SMALL_ICON, OdUtils.getImageIcon(icon24Name));
    3539        this.url = url;
    3640    }
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/AbstractDataSetHandler.java

    r28018 r28022  
    172172        public abstract URL getLocalPortalURL();
    173173        public abstract URL getNationalPortalURL();
     174
     175        public URL getLicenseURL() {return null;}
    174176
    175177        public final Collection<String> getOsmXapiRequests(Bounds bounds) {
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/datasets/fr/FrenchDataSetHandler.java

    r28018 r28022  
    288288        }
    289289
    290         protected final boolean acceptsXmlNeptuneFile(File file) {
     290        public final boolean acceptsXmlNeptuneFile(File file) {
    291291               
    292292                Source xmlFile = new StreamSource(file);
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/NeptuneReader.java

    r28021 r28022  
    1717
    1818import java.io.InputStream;
     19import java.util.HashMap;
     20import java.util.List;
     21import java.util.Map;
    1922
    2023import javax.xml.bind.JAXBContext;
     
    2326import javax.xml.bind.Unmarshaller;
    2427
     28import neptune.ChouetteAreaType;
    2529import neptune.ChouettePTNetworkType;
    26 
     30import neptune.ChouettePTNetworkType.ChouetteArea.AreaCentroid;
     31import neptune.ChouettePTNetworkType.ChouetteArea.StopArea;
     32import neptune.ChouettePTNetworkType.ChouetteLineDescription.ChouetteRoute;
     33import neptune.ChouettePTNetworkType.ChouetteLineDescription.StopPoint;
     34import neptune.LineType;
     35import neptune.LongLatTypeType;
     36import neptune.PTLinkType;
     37import neptune.PTNetworkType;
     38import neptune.PointType;
     39import neptune.StopAreaType;
     40import neptune.StopPointType;
     41import neptune.TridentObjectType;
     42
     43import org.openstreetmap.josm.data.coor.LatLon;
    2744import org.openstreetmap.josm.data.osm.DataSet;
     45import org.openstreetmap.josm.data.osm.Node;
     46import org.openstreetmap.josm.data.osm.OsmPrimitive;
     47import org.openstreetmap.josm.data.osm.Relation;
     48import org.openstreetmap.josm.data.osm.RelationMember;
    2849import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    2950import org.openstreetmap.josm.io.AbstractReader;
    3051import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
    3152
     53/**
     54 * NEPTUNE -> OSM converter
     55 * See http://www.chouette.mobi/IMG/pdf/NF__F_-Neptune-maj.pdf
     56 */
    3257public class NeptuneReader extends AbstractReader {
    3358
     59        public static final String OSM_PUBLIC_TRANSPORT = "public_transport";
     60        public static final String OSM_STOP = "stop";
     61        public static final String OSM_STOP_AREA = "stop_area";
     62        public static final String OSM_STOP_POSITION = "stop_position";
     63        public static final String OSM_PLATFORM = "platform";
     64        public static final String OSM_STATION = "station";
     65        public static final String OSM_NETWORK = "network";
     66        public static final String OSM_ROUTE = "route";
     67        public static final String OSM_ROUTE_MASTER = "route_master";
     68
     69        public static final String OSM_TRAIN = "train";
     70        public static final String OSM_SUBWAY = "subway";
     71        public static final String OSM_MONORAIL = "monorail";
     72        public static final String OSM_TRAM = "tram";
     73        public static final String OSM_BUS = "bus";
     74        public static final String OSM_TROLLEYBUS = "trolleybus";
     75        public static final String OSM_AERIALWAY = "aerialway";
     76        public static final String OSM_FERRY = "ferry";
     77
     78        private ChouettePTNetworkType root;
     79       
     80        private final Map<String, OsmPrimitive> tridentObjects = new HashMap<String, OsmPrimitive>();
     81       
    3482        public static DataSet parseDataSet(InputStream in, AbstractDataSetHandler handler, ProgressMonitor instance) throws JAXBException {
    3583                return new NeptuneReader().parse(in, instance);
    36                
    3784        }
    3885
     
    4491                return doc.getValue();
    4592        }
     93       
     94        private final void linkTridentObjectToOsmPrimitive(TridentObjectType object, OsmPrimitive p) {
     95                p.put("ref:neptune", object.getObjectId());
     96                if (tridentObjects.put(object.getObjectId(), p) != null) {
     97                        System.err.println("Trident object duplicated !!! : "+object.getObjectId());
     98                }
     99        }
     100
     101        protected Node createNode(LatLon latlon){
     102                Node n = new Node(latlon);
     103                ds.addPrimitive(n);
     104                return n;
     105        }
     106       
     107        private Node createStopPosition(StopPointType stop) {
     108                Node n = createNode(createLatLon(stop));
     109                n.put(OSM_PUBLIC_TRANSPORT, OSM_STOP_POSITION);
     110                linkTridentObjectToOsmPrimitive(stop, n);
     111                n.put("name", stop.getName());
     112                return n;
     113        }
     114
     115        protected Relation createRelation(String type){
     116                Relation r = new Relation();
     117                r.put("type", type);
     118                ds.addPrimitive(r);
     119                return r;
     120        }
     121
     122        protected Relation createPtRelation(String pt, TridentObjectType object){
     123                Relation r = createRelation(OSM_PUBLIC_TRANSPORT);
     124                r.put(OSM_PUBLIC_TRANSPORT, pt);
     125                linkTridentObjectToOsmPrimitive(object, r);
     126                return r;
     127        }
     128       
     129        protected Relation createNetwork(PTNetworkType network) {
     130                Relation r = createRelation(OSM_NETWORK);
     131                linkTridentObjectToOsmPrimitive(network, r);
     132                r.put("name", network.getName());
     133                return r;
     134        }
     135       
     136        protected Relation createRouteMaster(LineType line) {
     137                Relation r = createPtRelation(OSM_ROUTE_MASTER, line);
     138                switch (line.getTransportModeName()) {
     139                case BUS:
     140                        r.put(OSM_ROUTE_MASTER, OSM_BUS); break;
     141                case AIR:
     142                        r.put(OSM_ROUTE_MASTER, OSM_AERIALWAY); break;
     143                case FERRY:
     144                        r.put(OSM_ROUTE_MASTER, OSM_FERRY); break;
     145                case METRO:
     146                        r.put(OSM_ROUTE_MASTER, OSM_SUBWAY); break;
     147                case TRAIN:
     148                        r.put(OSM_ROUTE_MASTER, OSM_TRAIN); break;
     149                case TRAMWAY:
     150                        r.put(OSM_ROUTE_MASTER, OSM_TRAM); break;
     151                case TROLLEYBUS:
     152                        r.put(OSM_ROUTE_MASTER, OSM_TROLLEYBUS); break;
     153                default:
     154                        System.err.println("Unsupported transport mode: "+line.getTransportModeName());
     155                }
     156                r.put("ref", line.getNumber());
     157                r.put("name", line.getTransportModeName().value()+" "+line.getNumber()+": "+line.getName());
     158                return r;
     159        }
     160
     161        private Relation createRoute(ChouetteRoute route) {
     162                Relation r = createPtRelation(OSM_ROUTE, route);
     163                r.put("name", route.getName());
     164                return r;
     165        }
     166       
     167        protected Relation createStopArea(StopAreaType sa) {
     168                Relation r = createPtRelation(OSM_STOP_AREA, sa);
     169                r.put("name", sa.getName());
     170                return r;
     171        }
     172       
     173        protected LatLon createLatLon(PointType point) {
     174                return new LatLon(point.getLatitude().doubleValue(), point.getLongitude().doubleValue());
     175        }
     176       
     177        protected final <T extends TridentObjectType> T findTridentObject(List<T> list, String id) {
     178                for (T object : list) {
     179                        if (object.getObjectId().equals(id)) {
     180                                return object;
     181                        }
     182                }
     183                return null;
     184        }
     185       
     186        protected StopPoint findStopPoint(String id) {
     187                return findTridentObject(root.getChouetteLineDescription().getStopPoint(), id);
     188        }
     189
     190        protected StopArea findStopArea(String id) {
     191                return findTridentObject(root.getChouetteArea().getStopArea(), id);
     192        }
     193
     194        protected AreaCentroid findAreaCentroid(String id) {
     195                return findTridentObject(root.getChouetteArea().getAreaCentroid(), id);
     196        }
     197
     198        protected PTLinkType findPtLink(String id) {
     199                return findTridentObject(root.getChouetteLineDescription().getPtLink(), id);
     200        }
     201
     202        protected static final boolean isNullLatLon(LatLon ll) {
     203                return ll.lat() == 0.0 && ll.lon() == 0.0;
     204        }
    46205
    47206        private DataSet parse(InputStream in, ProgressMonitor instance) throws JAXBException {
    48                 ChouettePTNetworkType root = unmarshal(ChouettePTNetworkType.class, in);
    49 
    50                 System.out.println(root);
    51                
    52                 // TODO
     207                root = unmarshal(ChouettePTNetworkType.class, in);
     208
     209                Relation network = createNetwork(root.getPTNetwork());
     210
     211                // Parsing Stop areas
     212                for (StopArea sa : root.getChouetteArea().getStopArea()) {
     213                        if (sa.getStopAreaExtension().getAreaType().equals(ChouetteAreaType.COMMERCIAL_STOP_POINT)) {
     214                                Relation stopArea = createStopArea(sa);
     215                                stopArea.put("name", sa.getName());
     216                                for (String childId : sa.getContains()) {
     217                                        if (childId.contains("StopArea")) {
     218                                                StopArea child = findStopArea(childId);
     219                                                if (child == null) {
     220                                                        System.err.println("Cannot find StopArea: "+childId);
     221                                                } else {
     222                                                        if (child.getStopAreaExtension().getAreaType().equals(ChouetteAreaType.BOARDING_POSITION)) {
     223                                                                for (String grandchildId : child.getContains()) {
     224                                                                        if (grandchildId.contains("StopPoint")) {
     225                                                                                // TODO
     226                                                                                StopPoint grandchild = findStopPoint(grandchildId);
     227                                                                                if (grandchild == null) {
     228                                                                                        System.err.println("Cannot find StopPoint: "+grandchildId);
     229                                                                                } else {
     230                                                                                        if (grandchild.getLongLatType().equals(LongLatTypeType.WGS_84)) {
     231                                                                                                Node stop = createStopPosition(grandchild);
     232                                                                                                stopArea.addMember(new RelationMember(OSM_STOP, stop));
     233                                                                                        } else {
     234                                                                                                System.err.println("Unsupported long/lat type: "+grandchild.getLongLatType());
     235                                                                                        }
     236                                                                                }
     237                                                                        } else {
     238                                                                                System.err.println("Unsupported grandchild: "+grandchildId);
     239                                                                        }
     240                                                                }
     241                                                                String centroidId = child.getCentroidOfArea();
     242                                                                AreaCentroid areaCentroid = findAreaCentroid(centroidId);
     243                                                                if (areaCentroid == null) {
     244                                                                        System.err.println("Cannot find AreaCentroid: "+centroidId);
     245                                                                } else if (!areaCentroid.getLongLatType().equals(LongLatTypeType.WGS_84)) {
     246                                                                        System.err.println("Unsupported long/lat type: "+areaCentroid.getLongLatType());
     247                                                                } else {
     248                                                                        for (RelationMember member : stopArea.getMembers()) {
     249                                                                                // Fix stop coordinates if needed
     250                                                                                if (member.getRole().equals(OSM_STOP) && isNullLatLon(member.getNode().getCoor())) {
     251                                                                                        member.getNode().setCoor(createLatLon(areaCentroid));
     252                                                                                }
     253                                                                        }
     254                                                                }
     255                                                        } else {
     256                                                                System.err.println("Unsupported child type: "+child.getStopAreaExtension().getAreaType());
     257                                                        }
     258                                                }
     259                                               
     260                                        } else if (childId.contains("StopPoint")) {
     261                                                StopPoint child = findStopPoint(childId);
     262                                                if (child == null) {
     263                                                        System.err.println("Cannot find StopPoint: "+childId);
     264                                                } else {
     265                                                        // TODO
     266                                                        System.out.println("TODO: handle StopPoint "+childId);
     267                                                }
     268
     269                                        } else {
     270                                                System.err.println("Unsupported child: "+childId);
     271                                        }
     272                                }
     273                        } else if (sa.getStopAreaExtension().getAreaType().equals(ChouetteAreaType.BOARDING_POSITION)) {
     274                                //System.out.println("skipping StopArea with type "+sa.getStopAreaExtension().getAreaType()+": "+sa.getObjectId());
     275                        } else {
     276                                System.err.println("Unsupported StopArea type: "+sa.getStopAreaExtension().getAreaType());
     277                        }
     278                }
     279
     280                Relation routeMaster = createRouteMaster(root.getChouetteLineDescription().getLine());
     281                network.addMember(new RelationMember(null, routeMaster));
     282
     283                for (ChouetteRoute cr : root.getChouetteLineDescription().getChouetteRoute()) {
     284                        Relation route = createRoute(cr);
     285                        routeMaster.addMember(new RelationMember(null, route));
     286                        for (String id : cr.getPtLinkId()) {
     287                                PTLinkType ptlink = findPtLink(id);
     288                                if (ptlink == null) {
     289                                        System.err.println("Cannot find PTLinkType: "+id);
     290                                } else {
     291                                        /*StopPoint start = findStopPoint(ptlink.getStartOfLink());
     292                                        StopPoint end = findStopPoint(ptlink.getEndOfLink());*/
     293                                        OsmPrimitive start = tridentObjects.get(ptlink.getStartOfLink());
     294                                        OsmPrimitive end = tridentObjects.get(ptlink.getEndOfLink());
     295                                        if (start == null) {
     296                                                System.err.println("Cannot find start StopPoint: "+ptlink.getStartOfLink());
     297                                        } else {
     298                                                addStopToRoute(route, start);
     299                                        }
     300                                       
     301                                        if (end == null) {
     302                                                System.err.println("Cannot find end StopPoint: "+ptlink.getEndOfLink());
     303                                        } else {
     304                                                addStopToRoute(route, end);
     305                                        }
     306                                }
     307                        }
     308                }
    53309               
    54310                return ds;
    55311        }
     312       
     313        private static final boolean addStopToRoute(Relation route, OsmPrimitive stop) {
     314                if (route.getMembersCount() == 0 || !route.getMember(route.getMembersCount()-1).getMember().equals(stop) ) {
     315                        route.addMember(new RelationMember(OSM_STOP, stop));
     316                        return true;
     317                } else {
     318                        return false;
     319                }
     320        }
    56321}
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/io/archive/ZipReader.java

    r28000 r28022  
    2626import java.util.zip.ZipInputStream;
    2727
     28import javax.xml.bind.JAXBException;
    2829import javax.xml.stream.FactoryConfigurationError;
    2930import javax.xml.stream.XMLStreamException;
     
    3435import org.openstreetmap.josm.plugins.opendata.core.OdConstants;
    3536import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
     37import org.openstreetmap.josm.plugins.opendata.core.datasets.fr.FrenchDataSetHandler;
     38import org.openstreetmap.josm.plugins.opendata.core.io.NeptuneReader;
    3639import org.openstreetmap.josm.plugins.opendata.core.io.geographic.KmlReader;
    3740import org.openstreetmap.josm.plugins.opendata.core.io.geographic.KmzReader;
     
    5356    }
    5457
    55         public static DataSet parseDataSet(InputStream in, AbstractDataSetHandler handler, ProgressMonitor instance) throws IOException, XMLStreamException, FactoryConfigurationError {
     58        public static DataSet parseDataSet(InputStream in, AbstractDataSetHandler handler, ProgressMonitor instance) throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException {
    5659                return new ZipReader(new ZipInputStream(in), handler).parseDoc(instance);
    5760        }
     
    6063            final File temp = File.createTempFile("josm_opendata_temp_", Long.toString(System.nanoTime()));
    6164
    62             if(!temp.delete()) {
     65            if (!temp.delete()) {
    6366                throw new IOException("Could not delete temp file: " + temp.getAbsolutePath());
    6467            }
     
    7881        }
    7982
    80         private DataSet parseDoc(ProgressMonitor instance) throws IOException, XMLStreamException, FactoryConfigurationError  {
     83        private DataSet parseDoc(ProgressMonitor instance) throws IOException, XMLStreamException, FactoryConfigurationError, JAXBException  {
    8184               
    8285            final File temp = createTempDir();
     
    8790                        while ((entry = zis.getNextEntry()) != null) {
    8891                                File file = new File(temp + File.separator + entry.getName());
     92                            if (file.exists() && !file.delete()) {
     93                                throw new IOException("Could not delete temp file: " + file.getAbsolutePath());
     94                            }
    8995                                if (!file.createNewFile()) {
    9096                                        throw new IOException("Could not create temp file: " + file.getAbsolutePath());
     
    98104                                fos.close();
    99105                                for (String ext : new String[] {
    100                                                 CSV_EXT, KML_EXT, KMZ_EXT, XLS_EXT, ODS_EXT, SHP_EXT, MIF_EXT, TAB_EXT
     106                                                CSV_EXT, KML_EXT, KMZ_EXT, XLS_EXT, ODS_EXT, SHP_EXT, MIF_EXT, TAB_EXT, XML_EXT
    101107                                }) {
    102108                                        if (entry.getName().toLowerCase().endsWith("."+ext)) {
     
    139145                                } else if (file.getName().toLowerCase().endsWith(TAB_EXT)) {
    140146                                        from = TabReader.parseDataSet(in, file, handler, instance);
     147                                } else if (file.getName().toLowerCase().endsWith(XML_EXT)) {
     148                                        if (handler instanceof FrenchDataSetHandler && ((FrenchDataSetHandler)handler).acceptsXmlNeptuneFile(file)) {
     149                                                from = NeptuneReader.parseDataSet(in, handler, instance);
     150                                        } else {
     151                                                System.err.println("Unsupported XML file: "+file.getName());
     152                                        }
     153                                       
     154                                } else {
     155                                        System.err.println("Unsupported file extension: "+file.getName());
    141156                                }
    142157                                if (from != null) {
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/layers/OdDataLayer.java

    r28017 r28022  
    3838import org.openstreetmap.josm.plugins.opendata.core.datasets.AbstractDataSetHandler;
    3939import org.openstreetmap.josm.plugins.opendata.core.io.OsmDownloader;
    40 import org.openstreetmap.josm.plugins.opendata.core.modules.ModuleHandler;
    41 import org.openstreetmap.josm.tools.ImageProvider;
     40import org.openstreetmap.josm.plugins.opendata.core.util.OdUtils;
    4241
    4342public class OdDataLayer extends OsmDataLayer implements OdConstants, OdLayer, LayerChangeListener {
     
    6564       
    6665    @Override public Icon getBaseIcon() {
    67         return new ImageProvider(handler != null ? handler.getDataLayerIconName() : ICON_CORE_16).setAdditionalClassLoaders(ModuleHandler.getResourceClassLoaders()).get();
     66        return OdUtils.getImageIcon(handler != null ? handler.getDataLayerIconName() : ICON_CORE_16);
    6867    }
    6968
     
    156155                                        tr("View National Portal page"), tr("Launch browser to the national portal page of the selected data set")));
    157156                }
     157                if (this.handler.getLicenseURL() != null) {
     158                        if (this.handler.getLicenseURL().getProtocol().startsWith("http")) {
     159                                result.add(new OpenLinkAction(this.handler.getLicenseURL(), ICON_AGREEMENT_24,
     160                                                tr("View License"), tr("Launch browser to the license page of the selected data set")));
     161                        } else {
     162                                // TODO: view embedded licenses
     163                        }
     164                }
    158165                return result.toArray(new Action[0]);
    159166        }
  • applications/editors/josm/plugins/opendata/src/org/openstreetmap/josm/plugins/opendata/core/util/OdUtils.java

    r28000 r28022  
    1919import java.util.List;
    2020
     21import javax.swing.ImageIcon;
     22
    2123import org.apache.commons.lang3.StringUtils;
    2224import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2325import org.openstreetmap.josm.data.osm.Relation;
     26import org.openstreetmap.josm.plugins.opendata.core.modules.ModuleHandler;
     27import org.openstreetmap.josm.tools.ImageProvider;
    2428
    2529public abstract class OdUtils {
     
    5054                return result.toArray(new String[0]);
    5155        }
     56       
     57        public static final ImageIcon getImageIcon(String iconName) {
     58                return new ImageProvider(iconName).setAdditionalClassLoaders(ModuleHandler.getResourceClassLoaders()).get();
     59        }
    5260}
Note: See TracChangeset for help on using the changeset viewer.