diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java index 4889147..9375e7e 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java @@ -576,7 +576,7 @@ void populateList( Element root = xxx(request); for (Element o : childElements(root)) { if (o.getLocalName().equals("row")) { - handler.handle(o, context, list, this); + handler.handle(o, context, list); } } handler.sortList(list); @@ -812,7 +812,7 @@ public void handle(Element row, Context context, List list) { static class CubeHandler extends HandlerImpl { public void handle(Element row, Context context, - List list, XmlaOlap4jConnection connection) + List list) throws OlapException { /* @@ -837,13 +837,7 @@ public void handle(Element row, Context context, String description = stringElement(row, "DESCRIPTION"); list.add( new XmlaOlap4jCube( - context.olap4jSchema, cubeName, description, connection)); - } - - public void handle(Element row, Context context, - List list) throws OlapException { - throw new RuntimeException( - "A cube object needs a reference to the connection who created it."); + context.olap4jSchema, cubeName, description)); } } @@ -1284,28 +1278,6 @@ void handle( Context context, List list) throws OlapException; - /** - * Converts an XML element from an XMLA result set into a metadata - * element and appends it to a list of metadata elements. - * - * @param row XMLA element - * - * @param context Context (schema, cube, dimension, etc.) that the - * request was executed in and that the element will belong to - * - * @param list List of metadata elements to append new metadata element - * - * @param connection A reference to the connection object which populated - * the object. - * - * @throws OlapException on error - */ - void handle( - Element row, - Context context, - List list, - XmlaOlap4jConnection connection) throws OlapException; - /** * Sorts a list of metadata elements. * @@ -1322,19 +1294,6 @@ public void sortList(List list) { // do nothing - assume XMLA returned list in correct order } - /** - *

Default implementation of the handle method with a reference to the - * connection object. - * - * @see org.olap4j.driver.xmla.XmlaOlap4jConnection.Handler - * #handle(org.w3c.dom.Element, - * org.olap4j.driver.xmla.XmlaOlap4jConnection.Context, - * java.util.List, org.olap4j.driver.xmla.XmlaOlap4jConnection) - */ - public void handle(Element row, Context context, List list, - XmlaOlap4jConnection connection) throws OlapException { - this.handle(row, context, list); - } } static class Context { diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java b/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java index 1751b5b..d20e23b 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java @@ -45,7 +45,6 @@ class XmlaOlap4jCube implements Cube, Named private final NamedList namedSets = new NamedListImpl(); private final MetadataReader metadataReader; - private XmlaOlap4jConnection connection; /** * Creates an XmlaOlap4jCube. @@ -58,8 +57,7 @@ class XmlaOlap4jCube implements Cube, Named XmlaOlap4jCube( XmlaOlap4jSchema olap4jSchema, String name, - String description, - XmlaOlap4jConnection connection) throws OlapException + String description) throws OlapException { assert olap4jSchema != null; assert description != null; @@ -67,7 +65,6 @@ class XmlaOlap4jCube implements Cube, Named this.olap4jSchema = olap4jSchema; this.name = name; this.description = description; - this.connection = connection; this.metadataReader = new CachingMetadataReader( new RawMetadataReader()); @@ -436,8 +433,9 @@ public void lookupMembersByUniqueName( List memberUniqueNames, Map memberMap) throws OlapException { - if (connection.getDataSourceInfo() - .indexOf("Provider=Mondrian") != -1) + if (olap4jSchema.olap4jCatalog.olap4jDatabaseMetaData + .olap4jConnection.getDataSourceInfo() + .indexOf("Provider=Mondrian") != -1) //$NON-NLS-1$ { memberMap.putAll(this.mondrianMembersLookup(memberUniqueNames)); } else {