Class JDBCResourceConnector

All Implemented Interfaces:
AuditLoggingComponent, SecureConnectorExtension, VirtualConnectorExtension

public class JDBCResourceConnector extends ConnectorBase implements AuditLoggingComponent
JDBCResourceConnector provides basic implementation of DataSource interface in order to get a Connection to target database. This is done via a static inner class, since DataSource.getConnection() clashes with ConnectorBase.getConnection().

The DataSource can be used directly. There are also selected methods to issue common SQL statements to the database.
  • Constructor Details

    • JDBCResourceConnector

      public JDBCResourceConnector()
  • Method Details

    • setAuditLog

      public void setAuditLog(AuditLog auditLog)
      Receive an audit log object that can be used to record audit log messages. The caller has initialized it with the correct component description and log destinations.
      Specified by:
      setAuditLog in interface AuditLoggingComponent
      Parameters:
      auditLog - audit log object
    • getConnectorComponentDescription

      public ComponentDescription getConnectorComponentDescription()
      Return the component description that is used by this connector in the audit log.
      Specified by:
      getConnectorComponentDescription in interface AuditLoggingComponent
      Returns:
      id, name, description, wiki page URL.
    • start

      public void start() throws ConnectorCheckedException
      Indicates that the connector is completely configured and can begin processing.
      Overrides:
      start in class ConnectorBase
      Throws:
      ConnectorCheckedException - there is a problem within the connector.
    • getDatabaseName

      public String getDatabaseName()
      Return the name of the database.
      Returns:
      string name
    • getDataSource

      public DataSource getDataSource()
      Return the DataSource implementation for this database. This supports creating the connection to the database.
      Returns:
      DataSource
    • getLatestRow

      public Map<String,JDBCDataValue> getLatestRow(Connection jdbcConnection, String tableName, String identifierColumnName, String identifierColumnValue, String timestampColumnName, Map<String,Integer> columnNameTypeMap) throws SQLException
      Retrieve the row with the requested identifier and with the latest timestamp.
      Parameters:
      jdbcConnection - connection to the database
      tableName - name of the table to query
      identifierColumnName - name of the column with the identifier in it
      identifierColumnValue - value of the identifier to match on
      timestampColumnName - name of the column with the timestamp
      columnNameTypeMap - map of resulting column names and values to include in the results
      Returns:
      Map of column names to data values that represent the requested row
      Throws:
      SQLException - there was a problem calling the database
    • insertRowIntoTable

      public void insertRowIntoTable(Connection jdbcConnection, String tableName, Map<String,JDBCDataValue> columnNameValueMap) throws SQLException
      Prepare an INSERT SQL statement with all the columns for the new row filled out.
      Parameters:
      jdbcConnection - connection to send the request
      tableName - name of the table where the row is to be added
      columnNameValueMap - column names, values and types
      Throws:
      SQLException - problem executing the command
    • disconnect

      public void disconnect() throws ConnectorCheckedException
      Free up any resources held since the connector is no longer needed.
      Overrides:
      disconnect in class ConnectorBase
      Throws:
      ConnectorCheckedException - there is a problem within the connector.