java.lang.Object
de.aristaflow.adept2.core.eventmanager.common.AbstractEventSource<ResultSetEvent>
de.aristaflow.adept2.core.eventmanager.dbevents.DBEventSource
All Implemented Interfaces:
EventSource<ResultSetEvent>, PollingSource<ResultSetEvent>, ResultSetSource, Runnable
Direct Known Subclasses:
DBActivityEventSource, ReadOnlyRSEventSource

public class DBEventSource extends AbstractEventSource<ResultSetEvent> implements PollingSource<ResultSetEvent>, ResultSetSource
A source for events based on SQL statements, that is a SQL statement is executed regularly and the result set (if one exists) is notified as event to the corresponding event handler.
This event source terminates as soon as an event has been handled by all registered handler.

To simplify events caused by non-existence, the event source can be configured to send the event only if the result set is empty. In this case the empty result set will be attached to the event.

  • Field Details

    • pollTime

      protected Long pollTime
      The time in milliseconds this event source polls its data source.
    • startTime

      protected Long startTime
      The start point (in milliseconds) this event should start polling.
    • dataSource

      protected String dataSource
      The simple instance name of the data source which to poll for the event. This is not required if the driver, the connection URL, the user name and the password are provided instead. If all are provided, the data source will be used.
    • jdbcDriver

      protected String jdbcDriver
      The fully-qualified name of the class of the JDBC-driver. This is only required if no data source is provided.
    • jdbcConnectionURL

      protected String jdbcConnectionURL
      The URL to connect to the database. This is only required if no data source is provided.
    • jdbcUserName

      protected String jdbcUserName
      The name of the user to log on at the database with. This is only required if no data source is provided.
    • jdbcPassword

      protected String jdbcPassword
      The password to log on a the database with. This is only required if no data source is provided.
    • selectStatement

      protected String selectStatement
      The statement which is executed and provides the result set for the event.
    • notifyEmptyOnly

      protected Boolean notifyEmptyOnly
      Whether the event should be produced in case the result set is empty.
    • eventManager

      protected final DefaultEventManager eventManager
      The event manager of this data source providing the connection to the data source.
  • Constructor Details

  • Method Details

    • setConfiguration

      protected void setConfiguration(Configuration conf, boolean completed) throws ConfigurationException
      Sets the internal fields according to the values of the designated configuration. Note that this method is called from the constructor and therefore this object may not be fully initialised!
      Parameters:
      conf - The configuration from which to get the configuration values.
      completed - Whether the configuration is complete after this setting and therefore the values should be verified.
      Throws:
      ConfigurationException - If there are problems with the configuration, for instance the configuration does not provide required values, a ConfigurationException may be thrown.
    • verifyConfigurationValues

      protected void verifyConfigurationValues() throws ConfigurationException
      This method verifies whether the required configuration values and the data context have been set yet. If configuration values or the data context are missing or inappropriate, a ConfigurationException will be thrown.
      Throws:
      ConfigurationException - If there are problems with the configuration, for instance the configuration does not provide required values or the data context is not set, a ConfigurationException may be thrown.
    • setConfiguration

      public void setConfiguration(Configuration conf, String id) throws ConfigurationException
      Description copied from interface: EventSource
      Sets the (additional) configuration of this event source and its ID. The configuration is additional with respect to the configuration provided by the plugin load mechanism, if the event source is loaded as plugin.
      It is ensured that this method will be called before Runnable.run().
      Specified by:
      setConfiguration in interface EventSource<ResultSetEvent>
      Overrides:
      setConfiguration in class AbstractEventSource<ResultSetEvent>
      Parameters:
      conf - The configuration of this event source. This adheres (and overwrites) the configuration provided by the plugin loading, if this event source has been loaded as plugin. Whether this is allowed to be null depends on the implementation of the event source.
      id - The ID of this event source. This must not be null nor the empty string.
      Throws:
      ConfigurationException - If there are problems with the designated configuration (configuration is null although this is not allowed, a required configuration value is missing, ...), a ConfigurationException will be thrown.
    • getPollTime

      public long getPollTime()
      Description copied from interface: PollingSource
      Gets the time in milliseconds this event source polls, more precisely, the time span between two polls. If this is 0 or negative, no polling will apply. However, PollingSource.init() and PollingSource.terminate() will be called.
      Specified by:
      getPollTime in interface PollingSource<ResultSetEvent>
      Returns:
      The time in milliseconds this event source polls (> 0).
    • getStartTime

      public long getStartTime()
      Description copied from interface: PollingSource
      Gets the absolute time in milliseconds since midnight, January 1, 1970 UTC when this polling source should start polling. This is used for calculating the first poll time by adding the time span defined in PollingSource.getPollTime().
      Specified by:
      getStartTime in interface PollingSource<ResultSetEvent>
      Returns:
      The absolute time in milliseconds since midnight, January 1, 1970 UTC when this polling source should start polling.
    • checkForAndHandleEvent

      public void checkForAndHandleEvent()
      Description copied from class: AbstractEventSource
      Checks for an event and handles it (usually by using AbstractEventSource.forwardEvent(Event, boolean, boolean)).
      Specified by:
      checkForAndHandleEvent in class AbstractEventSource<ResultSetEvent>
    • createResultSetEvent

      protected ResultSetEvent createResultSetEvent(ResultSet resultSet)
      Creates a ResultSetEvent for the designated result set.
      Parameters:
      resultSet - The result set for which to create a ResultSetEvent.
      Returns:
      The ResultSetEvent created for the designated result set.
    • nextHandler

      protected boolean nextHandler(ResultSetEvent event, boolean consumed, boolean concurrent)
      Description copied from class: AbstractEventSource
      This method is called right before an event is offered to the next handler. In case of concurrent handling, this method will only be called once for all concurrent handling but this will be indicated by the corresponding parameter.
      Specified by:
      nextHandler in class AbstractEventSource<ResultSetEvent>
      Parameters:
      event - The event which is about to be handled by the next registered handler.
      consumed - Whether the event has been consumed yet.
      concurrent - Whether the next event handling is concurrent and thus the event will be offered to several event handler concurrently.
      Returns:
      Whether the event handling may continue. In case of serious problems preventing further event handling, return false here.