view 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 source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU AGPL (>=v3)
 * and comes with ABSOLUTELY NO WARRANTY! Check out the
 * documentation coming with Dive4Elements River for details.
 */

package org.dive4elements.river.client.shared;

import java.util.Date;

import com.google.gwt.safehtml.shared.SafeHtmlUtils;


public class MapUtils {

    public static final String GET_LEGEND_GRAPHIC_TEMPLATE =
        "${SERVER}SERVICE=WMS&VERSION=1.1.1&layer=${LAYER}" +
        "&REQUEST=getLegendGraphic&FORMAT=image/png";


    private MapUtils() {
    }

    public static String getLegendGraphicUrl(String server, String layer) {
        return getLegendGraphicUrl(server, layer, -1);
    }

    public static String getLegendGraphicUrl(String server, String layer, int dpi) {
        if (server == null || layer == null) {
            return null;
        }

        if (server.contains("osm.intevation.de")) {
            // GetLegend is not implemented at osm.intevation.de
            // This avoids an error in the print log
            return null;
        }
        server = server.indexOf("?") >= 0 ? server : server + "?";

        String url = GET_LEGEND_GRAPHIC_TEMPLATE;
        url = url.replace("${SERVER}", server);
        url = url.replace("${LAYER}", layer);
        url = url + "&timestamp=" + new Date().getTime();
        if (dpi != -1) {
            url+="&legend_options=dpi:" + dpi;
        }

        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 :

http://dive4elements.wald.intevation.org