Class 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):
     
     	// 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);
     
     
    For this example, the XML output is:
     
     <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
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String KEYCOLUMN
      Constant KEYCOLUMN="keyColumn"
      static java.lang.String NAME
      Constant NAME="name"
      static java.lang.String SQL
      Constant SQL="sql"
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addKeyColumn​(java.lang.String keycolumn)
      Adds a keyColumn
      protected void addName​(java.lang.String name)
      Add the 'name' node with a text value from 'name' REQUIRED to configure a virtual table
      protected void addSql​(java.lang.String sql)
      Add the 'sql' node with a text value from 'sql' REQUIRED to configure a virtual table
      void addVirtualTableGeometry​(VTGeometryEncoder geomEnc)
      Adds a geometry to the VirtualTable
      void addVirtualTableGeometry​(java.lang.String name, java.lang.String geometryType, java.lang.String srid)
      Adds quickly a geometry to the virtual table
      void addVirtualTableParameter​(VTParameterEncoder paramEnc)
      Adds a parameter to the VirtualTable
      void addVirtualTableParameter​(java.lang.String name, java.lang.String defaultValue, java.lang.String regexpValidator)
      Adds quickly a parameter to the VirtualTable
      boolean delKeyColumn​(java.lang.String keycolumn)
      Deletes a keyColumn
      boolean delVirtualTableGeometry​(java.lang.String name)
      Deletes a geometry from the VirtualTable
      boolean delVirtualTableParameter​(java.lang.String name)
      Deletes a parameter from the VirtualTable
      java.lang.String getName()
      Get the name of the virtual table
      java.lang.String getSql()
      Get the sql query
      void setName​(java.lang.String name)
      Set or modify the 'name' node with a text value from 'name' REQUIRED to configure a virtual table
      void setSql​(java.lang.String sql)
      Set or modify the 'sql' node with a text value from 'sql' REQUIRED to configure a virtual table
      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
      boolean validate()
      validate
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • 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 - a String object.
        keyColumns - a List object.
        geomEncList - a List object.
        paramEncList - a List object.
      • 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 - a String object.
      • 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 - a String object.
      • getName

        public java.lang.String getName()
        Get the name of the virtual table
        Returns:
        a String object.
      • 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 - a String object.
      • 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 - a String object.
      • getSql

        public java.lang.String getSql()
        Get the sql query
        Returns:
        a String object.
      • addKeyColumn

        public void addKeyColumn​(java.lang.String keycolumn)
        Adds a keyColumn
        Parameters:
        keycolumn - a String object.
      • delKeyColumn

        public boolean delKeyColumn​(java.lang.String keycolumn)
        Deletes a keyColumn
        Parameters:
        keycolumn - a String object.
        Returns:
        true if the keycolumn was removed
      • addVirtualTableGeometry

        public void addVirtualTableGeometry​(VTGeometryEncoder geomEnc)
        Adds a geometry to the VirtualTable
        Parameters:
        geomEnc - a VTGeometryEncoder object.
      • 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 - a String object.
        geometryType - a String object.
        srid - a String object.
      • delVirtualTableGeometry

        public boolean delVirtualTableGeometry​(java.lang.String name)
        Deletes a geometry from the VirtualTable
        Parameters:
        name - a String object.
        Returns:
        true if the geometry was removed, otherwise false
      • addVirtualTableParameter

        public void addVirtualTableParameter​(VTParameterEncoder paramEnc)
        Adds a parameter to the VirtualTable
        Parameters:
        paramEnc - a VTParameterEncoder object.
      • 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 - a String object.
        defaultValue - a String object.
        regexpValidator - a String object.
      • delVirtualTableParameter

        public boolean delVirtualTableParameter​(java.lang.String name)
        Deletes a parameter from the VirtualTable
        Parameters:
        name - a String object.
        Returns:
        a boolean.
      • validate

        public boolean validate()
                         throws java.lang.IllegalStateException

        validate

        Returns:
        a boolean.
        Throws:
        java.lang.IllegalStateException - if any.