diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/GSVirtualTableEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/GSVirtualTableEncoder.java index 1571830..b7c36ee 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/GSVirtualTableEncoder.java +++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/GSVirtualTableEncoder.java @@ -45,9 +45,9 @@ import it.geosolutions.geoserver.rest.encoder.utils.XmlElement; * @code * // Set-up the vtGeom * final VTGeometryEncoder vtGeom = new VTGeometryEncoder(); - * vtGeom.setVirtualTableGeometryMember(VTGeometry.name, "the_geom"); - * vtGeom.setVirtualTableGeometryMember(VTGeometry.type, "MultiPolygon"); - * vtGeom.setVirtualTableGeometryMember(VTGeometry.srid, "4326"); + * vtGeom.setName("the_geom"); + * vtGeom.setType("MultiPolygon"); + * vtGeom.setSrid("4326"); * * // Set-up 2 virtual table parameters * final VTParameterEncoder vtParam1 = new VTParameterEncoder("high", @@ -116,11 +116,11 @@ public class GSVirtualTableEncoder extends XmlElement { /** * Constructs directly a GSVirtualTableEncoder * - * @param name - * @param sql - * @param keyColumns - * @param geomEncList - * @param paramEncList + * @param name (required) + * @param sql (required) + * @param keyColumns (optional) + * @param geomEncList (optional for geometryless sql view) + * @param paramEncList (optional) */ public GSVirtualTableEncoder(String name, String sql, List keyColumns, List geomEncList, diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/VTGeometryEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/VTGeometryEncoder.java index f5adb7e..cf85741 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/VTGeometryEncoder.java +++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/VTGeometryEncoder.java @@ -27,23 +27,20 @@ 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.Map; -import java.util.Map.Entry; - import org.jdom.Element; import org.jdom.filter.Filter; /** - * GSVirtualTableGeomEncoder - Encodes a metadata VirtualTable geometry for a + * VTGeometryEncoder - Encodes a metadata VirtualTable geometry for a * GeoServer featureType, as follows: * *
  * {
  * 	@code
- * 	final GSVirtualTableGeomEncoder vtGeom = new GSVirtualTableGeomEncoder();
- * 	vtGeom.setVirtualTableGeometryMember(VTGeometry.name, "the_geom");
- * 	vtGeom.setVirtualTableGeometryMember(VTGeometry.type, "MultiPolygon");
- * 	vtGeom.setVirtualTableGeometryMember(VTGeometry.srid, "4326");
+ * 	final VTGeometryEncoder vtGeom = new VTGeometryEncoder();
+ * 	vtGeom.setName("the_geom");
+ * 	vtGeom.setType("MultiPolygon");
+ * 	vtGeom.setSrid("4326");
  * }
  * 
