Mercurial > dive4elements > river
diff gwt-client/src/main/java/org/dive4elements/river/client/shared/MapUtils.java @ 6384:2987d81ea719
Further fix encoding handling in the print service
- Strings are now html escaped additionaly to java encoding
- Escaping / encoding moved into maputils
- The legend url is urlencoded
- Properties are no longer stored in an encoded manner but
rather encoded on demand
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Fri, 21 Jun 2013 12:15:30 +0200 |
parents | ea9eef426962 |
children | 890f708b18d6 |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/shared/MapUtils.java Fri Jun 21 11:42:35 2013 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/shared/MapUtils.java Fri Jun 21 12:15:30 2013 +0200 @@ -10,6 +10,8 @@ import java.util.Date; +import com.google.gwt.safehtml.shared.SafeHtmlUtils; + public class MapUtils { @@ -47,5 +49,29 @@ return url; } + + public static String toSaveHTMLJavaString(String str) { + return str == null ? null : SafeHtmlUtils.htmlEscape(toJavaEncodedString(str)); + } + + public static String toJavaEncodedString(String str) { + if (str == null) { + return null; + } + StringBuilder sb = new StringBuilder(); + for (int i = 0, len = str.length(); i < len; i++) { + int unipoint = Character.codePointAt(str, i); + if ((unipoint < 32) || (unipoint > 127)) { + sb.append("\\u"); + sb.append(Integer.toHexString((unipoint >> 3*4) & 0xf)); + sb.append(Integer.toHexString((unipoint >> 2*4) & 0xf)); + sb.append(Integer.toHexString((unipoint >> 1*4) & 0xf)); + sb.append(Integer.toHexString((unipoint >> 0*4) & 0xf)); + } else { + sb.append(str.charAt(i)); + } + } + return sb.toString(); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :