Skip to content

Commit

Permalink
MONDRIAN: Generate a class containing version information for the ola…
Browse files Browse the repository at this point in the history
…p4j driver, so it doesn't get out of date.

[git-p4: depot-paths = "//open/mondrian/": change = 12704]
  • Loading branch information
julianhyde committed May 12, 2009
1 parent b4622bb commit d4cae0a
Show file tree
Hide file tree
Showing 7 changed files with 130 additions and 16 deletions.
19 changes: 19 additions & 0 deletions build.xml
Expand Up @@ -25,6 +25,10 @@
<property name="name" value="mondrian"/>
<property name="version" value="3.1-SNAPSHOT"/>
<property name="vendor" value="Pentaho"/>
<property name="driver.name" value="Mondrian olap4j driver"/>
<property name="driver.version" value="3.1.2"/>
<property name="driver.version.major" value="3"/>
<property name="driver.version.minor" value="102"/>
<!--
===================================================================
Set the properties related to paths
Expand Down Expand Up @@ -882,6 +886,21 @@ in {mondrian.foodmart.jdbcURL}.">
Version: ${version}
Vendor: ${vendor}
</echo>
<echo file="${java.dir}/mondrian/olap4j/MondrianOlap4jDriverVersion.java">/*
* Project version information. Generated - do not modify.
*/
package mondrian.olap4j;
/**
* Version information for the Mondrian olap4j driver. (Generated.)
*/
class MondrianOlap4jDriverVersion {
static final String NAME = "${driver.name}";
static final String VERSION = "${driver.version}";
static final int MAJOR_VERSION = ${driver.version.major};
static final int MINOR_VERSION = ${driver.version.minor};
}

// End MondrianOlap4jDriverVersion.java</echo>
</target>

