Mercurial > dive4elements > river
annotate gwt-client/src/main/java/org/dive4elements/river/client/shared/MapUtils.java @ 6711:0f0f09badd29
Doc.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 30 Jul 2013 07:35:57 +0200 |
parents | 2987d81ea719 |
children | 890f708b18d6 |
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 |
6384
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
13 import com.google.gwt.safehtml.shared.SafeHtmlUtils; |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
14 |
1328
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 class MapUtils { |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 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
|
19 "${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
|
20 "&REQUEST=getLegendGraphic&FORMAT=image/png"; |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 |
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 private MapUtils() { |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
24 } |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
25 |
5676
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
26 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
|
27 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
|
28 } |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
29 |
5676
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
30 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
|
31 if (server == null || layer == null) { |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
32 return null; |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
33 } |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
34 |
5676
f8409fbe3b88
Request maps from osm.intevation.de by another url and fix dpi handling
Andre Heinecke <aheinecke@intevation.de>
parents:
2440
diff
changeset
|
35 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
|
36 // 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
|
37 // 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
|
38 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
|
39 } |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
40 server = server.indexOf("?") >= 0 ? server : server + "?"; |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
42 String url = GET_LEGEND_GRAPHIC_TEMPLATE; |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
43 url = url.replace("${SERVER}", server); |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
44 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
|
45 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
|
46 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
|
47 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
|
48 } |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 return url; |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
51 } |
6384
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
52 |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
53 public static String toSaveHTMLJavaString(String str) { |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
54 return str == null ? null : SafeHtmlUtils.htmlEscape(toJavaEncodedString(str)); |
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 |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
57 public static String toJavaEncodedString(String str) { |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
58 if (str == null) { |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
59 return null; |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
60 } |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
61 StringBuilder sb = new StringBuilder(); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
62 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
|
63 int unipoint = Character.codePointAt(str, i); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
64 if ((unipoint < 32) || (unipoint > 127)) { |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
65 sb.append("\\u"); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
66 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
|
67 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
|
68 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
|
69 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
|
70 } else { |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
71 sb.append(str.charAt(i)); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
72 } |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
73 } |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
74 return sb.toString(); |
2987d81ea719
Further fix encoding handling in the print service
Andre Heinecke <aheinecke@intevation.de>
parents:
5993
diff
changeset
|
75 } |
1328
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
76 } |
ab93960ac2fb
Added missing MapUtils class from last commit.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
77 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |