source: josm/trunk/src/org/openstreetmap/josm/io/imagery/HTMLGrabber.java@ 7005

Last change on this file since 7005 was 7005, checked in by Don-vip, 10 years ago

see #8465 - use diamond operator where applicable

  • Property svn:eol-style set to native
File size: 2.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io.imagery;
3
4import java.awt.image.BufferedImage;
5import java.io.ByteArrayInputStream;
6import java.io.ByteArrayOutputStream;
7import java.io.IOException;
8import java.net.URL;
9import java.text.MessageFormat;
10import java.util.ArrayList;
11import java.util.List;
12import java.util.StringTokenizer;
13
14import javax.imageio.ImageIO;
15
16import org.openstreetmap.josm.Main;
17import org.openstreetmap.josm.data.preferences.StringProperty;
18import org.openstreetmap.josm.gui.MapView;
19import org.openstreetmap.josm.gui.layer.WMSLayer;
20import org.openstreetmap.josm.tools.Utils;
21
22public class HTMLGrabber extends WMSGrabber {
23 public static final StringProperty PROP_BROWSER = new StringProperty("imagery.wms.browser", "webkit-image {0}");
24
25 public HTMLGrabber(MapView mv, WMSLayer layer, boolean localOnly) {
26 super(mv, layer, localOnly);
27 }
28
29 @Override
30 protected BufferedImage grab(WMSRequest request, URL url, int attempt) throws IOException {
31 String urlstring = url.toExternalForm();
32
33 Main.info("Grabbing HTML " + (attempt > 1? "(attempt " + attempt + ") ":"") + url);
34
35 List<String> cmdParams = new ArrayList<>();
36 StringTokenizer st = new StringTokenizer(MessageFormat.format(PROP_BROWSER.get(), urlstring));
37 while (st.hasMoreTokens()) {
38 cmdParams.add(st.nextToken());
39 }
40
41 ProcessBuilder builder = new ProcessBuilder( cmdParams);
42
43 Process browser;
44 try {
45 browser = builder.start();
46 } catch (IOException ioe) {
47 throw new IOException("Could not start browser. Please check that the executable path is correct.\n" + ioe.getMessage(), ioe);
48 }
49
50 ByteArrayOutputStream baos = new ByteArrayOutputStream();
51 Utils.copyStream(browser.getInputStream(), baos);
52 ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
53 BufferedImage img = layer.normalizeImage(ImageIO.read(bais));
54 bais.reset();
55 layer.cache.saveToCache(layer.isOverlapEnabled()?img:null, bais, Main.getProjection(), request.getPixelPerDegree(), b.minEast, b.minNorth);
56
57 return img;
58 }
59}
Note: See TracBrowser for help on using the repository browser.