VirtualTable support - fix encoders
This commit is contained in:
parent
6b27c57bfc
commit
3dc49b952f
@ -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,
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user