/* (c) 2014 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.monitor.ows.wcs10; import java.util.Arrays; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.eclipse.emf.ecore.EObject; import org.geoserver.monitor.ows.RequestObjectHandler; import org.geoserver.monitor.MonitorConfig; import org.geoserver.ows.util.OwsUtils; import org.geotools.geometry.jts.ReferencedEnvelope; import org.geotools.util.logging.Logging; import org.geotools.xml.EMFUtils; import org.opengis.geometry.BoundingBox; import org.opengis.geometry.Envelope; import org.opengis.referencing.operation.TransformException; public class GetCoverageHandler extends RequestObjectHandler { static Logger LOGGER = Logging.getLogger("org.geoserver.monitor"); public GetCoverageHandler(MonitorConfig config) { super("net.opengis.wcs10.GetCoverageType", config); } @Override public List<String> getLayers(Object request) { String source = (String)EMFUtils.get((EObject)request, "sourceCoverage"); return source != null ? Arrays.asList(source) : null; } @Override protected BoundingBox getBBox(Object request) { Object domainSubset = OwsUtils.get(request, "domainSubset"); Object spatialSubset = OwsUtils.get(domainSubset, "spatialSubset"); if(spatialSubset==null) { return null; } @SuppressWarnings("unchecked") List<Envelope> envelopes = (List<Envelope>) OwsUtils.get(spatialSubset, "envelope"); // According to the WCS spec there should be exactly one Envelope env = envelopes.get(0); BoundingBox result=null; // Turn into a class that implements BoundingBox try{ result=new ReferencedEnvelope(env).toBounds(monitorConfig.getBboxCrs()); } catch(TransformException e) { LOGGER.log(Level.WARNING, "Could not transform bounding box to logging CRS", e); return null; } return result; } }