it.geosolutions.geoserver.rest.decoder.RESTLayer Maven / Gradle / Ivy
/*
* 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.authorityurl.AuthorityURLInfo;
import it.geosolutions.geoserver.rest.encoder.authorityurl.GSAuthorityURLInfoEncoder;
import it.geosolutions.geoserver.rest.encoder.identifier.GSIdentifierInfoEncoder;
import it.geosolutions.geoserver.rest.encoder.identifier.IdentifierInfo;
import org.jdom.Element;
import org.jdom.Namespace;
import java.util.ArrayList;
import java.util.List;
/*
tasmania_cities
/
VECTOR
capitals
tasmania_cities
true
true
true
0
0
authority1
http://www.authority1.org
authority1
identifier1
*/
/**
* Parse Layers returned as XML REST objects.
*
* This is the XML REST representation:
* @author etj
* @author eblondel
*/
public class RESTLayer {
protected final Element layerElem;
public enum Type {
VECTOR("VECTOR"),
RASTER("RASTER"),
UNKNOWN(null);
private final String restName;
private Type(String restName) {
this.restName = restName;
}
public static Type get(String restName) {
for (Type type : values()) {
if(type == UNKNOWN)
continue;
if(type.restName.equals(restName))
return type;
}
return UNKNOWN;
}
};
public static RESTLayer build(String response) {
if(response == null)
return null;
Element pb = JDOMBuilder.buildElement(response);
if(pb != null)
return new RESTLayer(pb);
else
return null;
}
public RESTLayer(Element layerElem) {
this.layerElem = layerElem;
}
public boolean getEnabled(){
return Boolean.parseBoolean(layerElem.getChildText("enabled"));
}
public boolean getQueryable(){
return Boolean.parseBoolean(layerElem.getChildText("queryable"));
}
public boolean getAdvertised(){
return Boolean.parseBoolean(layerElem.getChildText("advertised"));
}
public String getName() {
return layerElem.getChildText("name");
}
public String getTypeString() {
return layerElem.getChildText("type");
}
public Type getType() {
return Type.get(getTypeString());
}
public String getDefaultStyle() {
Element defaultStyle = layerElem.getChild("defaultStyle");
return defaultStyle == null? null : defaultStyle.getChildText("name");
}
public RESTStyleList getStyles() {
RESTStyleList styleList = null;
final Element stylesRoot = layerElem.getChild("styles");
if (stylesRoot != null) {
styleList = new RESTStyleList(stylesRoot);
}
return styleList;
}
public String getDefaultStyleWorkspace() {
Element defaultStyle = layerElem.getChild("defaultStyle");
return defaultStyle == null? null : defaultStyle.getChildText("workspace");
}
public String getTitle() {
Element resource = layerElem.getChild("resource");
return resource.getChildText("title");
}
public String getAbstract() {
Element resource = layerElem.getChild("resource");
return resource.getChildText("abstract");
}
public String getNameSpace() {
Element resource = layerElem.getChild("resource");
return resource.getChild("namespace").getChildText("name");
}
/*
*
* tasmania_cities
*
*
*/
/**
* Get the URL to retrieve the featuretype.
*/
public String getResourceUrl() {
Element resource = layerElem.getChild("resource");
Element atom = resource.getChild("link", Namespace.getNamespace("atom", "http://www.w3.org/2005/Atom"));
return atom.getAttributeValue("href");
}
/**
* Decodes the list of AuthorityURLInfo from the GeoServer Layer
*
* @return the list of GSAuthorityURLInfoEncoder
*/
public List getEncodedAuthorityURLInfoList() {
List authorityURLList = null;
final Element authorityURLsRoot = layerElem.getChild("authorityURLs");
if (authorityURLsRoot != null) {
final List authorityURLs = authorityURLsRoot.getChildren();
if (authorityURLs != null) {
authorityURLList = new ArrayList(
authorityURLs.size());
for (Element authorityURL : authorityURLs) {
final GSAuthorityURLInfoEncoder authEnc = new GSAuthorityURLInfoEncoder();
authEnc.setName(authorityURL
.getChildText(AuthorityURLInfo.name.name()));
authEnc.setHref(authorityURL
.getChildText(AuthorityURLInfo.href.name()));
authorityURLList.add(authEnc);
}
}
}
return authorityURLList;
}
/**
* Decodes the list of IdentifierInfo from the GeoServer Layer
*
* @return the list of IdentifierInfoEncoder
*/
public List getEncodedIdentifierInfoList() {
List idList = null;
final Element idRoot = layerElem.getChild("identifiers");
if (idRoot != null) {
final List identifiers = idRoot.getChildren();
if (identifiers != null) {
idList = new ArrayList(
identifiers.size());
for (Element identifier : identifiers) {
final GSIdentifierInfoEncoder idEnc = new GSIdentifierInfoEncoder();
idEnc.setAuthority(identifier
.getChildText(IdentifierInfo.authority.name()));
idEnc.setIdentifier(identifier
.getChildText(IdentifierInfo.identifier.name()));
idList.add(idEnc);
}
}
}
return idList;
}
}