Class JaninoQuery

java.lang.Object
scriptella.driver.janino.JaninoScript
scriptella.driver.janino.JaninoQuery
All Implemented Interfaces:
ParametersCallback

public abstract class JaninoQuery extends JaninoScript implements ParametersCallback
A base class for Janino <query> elements.

This class exposes a simplified query API. The concept of this API is the following:

  • A virtual row is produced by calling set(String, Object) for each virtual column.
  • next() is called to process this row by nested scripting elements.
Additionally a helper method exists to make iterating even simpler.

Virtual rows may also be constructed from Map or Properties.

Public members of this class are available in Janino scripting elements.

Examples:

The following query produces two virtual rows:

idnameage
123John20
200Mary
 <query>
    set("id", "123"); //set row column
    set("name", "John");
    set("age", new Integer(20));
    next();//sends a virtual row for processing
    set("id", "200");
    set("name", "Mary");
    next();
 </query>
 
The same effect may achieved using the following code:
 <query>
    String[] names = new String[] {"id", "name", "age"};
    next(names, new Object[] {"123", "John", new Integer(20)};
    next(names, new Object[] {"200", "Mary", null)};
 </query>
 

Assume you have a map(or Properties) with the following mapping:
id->123, name->John, age->20
A virtual row is produced using this code:

 <query>
    //fill a map or load properties file
    next(map};
 </query>
 
Version:
1.0
Author:
Fyodor Kupolov
  • Constructor Details

    • JaninoQuery

      public JaninoQuery()
  • Method Details

    • getQueryCallback

      public final QueryCallback getQueryCallback()
    • getParameter

      public final Object getParameter(String name)
      Description copied from interface: ParametersCallback
      Returns the value of parameter specified by name.

      The callback internally delegates a call to parent callbacks if the parameter cannot be found.

      Specified by:
      getParameter in interface ParametersCallback
      Parameters:
      name - parameter name. Providers are allowed (but not required) to ignore a case of the name parameter to comply with their internal model. For example JDBC drivers are case-insensitive to column names.
      Returns:
      parameter value or null if parameter doesn't exist.
    • set

      public final void set(String name, Object value)
      Sets a value for specified parameter name.

      This parameter becomes visible to nested scripting elements after next() method is called.

      This method is available inside Janino <query> element.

      Parameters:
      name - parameter name
      value - parameter value.
    • set

      public final void set(Map<String,?> parametersMap)
      Fills the virtual row using parameters from specified map.

      This method is available inside Janino <query> element.

      Parameters:
      parametersMap - map of parameters, where key is a variable name
    • next

      public final void next()
      Moves to the next virtual row.

      Nested scripting elements are evaluated and the parameters set by set(String, Object) method are available to them.

      Note: The values of all parameters set via set(String, Object) method are cleared(or restored).

      This method is available inside Janino <query> element.

    • next

      public final void next(String[] parameterNames, Object[] values)
      Produces a virtual row based on the specified columns.

      A serie of parameter setters is performed. After parameters for the current row have been set, next() method is invoked.

      This method is available inside Janino <query> element.

      Parameters:
      parameterNames - array of parameter names.
      values - array of parameter values, i.e. value[i] specifies a value for parameter[i].
    • next

      public final void next(Map<String,?> parametersMap)
      Produces a virtual row based on the specified columns.

      Parameters are set via set(java.util.Map) method. After parameters for the current row have been set, next() method is invoked.

      This method is available inside Janino <query> element.

      Parameters:
      parametersMap - map of parameters.
    • toString

      public String toString()
      Overrides:
      toString in class Object