Mercurial > dive4elements > river
annotate gwt-client/src/main/java/org/dive4elements/river/client/shared/MapUtils.java @ 8844:890f708b18d6
Encode print URL with GWT-means.
The homebrew encoding partly resulted in URLs not accepted by Tomcat 7
due to the fix for CVE-2016-6816.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Fri, 12 Jan 2018 17:07:42 +0100 |
parents | 2987d81ea719 |
children | 5e38e2924c07 |
rev | line source |
---|---|
5861
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5993
ea9eef426962
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5861
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5861
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5993
ea9eef426962
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5861
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5861
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
172338b1407f
GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
5835
821a02bbfb4e
Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5834
diff
changeset
|
9 package org.dive4elements.river.client.shared; |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
2440
661e3ae77c8a
#558 Reload GetLegendGraphics images when changing the style of a map layer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1328
diff
changeset
|
11 import java.util.Date; |
661e3ae77c8a
#558 Reload GetLegendGraphics images when changing the style of a map layer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1328
diff
changeset
|
12 |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 public class MapUtils { |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
16 public static final String GET_LEGEND_GRAPHIC_TEMPLATE = |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 "${SERVER}SERVICE=WMS&VERSION=1.1.1&layer=${LAYER}" + |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 "&REQUEST=getLegendGraphic&FORMAT=image/png"; |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
19 |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
20 |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 private MapUtils() { |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 } |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 |
5676
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
24 public static String getLegendGraphicUrl(String server, String layer) { |
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
25 return getLegendGraphicUrl(server, layer, -1); |
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
26 } |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 |
5676
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
28 public static String getLegendGraphicUrl(String server, String layer, int dpi) { |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
29 if (server == null || layer == null) { |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
30 return null; |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
31 } |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
32 |
5676
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
33 if (server.contains("osm.intevation.de")) { |
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
34 // GetLegend is not implemented at osm.intevation.de |
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
35 // This avoids an error in the print log |
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
36 return null; |
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
37 } |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
38 server = server.indexOf("?") >= 0 ? server : server + "?"; |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
39 |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
40 String url = GET_LEGEND_GRAPHIC_TEMPLATE; |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 url = url.replace("${SERVER}", server); |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
42 url = url.replace("${LAYER}", layer); |
2440
661e3ae77c8a
#558 Reload GetLegendGraphics images when changing the style of a map layer.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1328
diff
changeset
|
43 url = url + "×tamp=" + new Date().getTime(); |
5676
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
44 if (dpi != -1) { |
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
45 url+="&legend_options=dpi:" + dpi; |
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
46 } |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
47 |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 return url; |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 } |
6384
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
50 |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
51 |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
52 public static String toJavaEncodedString(String str) { |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
53 if (str == null) { |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
54 return null; |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
55 } |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
56 StringBuilder sb = new StringBuilder(); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
57 for (int i = 0, len = str.length(); i < len; i++) { |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
58 int unipoint = Character.codePointAt(str, i); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
59 if ((unipoint < 32) || (unipoint > 127)) { |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
60 sb.append("\\u"); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
61 sb.append(Integer.toHexString((unipoint >> 3*4) & 0xf)); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
62 sb.append(Integer.toHexString((unipoint >> 2*4) & 0xf)); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
63 sb.append(Integer.toHexString((unipoint >> 1*4) & 0xf)); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
64 sb.append(Integer.toHexString((unipoint >> 0*4) & 0xf)); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
65 } else { |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
66 sb.append(str.charAt(i)); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
67 } |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
68 } |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
69 return sb.toString(); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
70 } |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
71 } |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
72 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |