VirtualTable support - fix encoders

This commit is contained in:
eblondel 2013-04-15 11:50:56 +02:00
parent 6b27c57bfc
commit 3dc49b952f
4 changed files with 205 additions and 75 deletions

View File

@ -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<String> keyColumns,
List<VTGeometryEncoder> geomEncList,

View File

@ -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:
*
* <pre>
* {
* @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");
* }
* </pre>
*
@ -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<VTGeometry, String> vtGeometryMembers) {
for (Entry<VTGeometry, String> 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);
}
}

View File

@ -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:
*
* <pre>
* { @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]+$");
* }
* </pre>
*
@ -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<VTParameter, String> vtParamMembers) {
for (Entry<VTParameter, String> 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);
}
}

View File

@ -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());
}
}