Class GSVirtualTableEncoder
- java.lang.Object
-
- it.geosolutions.geoserver.rest.encoder.utils.XmlElement
-
- it.geosolutions.geoserver.rest.encoder.metadata.virtualtable.GSVirtualTableEncoder
-
public class GSVirtualTableEncoder extends XmlElement
GSVirtualTableEncoder - Encodes a metadata VirtualTable for a GeoServer featureType. Example (based on the example provided in the Geoserver documentation - see http://docs.geoserver.org/latest/en/user/data/database/sqlview.html#parameterizing-sql-views):
For this example, the XML output is:// Set-up the vtGeom final VTGeometryEncoder vtGeom = new VTGeometryEncoder(); vtGeom.setName("the_geom"); vtGeom.setType("MultiPolygon"); vtGeom.setSrid("4326"); // Set-up 2 virtual table parameters 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%"; // 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);<virtualTable> <name>popstates</name> <sql>select gid, state_name, the_geom from pgstates where persons between %low% and %high%</sql> <geometry> <name>the_geom</name> <type>MultiPolygon</type> <srid>4326</srid> </geometry> <keyColumn>gid</keyColumn> <parameter> <name>high</name> <defaultValue>100000000</defaultValue> <regexpValidator>^[\d]+$</regexpValidator> </parameter> <parameter> <name>low</name> <defaultValue>0</defaultValue> <regexpValidator>^[\d]+$</regexpValidator> </parameter> </virtualTable>- Version:
- $Id: $
- Author:
- Emmanuel Blondel - emmanuel.blondel1@gmail.com | emmanuel.blondel@fao.org
-
-
Constructor Summary
Constructors Constructor Description GSVirtualTableEncoder()Constructs a GSVirtualTableEncoderGSVirtualTableEncoder(java.lang.String name, java.lang.String sql, java.util.List<java.lang.String> keyColumns, java.util.List<VTGeometryEncoder> geomEncList, java.util.List<VTParameterEncoder> paramEncList)Constructs directly a GSVirtualTableEncoder
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddKeyColumn(java.lang.String keycolumn)Adds a keyColumnprotected voidaddName(java.lang.String name)Add the 'name' node with a text value from 'name' REQUIRED to configure a virtual tableprotected voidaddSql(java.lang.String sql)Add the 'sql' node with a text value from 'sql' REQUIRED to configure a virtual tablevoidaddVirtualTableGeometry(VTGeometryEncoder geomEnc)Adds a geometry to the VirtualTablevoidaddVirtualTableGeometry(java.lang.String name, java.lang.String geometryType, java.lang.String srid)Adds quickly a geometry to the virtual tablevoidaddVirtualTableParameter(VTParameterEncoder paramEnc)Adds a parameter to the VirtualTablevoidaddVirtualTableParameter(java.lang.String name, java.lang.String defaultValue, java.lang.String regexpValidator)Adds quickly a parameter to the VirtualTablebooleandelKeyColumn(java.lang.String keycolumn)Deletes a keyColumnbooleandelVirtualTableGeometry(java.lang.String name)Deletes a geometry from the VirtualTablebooleandelVirtualTableParameter(java.lang.String name)Deletes a parameter from the VirtualTablejava.lang.StringgetName()Get the name of the virtual tablejava.lang.StringgetSql()Get the sql queryvoidsetName(java.lang.String name)Set or modify the 'name' node with a text value from 'name' REQUIRED to configure a virtual tablevoidsetSql(java.lang.String sql)Set or modify the 'sql' node with a text value from 'sql' REQUIRED to configure a virtual tableprotected voidsetup(java.lang.String name, java.lang.String sql, java.util.List<java.lang.String> keyColumns, java.util.List<VTGeometryEncoder> geomEncList, java.util.List<VTParameterEncoder> paramEncList)Set-up quickly a GSVirtualTableEncoderbooleanvalidate()validate
-
-
-
Field Detail
-
NAME
public static final java.lang.String NAME
ConstantNAME="name"- See Also:
- Constant Field Values
-
SQL
public static final java.lang.String SQL
ConstantSQL="sql"- See Also:
- Constant Field Values
-
KEYCOLUMN
public static final java.lang.String KEYCOLUMN
ConstantKEYCOLUMN="keyColumn"- See Also:
- Constant Field Values
-
-
Constructor Detail
-
GSVirtualTableEncoder
public GSVirtualTableEncoder()
Constructs a GSVirtualTableEncoder
-
GSVirtualTableEncoder
public GSVirtualTableEncoder(java.lang.String name, java.lang.String sql, java.util.List<java.lang.String> keyColumns, java.util.List<VTGeometryEncoder> geomEncList, java.util.List<VTParameterEncoder> paramEncList)Constructs directly a GSVirtualTableEncoder- Parameters:
name- (required)sql- (required)keyColumns- (optional)geomEncList- (optional for geometryless sql view)paramEncList- (optional)
-
-
Method Detail
-
setup
protected void setup(java.lang.String name, java.lang.String sql, java.util.List<java.lang.String> keyColumns, java.util.List<VTGeometryEncoder> geomEncList, java.util.List<VTParameterEncoder> paramEncList)Set-up quickly a GSVirtualTableEncoder- Parameters:
name- (must be the same as the featureType nativeName)sql- aStringobject.keyColumns- aListobject.geomEncList- aListobject.paramEncList- aListobject.
-
addName
protected void addName(java.lang.String name)
Add the 'name' node with a text value from 'name' REQUIRED to configure a virtual table- Parameters:
name- aStringobject.
-
setName
public void setName(java.lang.String name)
Set or modify the 'name' node with a text value from 'name' REQUIRED to configure a virtual table- Parameters:
name- aStringobject.
-
getName
public java.lang.String getName()
Get the name of the virtual table- Returns:
- a
Stringobject.
-
addSql
protected void addSql(java.lang.String sql)
Add the 'sql' node with a text value from 'sql' REQUIRED to configure a virtual table- Parameters:
sql- aStringobject.
-
setSql
public void setSql(java.lang.String sql)
Set or modify the 'sql' node with a text value from 'sql' REQUIRED to configure a virtual table- Parameters:
sql- aStringobject.
-
getSql
public java.lang.String getSql()
Get the sql query- Returns:
- a
Stringobject.
-
addKeyColumn
public void addKeyColumn(java.lang.String keycolumn)
Adds a keyColumn- Parameters:
keycolumn- aStringobject.
-
delKeyColumn
public boolean delKeyColumn(java.lang.String keycolumn)
Deletes a keyColumn- Parameters:
keycolumn- aStringobject.- Returns:
- true if the keycolumn was removed
-
addVirtualTableGeometry
public void addVirtualTableGeometry(VTGeometryEncoder geomEnc)
Adds a geometry to the VirtualTable- Parameters:
geomEnc- aVTGeometryEncoderobject.
-
addVirtualTableGeometry
public void addVirtualTableGeometry(java.lang.String name, java.lang.String geometryType, java.lang.String srid)Adds quickly a geometry to the virtual table- Parameters:
name- aStringobject.geometryType- aStringobject.srid- aStringobject.
-
delVirtualTableGeometry
public boolean delVirtualTableGeometry(java.lang.String name)
Deletes a geometry from the VirtualTable- Parameters:
name- aStringobject.- Returns:
- true if the geometry was removed, otherwise false
-
addVirtualTableParameter
public void addVirtualTableParameter(VTParameterEncoder paramEnc)
Adds a parameter to the VirtualTable- Parameters:
paramEnc- aVTParameterEncoderobject.
-
addVirtualTableParameter
public void addVirtualTableParameter(java.lang.String name, java.lang.String defaultValue, java.lang.String regexpValidator)Adds quickly a parameter to the VirtualTable- Parameters:
name- aStringobject.defaultValue- aStringobject.regexpValidator- aStringobject.
-
delVirtualTableParameter
public boolean delVirtualTableParameter(java.lang.String name)
Deletes a parameter from the VirtualTable- Parameters:
name- aStringobject.- Returns:
- a boolean.
-
validate
public boolean validate() throws java.lang.IllegalStateExceptionvalidate
- Returns:
- a boolean.
- Throws:
java.lang.IllegalStateException- if any.
-
-