/** * Given a request and a target format, builds the WMS request * * @param request * @param string */ public String getWmsLink() { GetMapRequest request = getRequest(); final Envelope bbox = request.getBbox(); if (bbox == null) return null; Map<String, String> params = new LinkedHashMap<>(); params.put("service", "WMS"); params.put("version", "1.1.0"); params.put("request", "GetMap"); params.put("layers", getName()); String bboxValue = bbox.getMinX() + "," + bbox.getMinY() + "," + bbox.getMaxX() + "," + bbox.getMaxY(); params.put("bbox", bboxValue); params.put("width", String.valueOf(request.getWidth())); params.put("height", String.valueOf(request.getHeight())); params.put("srs", String.valueOf(request.getSRS())); return ResponseUtils.buildURL(getBaseURL(), getPath("wms", false), params, URLType.SERVICE); }
@Override public PreviewLayer apply(PublishedInfo input) { if (input instanceof LayerInfo) { return new PreviewLayer((LayerInfo) input); } else if (input instanceof LayerGroupInfo) { return new PreviewLayer((LayerGroupInfo) input); } return null; } });
String buildWfsLink() { return this.buildWfsLink(new GMLOutputParams()); }
String buildWfsLink(GMLOutputParams gmlParams) { Map<String, String> params = new LinkedHashMap<>(); params.put("service", "WFS"); params.put("version", gmlParams.wfsVersion); params.put("request", "GetFeature"); params.put("typeName", getName()); if (gmlParams.gmlVersion != null) { params.put("outputFormat", gmlParams.gmlVersion); } return ResponseUtils.buildURL( gmlParams.baseUrl, getPath("ows", false), params, URLType.SERVICE); }
String getBaseURL(String service, boolean useGlobalRef) { String base = getBaseURL(); String ws = getWorkspace(); if (ws == null || useGlobalRef) { // global reference return ResponseUtils.buildURL(base, service, null, URLType.SERVICE); } else { return ResponseUtils.buildURL(base, ws + "/" + service, null, URLType.SERVICE); } }
private String findFeatureTypeGmlVersion(AttributeType featureType) { if (featureType == null) { return null; } if (isAbstractFeatureType(featureType)) { String gmlNamespace = featureType.getName().getNamespaceURI(); if (org.geotools.gml3.GML.NAMESPACE.equals(gmlNamespace)) { // GML 3.1.1 return "gml3"; } else if (org.geotools.gml3.v3_2.GML.NAMESPACE.equals(gmlNamespace)) { // GML 3.2 return GML32OutputFormat.FORMATS.get(0); } else { // should never happen LOGGER.log( Level.FINE, "Cannot determine GML version from AbstractFeatureType type"); return null; } } // recursively check super types AttributeType parent = featureType.getSuper(); return findFeatureTypeGmlVersion(parent); }
f.add(new Image("layerIcon", layer.getIcon())); return f; } else if (property == NAME) { layer.getWmsLink() + "&format=application/openlayers"; f.add(new ExternalLink("ol", olUrl, "OpenLayers")); layer.getBaseURL("wms") + "/kml?layers=" + layer.getName(); f.add(new ExternalLink("kml", kmlUrl, "KML")); layer.getGmlLink(gmlParamsCache) + getMaxFeatures(); Component gmlLink = new ExternalLink("gml", gmlUrl, "GML"); f.add(gmlLink); gmlLink.setVisible(layer.getType() == PreviewLayerType.Vector);
private PreviewLayer getPreviewLayer(PreviewLayerProvider provider, String prefixedName) { for (PreviewLayer pl : Lists.newArrayList(provider.iterator(0, Integer.MAX_VALUE))) { if (pl.getName().equals(prefixedName)) { return pl; } } return null; } }
request = new GetMapRequest(); Catalog catalog = app.getCatalog(); List<MapLayerInfo> layers = expandLayers(catalog); request.setLayers(layers); request.setFormat("application/openlayers"); Level.INFO, "Could not set figure out automatically a good preview link for " + getName(), e);
PreviewLayer preview = new PreviewLayer(layer); f.add(new ExternalLink("ol", preview.getWmsLink() + "&format=application/openlayers")); f.add(new ExternalLink("ge", "../wms/kml?layers=" + layer.getName()));
gmlParams.baseUrl = getBaseURL(); gmlParams.gmlVersion = findGmlVersion(ftInfo); } catch (IOException e) { LOGGER.log( return buildWfsLink(gmlParams);
"'" + layer.getWmsLink() + "&format=' + this.options[this.selectedIndex].value"; String wfsUrl = "'" + layer.buildWfsLink() + getMaxFeatures() + "&outputFormat=' + this.options[this.selectedIndex].value";
@Test public void testSingleLayerGroup() throws Exception { String layerId = getLayerId(MockData.BUILDINGS); LayerInfo layer = getCatalog().getLayerByName(layerId); LayerGroupInfo group = getCatalog().getFactory().createLayerGroup(); group.setName("testSingleLayerGroup"); group.setMode(LayerGroupInfo.Mode.SINGLE); group.getLayers().add(layer); group.setTitle("This is the title"); group.setAbstract("This is the abstract"); getCatalog().add(group); try { PreviewLayerProvider provider = new PreviewLayerProvider(); PreviewLayer pl = getPreviewLayer(provider, group.prefixedName()); assertNotNull(pl); assertEquals("This is the title", pl.getTitle()); assertEquals("This is the abstract", pl.getAbstract()); } finally { getCatalog().remove(group); } }
String getBaseURL(String service) { return getBaseURL(service, false); }
/** * Returns the GML version used in the feature type's definition. * * <p>The method recursively climbs up the type hierarchy of the provided feature type, until it * finds AbstractFeatureType. Then, the GML version is determined by looking at the namespace * URI. * * <p>Please note that this method does not differentiate between GML 2 and GML 3.1.1, but * assumes that "http://www.opengis.net/gml" namespace always refers to GML 3.1.1. * * @param ftInfo the feature type info * @return the GML version used in the feature type definition * @throws IOException if the underlying datastore instance cannot be retrieved */ String findGmlVersion(FeatureTypeInfo ftInfo) throws IOException { ProgressListener listener = new NullProgressListener(); Name qName = ftInfo.getQualifiedName(); FeatureType fType = ftInfo.getStore().getDataStore(listener).getSchema(qName); return findFeatureTypeGmlVersion(fType); }
private PreviewLayer getPreviewLayer(PreviewLayerProvider provider, String prefixedName) { for (PreviewLayer pl : Lists.newArrayList(provider.iterator(0, Integer.MAX_VALUE))) { if (pl.getName().equals(prefixedName)) { return pl; } } return null; } }
@Test public void testOpaqueContainerLayerGroup() throws Exception { String layerId = getLayerId(MockData.BUILDINGS); LayerInfo layer = getCatalog().getLayerByName(layerId); LayerGroupInfo group = getCatalog().getFactory().createLayerGroup(); group.setName("testOpaqueContainerLayerGroup"); group.setMode(LayerGroupInfo.Mode.OPAQUE_CONTAINER); group.getLayers().add(layer); group.setTitle("This is the title"); group.setAbstract("This is the abstract"); getCatalog().add(group); try { PreviewLayerProvider provider = new PreviewLayerProvider(); PreviewLayer pl = getPreviewLayer(provider, group.prefixedName()); assertNotNull(pl); assertEquals("This is the title", pl.getTitle()); assertEquals("This is the abstract", pl.getAbstract()); } finally { getCatalog().remove(group); } }
private PreviewLayer getPreviewLayer(PreviewLayerProvider provider, QName layer) { String layerId = getLayerId(layer); for (PreviewLayer pl : provider.getItems()) { if(pl.getName().equals(layerId)) { return pl; } } return null; } }
@Override protected Object load() { if (group) { return new PreviewLayer(GeoServerApplication.get().getCatalog().getLayerGroup(id)); } else { return new PreviewLayer(GeoServerApplication.get().getCatalog().getLayer(id)); } } }
private boolean previewHasBuildings(PreviewLayerProvider provider) { Iterator<PreviewLayer> it = provider.iterator(0, provider.size()); String buildingsPrefixedName = getLayerId(SystemTestData.BUILDINGS); while (it.hasNext()) { PreviewLayer pl = it.next(); if (buildingsPrefixedName.equals(pl.getName())) { return true; } } return false; }