public void adjustLayerWmsNameAndUrl(LayerDefinition layerDefinition) throws IOException { String layerURL = null; String layersParam = null; String type = layerDefinition.getLayerType(); if (isMyPlacesType(layerDefinition)) { if (layerDefinition.getWmsurl() != null && layerDefinition.getWmsname() != null) { layerURL = ConfigValue.LAYER_URLTEMPLATE_MYPLACES.getConfigProperty(props).split("\\?")[0] + "?" + layerDefinition.getWmsurl().split("\\?")[1]; layersParam = URLEncoder.encode( ConfigValue.LAYER_URLTEMPLATE_MYPLACES_LAYERS.getConfigProperty(props), "UTF-8"); } else { String[] splitter = layerDefinition.getLayerid().split("_"); layerURL = String.format( ConfigValue.LAYER_URLTEMPLATE_MYPLACES.getConfigProperty(props), splitter[1]); layersParam = URLEncoder.encode( ConfigValue.LAYER_URLTEMPLATE_MYPLACES_LAYERS.getConfigProperty(props), "UTF-8"); } } else if ("wmslayer".equals(type)) { layerURL = layerDefinition.getWmsurl(); layersParam = URLEncoder.encode(layerDefinition.getWmsname(), "UTF-8"); } else if ("base".equals(type) || "groupMap".equals(type)) { layerURL = layerDefinition.getWmsurl(); if (layerDefinition.getWmsname() != null) { layersParam = URLEncoder.encode(layerDefinition.getWmsname(), "UTF-8"); } } else if ("wfslayer".equals(type)) { layerURL = String.format( ConfigValue.LAYER_URLTEMPLATE_WFSLAYER.getConfigProperty(props), layerDefinition.getLayerid()); layersParam = URLEncoder.encode(layerDefinition.getLayerid(), "UTF-8"); } else if ("statslayer".equals(type)) { layerURL = String.format( ConfigValue.LAYER_URLTEMPLATE_STATSLAYER.getConfigProperty(props), layerDefinition.getLayerid()); layersParam = URLEncoder.encode(layerDefinition.getLayerid(), "UTF-8"); } else if ("geojson".equals(type)) { } else if ("wmtslayer".equals(type)) { layerURL = layerDefinition.getWmsurl(); layersParam = URLEncoder.encode(layerDefinition.getWmsname(), "UTF-8"); if (layerURL != null) { if (layerURL.indexOf('?') != -1) { layerURL = layerURL.substring(0, layerURL.indexOf('?')); } } } else { throw new IOException("Unknown layertype " + type); } layerDefinition.setWmsname(layersParam); layerDefinition.setWmsurl(layerURL); }
private void adjustTileMatrixSetInfo(LayerDefinition layerDefinition, Map<String, ?> layerObj) { if (layerObj == null) { return; } Map<String, ?> contents = (Map<String, ?>) layerObj.get("contents"); if (contents == null) { return; } /* find REST url information for selected layer */ /* tileMatrixSetData may contain other layer specs as well */ Object rawLayers = contents.get("layers"); if (rawLayers == null) { return; } Map<String, ?> wmtsLayerSpec = null; if (rawLayers instanceof List) { String layerName = layerDefinition.getWmsname(); List<Map<String, ?>> wmtsLayers = (List<Map<String, ?>>) rawLayers; for (Map<String, ?> wmtsLayerListEl : wmtsLayers) { if (!layerName.equals(wmtsLayerListEl.get("identifier"))) { continue; } wmtsLayerSpec = wmtsLayerListEl; break; } } else { wmtsLayerSpec = (Map<String, ?>) rawLayers; } if (wmtsLayerSpec == null) { return; } /* */ { Map<String, ?> resourceUrl = (Map<String, ?>) wmtsLayerSpec.get("resourceUrl"); if (resourceUrl == null) { return; } Map<String, ?> resourceTileInfo = (Map<String, ?>) wmtsLayerSpec.get("tile"); if (resourceTileInfo != null) { String format = (String) resourceTileInfo.get("format"); if (format != null) { layerDefinition.setFormat(format); String template = (String) resourceTileInfo.get("template"); if (template != null) { layerDefinition.setUrlTemplate(format, template); } } } } List<Map<String, ?>> resourceUrls = (List<Map<String, ?>>) wmtsLayerSpec.get("resourceUrls"); if (resourceUrls == null) { return; } for (Map<String, ?> resourceTileInfo : resourceUrls) { String format = (String) resourceTileInfo.get("format"); if (format != null) { if (layerDefinition.getFormat() == null) { layerDefinition.setFormat(format); } String template = (String) resourceTileInfo.get("template"); if (template != null) { layerDefinition.setUrlTemplate(format, template); } } } /* * "resourceUrl": { "tile": { "format": "image/png", "template": * "http://karttamoottori.maanmittauslaitos.fi/maasto/wmts/1.0.0/taustakartta/default/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png" * , "resourceType": "tile" } }, "resourceUrls": [ { "format": * "image/png", "template": * "http://karttamoottori.maanmittauslaitos.fi/maasto/wmts/1.0.0/taustakartta/default/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}.png" * , "resourceType": "tile" } ] */ }