/* (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.wms;
/**
* Class to record capabilities for a {@link RasterMapProducer}.
*
* @author Simone Giannecchini, GeoSolutions SAS
*/
public class MapProducerCapabilities {
private final boolean tiledRequestsSupported;
private final boolean multivalueRequestsSupported;
private final boolean paletteSupported;
private final boolean transparencySupported;
private final String framesMimeType;
public MapProducerCapabilities(boolean tiledRequestsSupported,
boolean multivalueRequestsSupported, boolean paletteSupported,
boolean transparencySupported, String framesMimeType) {
super();
this.tiledRequestsSupported = tiledRequestsSupported;
this.multivalueRequestsSupported = multivalueRequestsSupported;
this.paletteSupported = paletteSupported;
this.transparencySupported = transparencySupported;
this.framesMimeType = framesMimeType;
}
/**
* If the map producer can be used in a meta-tiling context
*
*/
public boolean isTiledRequestsSupported() {
return tiledRequestsSupported;
}
/**
* Returns true if the map producer can handle list or results (one per time/elevation/dimension value)
* instead of a single one
*
*/
public boolean isMultivalueRequestsSupported() {
return multivalueRequestsSupported;
}
/**
* Returns true if paletted images are supported
*
*/
public boolean isPaletteSupported() {
return paletteSupported;
}
/**
* Returns true if background transparency is supported
*
*/
public boolean isTransparencySupported() {
return transparencySupported;
}
/**
* Returns the MIME TYPE of frames in case of animation is supported by this format
*
*/
public String getFramesMimeType() {
return framesMimeType;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((framesMimeType == null) ? 0 : framesMimeType.hashCode());
result = prime * result + (multivalueRequestsSupported ? 1231 : 1237);
result = prime * result + (paletteSupported ? 1231 : 1237);
result = prime * result + (tiledRequestsSupported ? 1231 : 1237);
result = prime * result + (transparencySupported ? 1231 : 1237);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof MapProducerCapabilities)) {
return false;
}
MapProducerCapabilities other = (MapProducerCapabilities) obj;
if (framesMimeType == null) {
if (other.framesMimeType != null) {
return false;
}
} else if (!framesMimeType.equals(other.framesMimeType)) {
return false;
}
if (multivalueRequestsSupported != other.multivalueRequestsSupported) {
return false;
}
if (paletteSupported != other.paletteSupported) {
return false;
}
if (tiledRequestsSupported != other.tiledRequestsSupported) {
return false;
}
if (transparencySupported != other.transparencySupported) {
return false;
}
return true;
}
@Override
public String toString() {
return "MapProducerCapabilities [framesMimeType=" + framesMimeType
+ ", multivalueRequestsSupported=" + multivalueRequestsSupported
+ ", paletteSupported=" + paletteSupported + ", tiledRequestsSupported="
+ tiledRequestsSupported + ", transparencySupported=" + transparencySupported + "]";
}
}