diff --git a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java
index 5eb3dfc..e263b35 100644
--- a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java
+++ b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTPublisher.java
@@ -373,8 +373,7 @@ public class GeoServerRESTPublisher {
sUrl += "?name=" + encode(name);
}
LOGGER.debug("POSTing new style " + name + " to " + sUrl);
- String result = HTTPUtils
- .post(sUrl, sldFile, Format.SLD.getContentType(), gsuser, gspass);
+ String result = HTTPUtils.post(sUrl, sldFile, Format.SLD.getContentType(), gsuser, gspass);
return result != null;
}
@@ -515,7 +514,7 @@ public class GeoServerRESTPublisher {
* @return
*/
public static String getTypeName(StoreType type) {
- return StoreType.getTypeNameWithFormat(type,Format.XML);
+ return StoreType.getTypeNameWithFormat(type, Format.XML);
}
/**
@@ -554,9 +553,9 @@ public class GeoServerRESTPublisher {
* @return "featureTypes.{xml|html|...}" for DATASTORES, "coverages.{xml|html|...}" otherwise.
*/
public static String getTypeNameWithFormat(StoreType type, Format format) {
- return getTypeName(type)+"."+format;
+ return getTypeName(type) + "." + format;
}
-
+
/**
* Get the type name of a StoreType with the specified format.
*
@@ -565,9 +564,9 @@ public class GeoServerRESTPublisher {
* @return "featuretypes.{xml|html|...}" for DATASTORES, "coverages.{xml|html|...}" otherwise.
*/
public String getTypeNameWithFormat(Format format) {
- return getTypeName(this).toLowerCase()+"."+format;
+ return getTypeName(this).toLowerCase() + "." + format;
}
-
+
/**
* Get the type name of a StoreType.
*
@@ -584,7 +583,7 @@ public class GeoServerRESTPublisher {
return "coverages";
}
}
-
+
/**
* Get the type name of a StoreType.
*
@@ -601,7 +600,7 @@ public class GeoServerRESTPublisher {
return "coverageStore";
}
}
-
+
/**
* Get the type name of a StoreType.
*
@@ -610,7 +609,7 @@ public class GeoServerRESTPublisher {
public String getTypeName() {
return getTypeName(this);
}
-
+
/**
* Get the type of a StoreType.
*
@@ -1370,7 +1369,7 @@ public class GeoServerRESTPublisher {
return null;
}
}
-
+
/**
* Gets the mime type from a format.
*
@@ -1380,7 +1379,7 @@ public class GeoServerRESTPublisher {
public String getContentType() {
return getContentType(this);
}
-
+
/**
* Returns a lowercase representation of the parameter. Useful when constructing the REST request.
*/
@@ -2010,32 +2009,7 @@ public class GeoServerRESTPublisher {
*/
public boolean removeDatastore(String workspace, String storename, final boolean recurse)
throws IllegalArgumentException {
- try {
- if (workspace == null || storename == null)
- throw new IllegalArgumentException("Arguments may not be null!");
- if (workspace.isEmpty() || storename.isEmpty())
- throw new IllegalArgumentException("Arguments may not be empty!");
-
- final StringBuilder url = new StringBuilder(restURL);
- url.append("/rest/workspaces/").append(workspace).append("/datastores/")
- .append(storename);
- if (recurse)
- url.append("?recurse=true");
- final URL deleteStore = new URL(url.toString());
-
- boolean deleted = HTTPUtils.delete(deleteStore.toExternalForm(), gsuser, gspass);
- if (!deleted) {
- LOGGER.warn("Could not delete datastore " + workspace + ":" + storename);
- } else {
- LOGGER.info("Datastore successfully deleted " + workspace + ":" + storename);
- }
-
- return deleted;
- } catch (MalformedURLException ex) {
- if (LOGGER.isErrorEnabled())
- LOGGER.error(ex.getLocalizedMessage(), ex);
- return false;
- }
+ return removeStore(workspace, storename, StoreType.DATASTORES, recurse);
}
/**
@@ -2047,13 +2021,7 @@ public class GeoServerRESTPublisher {
* @deprecated use {@link #removeCoverageStore(String, String, boolean)}
*/
public boolean removeCoverageStore(String workspace, String storename) {
- try {
- return removeCoverageStore(workspace, storename, true);
- } catch (IllegalArgumentException e) {
- if (LOGGER.isErrorEnabled())
- LOGGER.error("Arguments may not be null or empty!", e);
- }
- return false;
+ return removeCoverageStore(workspace, storename, true);
}
/**
@@ -2066,6 +2034,21 @@ public class GeoServerRESTPublisher {
*/
public boolean removeCoverageStore(final String workspace, final String storename,
final boolean recurse) throws IllegalArgumentException {
+ return removeStore(workspace, storename, StoreType.COVERAGESTORES, recurse);
+ }
+
+ /**
+ * Remove a given Datastore in a given Workspace.
+ *
+ * @param workspace The name of the workspace
+ * @param storename The name of the Datastore to remove.
+ * @param the {@link StoreType} type
+ * @param recurse if remove should be performed recursively
+ * @throws IllegalArgumentException if workspace or storename are null or empty
+ * @return true if the store was successfully removed.
+ */
+ private boolean removeStore(String workspace, String storename, StoreType type,
+ final boolean recurse) throws IllegalArgumentException {
try {
if (workspace == null || storename == null)
throw new IllegalArgumentException("Arguments may not be null!");
@@ -2073,7 +2056,7 @@ public class GeoServerRESTPublisher {
throw new IllegalArgumentException("Arguments may not be empty!");
final StringBuilder url = new StringBuilder(restURL);
- url.append("/rest/workspaces/").append(workspace).append("/coveragestores/")
+ url.append("/rest/workspaces/").append(workspace).append("/").append(type).append("/")
.append(storename);
if (recurse)
url.append("?recurse=true");
@@ -2081,12 +2064,12 @@ public class GeoServerRESTPublisher {
boolean deleted = HTTPUtils.delete(deleteStore.toExternalForm(), gsuser, gspass);
if (!deleted) {
- LOGGER.warn("Could not delete CoverageStore " + workspace + ":" + storename);
+ LOGGER.warn("Could not delete store " + workspace + ":" + storename);
} else {
- LOGGER.info("CoverageStore successfully deleted " + workspace + ":" + storename);
+ LOGGER.info("Store successfully deleted " + workspace + ":" + storename);
}
- return deleted;
+ return deleted;
} catch (MalformedURLException ex) {
if (LOGGER.isErrorEnabled())
LOGGER.error(ex.getLocalizedMessage(), ex);
@@ -2103,13 +2086,7 @@ public class GeoServerRESTPublisher {
* @deprecated {@link #removeWorkspace(String, boolean)}
*/
public boolean removeWorkspace(String workspace) {
- try {
- return removeWorkspace(workspace, false);
- } catch (IllegalArgumentException e) {
- if (LOGGER.isErrorEnabled())
- LOGGER.error("Arguments may not be null or empty!", e);
- }
- return false;
+ return removeWorkspace(workspace, false);
}
/**
@@ -2156,15 +2133,15 @@ public class GeoServerRESTPublisher {
* @param workspace the layer group workspace.
* @param name the layer group name.
* @return true if succeeded.
- */
+ */
public boolean removeLayerGroup(String workspace, String name) {
String url = restURL + "/rest";
if (workspace == null) {
url += "/layergroups/" + name;
} else {
url += "/workspaces/" + workspace + "/layergroups/" + name;
- }
-
+ }
+
try {
URL deleteUrl = new URL(url);
boolean deleted = HTTPUtils.delete(deleteUrl.toExternalForm(), gsuser, gspass);
@@ -2181,9 +2158,9 @@ public class GeoServerRESTPublisher {
if (LOGGER.isErrorEnabled())
LOGGER.error(ex.getLocalizedMessage(), ex);
return false;
- }
+ }
}
-
+
/**
* Remove a layer group.
*
@@ -2263,17 +2240,17 @@ public class GeoServerRESTPublisher {
final String store = HTTPUtils.get(url, this.gsuser, this.gspass);
if (store != null) {
- String storeTag=storeType.getTypeName();
-// switch (storeType) {
-// case COVERAGESTORES:
-// storeTag = storeType.toString().replaceAll("store", "");
-// break;
-// case DATASTORES:
-// storeTag = "featureTypes";
-// break;
-// default:
-// throw new IllegalArgumentException("Unrecognized type");
-// }
+ String storeTag = storeType.getTypeName();
+ // switch (storeType) {
+ // case COVERAGESTORES:
+ // storeTag = storeType.toString().replaceAll("store", "");
+ // break;
+ // case DATASTORES:
+ // storeTag = "featureTypes";
+ // break;
+ // default:
+ // throw new IllegalArgumentException("Unrecognized type");
+ // }
String startTag = "<" + storeTag + ">";
int start = store.indexOf(startTag);
@@ -2365,7 +2342,7 @@ public class GeoServerRESTPublisher {
public boolean createLayerGroup(String name, GSLayerGroupEncoder group) {
return createLayerGroup(null, name, group);
}
-
+
/**
* Create a new LayerGroup using the specified encoder
*
@@ -2376,15 +2353,15 @@ public class GeoServerRESTPublisher {
*/
public boolean createLayerGroup(String workspace, String name, GSLayerGroupEncoder group) {
String url = restURL + "/rest";
- if (workspace == null) {
+ if (workspace == null) {
url += "/layergroups/";
} else {
group.setWorkspace(workspace);
url += "/workspaces/" + workspace + "/layergroups/";
- }
-
+ }
+
group.setName(name);
-
+
String sendResult = HTTPUtils.postXml(url, group.toString(), gsuser, gspass);
if (sendResult != null) {
if (LOGGER.isInfoEnabled()) {
@@ -2395,9 +2372,9 @@ public class GeoServerRESTPublisher {
LOGGER.warn("Error configuring LayerGroup " + name + " (" + sendResult + ")");
}
- return sendResult != null;
+ return sendResult != null;
}
-
+
/**
* Update a LayerGroup using the specified encoder
*
@@ -2408,7 +2385,7 @@ public class GeoServerRESTPublisher {
public boolean configureLayerGroup(String name, GSLayerGroupEncoder group) {
return configureLayerGroup(null, name, group);
}
-
+
/**
* Update a LayerGroup using the specified encoder
*
@@ -2416,15 +2393,15 @@ public class GeoServerRESTPublisher {
* @param name name of the layer group
* @param group group encoder
* @return true if operation was successful
- */
+ */
public boolean configureLayerGroup(String workspace, String name, GSLayerGroupEncoder group) {
String url = restURL + "/rest";
if (workspace == null) {
url += "/layergroups/" + name;
} else {
url += "/workspaces/" + workspace + "/layergroups/" + name;
- }
-
+ }
+
String sendResult = HTTPUtils.putXml(url, group.toString(), gsuser, gspass);
if (sendResult != null) {
if (LOGGER.isInfoEnabled()) {
@@ -2435,9 +2412,9 @@ public class GeoServerRESTPublisher {
LOGGER.warn("Error configuring LayerGroup " + name + " (" + sendResult + ")");
}
- return sendResult != null;
+ return sendResult != null;
}
-
+
/**
* Configure an existent coverage in a given workspace and coverage store
*
@@ -2650,7 +2627,7 @@ public class GeoServerRESTPublisher {
return URLEncoder.encode(s);
// }
}
-
+
// ==> StructuredCoverageGridReader
/**
@@ -2663,81 +2640,85 @@ public class GeoServerRESTPublisher {
*
* @return true if the call succeeds or false otherwise.
*/
- public boolean createOrHarvestExternal(String workspace, String coverageStore, String format, String path) {
+ public boolean createOrHarvestExternal(String workspace, String coverageStore, String format,
+ String path) {
try {
- GeoServerRESTStructuredGridCoverageReaderManager manager =
- new GeoServerRESTStructuredGridCoverageReaderManager(new URL(restURL), gsuser, gspass);
+ GeoServerRESTStructuredGridCoverageReaderManager manager = new GeoServerRESTStructuredGridCoverageReaderManager(
+ new URL(restURL), gsuser, gspass);
return manager.createOrHarvestExternal(workspace, coverageStore, format, path);
} catch (IllegalArgumentException e) {
- if(LOGGER.isInfoEnabled()){
- LOGGER.info(e.getLocalizedMessage(),e);
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info(e.getLocalizedMessage(), e);
}
} catch (MalformedURLException e) {
- if(LOGGER.isInfoEnabled()){
- LOGGER.info(e.getLocalizedMessage(),e);
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info(e.getLocalizedMessage(), e);
}
}
return false;
}
-
- /**
- * Remove a granule from a structured coverage by id.
- *
- * @param workspace the GeoServer workspace
- * @param coverageStore the GeoServer coverageStore
- * @param coverage the name of the target coverage from which we are going to remove
- * @param filter the absolute path to the file to upload
- *
- * @return null in case the call does not succeed, or an instance of {@link RESTStructuredCoverageGranulesList}.
- *
- * @throws MalformedURLException
- * @throws UnsupportedEncodingException
- */
- public boolean removeGranuleById(final String workspace, String coverageStore, String coverage, String granuleId) {
- try {
- GeoServerRESTStructuredGridCoverageReaderManager manager =
- new GeoServerRESTStructuredGridCoverageReaderManager(new URL(restURL), gsuser, gspass);
- return manager.removeGranuleById(workspace, coverageStore, coverage, granuleId);
- } catch (IllegalArgumentException e) {
- if(LOGGER.isInfoEnabled()){
- LOGGER.info(e.getLocalizedMessage(),e);
- }
- } catch (MalformedURLException e) {
- if(LOGGER.isInfoEnabled()){
- LOGGER.info(e.getLocalizedMessage(),e);
- }
- }
- return false;
- }
- /**
- * Remove granules from a structured coverage, by providing a CQL filter.
- *
- * @param workspace the GeoServer workspace
- * @param coverageStore the GeoServer coverageStore
- * @param coverage the name of the target coverage from which we are going to remove
- * @param filter the absolute path to the file to upload
- *
- * @return null in case the call does not succeed, or an instance of {@link RESTStructuredCoverageGranulesList}.
- *
- * @throws MalformedURLException
- * @throws UnsupportedEncodingException
- */
- public boolean removeGranulesByCQL(final String workspace, String coverageStore,String coverage, String filter) throws UnsupportedEncodingException{
- try {
- GeoServerRESTStructuredGridCoverageReaderManager manager =
- new GeoServerRESTStructuredGridCoverageReaderManager(new URL(restURL), gsuser, gspass);
- return manager.removeGranulesByCQL(workspace, coverageStore, coverage, filter);
- } catch (IllegalArgumentException e) {
- if(LOGGER.isInfoEnabled()){
- LOGGER.info(e.getLocalizedMessage(),e);
- }
- } catch (MalformedURLException e) {
- if(LOGGER.isInfoEnabled()){
- LOGGER.info(e.getLocalizedMessage(),e);
- }
- }
- return false;
- }
+ /**
+ * Remove a granule from a structured coverage by id.
+ *
+ * @param workspace the GeoServer workspace
+ * @param coverageStore the GeoServer coverageStore
+ * @param coverage the name of the target coverage from which we are going to remove
+ * @param filter the absolute path to the file to upload
+ *
+ * @return null in case the call does not succeed, or an instance of {@link RESTStructuredCoverageGranulesList}.
+ *
+ * @throws MalformedURLException
+ * @throws UnsupportedEncodingException
+ */
+ public boolean removeGranuleById(final String workspace, String coverageStore, String coverage,
+ String granuleId) {
+ try {
+ GeoServerRESTStructuredGridCoverageReaderManager manager = new GeoServerRESTStructuredGridCoverageReaderManager(
+ new URL(restURL), gsuser, gspass);
+ return manager.removeGranuleById(workspace, coverageStore, coverage, granuleId);
+ } catch (IllegalArgumentException e) {
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info(e.getLocalizedMessage(), e);
+ }
+ } catch (MalformedURLException e) {
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info(e.getLocalizedMessage(), e);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Remove granules from a structured coverage, by providing a CQL filter.
+ *
+ * @param workspace the GeoServer workspace
+ * @param coverageStore the GeoServer coverageStore
+ * @param coverage the name of the target coverage from which we are going to remove
+ * @param filter the absolute path to the file to upload
+ *
+ * @return null in case the call does not succeed, or an instance of {@link RESTStructuredCoverageGranulesList}.
+ *
+ * @throws MalformedURLException
+ * @throws UnsupportedEncodingException
+ */
+ public boolean removeGranulesByCQL(final String workspace, String coverageStore,
+ String coverage, String filter) throws UnsupportedEncodingException {
+ try {
+ GeoServerRESTStructuredGridCoverageReaderManager manager = new GeoServerRESTStructuredGridCoverageReaderManager(
+ new URL(restURL), gsuser, gspass);
+ return manager.removeGranulesByCQL(workspace, coverageStore, coverage, filter);
+ } catch (IllegalArgumentException e) {
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info(e.getLocalizedMessage(), e);
+ }
+ } catch (MalformedURLException e) {
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info(e.getLocalizedMessage(), e);
+ }
+ }
+ return false;
+
+ }
}
diff --git a/src/main/java/it/geosolutions/geoserver/rest/manager/GeoServerRESTStoreManager.java b/src/main/java/it/geosolutions/geoserver/rest/manager/GeoServerRESTStoreManager.java
index 5aad7be..8db71ce 100644
--- a/src/main/java/it/geosolutions/geoserver/rest/manager/GeoServerRESTStoreManager.java
+++ b/src/main/java/it/geosolutions/geoserver/rest/manager/GeoServerRESTStoreManager.java
@@ -25,6 +25,7 @@
package it.geosolutions.geoserver.rest.manager;
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.encoder.GSAbstractStoreEncoder;
import it.geosolutions.geoserver.rest.encoder.datastore.GSAbstractDatastoreEncoder;
@@ -120,4 +121,6 @@ public class GeoServerRESTStoreManager extends GeoServerRESTAbstractManager {
// }
return deleted;
}
+
+
}