private void capabilityVendorSpecificTileset( StringBuilder str, TileLayer layer, GridSubset grid, String formatStr, String styleName) throws GeoWebCacheException { String srsStr = grid.getSRS().toString(); StringBuilder resolutionsStr = new StringBuilder(); double[] res = grid.getResolutions(); for (int i = 0; i < res.length; i++) { resolutionsStr.append(Double.toString(res[i]) + " "); } String[] bs = boundsPrep(grid.getCoverageBestFitBounds()); str.append(" <TileSet>\n"); str.append(" <SRS>" + srsStr + "</SRS>\n"); str.append( " <BoundingBox SRS=\"" + srsStr + "\" minx=\"" + bs[0] + "\" miny=\"" + bs[1] + "\" maxx=\"" + bs[2] + "\" maxy=\"" + bs[3] + "\" />\n"); str.append(" <Resolutions>" + resolutionsStr.toString() + "</Resolutions>\n"); str.append(" <Width>" + grid.getTileWidth() + "</Width>\n"); str.append(" <Height>" + grid.getTileHeight() + "</Height>\n"); str.append(" <Format>" + formatStr + "</Format>\n"); str.append(" <Layers>" + layer.getName() + "</Layers>\n"); str.append(" <Styles>").append(ServletUtils.URLEncode(styleName)).append("</Styles>\n"); str.append(" </TileSet>\n"); }
private static String generateHTML( TileLayerDispatcher tileLayerDispatcher, GridSetBroker gridSetBroker) throws GeoWebCacheException { String reloadPath = "rest/reload"; String header = "<html>\n" + ServletUtils.gwcHtmlHeader("GWC Demos") + "<body>\n" + ServletUtils.gwcHtmlLogoLink("") + "<table>\n" + "<table cellspacing=\"10\" border=\"0\">\n" + "<tr><td><strong>Layer name:</strong></td>\n" + "<td><strong>Enabled:</strong></td>\n" + "<td><strong>Grids Sets:</strong></td>\n" + "</tr>\n"; String rows = tableRows(tileLayerDispatcher, gridSetBroker); String footer = "</table>\n" + "<br />" + "<strong>These are just quick demos. GeoWebCache also supports:</strong><br />\n" + "<ul><li>WMTS, TMS, Virtual Earth and Google Maps</li>\n" + "<li>Proxying GetFeatureInfo, GetLegend and other WMS requests</li>\n" + "<li>Advanced request and parameter filters</li>\n" + "<li>Output format adjustments, such as compression level</li>\n" + "<li>Adjustable expiration headers and automatic cache expiration</li>\n" + "<li>RESTful interface for seeding and configuration (beta)</li>\n" + "</ul>\n" + "<br />\n" + "<strong>Reload Configuration:</strong><br />\n" + "<p>You can reload the configuration by pressing the following button. " + "The username / password is configured in WEB-INF/user.properties, or the admin " + " user in GeoServer if you are using the plugin.</p>\n" + "<form form id=\"kill\" action=\"" + reloadPath + "\" method=\"post\">" + "<input type=\"hidden\" name=\"reload_configuration\" value=\"1\" />" + "<span><input style=\"padding: 0; margin-bottom: -12px; border: 1;\"type=\"submit\" value=\"Reload Configuration\"></span>" + "</form>" + "</body></html>"; return header + rows + footer; }
public ConveyorTile getConveyor(HttpServletRequest request, HttpServletResponse response) throws ServiceException { Map<String, String[]> params = request.getParameterMap(); String layerId = super.getLayersParameter(request); String encoding = request.getCharacterEncoding(); String strQuadKey = ServletUtils.stringFromMap(params, encoding, "quadkey"); String strFormat = ServletUtils.stringFromMap(params, encoding, "format"); String strCached = ServletUtils.stringFromMap(params, encoding, "cached"); String strMetaTiled = ServletUtils.stringFromMap(params, encoding, "metatiled"); long[] gridLoc = VEConverter.convert(strQuadKey); MimeType mimeType = null; if (strFormat != null) { try { mimeType = MimeType.createFromFormat(strFormat); } catch (MimeException me) { throw new ServiceException("Unable to determined requested format, " + strFormat); } } ConveyorTile ret = new ConveyorTile( sb, layerId, gsb.WORLD_EPSG3857.getName(), gridLoc, mimeType, null, request, response); if (strCached != null && !Boolean.parseBoolean(strCached)) { ret.setRequestHandler(ConveyorTile.RequestHandler.SERVICE); if (strMetaTiled != null && !Boolean.parseBoolean(strMetaTiled)) { ret.setHint("not_cached,not_metatiled"); } else { ret.setHint("not_cached"); } } return ret; }
protected WMSTileFuser(TileLayerDispatcher tld, StorageBroker sb, HttpServletRequest servReq) throws GeoWebCacheException { this.sb = sb; String[] keys = { "layers", "format", "srs", "bbox", "width", "height", "transparent", "bgcolor" }; Map<String, String> values = ServletUtils.selectedStringsFromMap( servReq.getParameterMap(), servReq.getCharacterEncoding(), keys); // TODO Parameter filters? String layerName = values.get("layers"); layer = tld.getTileLayer(layerName); List<MimeType> ml = layer.getMimeTypes(); Iterator<MimeType> iter = ml.iterator(); while (iter.hasNext()) { MimeType mt = iter.next(); if (mt.getInternalName().equalsIgnoreCase("png")) { this.srcFormat = (ImageMime) mt; } } gridSubset = layer.getGridSubsetForSRS(SRS.getSRS(values.get("srs"))); outputFormat = (ImageMime) ImageMime.createFromFormat(values.get("format")); reqBounds = new BoundingBox(values.get("bbox")); reqWidth = Integer.valueOf(values.get("width")); reqHeight = Integer.valueOf(values.get("height")); // if(values[6] != null) { // this.reqTransparent = Boolean.valueOf(values[6]); // } // if(values[7] != null) { // this.reqBgColor = values[7]; // } fullParameters = layer.getModifiableParameters(servReq.getParameterMap(), servReq.getCharacterEncoding()); }
protected WMTSGetCapabilities( TileLayerDispatcher tld, GridSetBroker gsb, HttpServletRequest servReq) { this.tld = tld; this.gsb = gsb; baseUrl = ServletUtils.stringFromMap( servReq.getParameterMap(), servReq.getCharacterEncoding(), "base_url"); // This should prevent anyone from passing in anything nasty if (baseUrl != null) { baseUrl = encodeXmlChars(baseUrl); } if (baseUrl == null || baseUrl.length() == 0) { baseUrl = servReq.getRequestURL().toString(); } }
protected WMSGetCapabilities( TileLayerDispatcher tld, HttpServletRequest servReq, String baseUrl, String contextPath, URLMangler urlMangler) { this.tld = tld; urlStr = urlMangler.buildURL(baseUrl, contextPath, WMSService.SERVICE_PATH) + "?SERVICE=WMS&"; String[] tiledKey = {"TILED"}; Map<String, String> tiledValue = ServletUtils.selectedStringsFromMap( servReq.getParameterMap(), servReq.getCharacterEncoding(), tiledKey); if (tiledValue != null && tiledValue.size() > 0) { includeVendorSpecific = Boolean.parseBoolean(tiledValue.get("TILED")); } }
public static void makeMap( TileLayerDispatcher tileLayerDispatcher, GridSetBroker gridSetBroker, String action, HttpServletRequest request, HttpServletResponse response) throws GeoWebCacheException { String page = null; // Do we have a layer, or should we make a list? if (action != null) { String layerName = ServletUtils.URLDecode(action, request.getCharacterEncoding()); TileLayer layer = tileLayerDispatcher.getTileLayer(layerName); String rawGridSet = request.getParameter("gridSet"); String gridSetStr = null; if (rawGridSet != null) gridSetStr = ServletUtils.URLDecode(rawGridSet, request.getCharacterEncoding()); if (gridSetStr == null) { gridSetStr = request.getParameter("srs"); if (gridSetStr == null) { gridSetStr = layer.getGridSubsets().iterator().next(); } } String formatStr = request.getParameter("format"); if (formatStr != null) { if (!layer.supportsFormat(formatStr)) { throw new GeoWebCacheException("Unknow or unsupported format " + formatStr); } } else { formatStr = layer.getDefaultMimeType().getFormat(); } if (request.getPathInfo().startsWith("/demo")) { // Running in GeoServer page = generateHTML(layer, gridSetStr, formatStr, true); } else { page = generateHTML(layer, gridSetStr, formatStr, false); } } else { if (request.getRequestURI().endsWith("/")) { try { String reqUri = request.getRequestURI(); response.sendRedirect( response.encodeRedirectURL(reqUri.substring(0, reqUri.length() - 1))); } catch (IOException e) { e.printStackTrace(); } return; } else { page = generateHTML(tileLayerDispatcher, gridSetBroker); } } response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); try { response.getOutputStream().write(page.getBytes()); } catch (IOException ioe) { throw new GeoWebCacheException("failed to render HTML"); } }