MetadataLink support - enrich javadoc & format code/comments
This commit is contained in:
parent
7fee169369
commit
4aeac4d080
@ -43,7 +43,8 @@ import org.jdom.Namespace;
|
|||||||
* Parse a resource (FeatureType or Coverage) returned as XML REST objects.
|
* Parse a resource (FeatureType or Coverage) returned as XML REST objects.
|
||||||
*
|
*
|
||||||
* @author etj
|
* @author etj
|
||||||
* @author Emmanuel Blondel - emmanuel.blondel1@gmail.com | emmanuel.blondel@fao.org
|
* @author Emmanuel Blondel - emmanuel.blondel1@gmail.com |
|
||||||
|
* emmanuel.blondel@fao.org
|
||||||
*/
|
*/
|
||||||
public class RESTResource {
|
public class RESTResource {
|
||||||
protected final Element rootElem;
|
protected final Element rootElem;
|
||||||
@ -159,58 +160,63 @@ public class RESTResource {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Decodes the list of MetadataLinkInfo from the GeoServer Resource
|
||||||
* @author Emmanuel Blondel
|
*
|
||||||
*
|
* @author Emmanuel Blondel
|
||||||
* @return the list of metadataLinkInfo
|
*
|
||||||
*/
|
* @return the list of Map<ResourceMetadataLinkInfo,String>
|
||||||
public List<Map<ResourceMetadataLinkInfo, String>> getMetadataLinkInfoList() {
|
*/
|
||||||
List<Map<ResourceMetadataLinkInfo, String>> metaLinksList = null;
|
public List<Map<ResourceMetadataLinkInfo, String>> getMetadataLinkInfoList() {
|
||||||
|
List<Map<ResourceMetadataLinkInfo, String>> metaLinksList = null;
|
||||||
|
|
||||||
final Element metaLinksRoot = rootElem.getChild("metadataLinks");
|
final Element metaLinksRoot = rootElem.getChild("metadataLinks");
|
||||||
final List<Element> metaLinks = metaLinksRoot.getChildren();
|
final List<Element> metaLinks = metaLinksRoot.getChildren();
|
||||||
if (metaLinks != null) {
|
if (metaLinks != null) {
|
||||||
metaLinksList = new ArrayList<Map<ResourceMetadataLinkInfo, String>>(metaLinks.size());
|
metaLinksList = new ArrayList<Map<ResourceMetadataLinkInfo, String>>(
|
||||||
for (Element metaLink : metaLinks) {
|
metaLinks.size());
|
||||||
Map<ResourceMetadataLinkInfo, String> metaLinkMap = new HashMap<ResourceMetadataLinkInfo, String>();
|
for (Element metaLink : metaLinks) {
|
||||||
metaLinksList.add(metaLinkMap);
|
Map<ResourceMetadataLinkInfo, String> metaLinkMap = new HashMap<ResourceMetadataLinkInfo, String>();
|
||||||
for (ResourceMetadataLinkInfo rmd : ResourceMetadataLinkInfo.values()) {
|
metaLinksList.add(metaLinkMap);
|
||||||
String key = rmd.toString();
|
for (ResourceMetadataLinkInfo rmd : ResourceMetadataLinkInfo
|
||||||
metaLinkMap.put(rmd, metaLink.getChildText(key));
|
.values()) {
|
||||||
}
|
String key = rmd.toString();
|
||||||
}
|
metaLinkMap.put(rmd, metaLink.getChildText(key));
|
||||||
}
|
}
|
||||||
return metaLinksList;
|
}
|
||||||
}
|
}
|
||||||
|
return metaLinksList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decodes the list of MetadataLinkInfo from the GeoServer Resource
|
||||||
|
*
|
||||||
|
* @author Emmanuel Blondel
|
||||||
|
*
|
||||||
|
* @return the list of GSMetadataLinkEncoder
|
||||||
|
*/
|
||||||
|
public List<GSMetadataLinkInfoEncoder> getEncodedMetadataLinkInfoList() {
|
||||||
|
List<GSMetadataLinkInfoEncoder> metaLinksList = null;
|
||||||
|
|
||||||
/**
|
final Element metaLinksRoot = rootElem.getChild("metadataLinks");
|
||||||
*
|
final List<Element> metaLinks = metaLinksRoot.getChildren();
|
||||||
* @author Emmanuel Blondel
|
if (metaLinks != null) {
|
||||||
*
|
metaLinksList = new ArrayList<GSMetadataLinkInfoEncoder>(
|
||||||
* @return the list of GSMetadataLinkEncoder
|
metaLinks.size());
|
||||||
*/
|
for (Element metaLink : metaLinks) {
|
||||||
public List<GSMetadataLinkInfoEncoder> getEncodedMetadataLinkInfoList() {
|
final GSMetadataLinkInfoEncoder metaLinkEnc = new GSMetadataLinkInfoEncoder();
|
||||||
List<GSMetadataLinkInfoEncoder> metaLinksList = null;
|
for (ResourceMetadataLinkInfo rmd : ResourceMetadataLinkInfo
|
||||||
|
.values()) {
|
||||||
final Element metaLinksRoot = rootElem.getChild("metadataLinks");
|
String key = rmd.toString();
|
||||||
final List<Element> metaLinks = metaLinksRoot.getChildren();
|
metaLinkEnc.setMetadataLinkInfoMember(rmd,
|
||||||
if (metaLinks != null) {
|
metaLink.getChildText(key)); // change
|
||||||
metaLinksList = new ArrayList<GSMetadataLinkInfoEncoder>(metaLinks.size());
|
}
|
||||||
for (Element metaLink : metaLinks) {
|
metaLinksList.add(metaLinkEnc);
|
||||||
final GSMetadataLinkInfoEncoder metaLinkEnc = new GSMetadataLinkInfoEncoder();
|
}
|
||||||
for (ResourceMetadataLinkInfo rmd : ResourceMetadataLinkInfo.values()) {
|
|
||||||
String key = rmd.toString();
|
|
||||||
metaLinkEnc.setMetadataLinkInfoMember(rmd, metaLink.getChildText(key)); //change
|
|
||||||
}
|
|
||||||
metaLinksList.add(metaLinkEnc);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
return metaLinksList;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
return metaLinksList;
|
||||||
|
}
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * @return the list of available attribute names
|
// * @return the list of available attribute names
|
||||||
|
|||||||
@ -47,7 +47,8 @@ import org.jdom.filter.Filter;
|
|||||||
*
|
*
|
||||||
* @author ETj (etj at geo-solutions.it)
|
* @author ETj (etj at geo-solutions.it)
|
||||||
* @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
|
* @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
|
||||||
* @author Emmanuel Blondel - emmanuel.blondel1@gmail.com | emmanuel.blondel@fao.org
|
* @author Emmanuel Blondel - emmanuel.blondel1@gmail.com |
|
||||||
|
* emmanuel.blondel@fao.org
|
||||||
*/
|
*/
|
||||||
public abstract class GSResourceEncoder
|
public abstract class GSResourceEncoder
|
||||||
extends PropertyXMLEncoder {
|
extends PropertyXMLEncoder {
|
||||||
@ -86,10 +87,6 @@ public abstract class GSResourceEncoder
|
|||||||
set("enabled", (enabled) ? "true" : "false");
|
set("enabled", (enabled) ? "true" : "false");
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO MetadataLink
|
|
||||||
// public void setMetadata(String key, String url){
|
|
||||||
// metadata.set(key, url);
|
|
||||||
// }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param key
|
* @param key
|
||||||
@ -141,34 +138,36 @@ public abstract class GSResourceEncoder
|
|||||||
})).size() == 0 ? false : true;
|
})).size() == 0 ? false : true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a MetadataLinkInfo to the GeoServer Resource
|
||||||
|
*
|
||||||
|
* @param MetadataLink
|
||||||
|
*
|
||||||
|
* @author Emmanuel Blondel
|
||||||
|
*/
|
||||||
|
public void addMetadataLinkInfo(GSMetadataLinkInfoEncoder metadataLinkInfo) {
|
||||||
|
metadataLinksListEncoder.addContent(metadataLinkInfo.getRoot());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param MetadataLink the metadataLink to add
|
* Adds quickly a MetadataLinkInfo to the GeoServer Resource
|
||||||
*
|
*
|
||||||
* @author Emmanuel Blondel
|
* @author Emmanuel Blondel
|
||||||
*/
|
*
|
||||||
public void addMetadataLinkInfo(GSMetadataLinkInfoEncoder metadataLinkInfo) {
|
* @param type
|
||||||
metadataLinksListEncoder.addContent(metadataLinkInfo.getRoot());
|
* @param metadataType
|
||||||
}
|
* @param content
|
||||||
|
*/
|
||||||
|
public void addMetadataLinkInfo(String type, String metadataType,
|
||||||
|
String content) {
|
||||||
|
final GSMetadataLinkInfoEncoder mde = new GSMetadataLinkInfoEncoder();
|
||||||
|
mde.setup(type, metadataType, content);
|
||||||
|
metadataLinksListEncoder.addContent(mde.getRoot());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
/** Quick MetadataLinkInfo set-up
|
* Deletes a metadataLinkInfo from the list using the metadataURL
|
||||||
*
|
* (MetadataLinkInfo content)
|
||||||
* @author Emmanuel Blondel
|
|
||||||
*
|
|
||||||
* @param type
|
|
||||||
* @param metadataType
|
|
||||||
* @param content
|
|
||||||
*/
|
|
||||||
public void addMetadataLinkInfo(String type, String metadataType, String content){
|
|
||||||
final GSMetadataLinkInfoEncoder mde = new GSMetadataLinkInfoEncoder();
|
|
||||||
mde.setup(type, metadataType, content);
|
|
||||||
metadataLinksListEncoder.addContent(mde.getRoot());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* delete a metadataLinkInfo from the list using the metadataURL (MetadataLinkInfo content)
|
|
||||||
*
|
*
|
||||||
* @author Emmanuel Blondel
|
* @author Emmanuel Blondel
|
||||||
*
|
*
|
||||||
@ -176,8 +175,10 @@ public abstract class GSResourceEncoder
|
|||||||
* @return true if something is removed, false otherwise
|
* @return true if something is removed, false otherwise
|
||||||
*/
|
*/
|
||||||
public boolean delMetadataLinkInfo(final String metadataURL) {
|
public boolean delMetadataLinkInfo(final String metadataURL) {
|
||||||
return (metadataLinksListEncoder.removeContent(GSMetadataLinkInfoEncoder.getFilterByContent(metadataURL))).size() == 0 ? false
|
return (metadataLinksListEncoder
|
||||||
: true;
|
.removeContent(GSMetadataLinkInfoEncoder
|
||||||
|
.getFilterByContent(metadataURL))).size() == 0 ? false
|
||||||
|
: true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -33,75 +33,132 @@ import org.jdom.filter.Filter;
|
|||||||
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
||||||
import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder;
|
import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder;
|
||||||
|
|
||||||
/** GSMetadataLinkEncoder
|
/**
|
||||||
|
* GSMetadataLinkEncoder - encodes a metadataLink for a given GeoServer Resource
|
||||||
|
* (feature type /coverage), as follows:
|
||||||
|
* <pre>
|
||||||
|
* {@code
|
||||||
|
* final GSMetadataLinkInfoEncoder mde = new GSMetadataLinkInfoEncoder();
|
||||||
|
* mde.setup("text/xml", "ISO19115:2003","http://www.organization.org/metadata");
|
||||||
|
* }
|
||||||
|
* </pre>
|
||||||
|
* For this example, the XML output is:
|
||||||
|
* <pre>
|
||||||
|
* {@code
|
||||||
|
* <metadataLink>
|
||||||
|
* <type>text/xml</type>
|
||||||
|
* <metadataType>ISO19115:2003</metadataType>
|
||||||
|
* <content>http://www.organization.org/metadata</content>
|
||||||
|
* </metadataLink>
|
||||||
|
* }
|
||||||
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author Emmanuel Blondel - emmanuel.blondel1@gmail.com | emmanuel.blondel@fao.org
|
* @author Emmanuel Blondel - emmanuel.blondel1@gmail.com |
|
||||||
|
* emmanuel.blondel@fao.org
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class GSMetadataLinkInfoEncoder extends PropertyXMLEncoder {
|
public class GSMetadataLinkInfoEncoder extends PropertyXMLEncoder {
|
||||||
|
|
||||||
|
/** A class to filter the MetadataLinkInfo by content
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
public static class filterByContent implements Filter {
|
public static class filterByContent implements Filter {
|
||||||
|
|
||||||
final private String key;
|
final private String key;
|
||||||
|
|
||||||
public filterByContent(String content){
|
public filterByContent(String content) {
|
||||||
this.key=content;
|
this.key = content;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
public boolean matches(Object obj) {
|
public boolean matches(Object obj) {
|
||||||
Element el=((Element) obj).getChild(ResourceMetadataLinkInfo.content.toString());
|
Element el = ((Element) obj)
|
||||||
if (el!=null && el.getTextTrim().equals(key)) {
|
.getChild(ResourceMetadataLinkInfo.content.toString());
|
||||||
return true;
|
if (el != null && el.getTextTrim().equals(key)) {
|
||||||
}
|
return true;
|
||||||
return false;
|
}
|
||||||
}
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
public static Filter getFilterByContent(String content){
|
|
||||||
return new filterByContent(content);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a Filter using the MetadataLinkInfo content (metadataURL)
|
||||||
|
*
|
||||||
|
* @param content
|
||||||
|
* @return the filter
|
||||||
|
*/
|
||||||
|
public static Filter getFilterByContent(String content) {
|
||||||
|
return new filterByContent(content);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new GSMetadataLinkInfoEncoder
|
||||||
|
*
|
||||||
|
*/
|
||||||
public GSMetadataLinkInfoEncoder() {
|
public GSMetadataLinkInfoEncoder() {
|
||||||
super("metadataLink");
|
super("metadataLink");
|
||||||
}
|
}
|
||||||
|
|
||||||
/** quick MetadataLinkInfo set-up
|
/**
|
||||||
|
* Set-up quickly a metadataLinkInfo
|
||||||
*
|
*
|
||||||
* @param type
|
* @param type
|
||||||
* @param metadataType
|
* @param metadataType
|
||||||
* @param content
|
* @param content
|
||||||
*/
|
*/
|
||||||
public void setup(String type, String metadataType, String content){
|
public void setup(String type, String metadataType, String content) {
|
||||||
set(ResourceMetadataLinkInfo.type.name(), type);
|
set(ResourceMetadataLinkInfo.type.name(), type);
|
||||||
set(ResourceMetadataLinkInfo.metadataType.name(), metadataType);
|
set(ResourceMetadataLinkInfo.metadataType.name(), metadataType);
|
||||||
set(ResourceMetadataLinkInfo.content.name(), content);
|
set(ResourceMetadataLinkInfo.content.name(), content);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setup(Map<ResourceMetadataLinkInfo, String> metadataLinkInfos){
|
/**
|
||||||
for (Entry<ResourceMetadataLinkInfo,String> mdLinkInfo:metadataLinkInfos.entrySet()){
|
* Set-up a metadataLinkInfo
|
||||||
set(mdLinkInfo.getKey().toString(),mdLinkInfo.getValue());
|
*
|
||||||
}
|
* @param metadataLinkInfos
|
||||||
|
*/
|
||||||
|
public void setup(Map<ResourceMetadataLinkInfo, String> metadataLinkInfos) {
|
||||||
|
for (Entry<ResourceMetadataLinkInfo, String> mdLinkInfo : metadataLinkInfos
|
||||||
|
.entrySet()) {
|
||||||
|
set(mdLinkInfo.getKey().toString(), mdLinkInfo.getValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMetadataLinkInfoMember(ResourceMetadataLinkInfo type, String value){
|
/**
|
||||||
set(type.toString(),value);
|
* Set a MetadataLinkInfo member (type, metadataType or content)
|
||||||
}
|
*
|
||||||
|
* @param type
|
||||||
|
* @param value
|
||||||
|
*/
|
||||||
|
public void setMetadataLinkInfoMember(ResourceMetadataLinkInfo type,
|
||||||
|
String value) {
|
||||||
|
set(type.toString(), value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deletes a MetadataLinkInfo member
|
||||||
|
*
|
||||||
|
* @param type
|
||||||
|
* @return true if the metadataLinkInfo member is removed
|
||||||
|
*/
|
||||||
|
public boolean delMetadataLinkInfoMember(ResourceMetadataLinkInfo type) {
|
||||||
|
return ElementUtils.remove(this.getRoot(), get(type.toString()));
|
||||||
|
}
|
||||||
|
|
||||||
public boolean delMetadataLinkInfoMember(ResourceMetadataLinkInfo type){
|
/**
|
||||||
return ElementUtils.remove(this.getRoot(), get(type.toString()));
|
* Get the value of the MetadataLinkInfo member
|
||||||
}
|
*
|
||||||
|
* @param type
|
||||||
|
* @return the value of the MetadataLinkInfo member
|
||||||
public String getMetadataLinkInfoMember(ResourceMetadataLinkInfo type){
|
*/
|
||||||
Element el = get(type.toString());
|
public String getMetadataLinkInfoMember(ResourceMetadataLinkInfo type) {
|
||||||
if (el!=null)
|
Element el = get(type.toString());
|
||||||
return el.getTextTrim();
|
if (el != null)
|
||||||
else
|
return el.getTextTrim();
|
||||||
return null;
|
else
|
||||||
}
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,7 +27,8 @@ package it.geosolutions.geoserver.rest.encoder.metadatalink;
|
|||||||
/**
|
/**
|
||||||
* Enumeration of featureType metadataLink member
|
* Enumeration of featureType metadataLink member
|
||||||
*
|
*
|
||||||
* @author Emmanuel Blondel - emmanuel.blondel1@gmail.com | emmanuel.blondel@fao.org
|
* @author Emmanuel Blondel - emmanuel.blondel1@gmail.com |
|
||||||
|
* emmanuel.blondel@fao.org
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public enum ResourceMetadataLinkInfo {
|
public enum ResourceMetadataLinkInfo {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user