/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved. * This code is licensed under the GPL 2.0 license, availible at the root * application directory. */ package org.vfny.geoserver.wcs.requests; import java.util.Map; import java.util.logging.Logger; import org.geoserver.wcs.WCSInfo; import com.vividsolutions.jts.geom.Envelope; /** * DOCUMENT ME! * * @author $Author: Alessio Fabiani (alessio.fabiani@gmail.com) $ (last * modification) * @author $Author: Simone Giannecchini (simboss1@gmail.com) $ (last * modification) */ public class CoverageRequest extends WCSRequest { /** Standard logging instance for class */ private static final Logger LOGGER = org.geotools.util.logging.Logging.getLogger("org.vfny.geoserver.requests"); /** * * @uml.property name="coverage" multiplicity="(0 1)" */ protected String coverage = null; /** * * @uml.property name="outputFormat" multiplicity="(0 1)" */ protected String outputFormat = null; protected String CRS = null; protected String ResponseCRS = null; /** * * @uml.property name="envelope" * @uml.associationEnd multiplicity="(0 1)" */ protected Envelope envelope = null; /** * * @uml.property name="interpolation" multiplicity="(0 1)" */ protected String interpolation = null; /** * * @uml.property name="handle" multiplicity="(0 1)" */ protected String handle = null; protected String coverageVersion = null; /** * * @uml.property name="gridDimension" multiplicity="(0 1)" */ private int gridDimension; /** * * @uml.property name="gridLow" multiplicity="(0 1)" */ private Double[] gridLow; /** * * @uml.property name="gridHigh" multiplicity="(0 1)" */ private Double[] gridHigh; /** * * @uml.property name="gridOrigin" multiplicity="(0 1)" */ private Double[] gridOrigin; private Map parameters; public CoverageRequest(WCSInfo wcs) { super("GetCoverage", wcs); } /** * * @uml.property name="outputFormat" */ public void setOutputFormat(String outputFormat) { this.outputFormat = outputFormat; } /** * * @uml.property name="outputFormat" */ public String getOutputFormat() { return this.outputFormat; } /** * * @uml.property name="handle" */ public void setHandle(String handle) { this.handle = handle; } /** * * @uml.property name="handle" */ public String getHandle() { return this.handle; } public void setCoverageVersion(String version) { this.version = version; } public String getCoverageVersion() { return this.version; } public String toString() { StringBuffer returnString = new StringBuffer("\nRequest"); returnString.append(": ").append(handle); returnString.append("\n coverage:").append(coverage); returnString.append("\n output format:").append(outputFormat); returnString.append("\n version:").append(version); returnString.append("\n envelope:").append(envelope); returnString.append("\n interpolation:").append(interpolation); return returnString.toString(); } public boolean equals(Object obj) { super.equals(obj); if (!(obj instanceof CoverageRequest)) { return false; } CoverageRequest request = (CoverageRequest) obj; boolean isEqual = true; if ((this.coverage == null) && (request.getCoverage() == null)) { isEqual = isEqual && true; } else if ((this.coverage == null) || (request.getCoverage() == null)) { isEqual = false; } else if (request.getCoverage().equals(coverage)) { isEqual = isEqual && true; } else { isEqual = false; } if ((this.version == null) && (request.getVersion() == null)) { isEqual = isEqual && true; } else if ((this.version == null) || (request.getVersion() == null)) { isEqual = false; } else if (request.getVersion().equals(version)) { isEqual = isEqual && true; } else { isEqual = false; } if ((this.handle == null) && (request.getHandle() == null)) { isEqual = isEqual && true; } else if ((this.handle == null) || (request.getHandle() == null)) { isEqual = false; } else if (request.getHandle().equals(handle)) { isEqual = isEqual && true; } else { isEqual = false; } if ((this.outputFormat == null) && (request.getOutputFormat() == null)) { isEqual = isEqual && true; } else if ((this.outputFormat == null) || (request.getOutputFormat() == null)) { isEqual = false; } else if (request.getOutputFormat().equals(outputFormat)) { isEqual = isEqual && true; } else { isEqual = false; } if ((this.envelope == null) && (request.getEnvelope() == null)) { isEqual = isEqual && true; } else if ((this.envelope == null) || (request.getEnvelope() == null)) { isEqual = false; } else if (request.getEnvelope().equals(envelope)) { isEqual = isEqual && true; } else { isEqual = false; } if ((this.interpolation == null) && (request.getInterpolation() == null)) { isEqual = isEqual && true; } else if ((this.interpolation == null) || (request.getInterpolation() == null)) { isEqual = false; } else if (request.getInterpolation().equals(interpolation)) { isEqual = isEqual && true; } else { isEqual = false; } return isEqual; } public int hashCode() { int result = super.hashCode(); result = (23 * result) + ((handle == null) ? 0 : handle.hashCode()); result = (23 * result) + ((coverage == null) ? 0 : coverage.hashCode()); return result; } /** * @return Returns the envelope. * * @uml.property name="envelope" */ public Envelope getEnvelope() { return envelope; } /** * @param envelope * The envelope to set. * * @uml.property name="envelope" */ public void setEnvelope(Envelope envelope) { this.envelope = envelope; } public void setEnvelope(String envelope) { String[] coords = envelope.split(","); try { double arg0 = Double.parseDouble(coords[0]); double arg1 = Double.parseDouble(coords[1]); double arg2 = Double.parseDouble(coords[2]); double arg3 = Double.parseDouble(coords[3]); this.envelope = new Envelope(arg0, arg2, arg1, arg3); } catch (NumberFormatException e) { this.envelope = null; } } /** * @return Returns the interpolation. * * @uml.property name="interpolation" */ public String getInterpolation() { return interpolation; } /** * @param interpolation * The interpolation to set. * * @uml.property name="interpolation" */ public void setInterpolation(String interpolation) { this.interpolation = interpolation; } /** * @return Returns the coverage. * * @uml.property name="coverage" */ public String getCoverage() { return coverage; } /** * @param coverage * The coverage to set. * * @uml.property name="coverage" */ public void setCoverage(String coverage) { this.coverage = coverage; } /** * @return Returns the gridDimension. * * @uml.property name="gridDimension" */ public int getGridDimension() { return gridDimension; } /** * @param gridDimension * The gridDimension to set. * * @uml.property name="gridDimension" */ public void setGridDimension(int gridDimension) { this.gridDimension = gridDimension; } /** * @param value * The gridDimension to set. */ public void setGridDimension(String value) { this.gridDimension = Integer.parseInt(value); } /** * @param offsetVector */ public void setOffsetVector(Double[] offsetVector) { if (this.envelope != null) { final double envWidth = Math.abs(envelope.getMaxX() - envelope.getMinX()); final double envHeight = Math.abs(envelope.getMaxY() - envelope.getMinY()); final double width = envWidth / Math.abs(offsetVector[0].doubleValue()); final double height = envHeight / Math.abs(offsetVector[1].doubleValue()); setGridOrigin(new Double[] { new Double(0.0), new Double(0.0) }); setGridLow(new Double[] { new Double(0.0), new Double(0.0) }); setGridHigh(new Double[] { new Double(width), new Double(height) }); } } /** * @param origin * * @uml.property name="gridOrigin" */ public void setGridOrigin(Double[] origin) { this.gridOrigin = origin; } /** * @param highers * * @uml.property name="gridHigh" */ public void setGridHigh(Double[] highers) { this.gridHigh = highers; } /** * @param lowers * * @uml.property name="gridLow" */ public void setGridLow(Double[] lowers) { this.gridLow = lowers; } /** * @return Returns the gridHigh. * * @uml.property name="gridHigh" */ public Double[] getGridHigh() { return gridHigh; } /** * @return Returns the gridLow. * * @uml.property name="gridLow" */ public Double[] getGridLow() { return gridLow; } /** * @return Returns the gridOrigin. * * @uml.property name="gridOrigin" */ public Double[] getGridOrigin() { return gridOrigin; } public String getCRS() { return CRS; } public void setCRS(String crs) { CRS = crs; } public String getResponseCRS() { return ResponseCRS; } public void setResponseCRS(String responseCRS) { ResponseCRS = responseCRS; } /** * @param kvpPairs */ public void setParameters(Map kvpPairs) { this.parameters = kvpPairs; } public Map getParameters() { return parameters; } }