X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fgui%2Fmap%2FMapSource.java;fp=tim%2Fprune%2Fgui%2Fmap%2FMapSource.java;h=d838ef34d99d47a7f7fe524b8a63e87cf98609b6;hb=4d5796d02a15808311c09448d79e6e7d1de9d636;hp=e3ac2ed2227a1825d01526c87800c3abdd9819d4;hpb=f1b92378a792131ac8fb33a869405851d5b2d1f7;p=GpsPrune.git diff --git a/tim/prune/gui/map/MapSource.java b/tim/prune/gui/map/MapSource.java index e3ac2ed..d838ef3 100644 --- a/tim/prune/gui/map/MapSource.java +++ b/tim/prune/gui/map/MapSource.java @@ -2,6 +2,8 @@ package tim.prune.gui.map; import java.net.MalformedURLException; import java.net.URL; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * Class to represent any map source, whether an OsmMapSource @@ -14,6 +16,9 @@ public abstract class MapSource /** File extensions */ protected String[] _extensions = null; + /** Regular expression for catching server wildcards */ + protected static final Pattern WILD_PATTERN = Pattern.compile("^(.*)\\[(.*)\\](.*)$"); + /** * @return the number of layers used in this source @@ -81,9 +86,10 @@ public abstract class MapSource String urlstr = inUrl; // check prefix try { - new URL(urlstr); + new URL(urlstr.replace('[', 'w').replace(']', 'w')); } - catch (MalformedURLException e) { + catch (MalformedURLException e) + { // fail if protocol specified if (urlstr.indexOf("://") >= 0) {return null;} // add the http protocol @@ -95,7 +101,7 @@ public abstract class MapSource } // Validate current url, return null if not ok try { - URL url = new URL(urlstr); + URL url = new URL(urlstr.replace('[', 'w').replace(']', 'w')); // url host must contain a dot if (url.getHost().indexOf('.') < 0) {return null;} } @@ -118,6 +124,17 @@ public abstract class MapSource int idx = url.indexOf("://"); if (idx >= 0) {url = url.substring(idx + 3);} if (url.startsWith("www.")) {url = url.substring(4);} + // Strip out any "[.*]" as well + if (url.indexOf('[') >= 0) + { + Matcher matcher = WILD_PATTERN.matcher(url); + if (matcher.matches()) { + url = matcher.group(1) + matcher.group(3); + if (url.length() > 1 && url.charAt(0) == '.') { + url = url.substring(1); + } + } + } return url; }