package org.geoserver.wms;
import java.util.Arrays;
import java.util.TimeZone;
import javax.xml.namespace.QName;
import org.custommonkey.xmlunit.XMLUnit;
import org.custommonkey.xmlunit.XpathEngine;
import org.geoserver.catalog.Catalog;
import org.geoserver.catalog.ResourceInfo;
import org.geoserver.data.test.MockData;
import org.geoserver.data.test.SystemTestData;
import org.geoserver.wms.dimension.DefaultValueConfiguration;
import org.geoserver.wms.dimension.DefaultValueConfigurations;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
public class WMSDynamicDimensionTestSupport extends WMSDimensionsTestSupport {
protected static QName TIME_ELEVATION_CUSTOM = new QName(MockData.SF_URI,
"time_elevation_custom", MockData.SF_PREFIX);
protected XpathEngine xpath;
@BeforeClass
public static void setupTimeZone() {
TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
}
@AfterClass
public static void resetTimeZone() {
TimeZone.setDefault(null);
}
@Override
protected void onSetUp(SystemTestData testData) throws Exception {
super.onSetUp(testData);
Catalog catalog = getCatalog();
testData.addRasterLayer(TIME_ELEVATION_CUSTOM, "time_elevation_custom.zip", null, null,
WMSDynamicDimensionTestSupport.class, catalog);
}
@Before
public void prepareXPathEngine() {
xpath = XMLUnit.newXpathEngine();
}
@Before
public void removeDynamicDimensions() throws Exception {
removeDynamicDimensions("TimeElevation");
removeDynamicDimensions(getLayerId(TIME_ELEVATION_CUSTOM));
}
public void removeDynamicDimensions(String resourceName) throws Exception {
ResourceInfo ri = getCatalog().getResourceByName(resourceName, ResourceInfo.class);
ri.getMetadata().remove(DefaultValueConfigurations.KEY);
getCatalog().save(ri);
}
protected void setupDynamicDimensions(String resourceName,
DefaultValueConfiguration... configurations) {
ResourceInfo info = getCatalog().getResourceByName(resourceName, ResourceInfo.class);
DefaultValueConfigurations configs = new DefaultValueConfigurations(
Arrays.asList(configurations));
info.getMetadata().put(DefaultValueConfigurations.KEY, configs);
getCatalog().save(info);
}
protected void setupDynamicDimensions(QName resourceName,
DefaultValueConfiguration... configurations) {
setupDynamicDimensions(getLayerId(resourceName), configurations);
}
}