Class SqlParserBase

java.lang.Object
scriptella.jdbc.SqlParserBase

public class SqlParserBase extends Object
Customizable SQL parser.

Supported extensions The parser supports extensions described in PropertiesSubstitutor.
Additionally ? prefix is used for expressions which should be injected as prepared statement parameters.

Example:


 var=_name
 id=11
 --------------------------------------
 select * FROM table${var} where id=?id
      --- is transformed to ---
 select * FROM table_name where id=?  where statement parameter has value of 11
 

Notes:

  • $ prefixed expressions are substituted in all parts except comments.
  • ? prefixed expressions are not substituted inside quotes and comments.
Example:

 --only ${prop} and ?surname are handled
 SELECT * FROM "Table" WHERE NAME="?John${prop}" and SURNAME=?surname;
 
These extensions are handled by subclasses in handleParameter(String, boolean, boolean) method.
Version:
1.0
Author:
Fyodor Kupolov
  • Constructor Details

    • SqlParserBase

      public SqlParserBase()
  • Method Details

    • parse

      public void parse(Reader reader)
      Parses SQL script.
      Parameters:
      reader - reader with SQL script.
    • parse

      public void parse(SqlTokenizer tok)
    • handleParameter

      protected String handleParameter(String name, boolean expression, boolean jdbcParam)
      Called when parameter is encountered in SQL.
      Parameters:
      name - parameter name or expression
      expression - true if specified name is an expression, not a simple property reference
      jdbcParam - true if parameter value should be passed as prepared statement parameter. Othewise it's value should be inserted into statement text.
      Returns:
      substituion string.
    • statementParsed

      protected void statementParsed(String sql)
      Invoked when SQL statement has been processed and all expressions handled.
      Parameters:
      sql - content of the preprocessed statement.