it.geosolutions.geoserver.rest.decoder.RESTCoverage Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of geoserver-manager Show documentation
Show all versions of geoserver-manager Show documentation
GeoServer Manager is a library to interact with GeoServer
The scope of this library is to have a simple API, and use as few external
libs as possible.
The newest version!
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007,2011 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package it.geosolutions.geoserver.rest.decoder;
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
import it.geosolutions.geoserver.rest.encoder.feature.FeatureTypeAttribute;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jdom.Element;
/**
* Parse Coverages returned as XML REST objects.
*
* This is the XML REST representation:
*
*{@code
*
* sfdem
* sfdem
*
* sf
*
*
* sfdem is a Tagged Image File Format with Geographic information
* Generated from sfdem
*
* WCS
* sfdem
* sfdem
*
* PROJCS["NAD27 / UTM zone 13N",
* GEOGCS["NAD27",
* DATUM["North American Datum 1927",
* SPHEROID["Clarke 1866", 6378206.4, 294.9786982138982, AUTHORITY["EPSG","7008"]],
* TOWGS84[-4.2, 135.4, 181.9, 0.0, 0.0, 0.0, 0.0],
* AUTHORITY["EPSG","6267"]],
* PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],
* UNIT["degree", 0.017453292519943295],
* AXIS["Geodetic longitude", EAST],
* AXIS["Geodetic latitude", NORTH],
* AUTHORITY["EPSG","4267"]],
* PROJECTION["Transverse_Mercator"],
* PARAMETER["central_meridian", -105.0],
* PARAMETER["latitude_of_origin", 0.0],
* PARAMETER["scale_factor", 0.9996],
* PARAMETER["false_easting", 500000.0],
* PARAMETER["false_northing", 0.0],
* UNIT["m", 1.0],
* AXIS["Easting", EAST],
* AXIS["Northing", NORTH],
* AUTHORITY["EPSG","26713"]]
* EPSG:26713
*
* 589980.0
* 609000.0
* 4913700.0
* 4928010.0
* EPSG:26713
*
*
* -103.87108701853181
* -103.62940739432703
* 44.370187074132616
* 44.5016011535299
* EPSG:4326
*
* true
*
* sfdem_sfdem
*
*
* sfdem
*
*
* GeoTIFF
*
*
* 0 0
* 634 477
*
*
* 30.0
* -30.0
* 0.0
* 0.0
* 589995.0
* 4927995.0
*
* EPSG:26713
*
*
* ARCGRID
* IMAGEMOSAIC
* GTOPO30
* GEOTIFF
* GIF
* PNG
* JPEG
* TIFF
*
*
* nearest neighbor
* bilinear
* bicubic
*
* nearest neighbor
*
*
* GRAY_INDEX
* GridSampleDimension[-9.999999933815813E36,-9.999999933815813E36]
*
* -9.999999933815813E36
* -9.999999933815813E36
*
*
*
*
* EPSG:26713
*
*
* EPSG:26713
*
*
* }
*
* @author etj
* @version $Id: $
*/
public class RESTCoverage extends RESTResource {
/** {@inheritDoc} */
public static RESTCoverage build(String response) {
Element elem = JDOMBuilder.buildElement(response);
return elem == null? null : new RESTCoverage(elem);
}
/**
* Constructor for RESTCoverage.
*
* @param resource a {@link org.jdom.Element} object.
*/
public RESTCoverage(Element resource) {
super(resource);
}
/**
* Constructor for RESTCoverage.
*
* @param resource a {@link it.geosolutions.geoserver.rest.decoder.RESTResource} object.
*/
public RESTCoverage(RESTResource resource) {
super(resource.rootElem);
}
// public String getName() {
// return rootElem.getChildText("name");
// }
/**
* getNativeCoverageName
*
* @return a {@link java.lang.String} object.
*/
public String getNativeCoverageName() {
return rootElem.getChildText("nativeCoverageName");
}
/**
* getNativeFormat
*
* @return a {@link java.lang.String} object.
*/
public String getNativeFormat() {
return rootElem.getChildText("nativeFormat");
}
// public String getNameSpace() {
// return rootElem.getChild("namespace").getChildText("name");
// }
//
// public String getTitle() {
// return rootElem.getChildText("title");
// }
/**
* getNativeCRS
*
* @return a {@link java.lang.String} object.
*/
public String getNativeCRS() {
return rootElem.getChildText("nativeCRS");
}
/**
* getSRS
*
* @return a {@link java.lang.String} object.
*/
public String getSRS() {
return rootElem.getChildText("srs");
}
/**
* getMetadataList
*
* @return a {@link it.geosolutions.geoserver.rest.decoder.RESTMetadataList} object.
*/
public RESTMetadataList getMetadataList() {
return new RESTMetadataList(rootElem.getChild("metadata"));
}
/**
* getDimensionInfo
*
* @return a {@link java.util.List} object.
*/
public List getDimensionInfo() {
List listDim = new ArrayList();
for (RESTMetadataList.RESTMetadataElement el : getMetadataList()){
if(el.getKey().equals(RESTDimensionInfo.TIME) || el.getKey().equals(RESTDimensionInfo.ELEVATION)){
listDim.add(new RESTDimensionInfo(el.getMetadataElem()));
}
}
return listDim;
}
/**
* Retrieves the list of parameters for this coverage.
*
* @return a {@link Map} where the key is the name for the parameter and the value is the value for the parameter.
*/
@SuppressWarnings("unchecked")
public Map getParametersList() {
Map paramsList = new HashMap();
final Element paramsRoot = rootElem.getChild("parameters");
if (paramsRoot != null) {
final List params = paramsRoot.getChildren();
if (params != null) {
for (Element param : params) {
final List values = param.getChildren();
assert values.size()==2;
paramsList.put(values.get(0).getValue(), values.get(1).getValue()); // save key and value
}
}
}
return paramsList;
}
/** {@inheritDoc} */
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("RESTCoverage [");
if (getNativeFormat() != null) {
builder.append("getNativeFormat()=");
builder.append(getNativeFormat());
builder.append(", ");
}
if (getNativeCRS() != null) {
builder.append("getNativeCRS()=");
builder.append(getNativeCRS());
builder.append(", ");
}
if (getSRS() != null) {
builder.append("getSRS()=");
builder.append(getSRS());
builder.append(", ");
}
if (getMetadataList() != null) {
builder.append("getMetadataList()=");
builder.append(getMetadataList());
builder.append(", ");
}
if (getDimensionInfo() != null) {
builder.append("getDimensionInfo()=");
builder.append(getDimensionInfo());
builder.append(", ");
}
if (getParametersList() != null) {
builder.append("getParametersList()=");
builder.append(getParametersList());
builder.append(", ");
}
if (getName() != null) {
builder.append("getName()=");
builder.append(getName());
builder.append(", ");
}
if (getTitle() != null) {
builder.append("getTitle()=");
builder.append(getTitle());
builder.append(", ");
}
if (getNativeName() != null) {
builder.append("getNativeName()=");
builder.append(getNativeName());
builder.append(", ");
}
if (getNativeCoverageName() != null) {
builder.append("getNativeCoverageName()=");
builder.append(getNativeCoverageName());
builder.append(", ");
}
if (getAbstract() != null) {
builder.append("getAbstract()=");
builder.append(getAbstract());
builder.append(", ");
}
if (getNameSpace() != null) {
builder.append("getNameSpace()=");
builder.append(getNameSpace());
builder.append(", ");
}
if (getStoreName() != null) {
builder.append("getStoreName()=");
builder.append(getStoreName());
builder.append(", ");
}
if (getStoreType() != null) {
builder.append("getStoreType()=");
builder.append(getStoreType());
builder.append(", ");
}
if (getStoreUrl() != null) {
builder.append("getStoreUrl()=");
builder.append(getStoreUrl());
builder.append(", ");
}
if (getCRS() != null) {
builder.append("getCRS()=");
builder.append(getCRS());
builder.append(", ");
}
builder.append("getMinX()=");
builder.append(getMinX());
builder.append(", getMaxX()=");
builder.append(getMaxX());
builder.append(", getMinY()=");
builder.append(getMinY());
builder.append(", getMaxY()=");
builder.append(getMaxY());
builder.append(", ");
if (getAttributeList() != null) {
builder.append("getAttributeList()=");
builder.append(getAttributeList());
builder.append(", ");
}
if (getEncodedAttributeList() != null) {
builder.append("getEncodedAttributeList()=");
builder.append(getEncodedAttributeList());
builder.append(", ");
}
if (getEncodedMetadataLinkInfoList() != null) {
builder.append("getEncodedMetadataLinkInfoList()=");
builder.append(getEncodedMetadataLinkInfoList());
}
builder.append("]");
return builder.toString();
}
// public String getStoreName() {
// return rootElem.getChild("store").getChildText("name");
// }
//
// public String getStoreType() {
// return rootElem.getChild("store").getAttributeValue("class");
// }
/**
* Get the URL to retrieve the featuretype.
* {@code
*
* sfdem
*
*
* }
*/
// public String getStoreUrl() {
// Element store = rootElem.getChild("store");
// Element atom = store.getChild("link", Namespace.getNamespace("atom", "http://www.w3.org/2005/Atom"));
// return atom.getAttributeValue("href");
// }
// public String getBBCRS() {
// Element elBBox = rootElem.getChild("latLonBoundingBox");
// return elBBox.getChildText("crs");
// }
//
// protected double getLatLonEdge(String edge) {
// Element elBBox = rootElem.getChild("latLonBoundingBox");
// return Double.parseDouble(elBBox.getChildText(edge));
// }
//
// public double getMinX() {
// return getLatLonEdge("minx");
// }
// public double getMaxX() {
// return getLatLonEdge("maxx");
// }
// public double getMinY() {
// return getLatLonEdge("miny");
// }
// public double getMaxY() {
// return getLatLonEdge("maxy");
// }
}