<target name="srczip" depends="version">
Expand Down
47 changes: 46 additions & 1 deletion src/main/mondrian/olap4j/Factory.java
Expand Up @@ -27,23 +27,68 @@
* @since Jun 14, 2007
*/
interface Factory {
Connection newConnection(String url, Properties info) throws SQLException;
/**
* Creates a connection.
*
* @param driver Driver
* @param url URL of server
* @param info Properties defining the connection
* @return Connection
* @throws SQLException on error
*/
Connection newConnection(
MondrianOlap4jDriver driver,
String url,
Properties info) throws SQLException;

/**
* Creates an empty result set.
*
* @param olap4jConnection Connection
* @return Result set
*/
EmptyResultSet newEmptyResultSet(
MondrianOlap4jConnection olap4jConnection);

/**
* Creates a result set with a fixed set of rows.
*
* @param olap4jConnection Connection
* @param headerList Column headers
* @param rowList Row values
* @return Result set
*/
ResultSet newFixedResultSet(
MondrianOlap4jConnection olap4jConnection,
List<String> headerList,
List<List<Object>> rowList);

/**
* Creates a cell set.
*
* @param olap4jStatement Statement
* @return Cell set
*/
MondrianOlap4jCellSet newCellSet(
MondrianOlap4jStatement olap4jStatement,
Query query);

/**
* Creates a prepared statement.
*
* @param mdx MDX query text
* @param olap4jConnection Connection
* @return Prepared statement
*/
MondrianOlap4jPreparedStatement newPreparedStatement(
String mdx, MondrianOlap4jConnection olap4jConnection);

/**
* Creates a metadata object.
*
* @param olap4jConnection Connection
* @return Metadata object
*/
MondrianOlap4jDatabaseMetaData newDatabaseMetaData(
MondrianOlap4jConnection olap4jConnection);
}
Expand Down
6 changes: 4 additions & 2 deletions src/main/mondrian/olap4j/FactoryJdbc3Impl.java
Expand Up @@ -23,11 +23,12 @@
*/
class FactoryJdbc3Impl implements Factory {
public Connection newConnection(
MondrianOlap4jDriver driver,
String url,
Properties info)
throws SQLException
{
return new MondrianOlap4jConnectionJdbc3(url, info);
return new MondrianOlap4jConnectionJdbc3(driver, url, info);
}

public EmptyResultSet newEmptyResultSet(
Expand Down Expand Up @@ -104,10 +105,11 @@ private class MondrianOlap4jConnectionJdbc3
extends MondrianOlap4jConnection
{
public MondrianOlap4jConnectionJdbc3(
MondrianOlap4jDriver driver,
String url,
Properties info) throws SQLException
{
super(FactoryJdbc3Impl.this, url, info);
super(FactoryJdbc3Impl.this, driver, url, info);
}
}

Expand Down
6 changes: 4 additions & 2 deletions src/main/mondrian/olap4j/FactoryJdbc4Impl.java
Expand Up @@ -30,11 +30,12 @@
*/
class FactoryJdbc4Impl implements Factory {
public Connection newConnection(
MondrianOlap4jDriver driver,
String url,
Properties info)
throws SQLException
{
return new MondrianOlap4jConnectionJdbc4(this, url, info);
return new MondrianOlap4jConnectionJdbc4(this, driver, url, info);
}

public EmptyResultSet newEmptyResultSet(
Expand Down Expand Up @@ -324,10 +325,11 @@ private static class MondrianOlap4jConnectionJdbc4
{
MondrianOlap4jConnectionJdbc4(
Factory factory,
MondrianOlap4jDriver driver,
String url,
Properties info) throws SQLException
{
super(factory, url, info);
super(factory, driver, url, info);
}

public OlapStatement createStatement() {
Expand Down
4 changes: 4 additions & 0 deletions src/main/mondrian/olap4j/MondrianOlap4jConnection.java
Expand Up @@ -71,6 +71,7 @@ abstract class MondrianOlap4jConnection implements OlapConnection {
private static final String CONNECT_STRING_PREFIX = "jdbc:mondrian:";

final Factory factory;
final MondrianOlap4jDriver driver;
private Locale locale;
private String roleName;
private boolean autoCommit;
Expand All @@ -86,17 +87,20 @@ abstract class MondrianOlap4jConnection implements OlapConnection {
* @pre acceptsURL(url)
*
* @param factory Factory
* @param driver Driver
* @param url Connect-string URL
* @param info Additional properties
* @throws SQLException if there is an error
*/
MondrianOlap4jConnection(
Factory factory,
MondrianOlap4jDriver driver,
String url,
Properties info)
throws SQLException
{
this.factory = factory;
this.driver = driver;
if (!acceptsURL(url)) {
// This is not a URL we can handle.
// DriverManager should not have invoked us.
Expand Down
27 changes: 23 additions & 4 deletions src/main/mondrian/olap4j/MondrianOlap4jDatabaseMetaData.java
Expand Up @@ -42,6 +42,11 @@ abstract class MondrianOlap4jDatabaseMetaData implements OlapDatabaseMetaData {
private final MondrianOlap4jCatalog olap4jCatalog =
new MondrianOlap4jCatalog(this);

/**
* Creates a MondrianOlap4jDatabaseMetaData.
*
* @param olap4jConnection Connection
*/
MondrianOlap4jDatabaseMetaData(
MondrianOlap4jConnection olap4jConnection)
{
Expand Down Expand Up @@ -91,12 +96,26 @@ private ResultSet getMetadata(
olap4jConnection, rowset.headerList, rowset.rowList);
}

/**
* Wraps a string in an object that indicates that it is to be treated as
* a wildcard pattern, not a literal match.
*
* @param pattern Pattern
* @return Wildcard, or null if pattern is null
*/
private XmlaUtil.Wildcard wildcard(String pattern) {
return pattern == null
? null
: new XmlaUtil.Wildcard(pattern);
}

/**
* Returns the catalogs in this database.
*
* Intentionally package-protected; not part of the JDBC or olap4j API.
*
* @return List of catalogs in this database
*/
// package-protected
NamedList<Catalog> getCatalogObjects() {
NamedList<MondrianOlap4jCatalog> list =
Expand Down Expand Up @@ -154,19 +173,19 @@ public String getDatabaseProductVersion() throws SQLException {
}

public String getDriverName() throws SQLException {
return MondrianOlap4jDriver.NAME;
return olap4jConnection.driver.getName();
}

public String getDriverVersion() throws SQLException {
return MondrianOlap4jDriver.VERSION;
return olap4jConnection.driver.getVersion();
}

public int getDriverMajorVersion() {
return MondrianOlap4jDriver.MAJOR_VERSION;
return olap4jConnection.driver.getMajorVersion();
}

public int getDriverMinorVersion() {
return MondrianOlap4jDriver.MINOR_VERSION;
return olap4jConnection.driver.getMinorVersion();
}

public boolean usesLocalFiles() throws SQLException {
Expand Down
37 changes: 30 additions & 7 deletions src/main/mondrian/olap4j/MondrianOlap4jDriver.java
Expand Up @@ -62,10 +62,6 @@
* @since May 22, 2007
*/
public class MondrianOlap4jDriver implements Driver {
public static final String NAME = "Mondrian olap4j driver";
public static final String VERSION = "2.4";
public static final int MAJOR_VERSION = 2;
public static final int MINOR_VERSION = 4;
private final Factory factory;

static {
Expand All @@ -76,6 +72,9 @@ public class MondrianOlap4jDriver implements Driver {
}
}

/**
* Creates a MondrianOlap4jDriver.
*/
MondrianOlap4jDriver() {
String factoryClassName;
try {
Expand All @@ -98,6 +97,14 @@ public class MondrianOlap4jDriver implements Driver {
}
}

/**
* Registers an instance of MondrianOlap4jDriver.
*
* <p>Called implicitly on class load, and implements the traditional
* 'Class.forName' way of registering JDBC drivers.
*
* @throws SQLException on error
*/
private static void register() throws SQLException {
DriverManager.registerDriver(new MondrianOlap4jDriver());
}
Expand All @@ -106,7 +113,7 @@ public Connection connect(String url, Properties info) throws SQLException {
if (!MondrianOlap4jConnection.acceptsURL(url)) {
return null;
}
return factory.newConnection(url, info);
return factory.newConnection(this, url, info);
}

public boolean acceptsURL(String url) throws SQLException {
Expand Down Expand Up @@ -138,12 +145,28 @@ public DriverPropertyInfo[] getPropertyInfo(
return list.toArray(new DriverPropertyInfo[list.size()]);
}

/**
* Returns the driver name. Not in the JDBC API.
* @return Driver name
*/
String getName() {
return MondrianOlap4jDriverVersion.NAME;
}

/**
* Returns the driver version. Not in the JDBC API.
* @return Driver version
*/
String getVersion() {
return MondrianOlap4jDriverVersion.VERSION;
}

public int getMajorVersion() {
return MAJOR_VERSION;
return MondrianOlap4jDriverVersion.MAJOR_VERSION;
}

public int getMinorVersion() {
return MINOR_VERSION;
return MondrianOlap4jDriverVersion.MINOR_VERSION;
}

public boolean jdbcCompliant() {
Expand Down

0 comments on commit d4cae0a

Please sign in to comment.