Package com.sas.rio

# Class MVADriver

java.lang.Object
com.sas.rio.MVADriver

All Implemented Interfaces:
  `Driver`

@SASScope("ALL") public class MVADriver extends Object implements Driver

MVADriver class implements the Driver interface.

The DriverManager will try to load as many drivers as it can find and then for any given connection request, it will ask each driver in turn to try to connect to the target URL.

When a Driver class is loaded, it should create an instance of itself and register it with the DriverManager. This means that a user can load and register a driver by doing Class.forName("foo.bah.Driver").

See Also:
  - `MVAConnection`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `acceptsURL(String url)`
  Returns True if the driver thinks that it can open a connection to the given URL, else returns False.
  `Connection`
  `connect(IDataService sasDataService, Properties info)`
  `Connection`
  `connect(String url, Properties info)`
  Attempts to make a database connection to the server specified by the URL.
  `static void`
  `deregisterDriver()`
  `int`
  `getMajorVersion()`
  Gets the driver's major version number.
  `int`
  `getMinorVersion()`
  Gets the driver's minor version number.
  `Logger`
  `getParentLogger()`
  `DriverPropertyInfo[]`
  `getPropertyInfo(String url, Properties info)`
  Gets a DriverPropertyInfo object that lists the properties for the SAS/Integrated Object Model driver for JDBC.
  `boolean`
  `jdbcCompliant()`
  Reports whether the Driver is a genuine JDBC COMPLIANT (tm) driver.

  ### Methods inherited from class java.lang.Object

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

