Handling coverage metadata.
Improved mosaic advanced publishing.
This commit is contained in:
parent
29544c8e7f
commit
a838ee7f1d
@ -400,8 +400,6 @@ public class GeoServerRESTPublisher {
|
||||
* @param mosaicDir the directory where the raster images are located
|
||||
* @return true if the operation completed successfully.
|
||||
* @throws FileNotFoundException
|
||||
*
|
||||
* @deprecated work in progress
|
||||
*/
|
||||
public RESTCoverageStore configureExternaMosaicDatastore(String workspace, String storeName, File mosaicDir) throws FileNotFoundException {
|
||||
if (!mosaicDir.isDirectory()) {
|
||||
@ -432,8 +430,11 @@ public class GeoServerRESTPublisher {
|
||||
public RESTCoverageStore publishExternalMosaic(String workspace, String storeName, File mosaicDir, String srs, String defaultStyle) throws FileNotFoundException {
|
||||
GSCoverageEncoder coverageEncoder = new GSCoverageEncoder();
|
||||
coverageEncoder.setSRS(srs);
|
||||
|
||||
GSLayerEncoder layerEncoder = new GSLayerEncoder();
|
||||
layerEncoder.setDefaultStyle(defaultStyle);
|
||||
|
||||
return publishExternalMosaic(workspace, storeName, mosaicDir, coverageEncoder, defaultStyle);
|
||||
return publishExternalMosaic(workspace, storeName, mosaicDir, coverageEncoder, layerEncoder);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -446,15 +447,28 @@ public class GeoServerRESTPublisher {
|
||||
* @param workspace an existing workspace
|
||||
* @param storeName the name of the coverageStore to be created
|
||||
* @param mosaicDir the directory where the raster images are located
|
||||
* @param coverageEncoder the set of parameters to be set to the coverage
|
||||
* @param defaultStyle may be null
|
||||
* @param coverageEncoder the set of parameters to be set to the coverage (bbox, srs, ...)
|
||||
* @param layerEncoder the set of parameters to be set to the layer (defaultstyle, wmspath, ...)
|
||||
*
|
||||
* @return true if the operation completed successfully.
|
||||
*
|
||||
* @throws FileNotFoundException
|
||||
*/
|
||||
public RESTCoverageStore publishExternalMosaic(String workspace, String storeName, File mosaicDir, GSCoverageEncoder coverageEncoder, String defaultStyle) throws FileNotFoundException {
|
||||
public RESTCoverageStore publishExternalMosaic(String workspace, String storeName, File mosaicDir, GSCoverageEncoder coverageEncoder, GSLayerEncoder layerEncoder) throws FileNotFoundException {
|
||||
RESTCoverageStore store = configureExternaMosaicDatastore(workspace, storeName, mosaicDir);
|
||||
|
||||
if(coverageEncoder == null ) {
|
||||
if(LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("no coverageEncoder provided for " + workspace + ":" + storeName);
|
||||
coverageEncoder = new GSCoverageEncoder();
|
||||
}
|
||||
|
||||
if(layerEncoder == null ) {
|
||||
if(LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("no layerEncoder provided for " + workspace + ":" + storeName);
|
||||
layerEncoder = new GSLayerEncoder();
|
||||
}
|
||||
|
||||
if (store != null ) {
|
||||
try {
|
||||
// // retrieve coverage name
|
||||
@ -467,10 +481,6 @@ public class GeoServerRESTPublisher {
|
||||
String coverageName = covList.get(0).getName();
|
||||
|
||||
configureCoverage(coverageEncoder, workspace, storeName, coverageName);
|
||||
|
||||
// config layer props (style, ...)
|
||||
GSLayerEncoder layerEncoder = new GSLayerEncoder();
|
||||
layerEncoder.setDefaultStyle(defaultStyle);
|
||||
configureLayer(layerEncoder, storeName);
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
@ -25,14 +25,39 @@
|
||||
|
||||
package it.geosolutions.geoserver.rest.encoder;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.jdom.Element;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ETj (etj at geo-solutions.it)
|
||||
*/
|
||||
public class GSCoverageEncoder extends GSResourceEncoder {
|
||||
|
||||
private Map<String, String> metadata = new HashMap<String, String>();
|
||||
|
||||
public GSCoverageEncoder() {
|
||||
super("coverage");
|
||||
set("enabled", "true");
|
||||
}
|
||||
|
||||
public void addMetadata(String key, String value) {
|
||||
metadata.put(key, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void addNodesBeforeOutput(Element e) {
|
||||
super.addNodesBeforeOutput(e);
|
||||
|
||||
if( ! metadata.isEmpty() ) {
|
||||
Element md = new Element("metadata");
|
||||
for (Map.Entry<String, String> entry : metadata.entrySet()) {
|
||||
md.addContent("entry")
|
||||
.setAttribute("key", entry.getKey())
|
||||
.setText(entry.getValue());
|
||||
}
|
||||
e.addContent(md);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,8 +77,13 @@ public class PropertyXMLEncoder {
|
||||
add(layer, key, value);
|
||||
}
|
||||
|
||||
addNodesBeforeOutput(layer);
|
||||
return OUTPUTTER.outputString(layer);
|
||||
}
|
||||
|
||||
protected void addNodesBeforeOutput(Element e) {
|
||||
|
||||
}
|
||||
|
||||
private void add(Element e, String key, String value) {
|
||||
if( ! key.contains("/") ) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user