package org.geoserver.wms; import java.awt.Color; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.Raster; import java.math.BigDecimal; import java.net.URL; import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.xml.namespace.QName; import org.custommonkey.xmlunit.SimpleNamespaceContext; import org.custommonkey.xmlunit.XMLUnit; import org.geoserver.catalog.CoverageInfo; import org.geoserver.catalog.DimensionInfo; import org.geoserver.catalog.DimensionPresentation; import org.geoserver.catalog.FeatureTypeInfo; import org.geoserver.catalog.impl.DimensionInfoImpl; import org.geoserver.config.GeoServerInfo; import org.geoserver.data.test.MockData; import org.geoserver.data.test.TestData; public class WMSDimensionsTestSupport extends WMSTestSupport { protected QName V_TIME_ELEVATION = new QName(MockData.SF_URI, "TimeElevation", MockData.SF_PREFIX); protected static QName WATTEMP = new QName(MockData.SF_URI, "watertemp", MockData.SF_PREFIX); @Override protected void populateDataDirectory(MockData dataDirectory) throws Exception { // add vector data set with time and elevation dataDirectory.addStyle("TimeElevation", getClass().getResource("../TimeElevation.sld")); dataDirectory.addPropertiesType(V_TIME_ELEVATION, getClass().getResource("../TimeElevation.properties"), Collections.singletonMap(MockData.KEY_STYLE, "TimeElevation")); // add a raster mosaic with time and elevation URL style = getClass().getResource("../temperature.sld"); String styleName = "temperature"; dataDirectory.addStyle(styleName, style); dataDirectory.addCoverage(WATTEMP, TestData.class.getResource("watertemp.zip"), null, styleName); } @Override protected void setUpInternal() throws Exception { super.setUpInternal(); GeoServerInfo global = getGeoServer().getGlobal(); global.setProxyBaseUrl("src/test/resources/geoserver"); getGeoServer().save(global); WMSInfo wms = getGeoServer().getService(WMSInfo.class); wms.getSRS().add("EPSG:4326"); getGeoServer().save(wms); Map<String, String> namespaces = new HashMap<String, String>(); namespaces.put("xlink", "http://www.w3.org/1999/xlink"); namespaces.put("wfs", "http://www.opengis.net/wfs"); namespaces.put("wcs", "http://www.opengis.net/wcs/1.1.1"); namespaces.put("gml", "http://www.opengis.net/gml"); namespaces.put("", "http://www.opengis.net/wms"); namespaces.put("wms", "http://www.opengis.net/wms"); getTestData().registerNamespaces(namespaces); XMLUnit.setXpathNamespaceContext(new SimpleNamespaceContext(namespaces)); } protected void setupVectorDimension(String metadata, String attribute, DimensionPresentation presentation, Double resolution) { FeatureTypeInfo info = getCatalog().getFeatureTypeByName("TimeElevation"); DimensionInfo di = new DimensionInfoImpl(); di.setEnabled(true); di.setAttribute(attribute); di.setPresentation(presentation); if(resolution != null) { di.setResolution(new BigDecimal(resolution)); } info.getMetadata().put(metadata, di); getCatalog().save(info); } protected void setupRasterDimension(String metadata, DimensionPresentation presentation, Double resolution) { CoverageInfo info = getCatalog().getCoverageByName(WATTEMP.getLocalPart()); DimensionInfo di = new DimensionInfoImpl(); di.setEnabled(true); di.setPresentation(presentation); if(resolution != null) { di.setResolution(new BigDecimal(resolution)); } info.getMetadata().put(metadata, di); getCatalog().save(info); } }