Class XmlaOlap4jDriver

  • All Implemented Interfaces:
    java.sql.Driver

    public class XmlaOlap4jDriver
    extends java.lang.Object
    implements java.sql.Driver
    Olap4j driver for generic XML for Analysis (XMLA) providers.

    Since olap4j is a superset of JDBC, you register this driver as you would any JDBC driver:

    Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver");
    Then create a connection using a URL with the prefix "jdbc:xmla:". For example,
    import java.sql.Connection;
    import java.sql.DriverManager;
    import org.olap4j.OlapConnection;

    Connection connection =
       DriverManager.getConnection(
          "jdbc:xmla:");
    OlapConnection olapConnection =
       connection.unwrap(OlapConnection.class);

    Note how we use the java.sql.Connection#unwrap(Class) method to down-cast the JDBC connection object to the extension OlapConnection object. This method is only available in JDBC 4.0 (JDK 1.6 onwards).

    Connection properties

    Unless otherwise stated, properties are optional. If a property occurs multiple times in the connect string, the first occurrence is used.

    It is also possible to pass properties to the server end-point using JDBC connection properties as part of the XMLA driver connection properties. If the JDBC URL contains properties that are not enumerated in XmlaOlap4jDriver.Property, they will be included as part of the SOAP PropertyList element.

    Property Description
    Server URL of HTTP server. Required.
    Catalog Catalog name to use. By default, the first one returned by the XMLA server will be used.
    Schema Schema name to use. By default, the first one returned by the XMLA server will be used.
    Database Name of the XMLA database. By default, the first one returned by the XMLA server will be used.
    Cache

    Class name of the SOAP cache to use. Must implement interface XmlaOlap4jCachedProxy. A built-in memory cache is available with XmlaOlap4jNamedMemoryCache.

    By default, no SOAP query cache will be used.

    Cache.* Properties to transfer to the selected cache implementation. See XmlaOlap4jCache or your selected implementation for properties details.
    TestProxyCookieString that uniquely identifies a proxy object in PROXY_MAP via which to send XMLA requests for testing purposes.
    Role Comma separated list of role names used for this connection (Optional).
    Available role names can be retrieved via OlapConnection.getAvailableRoleNames()
    User User name to use when establishing a connection to the server. The credentials are passed using the HTTP Basic authentication protocol, but are also sent as part of the SOAP Security headers.
    Password Password to use when establishing a connection to the server. The credentials are passed using the HTTP Basic authentication protocol, but are also sent as part of the SOAP Security headers.
    Since:
    May 22, 2007
    Author:
    jhyde, Luc Boudreau
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  XmlaOlap4jDriver.Property
      Properties supported by this driver.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.util.Map<java.lang.String,​XmlaOlap4jProxy> PROXY_MAP
      For testing.
    • Constructor Summary

      Constructors 
      Constructor Description
      XmlaOlap4jDriver()
      Creates an XmlaOlap4jDriver.
    • Field Detail

      • PROXY_MAP

        public static final java.util.Map<java.lang.String,​XmlaOlap4jProxy> PROXY_MAP
        For testing. Map from a cookie value (which is uniquely generated for each test) to a proxy object. Uses a weak hash map so that, if the code that created the proxy 'forgets' the cookie value, then the proxy can be garbage-collected.
    • Constructor Detail

      • XmlaOlap4jDriver

        public XmlaOlap4jDriver()
        Creates an XmlaOlap4jDriver.
    • Method Detail

      • connect

        public java.sql.Connection connect​(java.lang.String url,
                                           java.util.Properties info)
                                    throws java.sql.SQLException
        Specified by:
        connect in interface java.sql.Driver
        Throws:
        java.sql.SQLException
      • acceptsURL

        public boolean acceptsURL​(java.lang.String url)
                           throws java.sql.SQLException
        Specified by:
        acceptsURL in interface java.sql.Driver
        Throws:
        java.sql.SQLException
      • getPropertyInfo

        public java.sql.DriverPropertyInfo[] getPropertyInfo​(java.lang.String url,
                                                             java.util.Properties info)
                                                      throws java.sql.SQLException
        Specified by:
        getPropertyInfo in interface java.sql.Driver
        Throws:
        java.sql.SQLException
      • getVersion

        public java.lang.String getVersion()
        Returns the driver version. Not in the JDBC API.
        Returns:
        Driver version
      • getMajorVersion

        public int getMajorVersion()
        Specified by:
        getMajorVersion in interface java.sql.Driver
      • getMinorVersion

        public int getMinorVersion()
        Specified by:
        getMinorVersion in interface java.sql.Driver
      • jdbcCompliant

        public boolean jdbcCompliant()
        Specified by:
        jdbcCompliant in interface java.sql.Driver
      • getParentLogger

        public java.util.logging.Logger getParentLogger()
        Specified by:
        getParentLogger in interface java.sql.Driver
      • getFuture

        public static java.util.concurrent.Future<byte[]> getFuture​(XmlaOlap4jProxy proxy,
                                                                    XmlaOlap4jServerInfos serverInfos,
                                                                    java.lang.String request)
        Returns a future object representing an asynchronous submission of an XMLA request to a URL.
        Parameters:
        proxy - Proxy via which to send the request
        serverInfos - Server infos.
        request - Request
        Returns:
        Future object from which the byte array containing the result of the XMLA call can be obtained
      • nextCookie

        public static java.lang.String nextCookie()
        Generates and returns a unique string.
        Returns:
        unique string