* @@ -69,7 +66,7 @@ public class VTGeometryEncoder extends XmlElement { * A class to filter the VirtualTable geometries by name * */ - public static class filterByName implements Filter { + private static class filterByName implements Filter { final private String key; @@ -110,9 +107,9 @@ public class VTGeometryEncoder extends XmlElement { /** * Constructs quickly a VTGeometryEncoder * - * @param name - * @param geometryType - * @param srid + * @param name (required) + * @param geometryType (required) + * @param srid (required) */ public VTGeometryEncoder(String name, String geometryType, String srid) { super("geometry"); @@ -127,21 +124,9 @@ public class VTGeometryEncoder extends XmlElement { * @param srid */ protected void setup(String name, String geometryType, String srid) { - set(VTGeometry.name.name(), name); - set(VTGeometry.type.name(), geometryType); - set(VTGeometry.srid.name(), srid); - } - - /** - * Set-up a GSVirtualTableGeomEncoder - * - * @param vtGeometryMembers - */ - public void setup(Map vtGeometryMembers) { - for (Entry vtGeomMember : vtGeometryMembers - .entrySet()) { - set(vtGeomMember.getKey().toString(), vtGeomMember.getValue()); - } + setName(name); + setType(geometryType); + setSrid(srid); } /** @@ -150,32 +135,113 @@ public class VTGeometryEncoder extends XmlElement { * @param type * @param value */ - public void setVirtualTableGeometryMember(VTGeometry type, + protected void setMember(VTGeometry type, String value) { set(type.toString(), value); } + /** + * Set a geometry name + * + * @param name + */ + public void setName(String name){ + this.setMember(VTGeometry.name, name); + } + + /** + * Set a geometry type + * + * @param type + */ + public void setType(String type){ + this.setMember(VTGeometry.type, type); + } + + /** + * Set a geometry srid + * + * @param srid + */ + public void setSrid(String srid){ + this.setMember(VTGeometry.srid, srid); + } + /** * Deletes a VirtualTableGeometry member * * @param type - * @return + * @return true if removed, false otherwise */ - public boolean delVirtualTableGeometryMember(VTGeometry type) { + protected boolean delMember(VTGeometry type) { return ElementUtils.remove(this.getRoot(), this.getRoot().getChild(type.toString())); } + + /** + * Deletes the name + * + * @return true if removed, false otherwise + */ + public boolean delName(){ + return this.delMember(VTGeometry.name); + } + + /** + * Deletes the type + * + * @return true if removed, false otherwise + */ + public boolean delType(){ + return this.delMember(VTGeometry.type); + } + /** + * Deletes the srid + * + * @return true if removed, false otherwise + */ + public boolean delSrid(){ + return this.delMember(VTGeometry.srid); + } + /** * Get the VirtualTableGeometry member value * * @param type * @return */ - public String getVirtualTableGeometryMember(VTGeometry type) { + protected String getMember(VTGeometry type) { Element el = this.getRoot().getChild(type.toString()); if (el != null) return el.getTextTrim(); else return null; } + + /** + * Get the geometry column name + * + * @return + */ + public String getName(){ + return this.getMember(VTGeometry.name); + } + + /** + * Get the geometry column type + * + * @return + */ + public String getType(){ + return this.getMember(VTGeometry.type); + } + + /** + * Get the geometry column srid + * + * @return + */ + public String getSrid(){ + return this.getMember(VTGeometry.srid); + } } \ No newline at end of file diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/VTParameterEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/VTParameterEncoder.java index 54d208e..5a2995f 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/VTParameterEncoder.java +++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/virtualtable/VTParameterEncoder.java @@ -27,24 +27,19 @@ 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.Map; -import java.util.Map.Entry; - import org.jdom.Element; import org.jdom.filter.Filter; /** - * GSVirtualTableParamEncoder - Encodes a metadata VirtualTable parameter for a + * VTParameterEncoder - Encodes a metadata VirtualTable parameter for a * GeoServer featureType, as follows: * *
  * { @code
  * 	final VTParameterEncoder vtParam = new VTParameterEncoder();
- * 	vtParam.setVirtualTableParamMember(VTParameter.name, "fieldname");
- * 	vtParam.setVirtualTableParamMember(VTParameter.defaultValue,
- * 			"default_value");
- * 	vtParam.setVirtualTableParamMember(VTParameter.regexpValidator,
- * 			"^[\\w\\d\\s]+$");
+ * 	vtParam.setName("fieldname");
+ * 	vtParam.setDefaultValue("default_value");
+ * 	vtParam.setRegexpValidator("^[\\w\\d\\s]+$");
  * }
  * 
* @@ -70,7 +65,7 @@ public class VTParameterEncoder extends XmlElement { * A class to filter the VirtualTable parameters by name * */ - public static class filterByName implements Filter { + private static class filterByName implements Filter { final private String key; @@ -110,9 +105,9 @@ public class VTParameterEncoder extends XmlElement { /** * Constructs quickly a VTParameterEncoder * - * @param name - * @param defaultValue - * @param regexpValidator + * @param name (required) + * @param defaultValue (required) + * @param regexpValidator (required) */ public VTParameterEncoder(String name, String defaultValue, String regexpValidator){ super("parameter"); @@ -127,21 +122,9 @@ public class VTParameterEncoder extends XmlElement { * @param regexpValidator */ protected void setup(String name, String defaultValue, String regexpValidator) { - set(VTParameter.name.name(), name); - set(VTParameter.defaultValue.name(), defaultValue); - set(VTParameter.regexpValidator.name(), regexpValidator); - } - - /** - * Set-up a VirtualTable parameter - * - * @param vtParamMembers - */ - public void setup(Map vtParamMembers) { - for (Entry vtParamMember : vtParamMembers - .entrySet()) { - set(vtParamMember.getKey().toString(), vtParamMember.getValue()); - } + setName(name); + setDefaultValue(defaultValue); + setRegexpValidator(regexpValidator); } /** @@ -150,32 +133,114 @@ public class VTParameterEncoder extends XmlElement { * @param type * @param value */ - public void setVirtualTableParamMember(VTParameter type, + protected void setMember(VTParameter type, String value) { set(type.toString(), value); } + + /** + * Set the parameter name + * + * @param name + */ + public void setName(String name){ + this.setMember(VTParameter.name, name); + } + + /** + * Set the parameter default value + * + * @param value + */ + public void setDefaultValue(String value){ + this.setMember(VTParameter.defaultValue, value); + } + /** + * Set the parameter regexp validator + * + * @param validator + */ + public void setRegexpValidator(String validator){ + this.setMember(VTParameter.regexpValidator, validator); + } + /** * Deletes a VirtualTableParameter member * * @param type * @return */ - public boolean delVirtualTableParamMember(VTParameter type) { + protected boolean delMember(VTParameter type) { return ElementUtils.remove(this.getRoot(), this.getRoot().getChild(type.toString())); } + /** + * Deletes the name + * + * @return true if removed, false otherwise + */ + public boolean delName(){ + return this.delMember(VTParameter.name); + } + + /** + * Deletes the default value + * + * @return true if removed, false otherwise + */ + public boolean delDefaultValue(){ + return this.delMember(VTParameter.defaultValue); + } + + /** + * Deletes the Regexp validator + * + * @return true if removed, false otherwise + */ + public boolean delRegexpValidator(){ + return this.delMember(VTParameter.regexpValidator); + } + + /** * Get a VirtualTableParameter member * * @param type * @return */ - public String getVirtualTableParamMember(VTParameter type) { + protected String getMember(VTParameter type) { Element el = getRoot().getChild(type.toString()); if (el != null) return el.getTextTrim(); else return null; } + + /** + * Get the parameter name + * + * @return + */ + public String getName(){ + return this.getMember(VTParameter.name); + } + + /** + * Get the parameter default value + * + * @return + */ + public String getDefaultValue(){ + return this.getMember(VTParameter.defaultValue); + } + + /** + * Get the parameter regexp validator + * + * @return + */ + public String getRegexpValidator(){ + return this.getMember(VTParameter.regexpValidator); + } } \ No newline at end of file diff --git a/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSVirtualTableEncoderTest.java b/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSVirtualTableEncoderTest.java index c149e81..f808f1d 100644 --- a/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSVirtualTableEncoderTest.java +++ b/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSVirtualTableEncoderTest.java @@ -81,8 +81,8 @@ public class GSVirtualTableEncoderTest { Assert.assertEquals("mysqlview", vte.getName()); Assert.assertEquals(sql, vte.getSql()); - vtGeom.setVirtualTableGeometryMember(VTGeometry.type, "Point"); - vtParam1.setVirtualTableParamMember(VTParameter.name, "newfieldname"); + vtGeom.setType("Point"); + vtParam1.setName("newfieldname"); Assert.assertEquals("Point", ((Element) vte.getRoot().getChildren("geometry").get(0)) @@ -91,9 +91,8 @@ public class GSVirtualTableEncoderTest { .getChildren("parameter").get(0)).getChildText(VTParameter.name .toString())); - Assert.assertTrue(vtGeom.delVirtualTableGeometryMember(VTGeometry.srid)); - Assert.assertTrue(vtParam1 - .delVirtualTableParamMember(VTParameter.regexpValidator)); + Assert.assertTrue(vtGeom.delSrid()); + Assert.assertTrue(vtParam1.delRegexpValidator()); } }