diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureTypeEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureTypeEncoder.java index 9332804..eb2d567 100644 --- a/src/main/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureTypeEncoder.java +++ b/src/main/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureTypeEncoder.java @@ -27,7 +27,7 @@ package it.geosolutions.geoserver.rest.encoder.feature; import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder; import it.geosolutions.geoserver.rest.encoder.metadata.GSFeatureDimensionInfoEncoder; -import it.geosolutions.geoserver.rest.encoder.metadata.GSVirtualTableEncoder; +import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.GSVirtualTableEncoder; import org.jdom.Element; @@ -112,6 +112,14 @@ public class GSFeatureTypeEncoder extends GSResourceEncoder { super.setMetadata("JDBC_VIRTUAL_TABLE", virtualtable); } + /** + * Deletes the VirtualTable metadata + * + * @return true if deleted, false otherwise + */ + public boolean delMetadataVirtualTable(){ + return super.delMetadata("JDB_VIRTUAL_TABLE"); + } /** * delete a keyword from the list diff --git a/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/GSVirtualTableEncoder.java b/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/GSVirtualTableEncoder.java deleted file mode 100644 index f844734..0000000 --- a/src/main/java/it/geosolutions/geoserver/rest/encoder/metadata/GSVirtualTableEncoder.java +++ /dev/null @@ -1,214 +0,0 @@ -/* - * GeoServer-Manager - Simple Manager Library for GeoServer - * - * Copyright (C) 2007,2011 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.encoder.metadata; - -import java.util.ArrayList; -import java.util.List; - -import it.geosolutions.geoserver.rest.encoder.utils.PropertyXMLEncoder; - -/** - * GSVirtualTableEncoder - Encodes a metadata VirtualTable for a GeoServer - * featureType. - * - * Example (based on the example provided in the Geoserver documentation - see - * {@link http://docs.geoserver.org/latest/en/user/data/database/sqlview.html# - * parameterizing-sql-views}): - * - *
- * {
- * @code
- * // Set-up the vtGeom
- * final GSVirtualTableGeomEncoder vtGeom = new GSVirtualTableGeomEncoder();
- * vtGeom.setup("the_geom", "MultiPolygon", "4326");
- *
- * // Set-up 2 virtual table parameters
- * final GSVirtualTableParamEncoder vtParam1 = new GSVirtualTableParamEncoder();
- * vtParam1.setup("high", "100000000", "^[\\d]+$");
- * final GSVirtualTableParamEncoder vtParam2 = new GSVirtualTableParamEncoder();
- * vtParam2.setup("low", "0", "^[\\d]+$");
- *
- * // sql
- * String sql = "select gid, state_name, the_geom from pgstates where persons between %low% and %high%";
- *
- * // Set-up the virtual table
- * final GSVirtualTableEncoder vte = new GSVirtualTableEncoder();
- * vte.setup("popstates", sql, null, Arrays.asList(vtGeom),
- * Arrays.asList(vtParam1, vtParam2));
- * }
- *
- *
- * For this example, the XML output is:
- *
- *
- * {@code
- *
- * popstates
- * select gid, state_name, the_geom from pgstates where persons between %low% and %high%
- *
- * the_geom
- * MultiPolygon
- * 4326
- *
- *
- * high
- * 100000000
- * ^[\d]+$
- *
- *
- * low
- * 0
- * ^[\d]+$
- *
- *
- * }
- *
- *
- * @author Emmanuel Blondel - emmanuel.blondel1@gmail.com |
- * emmanuel.blondel@fao.org
- *
- */
-public class GSVirtualTableEncoder extends PropertyXMLEncoder {
-
- private String name;
- private String sql;
- private List
+ * {
+ * @code
+ * // Set-up the vtGeom
+ * final VTGeometryEncoder vtGeom = new VTGeometryEncoder();
+ * vtGeom.setup("the_geom", "MultiPolygon", "4326");
+ *
+ * // Set-up 2 virtual table parameters
+ * final VTParameterEncoder vtParam1 = new VTParameterEncoder();
+ * vtParam1.setup("high", "100000000", "^[\\d]+$");
+ * final VTParameterEncoder vtParam2 = new VTParameterEncoder();
+ * vtParam2.setup("low", "0", "^[\\d]+$");
+ *
+ * // sql
+ * String sql = "select gid, state_name, the_geom from pgstates where persons between %low% and %high%";
+ *
+ * // Set-up the virtual table
+ * final GSVirtualTableEncoder vte = new GSVirtualTableEncoder();
+ * vte.setName("popstates");
+ * vte.setSql("select gid, state_name, the_geom from pgstates where persons between %low% and %high%");
+ * vte.addKeyColumn("gid");
+ * vte.addVirtualTableGeometry(vtGeom);
+ * vte.addVirtualTableParameter(vtParam1);
+ * vte.addVirtualTableParameter(vtParam2);
+ * }
+ *
+ *
+ * For this example, the XML output is:
+ *
+ *
+ * {@code
+ *
+ * popstates
+ * select gid, state_name, the_geom from pgstates where persons between %low% and %high%
+ *
+ * the_geom
+ * MultiPolygon
+ * 4326
+ *
+ * gid
+ *
+ * high
+ * 100000000
+ * ^[\d]+$
+ *
+ *
+ * low
+ * 0
+ * ^[\d]+$
+ *
+ *
+ * }
+ *
+ *
+ * @author Emmanuel Blondel - emmanuel.blondel1@gmail.com |
+ * emmanuel.blondel@fao.org
+ *
+ */
+public class GSVirtualTableEncoder extends XmlElement {
+
+ public final static String NAME = "name";
+ public final static String SQL = "sql";
+ public final static String KEYCOLUMN = "keyColumn";
+
+ /**
+ * Constructs a GSVirtualTableEncoder
+ */
+ public GSVirtualTableEncoder() {
+ super("virtualTable");
+ }
+
+ /**
+ * Constructs directly a GSVirtualTableEncoder
+ *
+ * @param name
+ * @param sql
+ * @param keyColumns
+ * @param geomEncList
+ * @param paramEncList
+ */
+ public GSVirtualTableEncoder(String name, String sql, List
- * {
- * @code
- * final GSVirtualTableParamEncoder vtParam = new GSVirtualTableParamEncoder();
- * vtParam.setup("fieldname", "default_value", "^[\\w\\d\\s]+$");
+ * { @code
+ * final VTParameterEncoder vtParam = new VTParameterEncoder();
+ * vtParam.setVirtualTableParamMember(VTParameter.name, "fieldname");
+ * vtParam.setVirtualTableParamMember(VTParameter.defaultValue,
+ * "default_value");
+ * vtParam.setVirtualTableParamMember(VTParameter.regexpValidator,
+ * "^[\\w\\d\\s]+$");
* }
*
*
* For this example, the XML output is:
*
*
- * {@code
+ * { @code
*
* fieldname
* default_value
@@ -60,15 +64,61 @@ import org.jdom.Element;
* emmanuel.blondel@fao.org
*
*/
-public class GSVirtualTableParamEncoder extends PropertyXMLEncoder {
+public class VTParameterEncoder extends XmlElement {
+ /**
+ * A class to filter the VirtualTable parameters by name
+ *
+ */
+ public static class filterByName implements Filter {
+
+ final private String key;
+
+ public filterByName(String name) {
+ this.key = name;
+ }
+
+ private static final long serialVersionUID = 1L;
+
+ public boolean matches(Object obj) {
+ Element el = ((Element) obj)
+ .getChild(VTParameter.name.toString());
+ if (el != null && el.getTextTrim().equals(key)) {
+ return true;
+ }
+ return false;
+ }
+ }
+
+ /**
+ * Get a Filter using the VTParameter name
+ *
+ * @param name
+ * @return the filter
+ */
+ public static Filter getFilterByName(String name) {
+ return new filterByName(name);
+ }
+
/**
* Constructs a GSVirtualTableParamEncoder
*/
- public GSVirtualTableParamEncoder() {
+ public VTParameterEncoder() {
super("parameter");
}
+ /**
+ * Constructs quickly a VTParameterEncoder
+ *
+ * @param name
+ * @param defaultValue
+ * @param regexpValidator
+ */
+ public VTParameterEncoder(String name, String defaultValue, String regexpValidator){
+ super("parameter");
+ this.setup(name, defaultValue, regexpValidator);
+ }
+
/**
* Set-up quickly a VirtualTable parameter
*
@@ -76,10 +126,10 @@ public class GSVirtualTableParamEncoder extends PropertyXMLEncoder {
* @param defaultValue
* @param regexpValidator
*/
- public void setup(String name, String defaultValue, String regexpValidator) {
- set(VirtualTableParameter.name.name(), name);
- set(VirtualTableParameter.defaultValue.name(), defaultValue);
- set(VirtualTableParameter.regexpValidator.name(), 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);
}
/**
@@ -87,8 +137,8 @@ public class GSVirtualTableParamEncoder extends PropertyXMLEncoder {
*
* @param vtParamMembers
*/
- public void setup(Map vtParamMembers) {
- for (Entry vtParamMember : vtParamMembers
+ public void setup(Map vtParamMembers) {
+ for (Entry vtParamMember : vtParamMembers
.entrySet()) {
set(vtParamMember.getKey().toString(), vtParamMember.getValue());
}
@@ -100,7 +150,7 @@ public class GSVirtualTableParamEncoder extends PropertyXMLEncoder {
* @param type
* @param value
*/
- public void setVirtualTableParamMember(VirtualTableParameter type,
+ public void setVirtualTableParamMember(VTParameter type,
String value) {
set(type.toString(), value);
}
@@ -111,8 +161,8 @@ public class GSVirtualTableParamEncoder extends PropertyXMLEncoder {
* @param type
* @return
*/
- public boolean delVirtualTableParamMember(VirtualTableParameter type) {
- return ElementUtils.remove(this.getRoot(), get(type.toString()));
+ public boolean delVirtualTableParamMember(VTParameter type) {
+ return ElementUtils.remove(this.getRoot(), this.getRoot().getChild(type.toString()));
}
/**
@@ -121,8 +171,8 @@ public class GSVirtualTableParamEncoder extends PropertyXMLEncoder {
* @param type
* @return
*/
- public String getVirtualTableParamMember(VirtualTableParameter type) {
- Element el = get(type.toString());
+ public String getVirtualTableParamMember(VTParameter type) {
+ Element el = getRoot().getChild(type.toString());
if (el != null)
return el.getTextTrim();
else
diff --git a/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureEncoderTest.java b/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureEncoderTest.java
index 4750863..b448ce6 100644
--- a/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureEncoderTest.java
+++ b/src/test/java/it/geosolutions/geoserver/rest/encoder/feature/GSFeatureEncoderTest.java
@@ -27,10 +27,10 @@ import it.geosolutions.geoserver.rest.encoder.GSResourceEncoder;
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder;
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.Presentation;
import it.geosolutions.geoserver.rest.encoder.metadata.GSDimensionInfoEncoder.PresentationDiscrete;
+import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.GSVirtualTableEncoder;
+import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.VTGeometryEncoder;
+import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.VTParameterEncoder;
import it.geosolutions.geoserver.rest.encoder.metadata.GSFeatureDimensionInfoEncoder;
-import it.geosolutions.geoserver.rest.encoder.metadata.GSVirtualTableEncoder;
-import it.geosolutions.geoserver.rest.encoder.metadata.GSVirtualTableGeomEncoder;
-import it.geosolutions.geoserver.rest.encoder.metadata.GSVirtualTableParamEncoder;
import it.geosolutions.geoserver.rest.encoder.metadatalink.GSMetadataLinkInfoEncoder;
import it.geosolutions.geoserver.rest.encoder.utils.ElementUtils;
import it.geosolutions.geoserver.rest.publisher.GeoserverRESTPublisherTest;
@@ -38,7 +38,6 @@ import it.geosolutions.geoserver.rest.publisher.GeoserverRESTPublisherTest;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
-import java.util.Arrays;
import java.util.List;
import org.jdom.Element;
@@ -149,7 +148,7 @@ public class GSFeatureEncoderTest extends GeoserverRESTPublisherTest {
GSFeatureDimensionInfoEncoder dim2 = new GSFeatureDimensionInfoEncoder("ELE");
- encoder.addMetadata("elevation", dim2);
+ encoder.addMetadataDimension("elevation", dim2);
dim2.setPresentation(PresentationDiscrete.DISCRETE_INTERVAL, BigDecimal.valueOf(10));
Element el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.PRESENTATION);
Assert.assertNotNull(el);
@@ -163,7 +162,7 @@ public class GSFeatureEncoderTest extends GeoserverRESTPublisherTest {
dim2.setPresentation(Presentation.CONTINUOUS_INTERVAL);
- encoder.setMetadata("time", new GSFeatureDimensionInfoEncoder("time"));
+ encoder.setMetadataDimension("time", new GSFeatureDimensionInfoEncoder("time"));
el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.PRESENTATION);
Assert.assertNotNull(el);
el = ElementUtils.contains(encoder.getRoot(), GSDimensionInfoEncoder.RESOLUTION);
@@ -214,7 +213,7 @@ public class GSFeatureEncoderTest extends GeoserverRESTPublisherTest {
// LOGGER.info(encoder.toString());
final String metadata = "elevation";
- encoder.setMetadata(metadata, elevationDimension);
+ encoder.setMetadataDimension(metadata, elevationDimension);
elevationDimension.setPresentation(PresentationDiscrete.DISCRETE_INTERVAL,
BigDecimal.valueOf(10));
@@ -261,22 +260,31 @@ public class GSFeatureEncoderTest extends GeoserverRESTPublisherTest {
//virtual table
//-------------
// Set-up the vtGeom
- final GSVirtualTableGeomEncoder vtGeom = new GSVirtualTableGeomEncoder();
- vtGeom.setup("the_geom", "MultiPolygon", "4326");
+ final VTGeometryEncoder vtGeom = new VTGeometryEncoder("the_geom", "Point", "4326");
// Set-up 2 virtual table parameters
- final GSVirtualTableParamEncoder vtParam1 = new GSVirtualTableParamEncoder();
- vtParam1.setup("high", "100000000", "^[\\d]+$");
- final GSVirtualTableParamEncoder vtParam2 = new GSVirtualTableParamEncoder();
- vtParam2.setup("low", "0", "^[\\d]+$");
+ final VTParameterEncoder vtParam1 = new VTParameterEncoder("high", "100000000", "^[\\d]+$");
+ final VTParameterEncoder vtParam2 = new VTParameterEncoder("low", "0", "^[\\d]+$");
// sql
- String sql = "select gid, state_name, the_geom from pgstates where persons between %low% and %high%";
+ String sql = "select gid, state_name, the_geom from pgstates where persons between %low% and %high% and state_abbr = '%state%'";
//set-up the virtual table
final GSVirtualTableEncoder vte = new GSVirtualTableEncoder();
- vte.setup(nativeName, sql, null, Arrays.asList(vtGeom), Arrays.asList(vtParam1, vtParam2));
- fte.setMetadataVirtualTable(vte);
+ vte.setName(nativeName);
+ vte.setSql(sql);
+ vte.addVirtualTableGeometry(vtGeom);
+ vte.addVirtualTableParameter(vtParam1);
+ vte.addVirtualTableParameter(vtParam2);
+ fte.setMetadataVirtualTable(vte); //Set the virtual table
+
+ //modif the vte
+ vte.delVirtualTableGeometry("the_geom");
+ vte.addVirtualTableGeometry("the_geom", "MultiPolygon", "4326");
+
+ final VTParameterEncoder vtParam3 = new VTParameterEncoder("state", "FL", "^[\\w\\d\\s]+$");
+ vte.addVirtualTableParameter(vtParam3);
+ vte.addKeyColumn("gid");
//Layer encoder
//-------------
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 7bbb992..c149e81 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
@@ -1,79 +1,99 @@
package it.geosolutions.geoserver.rest.encoder.feature;
-import it.geosolutions.geoserver.rest.encoder.metadata.GSVirtualTableEncoder;
-import it.geosolutions.geoserver.rest.encoder.metadata.GSVirtualTableGeomEncoder;
-import it.geosolutions.geoserver.rest.encoder.metadata.GSVirtualTableParamEncoder;
-import it.geosolutions.geoserver.rest.encoder.metadata.VirtualTableGeometry;
-import it.geosolutions.geoserver.rest.encoder.metadata.VirtualTableParameter;
+import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.GSVirtualTableEncoder;
+import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.VTGeometryEncoder;
+import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.VTParameterEncoder;
+import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.VTGeometry;
+import it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.VTParameter;
+import it.geosolutions.geoserver.rest.encoder.utils.XmlElement;
import java.util.Arrays;
import junit.framework.Assert;
+import org.jdom.Element;
import org.junit.Test;
/**
*
* @author eblondel
- *
+ *
*/
public class GSVirtualTableEncoderTest {
-
+
@Test
- public void virtualTableTest(){
-
+ public void virtualTableTest() {
+
// Set-up the vtGeom
- final GSVirtualTableGeomEncoder vtGeom = new GSVirtualTableGeomEncoder();
- vtGeom.setup("the_geom", "MultiPolygon", "4326");
+ final VTGeometryEncoder vtGeom = new VTGeometryEncoder("the_geom",
+ "MultiPolygon", "4326");
// Set-up 2 virtual table parameters
- final GSVirtualTableParamEncoder vtParam1 = new GSVirtualTableParamEncoder();
- vtParam1.setup("fieldname1", "default_value1", "^[\\w\\d\\s]+$");
- final GSVirtualTableParamEncoder vtParam2 = new GSVirtualTableParamEncoder();
- vtParam2.setup("fieldname2", "default_value2", "^[\\w\\d\\s]+$");
+ final VTParameterEncoder vtParam1 = new VTParameterEncoder(
+ "fieldname1", "default_value1", "^[\\w\\d\\s]+$");
+ final VTParameterEncoder vtParam2 = new VTParameterEncoder(
+ "fieldname2", "default_value2", "^[\\w\\d\\s]+$");
// sql
String sql = "select the_geom, id, field1, field2 from mytable where field1 = '%fieldname1%' and field2 = '%fieldname2%'";
// Set-up the virtual table
final GSVirtualTableEncoder vte = new GSVirtualTableEncoder();
- vte.setup("mysqlview", sql, Arrays.asList("id"), Arrays.asList(vtGeom), Arrays.asList(vtParam1, vtParam2));
-
- //TESTS
-
- Assert.assertEquals("mysqlview", vte.getName());
- Assert.assertEquals(sql, vte.getSql());
- Assert.assertEquals("id", vte.getKeyColumnList().get(0));
-
- final GSVirtualTableGeomEncoder ge = vte.getVirtualTableGeomEncoderList().get(0);
- Assert.assertEquals("the_geom", ge.getVirtualTableGeometryMember(VirtualTableGeometry.name));
- Assert.assertEquals("MultiPolygon", ge.getVirtualTableGeometryMember(VirtualTableGeometry.type));
- Assert.assertEquals("4326", ge.getVirtualTableGeometryMember(VirtualTableGeometry.srid));
-
- final GSVirtualTableParamEncoder p1 = vte.getVirtualTableParamEncoderList().get(0);
- final GSVirtualTableParamEncoder p2 = vte.getVirtualTableParamEncoderList().get(1);
- Assert.assertEquals("fieldname1", p1.getVirtualTableParamMember(VirtualTableParameter.name));
- Assert.assertEquals("default_value1", p1.getVirtualTableParamMember(VirtualTableParameter.defaultValue));
- Assert.assertEquals("^[\\w\\d\\s]+$", p1.getVirtualTableParamMember(VirtualTableParameter.regexpValidator));
- Assert.assertEquals("fieldname2", p2.getVirtualTableParamMember(VirtualTableParameter.name));
- Assert.assertEquals("default_value2", p2.getVirtualTableParamMember(VirtualTableParameter.defaultValue));
- Assert.assertEquals("^[\\w\\d\\s]+$", p2.getVirtualTableParamMember(VirtualTableParameter.regexpValidator));
-
- ge.setVirtualTableGeometryMember(VirtualTableGeometry.type, "Point");
- p1.setVirtualTableParamMember(VirtualTableParameter.name, "newfieldname");
- vte.setup("mysqlview", sql, null, Arrays.asList(ge), Arrays.asList(p1,p2));
-
- Assert.assertEquals("mysqlview", vte.getName());
- Assert.assertEquals(sql, vte.getSql());
- Assert.assertNull(vte.getKeyColumnList());
- Assert.assertEquals("Point", vte.getVirtualTableGeomEncoderList().get(0)
- .getVirtualTableGeometryMember(VirtualTableGeometry.type));
- Assert.assertEquals("newfieldname", vte.getVirtualTableParamEncoderList().get(0)
- .getVirtualTableParamMember(VirtualTableParameter.name));
+ vte.setName("mysqlview");
+ vte.setSql(sql);
+ vte.addKeyColumn("id");
+ vte.addVirtualTableGeometry(vtGeom);
+ vte.addVirtualTableParameter(vtParam1);
+ vte.addVirtualTableParameter(vtParam2);
- Assert.assertTrue(vtGeom.delVirtualTableGeometryMember(VirtualTableGeometry.srid));
- Assert.assertTrue(vtParam1.delVirtualTableParamMember(VirtualTableParameter.regexpValidator));
+ // TESTS
+
+ Assert.assertEquals("mysqlview", vte.getName());
+ Assert.assertEquals(sql, vte.getSql());
+ Assert.assertEquals("id", vte.getRoot().getChildText("keyColumn"));
+
+ final Element ge = (Element) vte.getRoot().getChild("geometry");
+ Assert.assertEquals("the_geom",
+ ge.getChildText(VTGeometry.name.toString()));
+ Assert.assertEquals("MultiPolygon",
+ ge.getChildText(VTGeometry.type.toString()));
+ Assert.assertEquals("4326", ge.getChildText(VTGeometry.srid.toString()));
+
+ final Element p1 = (Element) vte.getRoot().getChildren("parameter")
+ .get(0);
+ final Element p2 = (Element) vte.getRoot().getChildren("parameter")
+ .get(1);
+ Assert.assertEquals("fieldname1",
+ p1.getChildText(VTParameter.name.toString()));
+ Assert.assertEquals("default_value1",
+ p1.getChildText(VTParameter.defaultValue.toString()));
+ Assert.assertEquals("^[\\w\\d\\s]+$",
+ p1.getChildText(VTParameter.regexpValidator.toString()));
+ Assert.assertEquals("fieldname2",
+ p2.getChildText(VTParameter.name.toString()));
+ Assert.assertEquals("default_value2",
+ p2.getChildText(VTParameter.defaultValue.toString()));
+ Assert.assertEquals("^[\\w\\d\\s]+$",
+ p2.getChildText(VTParameter.regexpValidator.toString()));
+
+ vte.delKeyColumn("id");
+ Assert.assertNull(vte.getRoot().getChildText("keyColumn"));
+ Assert.assertEquals("mysqlview", vte.getName());
+ Assert.assertEquals(sql, vte.getSql());
+
+ vtGeom.setVirtualTableGeometryMember(VTGeometry.type, "Point");
+ vtParam1.setVirtualTableParamMember(VTParameter.name, "newfieldname");
+
+ Assert.assertEquals("Point",
+ ((Element) vte.getRoot().getChildren("geometry").get(0))
+ .getChildText(VTGeometry.type.toString()));
+ Assert.assertEquals("newfieldname", ((Element) vte.getRoot()
+ .getChildren("parameter").get(0)).getChildText(VTParameter.name
+ .toString()));
+
+ Assert.assertTrue(vtGeom.delVirtualTableGeometryMember(VTGeometry.srid));
+ Assert.assertTrue(vtParam1
+ .delVirtualTableParamMember(VTParameter.regexpValidator));
}
-
}