#90, Improving support for ImageMosaics
This commit is contained in:
parent
4f0862b308
commit
5277fe9f6c
@ -2292,11 +2292,11 @@ public class GeoServerRESTPublisher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
// === MISCELLANEA
|
// === MISCELLANEOUS
|
||||||
// ==========================================================================
|
// ==========================================================================
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows to configure some layer attributes such and DefaultStyle
|
* Allows to configure some layer attributes such as DefaultStyle
|
||||||
*
|
*
|
||||||
* @param workspace
|
* @param workspace
|
||||||
* @param resourceName the name of the resource to use (featureStore or coverageStore name)
|
* @param resourceName the name of the resource to use (featureStore or coverageStore name)
|
||||||
|
|||||||
@ -26,8 +26,8 @@
|
|||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMListIterator;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMListIterator;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|||||||
@ -25,9 +25,12 @@
|
|||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.feature.FeatureTypeAttribute;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
@ -205,6 +208,136 @@ public class RESTCoverage extends RESTResource {
|
|||||||
}
|
}
|
||||||
return listDim;
|
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<String, String> getParametersList() {
|
||||||
|
Map<String, String> paramsList = new HashMap<String, String>();
|
||||||
|
|
||||||
|
final Element paramsRoot = rootElem.getChild("parameters");
|
||||||
|
if (paramsRoot != null) {
|
||||||
|
final List<Element> params = paramsRoot.getChildren();
|
||||||
|
if (params != null) {
|
||||||
|
for (Element param : params) {
|
||||||
|
final List<Element> values = param.getChildren();
|
||||||
|
assert values.size()==2;
|
||||||
|
paramsList.put(values.get(0).getValue(), values.get(1).getValue()); // save key and value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return paramsList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@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 (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() {
|
// public String getStoreName() {
|
||||||
// return rootElem.getChild("store").getChildText("name");
|
// return rootElem.getChild("store").getChildText("name");
|
||||||
|
|||||||
@ -25,8 +25,9 @@
|
|||||||
|
|
||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -25,8 +25,9 @@
|
|||||||
|
|
||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -25,8 +25,9 @@
|
|||||||
|
|
||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -29,6 +29,7 @@ import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
|||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMListIterator;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMListIterator;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
import org.jdom.Namespace;
|
import org.jdom.Namespace;
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -25,8 +25,9 @@
|
|||||||
|
|
||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -25,8 +25,9 @@
|
|||||||
|
|
||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -26,9 +26,10 @@ package it.geosolutions.geoserver.rest.decoder;
|
|||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
|
||||||
import org.jdom.Element;
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
|
|
||||||
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse <TT>namespace</TT>s returned as XML REST objects.
|
* Parse <TT>namespace</TT>s returned as XML REST objects.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|||||||
@ -25,10 +25,10 @@
|
|||||||
|
|
||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import org.jdom.Element;
|
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
||||||
|
|
||||||
|
import org.jdom.Element;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse a <TT>published</TT> returned as XML REST objects.
|
* Parse a <TT>published</TT> returned as XML REST objects.
|
||||||
|
|||||||
@ -123,15 +123,17 @@ public class RESTResource {
|
|||||||
List<Map<FeatureTypeAttribute, String>> attrsList = null;
|
List<Map<FeatureTypeAttribute, String>> attrsList = null;
|
||||||
|
|
||||||
final Element attrsRoot = rootElem.getChild("attributes");
|
final Element attrsRoot = rootElem.getChild("attributes");
|
||||||
final List<Element> attrs = attrsRoot.getChildren();
|
if(attrsRoot!=null){
|
||||||
if (attrs != null) {
|
final List<Element> attrs = attrsRoot.getChildren();
|
||||||
attrsList = new ArrayList<Map<FeatureTypeAttribute, String>>(attrs.size());
|
if (attrs != null) {
|
||||||
for (Element attr : attrs) {
|
attrsList = new ArrayList<Map<FeatureTypeAttribute, String>>(attrs.size());
|
||||||
Map<FeatureTypeAttribute, String> attrsMap = new HashMap<FeatureTypeAttribute, String>();
|
for (Element attr : attrs) {
|
||||||
attrsList.add(attrsMap);
|
Map<FeatureTypeAttribute, String> attrsMap = new HashMap<FeatureTypeAttribute, String>();
|
||||||
for (FeatureTypeAttribute at : FeatureTypeAttribute.values()) {
|
attrsList.add(attrsMap);
|
||||||
String key = at.toString();
|
for (FeatureTypeAttribute at : FeatureTypeAttribute.values()) {
|
||||||
attrsMap.put(at, attr.getChildText(key));
|
String key = at.toString();
|
||||||
|
attrsMap.put(at, attr.getChildText(key));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -142,18 +144,20 @@ public class RESTResource {
|
|||||||
List<GSAttributeEncoder> attrsList = null;
|
List<GSAttributeEncoder> attrsList = null;
|
||||||
|
|
||||||
final Element attrsRoot = rootElem.getChild("attributes");
|
final Element attrsRoot = rootElem.getChild("attributes");
|
||||||
final List<Element> attrs = attrsRoot.getChildren();
|
if(attrsRoot!=null){
|
||||||
if (attrs != null) {
|
final List<Element> attrs = attrsRoot.getChildren();
|
||||||
attrsList = new ArrayList<GSAttributeEncoder>(attrs.size());
|
if (attrs != null) {
|
||||||
for (Element attr : attrs) {
|
attrsList = new ArrayList<GSAttributeEncoder>(attrs.size());
|
||||||
final GSAttributeEncoder attrEnc = new GSAttributeEncoder();
|
for (Element attr : attrs) {
|
||||||
for (FeatureTypeAttribute at : FeatureTypeAttribute.values()) {
|
final GSAttributeEncoder attrEnc = new GSAttributeEncoder();
|
||||||
String key = at.toString();
|
for (FeatureTypeAttribute at : FeatureTypeAttribute.values()) {
|
||||||
attrEnc.setAttribute(at, attr.getChildText(key));
|
String key = at.toString();
|
||||||
|
attrEnc.setAttribute(at, attr.getChildText(key));
|
||||||
|
}
|
||||||
|
attrsList.add(attrEnc);
|
||||||
}
|
}
|
||||||
attrsList.add(attrEnc);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return attrsList;
|
return attrsList;
|
||||||
}
|
}
|
||||||
@ -169,19 +173,21 @@ public class RESTResource {
|
|||||||
List<GSMetadataLinkInfoEncoder> metaLinksList = null;
|
List<GSMetadataLinkInfoEncoder> metaLinksList = null;
|
||||||
|
|
||||||
final Element metaLinksRoot = rootElem.getChild("metadataLinks");
|
final Element metaLinksRoot = rootElem.getChild("metadataLinks");
|
||||||
final List<Element> metaLinks = metaLinksRoot.getChildren();
|
if(metaLinksRoot!=null){
|
||||||
if (metaLinks != null) {
|
final List<Element> metaLinks = metaLinksRoot.getChildren();
|
||||||
metaLinksList = new ArrayList<GSMetadataLinkInfoEncoder>(
|
if (metaLinks != null) {
|
||||||
metaLinks.size());
|
metaLinksList = new ArrayList<GSMetadataLinkInfoEncoder>(
|
||||||
for (Element metaLink : metaLinks) {
|
metaLinks.size());
|
||||||
final GSMetadataLinkInfoEncoder metaLinkEnc = new GSMetadataLinkInfoEncoder();
|
for (Element metaLink : metaLinks) {
|
||||||
metaLinkEnc.setType(metaLink.getChildText(ResourceMetadataLinkInfo.type.name()));
|
final GSMetadataLinkInfoEncoder metaLinkEnc = new GSMetadataLinkInfoEncoder();
|
||||||
metaLinkEnc.setMetadataType(metaLink.getChildText(ResourceMetadataLinkInfo.metadataType.name()));
|
metaLinkEnc.setType(metaLink.getChildText(ResourceMetadataLinkInfo.type.name()));
|
||||||
metaLinkEnc.setContent(metaLink.getChildText(ResourceMetadataLinkInfo.content.name()));
|
metaLinkEnc.setMetadataType(metaLink.getChildText(ResourceMetadataLinkInfo.metadataType.name()));
|
||||||
metaLinksList.add(metaLinkEnc);
|
metaLinkEnc.setContent(metaLink.getChildText(ResourceMetadataLinkInfo.content.name()));
|
||||||
}
|
metaLinksList.add(metaLinkEnc);
|
||||||
|
}
|
||||||
}
|
|
||||||
|
}
|
||||||
|
}
|
||||||
return metaLinksList;
|
return metaLinksList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -25,8 +25,9 @@
|
|||||||
|
|
||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -25,8 +25,9 @@
|
|||||||
|
|
||||||
package it.geosolutions.geoserver.rest.decoder;
|
package it.geosolutions.geoserver.rest.decoder;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|||||||
@ -27,6 +27,7 @@ package it.geosolutions.geoserver.rest.decoder.utils;
|
|||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -24,13 +24,13 @@
|
|||||||
*/
|
*/
|
||||||
package it.geosolutions.geoserver.rest.encoder;
|
package it.geosolutions.geoserver.rest.encoder;
|
||||||
|
|
||||||
import org.jdom.Element;
|
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
|
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
|
||||||
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher.StoreType;
|
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher.StoreType;
|
||||||
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;
|
||||||
|
|
||||||
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generic Store encoder.
|
* Generic Store encoder.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -25,9 +25,10 @@
|
|||||||
|
|
||||||
package it.geosolutions.geoserver.rest.encoder;
|
package it.geosolutions.geoserver.rest.encoder;
|
||||||
|
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
import org.jdom.filter.Filter;
|
import org.jdom.filter.Filter;
|
||||||
import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|||||||
@ -24,11 +24,11 @@
|
|||||||
*/
|
*/
|
||||||
package it.geosolutions.geoserver.rest.encoder;
|
package it.geosolutions.geoserver.rest.encoder;
|
||||||
|
|
||||||
import java.net.URI;
|
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Namespace XML encoder. Namespaces must contain a non empty prefix and a URI:
|
* Namespace XML encoder. Namespaces must contain a non empty prefix and a URI:
|
||||||
*
|
*
|
||||||
|
|||||||
@ -111,13 +111,42 @@ public abstract class GSResourceEncoder
|
|||||||
* @param dimensionInfo
|
* @param dimensionInfo
|
||||||
*/
|
*/
|
||||||
protected void addMetadataDimension(String key, GSDimensionInfoEncoder dimensionInfo) {
|
protected void addMetadataDimension(String key, GSDimensionInfoEncoder dimensionInfo) {
|
||||||
metadata.add(key, dimensionInfo.getRoot());
|
addMetadataDimension(key, dimensionInfo, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add the metadata for a custom dimension.
|
||||||
|
*
|
||||||
|
* @param key the name of the dimension
|
||||||
|
* @param dimensionInfo {@link GSDimensionInfoEncoder} with additional information about the dimension
|
||||||
|
* @param custom is the dimension custom or not?
|
||||||
|
*/
|
||||||
|
protected void addMetadataDimension(String key, GSDimensionInfoEncoder dimensionInfo, boolean custom) {
|
||||||
|
if(custom){
|
||||||
|
metadata.set("custom_dimension_"+key.toUpperCase(), dimensionInfo.getRoot());
|
||||||
|
}else{
|
||||||
|
metadata.add(key, dimensionInfo.getRoot());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMetadataDimension(String key, GSDimensionInfoEncoder dimensionInfo) {
|
public void setMetadataDimension(String key, GSDimensionInfoEncoder dimensionInfo) {
|
||||||
metadata.set(key, dimensionInfo.getRoot());
|
setMetadataDimension(key, dimensionInfo, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the metadata for a custom dimension.
|
||||||
|
*
|
||||||
|
* @param key the name of the dimension
|
||||||
|
* @param dimensionInfo {@link GSDimensionInfoEncoder} with additional information about the dimension
|
||||||
|
* @param custom is the dimension custom or not?
|
||||||
|
*/
|
||||||
|
public void setMetadataDimension(String key, GSDimensionInfoEncoder dimensionInfo, boolean custom) {
|
||||||
|
if(custom){
|
||||||
|
metadata.set("custom_dimension_"+key.toUpperCase(), dimensionInfo.getRoot());
|
||||||
|
}else{
|
||||||
|
metadata.set(key, dimensionInfo.getRoot());
|
||||||
|
}
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @param key
|
* @param key
|
||||||
* the name of the metadata to add (f.e.: elevation, time)
|
* the name of the metadata to add (f.e.: elevation, time)
|
||||||
|
|||||||
@ -25,11 +25,11 @@
|
|||||||
|
|
||||||
package it.geosolutions.geoserver.rest.encoder;
|
package it.geosolutions.geoserver.rest.encoder;
|
||||||
|
|
||||||
import org.jdom.Element;
|
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
|
import org.jdom.Element;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author ETj (etj at geo-solutions.it)
|
* @author ETj (etj at geo-solutions.it)
|
||||||
|
|||||||
@ -38,8 +38,10 @@ import org.jdom.filter.Filter;
|
|||||||
* Use this encoder for ImageMosaic coverages.
|
* Use this encoder for ImageMosaic coverages.
|
||||||
*
|
*
|
||||||
* @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
|
* @author Carlo Cancellieri - carlo.cancellieri@geo-solutions.it
|
||||||
|
* @author Simone Giannecchini, GeoSolutions SAS
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
||||||
|
|
||||||
final private static String STRING = "string";
|
final private static String STRING = "string";
|
||||||
@ -98,7 +100,7 @@ public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final static String allowMultithreading = "AllowMultithreading";
|
public final static String allowMultithreading = "AllowMultithreading";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param val
|
* @param val
|
||||||
@ -133,7 +135,10 @@ public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final static String filter = "Filter";
|
//
|
||||||
|
// Filter
|
||||||
|
//
|
||||||
|
public final static String filter = "Filter";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param val
|
* @param val
|
||||||
@ -151,9 +156,25 @@ public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
|||||||
removeParameter(filterFilter);
|
removeParameter(filterFilter);
|
||||||
addFilter(val);
|
addFilter(val);
|
||||||
}
|
}
|
||||||
|
public Boolean getFilter() {
|
||||||
private final static String maxAllowedTiles = "MaxAllowedTiles";
|
Element el = getParameter(filterFilter);
|
||||||
|
if (el != null) {
|
||||||
|
List<Element> values = el.getChildren();
|
||||||
|
for (Element elm : values) {
|
||||||
|
String value = elm.getValue();
|
||||||
|
if (!value.equalsIgnoreCase(filter)) {
|
||||||
|
return Boolean.valueOf(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// MaxAllowedTiles
|
||||||
|
//
|
||||||
|
public final static String maxAllowedTiles = "MaxAllowedTiles";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param val
|
* @param val
|
||||||
*/
|
*/
|
||||||
@ -170,8 +191,26 @@ public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
|||||||
removeParameter(maxAllowedTilesFilter);
|
removeParameter(maxAllowedTilesFilter);
|
||||||
addMaxAllowedTiles(val);
|
addMaxAllowedTiles(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Boolean getMaxAllowedTiles() {
|
||||||
|
Element el = getParameter(maxAllowedTilesFilter);
|
||||||
|
if (el != null) {
|
||||||
|
List<Element> values = el.getChildren();
|
||||||
|
for (Element elm : values) {
|
||||||
|
String value = elm.getValue();
|
||||||
|
if (!value.equalsIgnoreCase(maxAllowedTiles)) {
|
||||||
|
return Boolean.valueOf(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private final static String inputTransparentColor = "InputTransparentColor";
|
|
||||||
|
//
|
||||||
|
// InputTransparentColor
|
||||||
|
//
|
||||||
|
public final static String inputTransparentColor = "InputTransparentColor";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param val
|
* @param val
|
||||||
@ -190,8 +229,26 @@ public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
|||||||
removeParameter(inputTransparentColorFilter);
|
removeParameter(inputTransparentColorFilter);
|
||||||
addInputTransparentColor(val);
|
addInputTransparentColor(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Boolean getInputTransparentColor() {
|
||||||
|
Element el = getParameter(inputTransparentColorFilter);
|
||||||
|
if (el != null) {
|
||||||
|
List<Element> values = el.getChildren();
|
||||||
|
for (Element elm : values) {
|
||||||
|
String value = elm.getValue();
|
||||||
|
if (!value.equalsIgnoreCase(inputTransparentColor)) {
|
||||||
|
return Boolean.valueOf(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private final static String outputTransparentColor = "OutputTransparentColor";
|
|
||||||
|
//
|
||||||
|
// OutputTransparentColor
|
||||||
|
//
|
||||||
|
public final static String outputTransparentColor = "OutputTransparentColor";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param val
|
* @param val
|
||||||
@ -210,8 +267,24 @@ public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
|||||||
removeParameter(outputTransparentColorFilter);
|
removeParameter(outputTransparentColorFilter);
|
||||||
addInputTransparentColor(val);
|
addInputTransparentColor(val);
|
||||||
}
|
}
|
||||||
|
public Boolean getOutputTransparentColor() {
|
||||||
private final static String SUGGESTED_TILE_SIZE = "SUGGESTED_TILE_SIZE";
|
Element el = getParameter(outputTransparentColorFilter);
|
||||||
|
if (el != null) {
|
||||||
|
List<Element> values = el.getChildren();
|
||||||
|
for (Element elm : values) {
|
||||||
|
String value = elm.getValue();
|
||||||
|
if (!value.equalsIgnoreCase(outputTransparentColor)) {
|
||||||
|
return Boolean.valueOf(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// SUGGESTED_TILE_SIZE
|
||||||
|
//
|
||||||
|
public final static String SUGGESTED_TILE_SIZE = "SUGGESTED_TILE_SIZE";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param val
|
* @param val
|
||||||
@ -246,7 +319,10 @@ public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final static String USE_JAI_IMAGEREAD = "USE_JAI_IMAGEREAD";
|
//
|
||||||
|
// USE_JAI_IMAGEREAD
|
||||||
|
//
|
||||||
|
public final static String USE_JAI_IMAGEREAD = "USE_JAI_IMAGEREAD";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param val
|
* @param val
|
||||||
@ -279,7 +355,10 @@ public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final static String backgroundValues = "BackgroundValues";
|
//
|
||||||
|
// BackgroundValues
|
||||||
|
//
|
||||||
|
public final static String backgroundValues = "BackgroundValues";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param val
|
* @param val
|
||||||
@ -297,5 +376,62 @@ public class GSImageMosaicEncoder extends GSCoverageEncoder {
|
|||||||
removeParameter(backgroundValuesFilter);
|
removeParameter(backgroundValuesFilter);
|
||||||
addBackgroundValues(val);
|
addBackgroundValues(val);
|
||||||
}
|
}
|
||||||
|
public Boolean getBackgroundValues() {
|
||||||
|
Element el = getParameter(backgroundValuesFilter);
|
||||||
|
if (el != null) {
|
||||||
|
List<Element> values = el.getChildren();
|
||||||
|
for (Element elm : values) {
|
||||||
|
String value = elm.getValue();
|
||||||
|
if (!value.equalsIgnoreCase(backgroundValues)) {
|
||||||
|
return Boolean.valueOf(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// SORTING
|
||||||
|
//
|
||||||
|
public final static String SORTING = "SORTING";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param val
|
||||||
|
*/
|
||||||
|
protected void addSORTING(final String val) {
|
||||||
|
final List<Element> list = new ArrayList<Element>(2);
|
||||||
|
list.add(new Element(STRING).setText(SORTING));
|
||||||
|
list.add(new Element(STRING).setText(val));
|
||||||
|
parameters.add(null, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final static Filter SORTING_FILTER = new parametersFilter(SORTING);
|
||||||
|
|
||||||
|
public void setSORTING(final String val) {
|
||||||
|
removeParameter(SORTING_FILTER);
|
||||||
|
addBackgroundValues(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// SORTING
|
||||||
|
//
|
||||||
|
|
||||||
|
public final static String MERGEBEHAVIOR = "MergeBehavior";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param val
|
||||||
|
*/
|
||||||
|
protected void addMergeBehavior(final String val) {
|
||||||
|
final List<Element> list = new ArrayList<Element>(2);
|
||||||
|
list.add(new Element(STRING).setText(MERGEBEHAVIOR));
|
||||||
|
list.add(new Element(STRING).setText(val));
|
||||||
|
parameters.add(null, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final static Filter MERGEBEHAVIOR_FILTER = new parametersFilter(MERGEBEHAVIOR);
|
||||||
|
|
||||||
|
public void setMergeBehavior(final String val) {
|
||||||
|
removeParameter(MERGEBEHAVIOR_FILTER);
|
||||||
|
addBackgroundValues(val);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,13 +24,13 @@
|
|||||||
*/
|
*/
|
||||||
package it.geosolutions.geoserver.rest.encoder.datastore;
|
package it.geosolutions.geoserver.rest.encoder.datastore;
|
||||||
|
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.RESTDataStore;
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
||||||
|
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTDataStore;
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Encoder for a {@value #TYPE} datastore.
|
* Encoder for a {@value #TYPE} datastore.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -24,15 +24,15 @@
|
|||||||
*/
|
*/
|
||||||
package it.geosolutions.geoserver.rest.encoder.feature;
|
package it.geosolutions.geoserver.rest.encoder.feature;
|
||||||
|
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
import org.jdom.filter.Filter;
|
import org.jdom.filter.Filter;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author carlo cancellieri - GeoSolutions
|
* @author carlo cancellieri - GeoSolutions
|
||||||
|
|||||||
@ -53,12 +53,7 @@ public class GSDimensionInfoEncoder extends XmlElement{
|
|||||||
*/
|
*/
|
||||||
public enum Presentation {
|
public enum Presentation {
|
||||||
LIST,
|
LIST,
|
||||||
CONTINUOUS_INTERVAL
|
CONTINUOUS_INTERVAL,
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Enum for presentation mode which needs arguments
|
|
||||||
*/
|
|
||||||
public enum PresentationDiscrete {
|
|
||||||
DISCRETE_INTERVAL
|
DISCRETE_INTERVAL
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,38 +82,40 @@ public class GSDimensionInfoEncoder extends XmlElement{
|
|||||||
this.enabled=Boolean.TRUE;
|
this.enabled=Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param pres
|
|
||||||
*/
|
|
||||||
protected void addPresentation(final Presentation pres){
|
|
||||||
if (enabled){
|
|
||||||
add(PRESENTATION,pres.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPresentation(final Presentation pres){
|
public void setPresentation(final Presentation pres){
|
||||||
if (enabled){
|
setPresentation(pres, null);
|
||||||
set(PRESENTATION,pres.toString());
|
|
||||||
remove(RESOLUTION);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param pres
|
* @param pres
|
||||||
* @param interval
|
* @param interval
|
||||||
*/
|
*/
|
||||||
protected void addPresentation(final PresentationDiscrete pres, final BigDecimal interval){
|
protected void addPresentation(final Presentation pres, final BigDecimal interval){
|
||||||
if (enabled){
|
if (enabled){
|
||||||
add(PRESENTATION,pres.toString());
|
add(PRESENTATION,pres.toString());
|
||||||
add(RESOLUTION,String.valueOf(interval));
|
if(pres==Presentation.DISCRETE_INTERVAL){
|
||||||
|
if(pres==Presentation.DISCRETE_INTERVAL&&interval==null){
|
||||||
|
throw new IllegalArgumentException("Null interval was provided while trying to set the presentation to discrete interval.");
|
||||||
|
}
|
||||||
|
add(RESOLUTION,String.valueOf(interval));
|
||||||
|
} else {
|
||||||
|
remove(RESOLUTION);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPresentation(final PresentationDiscrete pres, final BigDecimal interval){
|
public void setPresentation(final Presentation pres, final BigDecimal interval){
|
||||||
if (enabled){
|
if (enabled){
|
||||||
set(PRESENTATION,pres.toString());
|
set(PRESENTATION,pres.toString());
|
||||||
set(RESOLUTION,String.valueOf(interval));
|
if(pres==Presentation.DISCRETE_INTERVAL){
|
||||||
}
|
if(pres==Presentation.DISCRETE_INTERVAL&&interval==null){
|
||||||
|
throw new IllegalArgumentException("Null interval was provided while trying to set the presentation to discrete interval.");
|
||||||
|
}
|
||||||
|
set(RESOLUTION,String.valueOf(interval));
|
||||||
|
} else {
|
||||||
|
remove(RESOLUTION);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -24,14 +24,14 @@
|
|||||||
*/
|
*/
|
||||||
package it.geosolutions.geoserver.rest.encoder.metadata.virtualtable;
|
package it.geosolutions.geoserver.rest.encoder.metadata.virtualtable;
|
||||||
|
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
||||||
|
import it.geosolutions.geoserver.rest.encoder.utils.XmlElement;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
import org.jdom.filter.Filter;
|
import org.jdom.filter.Filter;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.utils.XmlElement;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GSVirtualTableEncoder - Encodes a metadata VirtualTable for a GeoServer
|
* GSVirtualTableEncoder - Encodes a metadata VirtualTable for a GeoServer
|
||||||
* featureType.
|
* featureType.
|
||||||
|
|||||||
@ -24,15 +24,12 @@
|
|||||||
*/
|
*/
|
||||||
package it.geosolutions.geoserver.rest.encoder.metadatalink;
|
package it.geosolutions.geoserver.rest.encoder.metadatalink;
|
||||||
|
|
||||||
import java.util.Map;
|
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
||||||
import java.util.Map.Entry;
|
import it.geosolutions.geoserver.rest.encoder.utils.XmlElement;
|
||||||
|
|
||||||
import org.jdom.Element;
|
import org.jdom.Element;
|
||||||
import org.jdom.filter.Filter;
|
import org.jdom.filter.Filter;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.utils.XmlElement;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GSMetadataLinkEncoder - encodes a metadataLink for a given GeoServer Resource
|
* GSMetadataLinkEncoder - encodes a metadataLink for a given GeoServer Resource
|
||||||
* (feature type /coverage), as follows:
|
* (feature type /coverage), as follows:
|
||||||
|
|||||||
@ -25,7 +25,6 @@
|
|||||||
package it.geosolutions.geoserver.rest.manager;
|
package it.geosolutions.geoserver.rest.manager;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher.Format;
|
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher.Format;
|
||||||
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher.StoreType;
|
|
||||||
import it.geosolutions.geoserver.rest.HTTPUtils;
|
import it.geosolutions.geoserver.rest.HTTPUtils;
|
||||||
import it.geosolutions.geoserver.rest.encoder.GSAbstractStoreEncoder;
|
import it.geosolutions.geoserver.rest.encoder.GSAbstractStoreEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.datastore.GSAbstractDatastoreEncoder;
|
import it.geosolutions.geoserver.rest.encoder.datastore.GSAbstractDatastoreEncoder;
|
||||||
|
|||||||
@ -381,6 +381,26 @@ public class GeoServerRESTStructuredGridCoverageReaderManager extends GeoServerR
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get information about all the granules for a coverage with optional filter and paging.
|
||||||
|
*
|
||||||
|
* @param workspace the GeoServer workspace
|
||||||
|
* @param coverageStore the GeoServer coverageStore
|
||||||
|
* @param coverage the name of the target coverage
|
||||||
|
*
|
||||||
|
* @return <code>null</code> in case the call does not succeed, or an instance of {@link RESTStructuredCoverageGranulesList}.
|
||||||
|
*
|
||||||
|
* @throws MalformedURLException
|
||||||
|
* @throws UnsupportedEncodingException
|
||||||
|
*
|
||||||
|
* @since geoserver-2.4.0, geoserver-mng-1.6.0
|
||||||
|
*/
|
||||||
|
public RESTStructuredCoverageGranulesList getGranules(final String workspace,
|
||||||
|
String coverageStore, String coverage)
|
||||||
|
throws MalformedURLException, UnsupportedEncodingException {
|
||||||
|
return getGranules(workspace, coverageStore, coverage, null, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get information about the granules for a coverage with optional filter and paging.
|
* Get information about the granules for a coverage with optional filter and paging.
|
||||||
*
|
*
|
||||||
|
|||||||
@ -2,7 +2,6 @@ package it.geosolutions.geoserver.rest.encoder.feature;
|
|||||||
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.PresentationDiscrete;
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSFeatureDimensionInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSFeatureDimensionInfoEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
|
||||||
|
|
||||||
@ -25,10 +24,10 @@ public class GSFeatureDimensionInfoEncoderTest {
|
|||||||
// LOGGER.info(encoder.toString());
|
// LOGGER.info(encoder.toString());
|
||||||
|
|
||||||
elevationDimension.setPresentation(
|
elevationDimension.setPresentation(
|
||||||
PresentationDiscrete.DISCRETE_INTERVAL, BigDecimal.valueOf(10));
|
Presentation.DISCRETE_INTERVAL, BigDecimal.valueOf(10));
|
||||||
|
|
||||||
elevationDimension.setPresentation(
|
elevationDimension.setPresentation(
|
||||||
PresentationDiscrete.DISCRETE_INTERVAL, BigDecimal.valueOf(12));
|
Presentation.DISCRETE_INTERVAL, BigDecimal.valueOf(12));
|
||||||
|
|
||||||
List<Element> elList = ElementUtils.search(
|
List<Element> elList = ElementUtils.search(
|
||||||
elevationDimension.getRoot(), new Filter() {
|
elevationDimension.getRoot(), new Filter() {
|
||||||
@ -44,8 +43,8 @@ public class GSFeatureDimensionInfoEncoderTest {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
// using set we get only one element called
|
// using set we get only one element called
|
||||||
// PresentationDiscrete.DISCRETE_INTERVAL
|
// Presentation.DISCRETE_INTERVAL
|
||||||
Assert.assertEquals(Integer.valueOf(elList.size()), Integer.valueOf(1));
|
Assert.assertEquals(elList.size(), 1);
|
||||||
|
|
||||||
|
|
||||||
elevationDimension.setPresentation(Presentation.LIST);
|
elevationDimension.setPresentation(Presentation.LIST);
|
||||||
@ -65,7 +64,7 @@ public class GSFeatureDimensionInfoEncoderTest {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Assert.assertEquals(Integer.valueOf(elList.size()), Integer.valueOf(0));
|
Assert.assertEquals(elList.size(), 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,6 @@ import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder;
|
|||||||
import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder;
|
import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.PresentationDiscrete;
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSFeatureDimensionInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSFeatureDimensionInfoEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.GSVirtualTableEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.GSVirtualTableEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.VTGeometryEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.VTGeometryEncoder;
|
||||||
@ -155,21 +154,21 @@ public class GSFeatureEncoderTest extends GeoserverRESTPublisherTest {
|
|||||||
|
|
||||||
GSFeatureDimensionInfoEncoder dim2 = new GSFeatureDimensionInfoEncoder("ELE");
|
GSFeatureDimensionInfoEncoder dim2 = new GSFeatureDimensionInfoEncoder("ELE");
|
||||||
|
|
||||||
encoder.addMetadata("elevation", dim2);
|
encoder.setMetadataDimension("elevation", dim2);
|
||||||
dim2.setPresentation(PresentationDiscrete.DISCRETE_INTERVAL, BigDecimal.valueOf(10));
|
dim2.setPresentation(Presentation.DISCRETE_INTERVAL, BigDecimal.valueOf(10));
|
||||||
Element el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.PRESENTATION);
|
Element el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.PRESENTATION);
|
||||||
Assert.assertNotNull(el);
|
Assert.assertNotNull(el);
|
||||||
|
|
||||||
LOGGER.info("contains_key:" + el.toString());
|
LOGGER.info("contains_key:" + el.toString());
|
||||||
|
|
||||||
dim2.setPresentation(PresentationDiscrete.DISCRETE_INTERVAL, BigDecimal.valueOf(12));
|
dim2.setPresentation(Presentation.DISCRETE_INTERVAL, BigDecimal.valueOf(12));
|
||||||
el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.RESOLUTION);
|
el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.RESOLUTION);
|
||||||
Assert.assertNotNull(el);
|
Assert.assertNotNull(el);
|
||||||
Assert.assertEquals("12", el.getText());
|
Assert.assertEquals("12", el.getText());
|
||||||
|
|
||||||
dim2.setPresentation(Presentation.CONTINUOUS_INTERVAL);
|
dim2.setPresentation(Presentation.CONTINUOUS_INTERVAL);
|
||||||
|
|
||||||
encoder.setMetadata("time", new GSFeatureDimensionInfoEncoder("time"));
|
encoder.setMetadataDimension("time", new GSFeatureDimensionInfoEncoder("time"));
|
||||||
el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.PRESENTATION);
|
el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.PRESENTATION);
|
||||||
Assert.assertNotNull(el);
|
Assert.assertNotNull(el);
|
||||||
el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.RESOLUTION);
|
el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.RESOLUTION);
|
||||||
@ -220,9 +219,9 @@ public class GSFeatureEncoderTest extends GeoserverRESTPublisherTest {
|
|||||||
// LOGGER.info(encoder.toString());
|
// LOGGER.info(encoder.toString());
|
||||||
|
|
||||||
final String metadata = "elevation";
|
final String metadata = "elevation";
|
||||||
encoder.setMetadata(metadata, elevationDimension);
|
encoder.setMetadataDimension(metadata, elevationDimension);
|
||||||
|
|
||||||
elevationDimension.setPresentation(PresentationDiscrete.DISCRETE_INTERVAL,
|
elevationDimension.setPresentation(Presentation.DISCRETE_INTERVAL,
|
||||||
BigDecimal.valueOf(10));
|
BigDecimal.valueOf(10));
|
||||||
|
|
||||||
if (LOGGER.isInfoEnabled())
|
if (LOGGER.isInfoEnabled())
|
||||||
|
|||||||
@ -1,33 +1,18 @@
|
|||||||
/*
|
|
||||||
* GeoTools - The Open Source Java GIS Toolkit
|
|
||||||
* http://geotools.org
|
|
||||||
*
|
|
||||||
* (C) 2002-2011, Open Source Geospatial Foundation (OSGeo)
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation;
|
|
||||||
* version 2.1 of the License.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*/
|
|
||||||
package it.geosolutions.geoserver.rest.manager;
|
package it.geosolutions.geoserver.rest.manager;
|
||||||
|
|
||||||
import it.geosolutions.geoserver.rest.GeoserverRESTTest;
|
import it.geosolutions.geoserver.rest.GeoserverRESTTest;
|
||||||
|
import it.geosolutions.geoserver.rest.decoder.RESTCoverage;
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageGranulesList;
|
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageGranulesList;
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageGranulesList.RESTStructuredCoverageGranule;
|
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageGranulesList.RESTStructuredCoverageGranule;
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema;
|
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema;
|
||||||
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema.RESTStructuredCoverageIndexAttribute;
|
import it.geosolutions.geoserver.rest.decoder.RESTStructuredCoverageIndexSchema.RESTStructuredCoverageIndexAttribute;
|
||||||
import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy;
|
|
||||||
import it.geosolutions.geoserver.rest.encoder.coverage.GSImageMosaicEncoder;
|
import it.geosolutions.geoserver.rest.encoder.coverage.GSImageMosaicEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
|
||||||
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation;
|
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation;
|
||||||
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@ -53,18 +38,25 @@ public class GeoServerRESTImageMosaicManagerTest extends GeoserverRESTTest {
|
|||||||
if (!enabled()) {
|
if (!enabled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// crea the manager
|
||||||
GeoServerRESTStructuredGridCoverageReaderManager manager =
|
GeoServerRESTStructuredGridCoverageReaderManager manager =
|
||||||
new GeoServerRESTStructuredGridCoverageReaderManager(new URL(RESTURL), RESTUSER, RESTPW);
|
new GeoServerRESTStructuredGridCoverageReaderManager(new URL(RESTURL), RESTUSER, RESTPW);
|
||||||
|
|
||||||
// create mosaic
|
// create mosaic
|
||||||
boolean create=manager.create("it.geosolutions", "mosaic",new ClassPathResource("testdata/granules/mosaic.zip").getFile().getAbsolutePath());
|
final String workspaceName = "it.geosolutions";
|
||||||
|
final String coverageStoreName = "mosaic";
|
||||||
|
final String coverageName = "mosaic";
|
||||||
|
final String format = "imagemosaic";
|
||||||
|
|
||||||
|
// upload the mosaic
|
||||||
|
boolean create=manager.create(workspaceName, coverageStoreName,new ClassPathResource("testdata/granules/mosaic.zip").getFile().getAbsolutePath());
|
||||||
assertTrue(create);
|
assertTrue(create);
|
||||||
|
|
||||||
// enable dimension
|
// enable dimension
|
||||||
fixDimensions("it.geosolutions", "mosaic", "mosaic");
|
fixDimensions(workspaceName, coverageStoreName, coverageName);
|
||||||
|
|
||||||
// check index format
|
// check index format
|
||||||
RESTStructuredCoverageIndexSchema indexFormat = manager.getGranuleIndexSchema("it.geosolutions", "mosaic","mosaic");
|
RESTStructuredCoverageIndexSchema indexFormat = manager.getGranuleIndexSchema(workspaceName, coverageName,coverageName);
|
||||||
assertTrue(create);
|
assertTrue(create);
|
||||||
|
|
||||||
assertNotNull(indexFormat);
|
assertNotNull(indexFormat);
|
||||||
@ -99,47 +91,47 @@ public class GeoServerRESTImageMosaicManagerTest extends GeoserverRESTTest {
|
|||||||
|
|
||||||
RESTStructuredCoverageGranulesList granulesList = null;
|
RESTStructuredCoverageGranulesList granulesList = null;
|
||||||
RESTStructuredCoverageGranule granule = null;
|
RESTStructuredCoverageGranule granule = null;
|
||||||
// get some granules by id
|
|
||||||
// manager.getGranuleById("it.geosolutions", "mosaic","mosaic","2");
|
|
||||||
// assertNotNull(granulesList);
|
|
||||||
// assertSame(1, granulesList.size());
|
|
||||||
// assertFalse(granulesList.isEmpty());
|
|
||||||
// RESTStructuredCoverageGranule granule = granulesList.get(0);
|
|
||||||
// assertNotNull(granule);
|
|
||||||
// assertEquals(granule.getAttributeByIndex(4), "1250.0");
|
|
||||||
// assertEquals(granule.getAttributeByName("elevation"), "1250.0");
|
|
||||||
|
|
||||||
|
|
||||||
// get with paging
|
// get with paging
|
||||||
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic" , null, 0, 1);
|
granulesList = manager.getGranules(workspaceName, coverageStoreName, coverageName , null, 0, 1);
|
||||||
assertNotNull(granulesList);
|
assertNotNull(granulesList);
|
||||||
assertEquals(1, granulesList.size());
|
assertEquals(1, granulesList.size());
|
||||||
assertFalse(granulesList.isEmpty());
|
assertFalse(granulesList.isEmpty());
|
||||||
granule = granulesList.get(0);
|
granule = granulesList.get(0);
|
||||||
assertNotNull(granule);
|
assertNotNull(granule);
|
||||||
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", null, null, 2);
|
granulesList = manager.getGranules(workspaceName, coverageStoreName, coverageName, null, null, 2);
|
||||||
assertNotNull(granulesList);
|
assertNotNull(granulesList);
|
||||||
assertEquals(2, granulesList.size());
|
assertEquals(2, granulesList.size());
|
||||||
assertFalse(granulesList.isEmpty());
|
assertFalse(granulesList.isEmpty());
|
||||||
granule = granulesList.get(0);
|
granule = granulesList.get(0);
|
||||||
assertNotNull(granule);
|
assertNotNull(granule);
|
||||||
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", null, null, null);
|
// get with no paging
|
||||||
|
granulesList = manager.getGranules(workspaceName, coverageStoreName, coverageName);
|
||||||
assertNotNull(granulesList);
|
assertNotNull(granulesList);
|
||||||
assertEquals(4, granulesList.size());
|
assertEquals(4, granulesList.size());
|
||||||
assertFalse(granulesList.isEmpty());
|
assertFalse(granulesList.isEmpty());
|
||||||
granule = granulesList.get(0);
|
granule = granulesList.get(0);
|
||||||
assertNotNull(granule);
|
assertNotNull(granule);
|
||||||
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", "depth = 100", null, null);
|
// examples of filtering with CQL
|
||||||
|
granulesList = manager.getGranules(workspaceName, coverageStoreName, coverageName, "depth = 100", null, null);
|
||||||
assertNotNull(granulesList);
|
assertNotNull(granulesList);
|
||||||
assertEquals(2, granulesList.size());
|
assertEquals(2, granulesList.size());
|
||||||
assertFalse(granulesList.isEmpty());
|
assertFalse(granulesList.isEmpty());
|
||||||
granule = granulesList.get(0);
|
granule = granulesList.get(0);
|
||||||
assertNotNull(granule);
|
assertNotNull(granule);
|
||||||
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", "depth = 100 AND date='20081101T0000000'", null, null);
|
granulesList = manager.getGranules(workspaceName, coverageStoreName, coverageName, "depth = 100 AND date='20081101T0000000'", null, null);
|
||||||
|
assertNotNull(granulesList);
|
||||||
|
assertEquals(1, granulesList.size());
|
||||||
|
assertFalse(granulesList.isEmpty());
|
||||||
|
granule = granulesList.get(0);
|
||||||
|
assertNotNull(granule);
|
||||||
|
|
||||||
|
granulesList = manager.getGranules(workspaceName, coverageStoreName, coverageName, "location LIKE 'NCOM_wattemp%'", 0, 1);
|
||||||
assertNotNull(granulesList);
|
assertNotNull(granulesList);
|
||||||
assertEquals(1, granulesList.size());
|
assertEquals(1, granulesList.size());
|
||||||
assertFalse(granulesList.isEmpty());
|
assertFalse(granulesList.isEmpty());
|
||||||
@ -148,22 +140,21 @@ public class GeoServerRESTImageMosaicManagerTest extends GeoserverRESTTest {
|
|||||||
|
|
||||||
// remove by filter
|
// remove by filter
|
||||||
final String fileLocation = "NCOM_wattemp_100_20081101T0000000_12.tiff";
|
final String fileLocation = "NCOM_wattemp_100_20081101T0000000_12.tiff";
|
||||||
boolean result = manager.removeGranulesByCQL("it.geosolutions", "mosaic", "mosaic", "location = '" + fileLocation + "'");
|
boolean result = manager.removeGranulesByCQL(workspaceName, coverageStoreName, coverageName, "location = '" + fileLocation + "'");
|
||||||
Assert.assertTrue(result);
|
Assert.assertTrue(result);
|
||||||
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", null, null, null);
|
granulesList = manager.getGranules(workspaceName, coverageStoreName, coverageName);
|
||||||
assertNotNull(granulesList);
|
assertNotNull(granulesList);
|
||||||
assertEquals(3, granulesList.size());
|
assertEquals(3, granulesList.size());
|
||||||
assertFalse(granulesList.isEmpty());
|
assertFalse(granulesList.isEmpty());
|
||||||
granule = granulesList.get(0);
|
granule = granulesList.get(0);
|
||||||
assertNotNull(granule);
|
assertNotNull(granule);
|
||||||
|
|
||||||
// Readding that granule
|
// Readding that granule with harvest
|
||||||
// use reflection to get the store URL since coveragestore only returns name and workspace
|
result = manager.harvestExternal(workspaceName, coverageStoreName, format, new ClassPathResource("testdata/granules/NCOM_wattemp_100_20081101T0000000_12.tiff").getFile().getAbsolutePath() );
|
||||||
result = manager.harvestExternal("it.geosolutions", "mosaic", "imagemosaic", new ClassPathResource("testdata/granules/NCOM_wattemp_100_20081101T0000000_12.tiff").getFile().getAbsolutePath() );
|
|
||||||
Assert.assertTrue(result);
|
Assert.assertTrue(result);
|
||||||
|
|
||||||
granulesList = manager.getGranules("it.geosolutions", "mosaic", "mosaic", null, null, null);
|
granulesList = manager.getGranules(workspaceName, coverageStoreName, coverageName, null, null, null);
|
||||||
assertNotNull(granulesList);
|
assertNotNull(granulesList);
|
||||||
assertEquals(4, granulesList.size());
|
assertEquals(4, granulesList.size());
|
||||||
assertFalse(granulesList.isEmpty());
|
assertFalse(granulesList.isEmpty());
|
||||||
@ -171,57 +162,96 @@ public class GeoServerRESTImageMosaicManagerTest extends GeoserverRESTTest {
|
|||||||
assertNotNull(granule);
|
assertNotNull(granule);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method enables the various dimensions for the coverage autocreated for this test.
|
* This method enables the various dimensions for the coverage autocreated for this test.
|
||||||
*
|
*
|
||||||
|
* <p> Notice that
|
||||||
* @param wsName the workspace
|
* @param wsName the workspace
|
||||||
* @param coverageStoreName the coverage store name
|
* @param coverageStoreName the coverage store name
|
||||||
* @param csname the coverage name
|
* @param csname the coverage name
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private void fixDimensions(String wsName, String coverageStoreName, String csname) {
|
private void fixDimensions(String wsName, String coverageStoreName, String csname) {
|
||||||
|
// get current config for the coverage to extract the params we want to set again
|
||||||
|
final RESTCoverage coverage = reader.getCoverage(wsName, coverageStoreName, csname);
|
||||||
|
final Map<String, String> params = coverage.getParametersList();
|
||||||
|
|
||||||
|
// prepare and fill the encoder
|
||||||
final GSImageMosaicEncoder coverageEncoder = new GSImageMosaicEncoder();
|
final GSImageMosaicEncoder coverageEncoder = new GSImageMosaicEncoder();
|
||||||
/*
|
|
||||||
* unused in mosaic creation
|
|
||||||
* this is only useful if you want to modify an existing coverage:
|
|
||||||
* publisher.configureCoverage(ce, wsname, csname);
|
|
||||||
* or create a new one from an existing store:
|
|
||||||
* publisher.createCoverage(ce, wsname, csname);
|
|
||||||
*/
|
|
||||||
coverageEncoder.setName("mosaic");
|
coverageEncoder.setName("mosaic");
|
||||||
|
|
||||||
coverageEncoder.setAllowMultithreading(true);
|
// set the current params, change here if you want to change the values
|
||||||
coverageEncoder.setBackgroundValues("");
|
for(Map.Entry<String, String> entry:params.entrySet()){
|
||||||
coverageEncoder.setFilter("");
|
if(entry.getKey().equals(GSImageMosaicEncoder.allowMultithreading)){
|
||||||
coverageEncoder.setInputTransparentColor("");
|
coverageEncoder.setAllowMultithreading(Boolean.parseBoolean(entry.getValue()));
|
||||||
coverageEncoder.setLatLonBoundingBox(-180, -90, 180, 90, "EPSG:4326");
|
continue;
|
||||||
coverageEncoder.setMaxAllowedTiles(11);
|
}
|
||||||
coverageEncoder.setNativeBoundingBox(-180, -90, 180, 90, "EPSG:4326");
|
|
||||||
coverageEncoder.setProjectionPolicy(ProjectionPolicy.NONE);
|
if(entry.getKey().equals(GSImageMosaicEncoder.backgroundValues)){
|
||||||
coverageEncoder.setSRS("EPSG:4326");
|
coverageEncoder.setBackgroundValues(entry.getValue());
|
||||||
|
continue;
|
||||||
// activate time
|
}
|
||||||
|
|
||||||
|
if(entry.getKey().equals(GSImageMosaicEncoder.filter)){
|
||||||
|
coverageEncoder.setFilter(entry.getValue());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(entry.getKey().equals(GSImageMosaicEncoder.inputTransparentColor)){
|
||||||
|
coverageEncoder.setInputTransparentColor(entry.getValue());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(entry.getKey().equals(GSImageMosaicEncoder.maxAllowedTiles)){
|
||||||
|
coverageEncoder.setMaxAllowedTiles(Integer.parseInt(entry.getValue()));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(entry.getKey().equals(GSImageMosaicEncoder.MERGEBEHAVIOR)){
|
||||||
|
coverageEncoder.setMergeBehavior(entry.getValue());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(entry.getKey().equals(GSImageMosaicEncoder.outputTransparentColor)){
|
||||||
|
coverageEncoder.setOutputTransparentColor(entry.getValue());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(entry.getKey().equals(GSImageMosaicEncoder.SORTING)){
|
||||||
|
coverageEncoder.setSORTING(entry.getValue());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(entry.getKey().equals(GSImageMosaicEncoder.SUGGESTED_TILE_SIZE)){
|
||||||
|
coverageEncoder.setSUGGESTED_TILE_SIZE(entry.getValue());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(entry.getKey().equals(GSImageMosaicEncoder.USE_JAI_IMAGEREAD)){
|
||||||
|
coverageEncoder.setUSE_JAI_IMAGEREAD(Boolean.parseBoolean(entry.getValue()));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// activate time dimension
|
||||||
final GSDimensionInfoEncoder time=new GSDimensionInfoEncoder(true);
|
final GSDimensionInfoEncoder time=new GSDimensionInfoEncoder(true);
|
||||||
time.setUnit("Seconds");
|
time.setUnit("Seconds");
|
||||||
time.setUnitSymbol("s");
|
time.setUnitSymbol("s");
|
||||||
time.setPresentation(Presentation.LIST);
|
time.setPresentation(Presentation.CONTINUOUS_INTERVAL);
|
||||||
coverageEncoder.setMetadataDimension("time", time);
|
coverageEncoder.setMetadataDimension("time", time);
|
||||||
|
|
||||||
// activate date
|
// activate run which is a custom dimension
|
||||||
final GSDimensionInfoEncoder date=new GSDimensionInfoEncoder(true);
|
final GSDimensionInfoEncoder run=new GSDimensionInfoEncoder(true);
|
||||||
date.setPresentation(Presentation.LIST);
|
run.setPresentation(Presentation.LIST);
|
||||||
coverageEncoder.setMetadataDimension("custom_dimension_DATE", date);
|
run.setUnit("Hours");
|
||||||
|
run.setUnitSymbol("h");
|
||||||
// activate depth
|
coverageEncoder.setMetadataDimension("run", run,true);
|
||||||
final GSDimensionInfoEncoder depth=new GSDimensionInfoEncoder(true);
|
|
||||||
depth.setPresentation(Presentation.LIST);
|
|
||||||
depth.setUnit("Meters");
|
|
||||||
depth.setUnitSymbol("m");
|
|
||||||
coverageEncoder.setMetadataDimension("custom_dimension_DEPTH", depth);
|
|
||||||
|
|
||||||
|
|
||||||
|
// persiste the changes
|
||||||
boolean config=publisher.configureCoverage(coverageEncoder, wsName, csname);
|
boolean config=publisher.configureCoverage(coverageEncoder, wsName, csname);
|
||||||
assertTrue(config);
|
assertTrue(config);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user