- ## Method Details

  - ### connect

    public Connection connect(String url, Properties info) throws SQLException
    Attempts to make a database connection to the server specified by the URL. The driver returns a NULL if it determines that it is the wrong kind of driver to connect to the server. The driver raises an SQLException if it is the right driver to connect to the server, but cannot connect to the database.

    The connect method accepts a string representation of a URL and a java.util.Properties object as input.

    Specified by:
      `connect` in interface `Driver`
    Parameters:
      `url` - The URL of the database to connect to. The URL must be of the form: `jdbc:sasiom://hostname:portnumber`

      where `hostname` is the name of the machine where the MVA server is running, and `portnumber` is the port the MVA server is configured to use.

      `info` - A list of connection arguments as a Properties object. Properties for obtaining an MVAConnection are treated case-insensitively. The properties are as follows:

      applyFormats
        specifies whether or not column formats are applied when retrieving data. If the value is true, all data is returned as Strings. For any column, the format used is the one defined on the column in the data set. If "applyFormats" is set to false (the default case) no formatting is applied.
      dbms
        The name of the DBMS your program will access; the value must be eight characters padded with blanks. The default is "SQLVIEW ", which specifies that SAS data sets will be accessed. If you are not accessing SAS data, specify the name of the foreign DBMS as it is defined using SAS/ACCESS software.
      dbmsOptions
        Options for the foreign DBMS your program will access. Specify the options as you specify the database-definition arguments when using the PROC SQL statement CONNECT TO.
      encryptionAlgorithms
        The list of algorithms you are willing to use in order of preference. Values in the list should be separated by commas and chosen from
        - sasproprietary
        - rc2
        - rc4
        - aes
        - des
        - tripledes
        If no value is specified, the server's default encryption algorithm will be used.

        Note that the server's encryption policy is, by default, optional so no special action is needed to prepare an IOM BRIDGE server to use encryption. However, it is possible to set up the server so that encryption is required. Consult IOM BRIDGE server documentation for details.

      encryptionContent
        Specifies which messages should be encrypted if encryption is used. Valid values are:
        - all
        - encrypt all messages. This is the default.
        - authentication
        - encrypt only messages that contain user name and password information.
      encryptionPolicy
        Defines whether or not JavaBridge should attempt to negotiate with the server over which encryption algorithm to use and what to do if the negotiations fail. Valid values are:
        - none
        - do not use encryption. This is the default.
        - optional
        - attempt to use encryption but, if algorithm negotiation fails, continue with an unencrypted session
        - required
        - attempt to use encryption but, if algorithm negotiation fails, fail the connection
      host
        the name of the machine where the Workspace Server is running
      librefs
        A list of libnames and corresponding paths that specify the location of each Base SAS data set that your program will access. Only Base SAS data sets can be accessed with the `librefs`property. The `librefs` property value must be specified as: `(libname 'filepath'; libname 'filepath';...)```
      password
        The password that corresponds to the user you specify with the `user` property.
      remarks
        A Boolean value that determines whether the SAS/Integrated Object Model driver for JDBC returns the data set label for each data set in the library that your program accesses. If the value is True, the labels are returned; the default value is False.

        Note: When this property is set to True, any operation that involves reading and returning data set labels can result in poor performance because each data set must be opened in order to read the label. For example, if this property is set to True, performance may be degraded when using the MVADatabaseMetaData.getTables() method to retrieve a description of the tables in a catalog.

      segmentLength
        Specifies the segment (chunk) size value, in bytes, for character annotations when initially added to a SAS result set. This property is not used with result sets that already have annotations. The server uses the chunk size to define the buffer width (or chunking) of character extended attribute values. These values can span multiple chunks. The default value of the chunk size is 256 bytes.
      SPN
        The Service Principal Name for use with Kerberos.
      undoPolicyNone
        A Boolean value that determines whether changes to the data are undone when an UPDATE or INSERT statement generates errors. When the value is set to True (the recommended setting), the changes are not undone; when the value is set to False, the server attempts to undo the changes. The default value is `true`.
      user
        A valid user name for the Workspace server you specify in the URL.
      userName
        Deprecated. Replaced by `user`
    useSspi
      Specifies the Security Support Provider Interface for authentication. Valid Security Support Providers (SSPs) include None, Kerberos, NTLM, and Negotiate. The default value is "none".
    Note: Users have the ability to pass in properties embedded in the url. The syntax for this is "url?[attr=value]&[...]", where attr is a valid property name, and value is a valid name. If users make use of this functionality, then if properties are also passed in via the Properties object, the properties in the url will, in the case of conflicts, override those in the Properties object. This means that if a user specifies a libref (for example) in both the URL and in the Properties object, the libref in the url will be the one to take precedence, and the one in the Properties object will be ignored.
    Returns:
      A connection to the URL if the correct form of URL is used; otherwise, a NULL is returned.
    Throws:
      `SQLException` - This exception is thrown if a RIOException is detected.

  - ### connect

    public Connection connect(IDataService sasDataService, Properties info) throws SQLException
    Throws:
      `SQLException`

  - ### acceptsURL

    public boolean acceptsURL(String url) throws SQLException
    Returns True if the driver thinks that it can open a connection to the given URL, else returns False.
    Specified by:
      `acceptsURL` in interface `Driver`
    Parameters:
      `url` - The URL of the database.
    Returns:
      True if this driver can connect to the given URL.
    Throws:
      `SQLException` - This exception is required by the interface but it is never thrown.

  - ### getPropertyInfo

    public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException
    Gets a DriverPropertyInfo object that lists the properties for the SAS/Integrated Object Model driver for JDBC.
    Specified by:
      `getPropertyInfo` in interface `Driver`
    Parameters:
      `url` - The URL of the database to connect to.
      `info` - A list of tag/value pairs.
    Returns:
      An array of DriverPropertyInfo objects.
    Throws:
      `SQLException` - This exception is required by the interface but it is never thrown.
    See Also:
      - `connect(String, java.util.Properties)`

  - ### getMajorVersion

    public int getMajorVersion()
    Gets the driver's major version number.
    Specified by:
      `getMajorVersion` in interface `Driver`
    Returns:
      the driver's major version number.

  - ### getMinorVersion

    public int getMinorVersion()
    Gets the driver's minor version number.
    Specified by:
      `getMinorVersion` in interface `Driver`
    Returns:
      the driver's minor version number.

  - ### jdbcCompliant

    public boolean jdbcCompliant()
    Reports whether the Driver is a genuine JDBC COMPLIANT (tm) driver. A driver may only report "true" here if it passes the JDBC compliance tests, otherwise it is required to return false.
    Specified by:
      `jdbcCompliant` in interface `Driver`
    Returns:
      false.

  - ### deregisterDriver

    public static void deregisterDriver() throws SQLException
    Throws:
      `SQLException`

  - ### getParentLogger

    public Logger getParentLogger() throws SQLFeatureNotSupportedException
    Specified by:
      `getParentLogger` in interface `Driver`
    Throws:
      `SQLFeatureNotSupportedException`