Skip to content

Commit

Permalink
Fixed a few code style issues, a result set which wasn't closed and s…
Browse files Browse the repository at this point in the history
…ome missing blocks.

git-svn-id: https://olap4j.svn.sourceforge.net/svnroot/olap4j/trunk@87 c6a108a4-781c-0410-a6c6-c2d559e19af0
  • Loading branch information
lucboudreau committed Apr 11, 2008
1 parent dc08e7c commit b9756d6
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 74 deletions.
130 changes: 57 additions & 73 deletions src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,66 +8,25 @@
*/
package org.olap4j.driver.xmla;

import static org.olap4j.driver.xmla.XmlaOlap4jUtil.ROWSET_NS;
import static org.olap4j.driver.xmla.XmlaOlap4jUtil.SOAP_NS;
import static org.olap4j.driver.xmla.XmlaOlap4jUtil.XMLA_NS;
import static org.olap4j.driver.xmla.XmlaOlap4jUtil.booleanElement;
import static org.olap4j.driver.xmla.XmlaOlap4jUtil.childElements;
import static org.olap4j.driver.xmla.XmlaOlap4jUtil.findChild;
import static org.olap4j.driver.xmla.XmlaOlap4jUtil.integerElement;
import static org.olap4j.driver.xmla.XmlaOlap4jUtil.parse;
import static org.olap4j.driver.xmla.XmlaOlap4jUtil.stringElement;

import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.sql.Savepoint;
import java.sql.Statement;
import java.util.AbstractMap;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.regex.Pattern;

import org.olap4j.Cell;
import org.olap4j.OlapConnection;
import org.olap4j.OlapDatabaseMetaData;
import org.olap4j.OlapException;
import org.olap4j.OlapStatement;
import org.olap4j.PreparedOlapStatement;
import org.olap4j.impl.ConnectStringParser;
import org.olap4j.impl.Named;
import org.olap4j.impl.Olap4jUtil;
import org.olap4j.*;
import static org.olap4j.driver.xmla.XmlaOlap4jUtil.*;
import org.olap4j.impl.*;
import org.olap4j.mdx.ParseTreeWriter;
import org.olap4j.mdx.SelectNode;
import org.olap4j.mdx.parser.MdxParser;
import org.olap4j.mdx.parser.MdxParserFactory;
import org.olap4j.mdx.parser.MdxValidator;
import org.olap4j.mdx.parser.*;
import org.olap4j.mdx.parser.impl.DefaultMdxParserImpl;
import org.olap4j.metadata.Catalog;
import org.olap4j.metadata.Datatype;
import org.olap4j.metadata.Dimension;
import org.olap4j.metadata.Level;
import org.olap4j.metadata.Measure;
import org.olap4j.metadata.Member;
import org.olap4j.metadata.NamedList;
import org.olap4j.metadata.Property;
import org.olap4j.metadata.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;

import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.*;
import java.util.*;
import java.util.regex.Pattern;

