Class SQLBaseComponent

java.lang.Object
org.pentaho.platform.engine.core.system.PentahoBase
org.pentaho.platform.engine.services.PentahoMessenger
org.pentaho.platform.engine.services.solution.ComponentBase
org.pentaho.platform.plugin.action.sql.SQLBaseComponent
All Implemented Interfaces:
Serializable, org.pentaho.commons.connection.IDisposable, org.pentaho.platform.api.data.IDataComponent, org.pentaho.platform.api.data.IPreparedComponent, org.pentaho.platform.api.engine.IAuditable, org.pentaho.platform.api.engine.IComponent, org.pentaho.platform.api.engine.ILogger, org.pentaho.platform.api.engine.IParameterResolver
Direct Known Subclasses:
SQLLookupRule

public abstract class SQLBaseComponent extends org.pentaho.platform.engine.services.solution.ComponentBase implements org.pentaho.platform.api.data.IDataComponent, org.pentaho.platform.api.data.IPreparedComponent, org.pentaho.platform.api.engine.IParameterResolver
SQLBaseComponent is the base class for SQLExecute and SQLLookupRule. it does the majority of work when interacting with Pentaho's BI Platform, including implementing the necessary component features. It also implements IDataComponent and IPreparedComponent.
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected org.pentaho.commons.connection.IPentahoConnection
    reference to connection object
    protected boolean
    is set to false if using another IPreparedComponents connection vs own
    static final String
     
    protected List
    stores the prepared parameters for later use
    protected String
    stores the prepared query for later use

    Fields inherited from class org.pentaho.platform.engine.services.solution.ComponentBase

    COMPONENT_EXECUTE_FAIL, debug, MISSING_SESSION, UNKNOWN_COMPONENT_ID

    Fields inherited from class org.pentaho.platform.engine.core.system.PentahoBase

    EMPTYLOGID, loggingLevel, LOGID_MASK1, LOGID_MASK2, LOGID_SEPARATOR

    Fields inherited from interface org.pentaho.platform.api.engine.ILogger

    ACTIVITY_LOG, DEBUG, ERROR, FATAL, INFO, INSTANCE_LOG, SESSION_LOG, SOLUTION_LOG, TRACE, UNKNOWN, WARN

    Fields inherited from interface org.pentaho.platform.api.data.IPreparedComponent

    PREPARE_LATER_INTER_PREFIX, PREPARE_LATER_PLACEHOLDER, PREPARE_LATER_PREFIX, PREPARED_COMPONENT_NAME, PREPARED_OUTPUT_TYPE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    dispose of the resultset, and if the owner, dispose of the connection.
    void
    nothing to do in done call from runtime context.
    org.pentaho.commons.connection.IPentahoResultSet
    doQuery(SQLConnection sqlConnection, String query, boolean forwardOnlyResultset)
     
    protected boolean
    determines state of component, and executes accordingly.
    org.pentaho.commons.connection.IPentahoResultSet
    executePrepared(Map preparedParams)
    executes a prepared method that returns a result set executePrepared looks up any "PREPARELATER" params in the preparedParams map.
    protected org.pentaho.commons.connection.IPentahoConnection
    pass through to getConnection(defaultConnection)
    protected org.pentaho.commons.connection.IPentahoConnection
    getConnection(org.pentaho.commons.connection.IPentahoConnection defaultConnection)
    This method retrieves a connection based on the components inputs.
    org.pentaho.commons.connection.IPentahoConnection
    attempt to aquire a connection.
    abstract org.apache.commons.logging.Log
     
    int
     
    protected org.pentaho.commons.connection.IPentahoMetaData
    getMetadata(org.pentaho.commons.connection.IPentahoResultSet resultSet, boolean live)
    returns metadata based on the result set.
     
    int
     
    boolean
     
    abstract String
     
    org.pentaho.commons.connection.IPentahoResultSet
    returns the result set object
    boolean
    nothing is done in the init function
    protected boolean
    prepareQuery(String rawQuery)
    called when in prepared-component mode, this method populates the preparedQuery string and preparedParameters object.
    int
    resolveParameter(String template, String parameter, Matcher parameterMatcher, int copyStart, StringBuffer results)
    This method is called when TemplateUtil.applyTemplate() encounters a parameter.
    protected boolean
    runQuery(String rawQuery, boolean live)
    executes the specified query template.
    void
    setMaxRows(int value)
     
    void
    setQueryTimeout(int timeInSec)
     
    void
    setReadOnly(boolean value)
     
    org.pentaho.commons.connection.IPentahoConnection
    return this class's connection.
    boolean
    validates the action.
    abstract boolean
     
    protected void
    waitFor(int millis)
    pause the thread a certain number of milliseconds

    Methods inherited from class org.pentaho.platform.engine.services.solution.ComponentBase

    addTempParameter, addTempParameterObject, applyInputsToFormat, audit, createFeedbackParameter, createFeedbackParameter, createFeedbackParameter, createFeedbackParameter, createFeedbackParameter, createFeedbackParameter, createFeedbackParameter, createNewInstance, execute, feedbackAllowed, getActionDefinition, getActionName, getActionTitle, getComponentDefinition, getComponentDefinition, getContentOutputItem, getDefaultOutputStream, getFeedbackOutputStream, getId, getInitFailMessage, getInitOk, getInputBooleanValue, getInputLongValue, getInputNames, getInputParameter, getInputStream, getInputStringValue, getInputStringValue, getInputValue, getInstanceId, getLogId, getObjectName, getOutputContentItem, getOutputContentItem, getOutputItem, getOutputItem, getOutputNames, getOutputPreference, getProcessId, getResource, getResourceAsString, getResourceDataSource, getResourceInputStream, getResourceNames, getRuntimeContext, getSession, getSetting, getSolutionName, getSolutionPath, getStringSetting, inputMissingError, isDefinedInput, isDefinedOutput, isDefinedResource, isPromptPending, outputMissingError, promptNeeded, promptNow, resourceComponentSettingError, resourceMissingError, saveSetting, setActionDefinition, setActionName, setComponentDefinition, setComponentDefinitionMap, setFeedbackMimeType, setInstanceId, setOutputMimeType, setOutputMimeType, setOutputValue, setProcessId, setRuntimeContext, setSession, validate

    Methods inherited from class org.pentaho.platform.engine.services.PentahoMessenger

    debug, debug, error, error, error, fatal, fatal, getMessages, getUserString, info, info, setMessages, trace, trace, warn, warn

    Methods inherited from class org.pentaho.platform.engine.core.system.PentahoBase

    genLogIdFromInfo, genLogIdFromInfo, genLogIdFromSession, getLoggingLevel, setLoggingLevel, setLogId

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.pentaho.platform.api.engine.IAuditable

    getId, getObjectName

    Methods inherited from interface org.pentaho.platform.api.engine.IComponent

    execute, getActionDefinition, getActionName, getComponentDefinition, getInstanceId, getMessages, getProcessId, getRuntimeContext, getSession, setActionDefinition, setActionName, setComponentDefinition, setComponentDefinitionMap, setInstanceId, setMessages, setProcessId, setRuntimeContext, setSession, validate

    Methods inherited from interface org.pentaho.platform.api.engine.ILogger

    debug, debug, error, error, fatal, fatal, getLoggingLevel, info, info, setLoggingLevel, trace, trace, warn, warn
  • Field Details

    • PREPARE_PARAMETER_PREFIX

      public static final String PREPARE_PARAMETER_PREFIX
      See Also:
    • preparedQuery

      protected String preparedQuery
      stores the prepared query for later use
    • preparedParameters

      protected List preparedParameters
      stores the prepared parameters for later use
    • connectionOwner

      protected boolean connectionOwner
      is set to false if using another IPreparedComponents connection vs own
    • connection

      protected org.pentaho.commons.connection.IPentahoConnection connection
      reference to connection object
  • Constructor Details

    • SQLBaseComponent

      public SQLBaseComponent()
  • Method Details

    • validateSystemSettings

      public abstract boolean validateSystemSettings()
      Specified by:
      validateSystemSettings in class org.pentaho.platform.engine.services.solution.ComponentBase
    • getResultOutputName

      public abstract String getResultOutputName()
    • getLogger

      public abstract org.apache.commons.logging.Log getLogger()
      Specified by:
      getLogger in class org.pentaho.platform.engine.core.system.PentahoBase
    • getResultSet

      public org.pentaho.commons.connection.IPentahoResultSet getResultSet()
      returns the result set object
      Specified by:
      getResultSet in interface org.pentaho.platform.api.data.IDataComponent
      Returns:
      pentaho result set
    • validateAction

      public boolean validateAction()
      validates the action. checks to verify inputs are available to execute - verify query is available - verify connection is available, via jndi, connection string, or prepared component - verify output is specified
      Specified by:
      validateAction in class org.pentaho.platform.engine.services.solution.ComponentBase
    • done

      public void done()
      nothing to do in done call from runtime context.
      Specified by:
      done in interface org.pentaho.platform.api.engine.IComponent
      Specified by:
      done in class org.pentaho.platform.engine.services.solution.ComponentBase
    • executeAction

      protected boolean executeAction()
      determines state of component, and executes accordingly. various inputs that impact the state include: live - returns a live result set vs. an in memory copy transform - transform a result set based on additional inputs prepared_component - if available, use existing connection from prepared component max_rows - sets the number of rows that should be returned in result sets The specified output also impacts the state of the execution. If prepared_component is defined as an output, setup the query but delay execution.
      Specified by:
      executeAction in class org.pentaho.platform.engine.services.solution.ComponentBase
    • getMetadata

      protected org.pentaho.commons.connection.IPentahoMetaData getMetadata(org.pentaho.commons.connection.IPentahoResultSet resultSet, boolean live)
      returns metadata based on the result set. if not live, create an in memory version
      Parameters:
      resultSet - result set object to find metadata
      live - if false, create an in memory version
      Returns:
      metadata object
    • executePrepared

      public org.pentaho.commons.connection.IPentahoResultSet executePrepared(Map preparedParams)
      executes a prepared method that returns a result set executePrepared looks up any "PREPARELATER" params in the preparedParams map.
      Specified by:
      executePrepared in interface org.pentaho.platform.api.data.IPreparedComponent
      Parameters:
      preparedParams - a map of possible parameters.
      Returns:
      result set
    • prepareQuery

      protected boolean prepareQuery(String rawQuery)
      called when in prepared-component mode, this method populates the preparedQuery string and preparedParameters object.
      Parameters:
      rawQuery -
      Returns:
    • runQuery

      protected boolean runQuery(String rawQuery, boolean live)
      executes the specified query template. The query template is first formatted and then executed. If live, the original result set is made available as an output. If not live, the result set is converted into memory and the connection and live result set are closed.
      Parameters:
      rawQuery - query template
      live - returns original result set if true, memory result set if false
      Returns:
      true if successful
    • doQuery

      public org.pentaho.commons.connection.IPentahoResultSet doQuery(SQLConnection sqlConnection, String query, boolean forwardOnlyResultset) throws Exception
      Throws:
      Exception
    • dispose

      public void dispose()
      dispose of the resultset, and if the owner, dispose of the connection.
      Specified by:
      dispose in interface org.pentaho.platform.api.data.IDataComponent
      Specified by:
      dispose in interface org.pentaho.commons.connection.IDisposable
      Specified by:
      dispose in interface org.pentaho.platform.api.data.IPreparedComponent
    • resolveParameter

      public int resolveParameter(String template, String parameter, Matcher parameterMatcher, int copyStart, StringBuffer results)
      This method is called when TemplateUtil.applyTemplate() encounters a parameter. TemplateUtil.applyTemplate is called when someone makes a call to applyInputsToFormat() In this class it is called in the above "runQuery()" method.
      Specified by:
      resolveParameter in interface org.pentaho.platform.api.engine.IParameterResolver
      Overrides:
      resolveParameter in class org.pentaho.platform.engine.services.solution.ComponentBase
      Parameters:
      template - the source string
      parameter - the parameter value
      parameterMatcher - the regex parameter matcher
      copyStart - the start of the copy
      results - the output result
      Returns:
      the next copystart
    • getDatasourceConnection

      public org.pentaho.commons.connection.IPentahoConnection getDatasourceConnection()
      attempt to aquire a connection. if connection isn't available, wait a certain period of time before trying again.
      Returns:
      connection
    • waitFor

      protected void waitFor(int millis)
      pause the thread a certain number of milliseconds
      Parameters:
      millis - time to sleep
    • shareConnection

      public org.pentaho.commons.connection.IPentahoConnection shareConnection()
      return this class's connection. This implements the IPreparedComponent interface, which may share its connection with others.
      Specified by:
      shareConnection in interface org.pentaho.platform.api.data.IPreparedComponent
      Returns:
      connection object
    • getConnection

      protected org.pentaho.commons.connection.IPentahoConnection getConnection()
      pass through to getConnection(defaultConnection)
      Returns:
      connection
    • getConnection

      protected org.pentaho.commons.connection.IPentahoConnection getConnection(org.pentaho.commons.connection.IPentahoConnection defaultConnection)
      This method retrieves a connection based on the components inputs.
      Parameters:
      defaultConnection - a default connection to use if no other is available
      Returns:
      new connection object
    • init

      public boolean init()
      nothing is done in the init function
      Specified by:
      init in interface org.pentaho.platform.api.engine.IComponent
      Specified by:
      init in class org.pentaho.platform.engine.services.solution.ComponentBase
      Returns:
      true always
    • getQueryTimeout

      public int getQueryTimeout()
    • setQueryTimeout

      public void setQueryTimeout(int timeInSec)
    • getMaxRows

      public int getMaxRows()
    • setMaxRows

      public void setMaxRows(int value)
    • getQuery

      public String getQuery()
    • setReadOnly

      public void setReadOnly(boolean value)
    • getReadOnly

      public boolean getReadOnly()