Changeset 11892 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2017-04-13T00:13:59+02:00 (8 years ago)
Author:
Don-vip
Message:

sonar - squid:S2390 - Classes should not access static members of their own subclasses during initialization

Location:
trunk/src/org/openstreetmap/josm/gui/layer/markerlayer
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/Marker.java

    r11850 r11892  
    1010import java.awt.image.BufferedImage;
    1111import java.io.File;
    12 import java.net.MalformedURLException;
    13 import java.net.URL;
    1412import java.text.DateFormat;
    1513import java.text.SimpleDateFormat;
    1614import java.util.ArrayList;
    17 import java.util.Arrays;
    1815import java.util.Collection;
    19 import java.util.Collections;
    2016import java.util.Date;
    2117import java.util.HashMap;
     
    2319import java.util.List;
    2420import java.util.Map;
    25 import java.util.Optional;
    2621import java.util.TimeZone;
    2722
     
    3429import org.openstreetmap.josm.data.coor.EastNorth;
    3530import org.openstreetmap.josm.data.coor.LatLon;
    36 import org.openstreetmap.josm.data.gpx.Extensions;
    3731import org.openstreetmap.josm.data.gpx.GpxConstants;
    38 import org.openstreetmap.josm.data.gpx.GpxLink;
    3932import org.openstreetmap.josm.data.gpx.WayPoint;
    4033import org.openstreetmap.josm.data.preferences.CachedProperty;
     
    4235import org.openstreetmap.josm.gui.MapView;
    4336import org.openstreetmap.josm.tools.ImageProvider;
    44 import org.openstreetmap.josm.tools.Utils;
    4537import org.openstreetmap.josm.tools.template_engine.ParseError;
    4638import org.openstreetmap.josm.tools.template_engine.TemplateEngineDataProvider;
     
    184176    // Add one Marker specifying the default behaviour.
    185177    static {
    186         Marker.markerProducers.add((wpt, relativePath, parentLayer, time, offset) -> {
    187             String uri = null;
    188             // cheapest way to check whether "link" object exists and is a non-empty collection of GpxLink objects...
    189             Collection<GpxLink> links = wpt.<GpxLink>getCollection(GpxConstants.META_LINKS);
    190             if (links != null) {
    191                 for (GpxLink oneLink : links) {
    192                     uri = oneLink.uri;
    193                     break;
    194                 }
    195             }
    196 
    197             URL url = uriToUrl(uri, relativePath);
    198             String urlStr = url == null ? "" : url.toString();
    199             String symbolName = Optional.ofNullable(wpt.getString("symbol")).orElseGet(() -> wpt.getString(GpxConstants.PT_SYM));
    200             // text marker is returned in every case, see #10208
    201             final Marker marker = new Marker(wpt.getCoor(), wpt, symbolName, parentLayer, time, offset);
    202             if (url == null) {
    203                 return Collections.singleton(marker);
    204             } else if (urlStr.endsWith(".wav")) {
    205                 final AudioMarker audioMarker = new AudioMarker(wpt.getCoor(), wpt, url, parentLayer, time, offset);
    206                 Extensions exts = (Extensions) wpt.get(GpxConstants.META_EXTENSIONS);
    207                 if (exts != null && exts.containsKey("offset")) {
    208                     try {
    209                         audioMarker.syncOffset = Double.parseDouble(exts.get("sync-offset"));
    210                     } catch (NumberFormatException nfe) {
    211                         Main.warn(nfe);
    212                     }
    213                 }
    214                 return Arrays.asList(marker, audioMarker);
    215             } else if (urlStr.endsWith(".png") || urlStr.endsWith(".jpg") || urlStr.endsWith(".jpeg") || urlStr.endsWith(".gif")) {
    216                 return Arrays.asList(marker, new ImageMarker(wpt.getCoor(), url, parentLayer, time, offset));
    217             } else {
    218                 return Arrays.asList(marker, new WebMarker(wpt.getCoor(), url, parentLayer, time, offset));
    219             }
    220         });
     178        Marker.markerProducers.add(new DefaultMarkerProducers());
    221179    }
    222180
     
    237195    public static void prependMarkerProducer(MarkerProducers mp) {
    238196        markerProducers.add(0, mp);
    239     }
    240 
    241     private static URL uriToUrl(String uri, File relativePath) {
    242         URL url = null;
    243         if (uri != null) {
    244             try {
    245                 url = new URL(uri);
    246             } catch (MalformedURLException e) {
    247                 // Try a relative file:// url, if the link is not in an URL-compatible form
    248                 if (relativePath != null) {
    249                     url = Utils.fileToURL(new File(relativePath.getParentFile(), uri));
    250                 }
    251             }
    252         }
    253         return url;
    254197    }
    255198
Note: See TracChangeset for help on using the changeset viewer.