diff --git a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTReader.java b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTReader.java index 4265f24..2266a08 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTReader.java +++ b/src/main/java/it/geosolutions/geoserver/rest/GeoServerRESTReader.java @@ -395,17 +395,41 @@ public class GeoServerRESTReader { //=== LAYERGROUPS //========================================================================== + public RESTLayerGroupList getLayerGroups(String workspace) { + String url; + if (workspace == null) { + url = "/rest/layergroups.xml"; + } else { + url = "/rest/workspaces/" + workspace + "/layergroups.xml"; + } + + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("### Retrieving layergroups from " + url); + } + return RESTLayerGroupList.build(load(url)); + } + + public RESTLayerGroup getLayerGroup(String workspace, String name) { + String url; + if (workspace == null) { + url = "/rest/layergroups/" + name + ".xml"; + } else { + url = "/rest/workspaces/" + workspace + "/layergroups/" + name + ".xml"; + } + + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("### Retrieving layergroup from " + url); + } + return RESTLayerGroup.build(load(url)); + } + /** * Get summary info about all LayerGroups. * * @return summary info about LayerGroups as a {@link RESTLayerGroupList} */ public RESTLayerGroupList getLayerGroups() { - String url = "/rest/layergroups.xml"; - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("### Retrieving layergroups from " + url); - } - return RESTLayerGroupList.build(load(url)); + return getLayerGroups(null); } /** @@ -415,13 +439,11 @@ public class GeoServerRESTReader { * @return LayerGroup details as a {@link RESTLayerGroup} */ public RESTLayerGroup getLayerGroup(String name) { - String url = "/rest/layergroups/" + name + ".xml"; - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("### Retrieving layergroup from " + url); - } - return RESTLayerGroup.build(load(url)); + return getLayerGroup(null, name); } + + //========================================================================== //=== LAYERS //========================================================================== diff --git a/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTLayerGroup.java b/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTLayerGroup.java index 0587156..8ce3f95 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTLayerGroup.java +++ b/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTLayerGroup.java @@ -91,10 +91,44 @@ public class RESTLayerGroup { return rootElem.getChildText("name"); } + public String getWorkspace() { + Element rootLayer = rootElem.getChild("workspace"); + if (rootLayer != null) { + return rootLayer.getChildText("name"); + } else { + return null; + } + } + + public String getMode() { + return rootElem.getChildText("mode"); + } + + public String getRootLayer() { + Element rootLayer = rootElem.getChild("rootLayer"); + if (rootLayer != null) { + return rootLayer.getChildText("name"); + } else { + return null; + } + } + public RESTLayerList getLayerList() { - return new RESTLayerList(rootElem.getChild("layers")); + if (rootElem.getChild("layers") != null) { + return new RESTLayerList(rootElem.getChild("layers")); + } else { + return null; + } } + public RESTPublishedList getPublishedList() { + if (rootElem.getChild("publishables") != null) { + return new RESTPublishedList(rootElem.getChild("publishables")); + } else { + return null; + } + } + public String getCRS() { Element bounds = rootElem.getChild("bounds"); return bounds.getChildText("crs"); diff --git a/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTPublished.java b/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTPublished.java new file mode 100755 index 0000000..0edf707 --- /dev/null +++ b/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTPublished.java @@ -0,0 +1,59 @@ +/* + * GeoServer-Manager - Simple Manager Library for GeoServer + * + * Copyright (C) 2013 GeoSolutions S.A.S. + * http://www.geo-solutions.it + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package it.geosolutions.geoserver.rest.decoder; + +import org.jdom.Element; + +import it.geosolutions.geoserver.rest.decoder.utils.NameLinkElem; + + +/** + * Parse a published returned as XML REST objects. + * + * This is the XML REST representation: + *
{@code
+
+ sfdem
+
+
+ * }
+ *
+ * @author Davide Savazzi (geo-solutions.it)
+ */
+public class RESTPublished extends NameLinkElem {
+
+ private final String type;
+
+ public RESTPublished(Element elem) {
+ super(elem);
+
+ type = elem.getAttributeValue("type");
+ }
+
+ public String getType() {
+ return type;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTPublishedList.java b/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTPublishedList.java
new file mode 100755
index 0000000..b8c9b84
--- /dev/null
+++ b/src/main/java/it/geosolutions/geoserver/rest/decoder/RESTPublishedList.java
@@ -0,0 +1,66 @@
+/*
+ * GeoServer-Manager - Simple Manager Library for GeoServer
+ *
+ * Copyright (C) 2013 GeoSolutions S.A.S.
+ * http://www.geo-solutions.it
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+package it.geosolutions.geoserver.rest.decoder;
+
+import it.geosolutions.geoserver.rest.decoder.utils.JDOMBuilder;
+
+import org.jdom.Element;
+
+
+/**
+ * Parse publisheds returned as XML REST objects.
+ *
+ * This is the XML REST representation:
+ * {@code
+
+
+ sfdem
+
+
+
+ bugsites
+
+
+
+ * }
+ *
+ * @author Davide Savazzi (geo-solutions.it)
+ */
+public class RESTPublishedList extends RESTAbstractList