Handling coverage metadata.

Improved mosaic advanced publishing.
This commit is contained in:
ETj 2011-05-12 18:08:49 +02:00
parent 29544c8e7f
commit a838ee7f1d
3 changed files with 50 additions and 10 deletions

View File

@ -400,8 +400,6 @@ public class GeoServerRESTPublisher {
* @param mosaicDir the directory where the raster images are located * @param mosaicDir the directory where the raster images are located
* @return true if the operation completed successfully. * @return true if the operation completed successfully.
* @throws FileNotFoundException * @throws FileNotFoundException
*
* @deprecated work in progress
*/ */
public RESTCoverageStore configureExternaMosaicDatastore(String workspace, String storeName, File mosaicDir) throws FileNotFoundException { public RESTCoverageStore configureExternaMosaicDatastore(String workspace, String storeName, File mosaicDir) throws FileNotFoundException {
if (!mosaicDir.isDirectory()) { if (!mosaicDir.isDirectory()) {
@ -433,7 +431,10 @@ public class GeoServerRESTPublisher {
GSCoverageEncoder coverageEncoder = new GSCoverageEncoder(); GSCoverageEncoder coverageEncoder = new GSCoverageEncoder();
coverageEncoder.setSRS(srs); coverageEncoder.setSRS(srs);
return publishExternalMosaic(workspace, storeName, mosaicDir, coverageEncoder, defaultStyle); GSLayerEncoder layerEncoder = new GSLayerEncoder();
layerEncoder.setDefaultStyle(defaultStyle);
return publishExternalMosaic(workspace, storeName, mosaicDir, coverageEncoder, layerEncoder);
} }
/** /**
@ -446,15 +447,28 @@ public class GeoServerRESTPublisher {
* @param workspace an existing workspace * @param workspace an existing workspace
* @param storeName the name of the coverageStore to be created * @param storeName the name of the coverageStore to be created
* @param mosaicDir the directory where the raster images are located * @param mosaicDir the directory where the raster images are located
* @param coverageEncoder the set of parameters to be set to the coverage * @param coverageEncoder the set of parameters to be set to the coverage (bbox, srs, ...)
* @param defaultStyle may be null * @param layerEncoder the set of parameters to be set to the layer (defaultstyle, wmspath, ...)
* *
* @return true if the operation completed successfully. * @return true if the operation completed successfully.
* *
* @throws FileNotFoundException * @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); 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 ) { if (store != null ) {
try { try {
// // retrieve coverage name // // retrieve coverage name
@ -467,10 +481,6 @@ public class GeoServerRESTPublisher {
String coverageName = covList.get(0).getName(); String coverageName = covList.get(0).getName();
configureCoverage(coverageEncoder, workspace, storeName, coverageName); configureCoverage(coverageEncoder, workspace, storeName, coverageName);
// config layer props (style, ...)
GSLayerEncoder layerEncoder = new GSLayerEncoder();
layerEncoder.setDefaultStyle(defaultStyle);
configureLayer(layerEncoder, storeName); configureLayer(layerEncoder, storeName);
} catch (Exception e) { } catch (Exception e) {

View File

@ -25,14 +25,39 @@
package it.geosolutions.geoserver.rest.encoder; 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) * @author ETj (etj at geo-solutions.it)
*/ */
public class GSCoverageEncoder extends GSResourceEncoder { public class GSCoverageEncoder extends GSResourceEncoder {
private Map<String, String> metadata = new HashMap<String, String>();
public GSCoverageEncoder() { public GSCoverageEncoder() {
super("coverage"); super("coverage");
set("enabled", "true"); 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);
}
}
} }

View File

@ -77,9 +77,14 @@ public class PropertyXMLEncoder {
add(layer, key, value); add(layer, key, value);
} }
addNodesBeforeOutput(layer);
return OUTPUTTER.outputString(layer); return OUTPUTTER.outputString(layer);
} }
protected void addNodesBeforeOutput(Element e) {
}
private void add(Element e, String key, String value) { private void add(Element e, String key, String value) {
if( ! key.contains("/") ) { if( ! key.contains("/") ) {
e.addContent(new Element(key).setText(value)); e.addContent(new Element(key).setText(value));