/**
* Implementation of {@link org.olap4j.OlapConnection}
* for XML/A providers.
Expand All @@ -81,12 +40,12 @@
*/
abstract class XmlaOlap4jConnection implements OlapConnection {
/**
* Handler for errors.
* <p>Handler for errors.
*/
final Helper helper = new Helper();

/**
* Current schema.
* <p>Current schema.
*/
final XmlaOlap4jSchema olap4jSchema;

Expand All @@ -101,7 +60,7 @@ abstract class XmlaOlap4jConnection implements OlapConnection {
private boolean closed;

/**
* URL of the HTTP server to which to send XML requests.
* <p>URL of the HTTP server to which to send XML requests.
*/
final URL serverUrl;

Expand All @@ -111,30 +70,30 @@ abstract class XmlaOlap4jConnection implements OlapConnection {
private String roleName;

/**
* Holds on to the provider name
* <p>Holds on to the provider name
*/
private String providerName = null;

/**
* Holds on to the datasource name.
* <p>Holds on to the datasource name.
*/
private String datasourceName = null;

/**
* Holds on to the datasource name as specified by the
* <p>Holds on to the datasource name as specified by the
* server. Some servers (mondrian...) return both the provider
* name and the datasource name in their response.
*
* It's bad but hey, you gotta live with it.
* <p>It's bad but hey, you gotta live with it.
*
* It's this value that we use inside queries, and not the jdbc
*<p> It's this value that we use inside queries, and not the jdbc
* query value.
*
*/
private String nativeDatasourceName = null;

/**
* Creates an Olap4j connection an XML/A provider.
* <p>Creates an Olap4j connection an XML/A provider.
*
* <p>This method is intentionally package-protected. The public API
* uses the traditional JDBC {@link java.sql.DriverManager}.
Expand Down Expand Up @@ -223,12 +182,16 @@ String getDataSourceInfo() throws OlapException
{
// If we already know it, return it.
if ( this.nativeDatasourceName != null )
{
return this.nativeDatasourceName;
}

ResultSet rSet = null;

try
{
// We need to query for it
ResultSet rSet = this.olap4jDatabaseMetaData.getDatasources();
rSet = this.olap4jDatabaseMetaData.getDatasources();



Expand Down Expand Up @@ -257,7 +220,7 @@ String getDataSourceInfo() throws OlapException
)
{
// Got it
this.nativeDatasourceName = rSet.getString("DATA_SOURCE_NAME");
this.nativeDatasourceName = rSet.getString("DATA_SOURCE_NAME"); //$NON-NLS-1$
break datasources;
}

Expand All @@ -272,18 +235,37 @@ String getDataSourceInfo() throws OlapException
this.nativeDatasourceName = rSet.getString("DATA_SOURCE_NAME"); //$NON-NLS-1$
}

// Crash if no valid datasource is found.
// Throws exception to the client.
//Tells that there are no datasource corresponding to the search criterias.
if ( this.nativeDatasourceName == null )
throw new OlapException("No datasource could be found.");
{
throw new OlapException("No datasource could be found.");//$NON-NLS-1$
}

// If there is a provider
return this.nativeDatasourceName;

} catch (SQLException e)
}
catch (OlapException e)
{
//Throws back, no use here and doesn't wrap exception
throw e;
}
catch (SQLException e)
{
// We tried...
throw new OlapException("Datasource name not found.", e);
throw new OlapException("Datasource name not found.", e);//$NON-NLS-1$
}
finally
{
try
{
rSet.close();
}
catch (Throwable t)
{
// Nothing to do
}
}
}

public OlapStatement createStatement() {
Expand Down Expand Up @@ -645,7 +627,7 @@ public String generateRequest(


/**
* Generates a metadata request.
* <p>Generates a metadata request.
*
* <p>The list of restrictions must have even length. Even elements must
* be a string (the name of the restriction); odd elements must be either
Expand All @@ -657,8 +639,10 @@ public String generateRequest(
* @param metadataRequest Metadata request
* @param restrictions List of restrictions
* @param datasourceDependentRequest Should we lookup the datasource name ?
* @return XMLA request
* @throws OlapException
* @return XMLA SOAP request as a string.
* @throws OlapException Gets thrown when a query was dependant on a datasource name
* but either the one specified doesn't exist at the url, or there are no default
* datasource (should use the first one.).
*/
public String generateRequest(
Context context,
Expand Down Expand Up @@ -750,7 +734,7 @@ private static String xmlEncode(String value) {
}

// ~ inner classes --------------------------------------------------------

@SuppressWarnings({"ThrowableInstanceNeverThrown"})
static class Helper {
OlapException createException(String msg) {
return new OlapException(msg);
Expand Down
2 changes: 1 addition & 1 deletion src/org/olap4j/driver/xmla/XmlaOlap4jDatabaseMetaData.java
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ private ResultSet getMetadata(
metadataRequest,
patternValueList.toArray(
new String[patternValueList.size()]),
metadataRequest.equals( XmlaOlap4jConnection.MetadataRequest.DISCOVER_DATASOURCES ) ? false : true);
!metadataRequest.equals( XmlaOlap4jConnection.MetadataRequest.DISCOVER_DATASOURCES ));

final Element root = olap4jConnection.xxx(request);
List<List<Object>> rowList = new ArrayList<List<Object>>();
Expand Down

0 comments on commit b9756d6

Please sign in to comment.