# HG changeset patch # User Andre Heinecke # Date 1371809730 -7200 # Node ID 2987d81ea71986bb26b911a9da00d450dbe2eec3 # Parent e26655a8f98d9453a2310b53145546f9c742092e 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 diff -r e26655a8f98d -r 2987d81ea719 gwt-client/src/main/java/org/dive4elements/river/client/client/ui/map/MapPrintPanel.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/map/MapPrintPanel.java Fri Jun 21 11:42:35 2013 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/map/MapPrintPanel.java Fri Jun 21 12:15:30 2013 +0200 @@ -22,6 +22,7 @@ import org.dive4elements.river.client.shared.model.Property; import org.dive4elements.river.client.shared.model.PropertySetting; import org.dive4elements.river.client.shared.model.Settings; +import org.dive4elements.river.client.shared.MapUtils; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Window; @@ -274,15 +275,16 @@ catch (MissingResourceException mre) { localized = props.getName(); } - url.append(toJavaEncodedString(localized)); + url.append(MapUtils.toSaveHTMLJavaString(localized)); url.append("="); - url.append(props.getValue()); + url.append(MapUtils.toSaveHTMLJavaString((String)props.getValue())); } } // O.o String river = findRiver(((MapOutputTab)mapToolbar.getOutputTab() ).getCollectionView().getArtifact()); - url.append("&" + toJavaEncodedString(MSG.getString(MAPFISH_RIVER)) + "=" + river); + url.append("&" + MapUtils.toSaveHTMLJavaString(MSG.getString(MAPFISH_RIVER)) + "=" + + MapUtils.toSaveHTMLJavaString(river)); } // Copy of DatacageWindow's findRiver with added state for map.river @@ -309,26 +311,6 @@ return ""; } - 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(); - } - protected void updateCollection() { final Config config = Config.getInstance(); final String loc = config.getLocale(); @@ -336,16 +318,16 @@ GWT.log("MapPrintPanel.updateCollection via RPC now"); List properties = new ArrayList(); - properties.add(new PropertySetting(MAPFISH_MAPTITLE, toJavaEncodedString(pageTitle.getValueAsString()))); -// properties.add(new PropertySetting(MAPFISH_LAYOUT, toJavaEncodedString(pageFormat.getValueAsString()))); - properties.add(new PropertySetting(MAPFISH_SUBTITLE, toJavaEncodedString(pageSubtitle.getValueAsString()))); - properties.add(new PropertySetting(MAPFISH_RANGE, toJavaEncodedString(pageRange.getValueAsString()))); - properties.add(new PropertySetting(MAPFISH_STRETCH, toJavaEncodedString(pageStretch.getValueAsString()))); - properties.add(new PropertySetting(MAPFISH_INSTITUTION, toJavaEncodedString(pageInstitution.getValueAsString()))); - properties.add(new PropertySetting(MAPFISH_SOURCE, toJavaEncodedString(pageSource.getValueAsString()))); - properties.add(new PropertySetting(MAPFISH_CREATOR, toJavaEncodedString(pageCreator.getValueAsString()))); - properties.add(new PropertySetting(MAPFISH_DATEPLACE, toJavaEncodedString(pageDatePlace.getValueAsString()))); - properties.add(new PropertySetting(MAPFISH_LOGO, toJavaEncodedString(pageLogo.getValueAsString()))); + properties.add(new PropertySetting(MAPFISH_MAPTITLE, pageTitle.getValueAsString())); +// properties.add(new PropertySetting(MAPFISH_LAYOUT, pageFormat.getValueAsString())); + properties.add(new PropertySetting(MAPFISH_SUBTITLE, pageSubtitle.getValueAsString())); + properties.add(new PropertySetting(MAPFISH_RANGE, pageRange.getValueAsString())); + properties.add(new PropertySetting(MAPFISH_STRETCH, pageStretch.getValueAsString())); + properties.add(new PropertySetting(MAPFISH_INSTITUTION, pageInstitution.getValueAsString())); + properties.add(new PropertySetting(MAPFISH_SOURCE, pageSource.getValueAsString())); + properties.add(new PropertySetting(MAPFISH_CREATOR, pageCreator.getValueAsString())); + properties.add(new PropertySetting(MAPFISH_DATEPLACE, pageDatePlace.getValueAsString())); + properties.add(new PropertySetting(MAPFISH_LOGO, pageLogo.getValueAsString())); settings.setSettings("default", properties); collection.addSettings("print-settings", settings); diff -r e26655a8f98d -r 2987d81ea719 gwt-client/src/main/java/org/dive4elements/river/client/server/MapPrintServiceImpl.java --- a/gwt-client/src/main/java/org/dive4elements/river/client/server/MapPrintServiceImpl.java Fri Jun 21 11:42:35 2013 +0200 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/server/MapPrintServiceImpl.java Fri Jun 21 12:15:30 2013 +0200 @@ -212,7 +212,7 @@ Map legend = new LinkedHashMap(); List classes = new ArrayList(1); Map clazz = new LinkedHashMap(); - String lgu = MapUtils.getLegendGraphicUrl(layer.url, layer.layers, dpi); + String lgu = encode(MapUtils.getLegendGraphicUrl(layer.url, layer.layers, dpi)); clazz.put("icon", lgu); clazz.put("name", layer.description); classes.add(clazz); diff -r e26655a8f98d -r 2987d81ea719 gwt-client/src/main/java/org/dive4elements/river/client/shared/MapUtils.java --- 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 :