diff --git a/src/org/olap4j/CellSetAxis.java b/src/org/olap4j/CellSetAxis.java index e20b426..713ffec 100755 --- a/src/org/olap4j/CellSetAxis.java +++ b/src/org/olap4j/CellSetAxis.java @@ -62,7 +62,8 @@ public interface CellSetAxis extends Iterable { * * for a filter axis, and *
- * getCellSet().getMetaData().getAxesMetaData().get(getAxisOrdinal().axisOrdinal()) + * getCellSet().getMetaData().getAxesMetaData().get( + * getAxisOrdinal().axisOrdinal()) *
* for other axes. * diff --git a/src/org/olap4j/driver/xmla/EmptyResultSet.java b/src/org/olap4j/driver/xmla/EmptyResultSet.java index ff63598..c773139 100644 --- a/src/org/olap4j/driver/xmla/EmptyResultSet.java +++ b/src/org/olap4j/driver/xmla/EmptyResultSet.java @@ -257,7 +257,9 @@ public InputStream getAsciiStream(String columnLabel) throws SQLException { throw new UnsupportedOperationException(); } - public InputStream getUnicodeStream(String columnLabel) throws SQLException { + public InputStream getUnicodeStream(String columnLabel) + throws SQLException + { throw new UnsupportedOperationException(); } diff --git a/src/org/olap4j/driver/xmla/FactoryJdbc4Impl.java b/src/org/olap4j/driver/xmla/FactoryJdbc4Impl.java index de094c7..f46fc7e 100644 --- a/src/org/olap4j/driver/xmla/FactoryJdbc4Impl.java +++ b/src/org/olap4j/driver/xmla/FactoryJdbc4Impl.java @@ -110,7 +110,9 @@ public void updateRowId(int columnIndex, RowId x) throws SQLException { throw new UnsupportedOperationException(); } - public void updateRowId(String columnLabel, RowId x) throws SQLException { + public void updateRowId(String columnLabel, RowId x) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -134,7 +136,9 @@ public void updateNString( throw new UnsupportedOperationException(); } - public void updateNClob(int columnIndex, NClob nClob) throws SQLException { + public void updateNClob(int columnIndex, NClob nClob) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -184,7 +188,9 @@ public Reader getNCharacterStream(int columnIndex) throws SQLException { throw new UnsupportedOperationException(); } - public Reader getNCharacterStream(String columnLabel) throws SQLException { + public Reader getNCharacterStream(String columnLabel) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -239,54 +245,67 @@ public void updateCharacterStream( public void updateBlob( int columnIndex, InputStream inputStream, - long length) throws SQLException { + long length) throws SQLException + { throw new UnsupportedOperationException(); } public void updateBlob( String columnLabel, InputStream inputStream, - long length) throws SQLException { + long length) throws SQLException + { throw new UnsupportedOperationException(); } public void updateClob( - int columnIndex, Reader reader, long length) throws SQLException { + int columnIndex, Reader reader, long length) throws SQLException + { throw new UnsupportedOperationException(); } public void updateClob( - String columnLabel, Reader reader, long length) throws SQLException { + String columnLabel, Reader reader, long length) + throws SQLException + { throw new UnsupportedOperationException(); } public void updateNClob( - int columnIndex, Reader reader, long length) throws SQLException { + int columnIndex, Reader reader, long length) + throws SQLException + { throw new UnsupportedOperationException(); } public void updateNClob( - String columnLabel, Reader reader, long length) throws SQLException { + String columnLabel, Reader reader, long length) + throws SQLException + { throw new UnsupportedOperationException(); } public void updateNCharacterStream( - int columnIndex, Reader x) throws SQLException { + int columnIndex, Reader x) throws SQLException + { throw new UnsupportedOperationException(); } public void updateNCharacterStream( - String columnLabel, Reader reader) throws SQLException { + String columnLabel, Reader reader) throws SQLException + { throw new UnsupportedOperationException(); } public void updateAsciiStream( - int columnIndex, InputStream x) throws SQLException { + int columnIndex, InputStream x) throws SQLException + { throw new UnsupportedOperationException(); } public void updateBinaryStream( - int columnIndex, InputStream x) throws SQLException { + int columnIndex, InputStream x) throws SQLException + { throw new UnsupportedOperationException(); } @@ -296,46 +315,56 @@ public void updateCharacterStream( } public void updateAsciiStream( - String columnLabel, InputStream x) throws SQLException { + String columnLabel, InputStream x) throws SQLException + { throw new UnsupportedOperationException(); } public void updateBinaryStream( - String columnLabel, InputStream x) throws SQLException { + String columnLabel, InputStream x) throws SQLException + { throw new UnsupportedOperationException(); } public void updateCharacterStream( - String columnLabel, Reader reader) throws SQLException { + String columnLabel, Reader reader) throws SQLException + { throw new UnsupportedOperationException(); } public void updateBlob( - int columnIndex, InputStream inputStream) throws SQLException { + int columnIndex, InputStream inputStream) throws SQLException + { throw new UnsupportedOperationException(); } public void updateBlob( - String columnLabel, InputStream inputStream) throws SQLException { + String columnLabel, InputStream inputStream) throws SQLException + { throw new UnsupportedOperationException(); } - public void updateClob(int columnIndex, Reader reader) throws SQLException { + public void updateClob( + int columnIndex, Reader reader) throws SQLException + { throw new UnsupportedOperationException(); } public void updateClob( - String columnLabel, Reader reader) throws SQLException { + String columnLabel, Reader reader) throws SQLException + { throw new UnsupportedOperationException(); } public void updateNClob( - int columnIndex, Reader reader) throws SQLException { + int columnIndex, Reader reader) throws SQLException + { throw new UnsupportedOperationException(); } public void updateNClob( - String columnLabel, Reader reader) throws SQLException { + String columnLabel, Reader reader) throws SQLException + { throw new UnsupportedOperationException(); } } @@ -400,7 +429,9 @@ public void setClientInfo( throw new UnsupportedOperationException(); } - public void setClientInfo(Properties properties) throws SQLClientInfoException { + public void setClientInfo(Properties properties) + throws SQLClientInfoException + { throw new UnsupportedOperationException(); } @@ -456,7 +487,9 @@ public void updateRowId(int columnIndex, RowId x) throws SQLException { throw new UnsupportedOperationException(); } - public void updateRowId(String columnLabel, RowId x) throws SQLException { + public void updateRowId(String columnLabel, RowId x) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -469,16 +502,20 @@ public boolean isClosed() throws SQLException { } public void updateNString( - int columnIndex, String nString) throws SQLException { + int columnIndex, String nString) throws SQLException + { throw new UnsupportedOperationException(); } public void updateNString( - String columnLabel, String nString) throws SQLException { + String columnLabel, String nString) throws SQLException + { throw new UnsupportedOperationException(); } - public void updateNClob(int columnIndex, NClob nClob) throws SQLException { + public void updateNClob(int columnIndex, NClob nClob) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -525,17 +562,22 @@ public Reader getNCharacterStream(int columnIndex) throws SQLException { throw new UnsupportedOperationException(); } - public Reader getNCharacterStream(String columnLabel) throws SQLException { + public Reader getNCharacterStream(String columnLabel) + throws SQLException + { throw new UnsupportedOperationException(); } public void updateNCharacterStream( - int columnIndex, Reader x, long length) throws SQLException { + int columnIndex, Reader x, long length) throws SQLException + { throw new UnsupportedOperationException(); } public void updateNCharacterStream( - String columnLabel, Reader reader, long length) throws SQLException { + String columnLabel, Reader reader, long length) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -555,17 +597,23 @@ public void updateCharacterStream( } public void updateAsciiStream( - String columnLabel, InputStream x, long length) throws SQLException { + String columnLabel, InputStream x, long length) + throws SQLException + { throw new UnsupportedOperationException(); } public void updateBinaryStream( - String columnLabel, InputStream x, long length) throws SQLException { + String columnLabel, InputStream x, long length) + throws SQLException + { throw new UnsupportedOperationException(); } public void updateCharacterStream( - String columnLabel, Reader reader, long length) throws SQLException { + String columnLabel, Reader reader, long length) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -589,7 +637,9 @@ public void updateClob( } public void updateClob( - String columnLabel, Reader reader, long length) throws SQLException { + String columnLabel, Reader reader, long length) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -599,7 +649,9 @@ public void updateNClob( } public void updateNClob( - String columnLabel, Reader reader, long length) throws SQLException { + String columnLabel, Reader reader, long length) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -653,7 +705,9 @@ public void updateBlob( throw new UnsupportedOperationException(); } - public void updateClob(int columnIndex, Reader reader) throws SQLException { + public void updateClob(int columnIndex, Reader reader) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -711,12 +765,16 @@ public void setNCharacterStream( throw new UnsupportedOperationException(); } - public void setNClob(int parameterIndex, NClob value) throws SQLException { + public void setNClob(int parameterIndex, NClob value) + throws SQLException + { throw new UnsupportedOperationException(); } public void setClob( - int parameterIndex, Reader reader, long length) throws SQLException { + int parameterIndex, Reader reader, long length) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -728,7 +786,9 @@ public void setBlob( } public void setNClob( - int parameterIndex, Reader reader, long length) throws SQLException { + int parameterIndex, Reader reader, long length) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -738,17 +798,23 @@ public void setSQLXML( } public void setAsciiStream( - int parameterIndex, InputStream x, long length) throws SQLException { + int parameterIndex, InputStream x, long length) + throws SQLException + { throw new UnsupportedOperationException(); } public void setBinaryStream( - int parameterIndex, InputStream x, long length) throws SQLException { + int parameterIndex, InputStream x, long length) + throws SQLException + { throw new UnsupportedOperationException(); } public void setCharacterStream( - int parameterIndex, Reader reader, long length) throws SQLException { + int parameterIndex, Reader reader, long length) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -772,7 +838,9 @@ public void setNCharacterStream( throw new UnsupportedOperationException(); } - public void setClob(int parameterIndex, Reader reader) throws SQLException { + public void setClob(int parameterIndex, Reader reader) + throws SQLException + { throw new UnsupportedOperationException(); } @@ -817,11 +885,15 @@ public ResultSet getSchemas( throw new UnsupportedOperationException(); } - public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException { + public boolean supportsStoredFunctionsUsingCallSyntax() + throws SQLException + { throw new UnsupportedOperationException(); } - public boolean autoCommitFailureClosesAllResultSets() throws SQLException { + public boolean autoCommitFailureClosesAllResultSets() + throws SQLException + { throw new UnsupportedOperationException(); } diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jCatalog.java b/src/org/olap4j/driver/xmla/XmlaOlap4jCatalog.java index 00ab2c5..b66e36c 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jCatalog.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jCatalog.java @@ -36,15 +36,13 @@ class XmlaOlap4jCatalog implements Catalog, Named { this.olap4jDatabaseMetaData = olap4jDatabaseMetaData; this.name = name; - /* - * Fetching the schemas is a tricky part. There are no XMLA requests to obtain the - * available schemas for a given catalog. We therefore need to ask for the cubes, - * restricting results on the catalog, and while iterating on the cubes, take the schema - * name from this recordset. - * - * Many servers (SSAS for example) won't support the schema name column in the - * returned rowset. This has to be taken into account. - */ + // Fetching the schemas is a tricky part. There are no XMLA requests to + // obtain the available schemas for a given catalog. We therefore need + // to ask for the cubes, restricting results on the catalog, and while + // iterating on the cubes, take the schema name from this recordset. + // + // Many servers (SSAS for example) won't support the schema name column + // in the returned rowset. This has to be taken into account. this.schemas = new DeferredNamedListImpl( XmlaOlap4jConnection.MetadataRequest.MDSCHEMA_CUBES, diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jCellSet.java b/src/org/olap4j/driver/xmla/XmlaOlap4jCellSet.java index 47dcfd5..65dfc1c 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jCellSet.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jCellSet.java @@ -771,7 +771,9 @@ public InputStream getAsciiStream(String columnLabel) throws SQLException { throw new UnsupportedOperationException(); } - public InputStream getUnicodeStream(String columnLabel) throws SQLException { + public InputStream getUnicodeStream(String columnLabel) + throws SQLException + { throw new UnsupportedOperationException(); } diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java index 8231caf..baced24 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java @@ -148,7 +148,8 @@ abstract class XmlaOlap4jConnection implements OlapConnection { Map map = parseConnectString(url, info); this.providerName = map.get(XmlaOlap4jDriver.Property.Provider.name()); - this.datasourceName = map.get(XmlaOlap4jDriver.Property.DataSource.name()); + this.datasourceName = + map.get(XmlaOlap4jDriver.Property.DataSource.name()); this.catalogName = map.get(XmlaOlap4jDriver.Property.Catalog.name()); // Set URL of HTTP server. @@ -294,12 +295,13 @@ String getDataSourceInfo() throws OlapException { } else { // Use first if (rSet.first()) { - this.nativeDatasourceName = rSet.getString(DATA_SOURCE_NAME); + this.nativeDatasourceName = + rSet.getString(DATA_SOURCE_NAME); } } - // Throws exception to the client. - //Tells that there are no datasource corresponding to the search criterias. + // Throws exception to the client. Tells that there are + // no datasource corresponding to the search criterias. if (this.nativeDatasourceName == null) { throw getHelper().createException( "No datasource could be found."); @@ -545,15 +547,16 @@ public MdxValidator createMdxValidator(OlapConnection connection) { }; } - public synchronized org.olap4j.metadata.Schema getSchema() throws OlapException { - // initializes the olap4jSchema if necessary - if (this.olap4jSchema == null) { - final XmlaOlap4jCatalog catalog = - (XmlaOlap4jCatalog) + public synchronized org.olap4j.metadata.Schema getSchema() + throws OlapException + { + // initializes the olap4jSchema if necessary + if (this.olap4jSchema == null) { + final XmlaOlap4jCatalog catalog = (XmlaOlap4jCatalog) this.olap4jDatabaseMetaData.getCatalogObjects().get( - this.getCatalog()); - this.olap4jSchema = (XmlaOlap4jSchema) catalog.getSchemas() - .get(0); + this.getCatalog()); + this.olap4jSchema = (XmlaOlap4jSchema) + catalog.getSchemas().get(0); } return olap4jSchema; } @@ -805,7 +808,11 @@ private static String xmlEncode(String value) { static class CatalogHandler extends HandlerImpl { - public void handle(Element row, Context context, List list) { + public void handle( + Element row, + Context context, + List list) + { /* Example: @@ -856,27 +863,31 @@ public void handle(Element row, Context context, } static class DimensionHandler extends HandlerImpl { - public void handle(Element row, Context context, List list) { + public void handle( + Element row, + Context context, + List list) + { /* Example: - - FoodMart - FoodMart - HR - Department - [Department] - Department - 6 - 3 - 13 - [Department] - HR Cube - Department Dimension - false - false - 0 - true - + + FoodMart + FoodMart + HR + Department + [Department] + Department + 6 + 3 + 13 + [Department] + HR Cube - Department Dimension + false + false + 0 + true + */ final String dimensionName = @@ -909,28 +920,28 @@ public void handle( /* Example: - - FoodMart - FoodMart - Sales - [Customers] - Customers - [Customers] - Customers - 3 - 10407 - [Customers].[All Customers] - [Customers].[All Customers] - Sales Cube - Customers Hierarchy - 0 - false - false - 0 - true - 9 - true - false - + + FoodMart + FoodMart + Sales + [Customers] + Customers + [Customers] + Customers + 3 + 10407 + [Customers].[All Customers] + [Customers].[All Customers] + Sales Cube - Customers Hierarchy + 0 + false + false + 0 + true + 9 + true + false + */ final String hierarchyName = @@ -956,27 +967,32 @@ public void handle( static class LevelHandler extends HandlerImpl { public static final int MDLEVEL_TYPE_CALCULATED = 0x0002; - public void handle(Element row, Context context, List list) { + public void handle( + Element row, + Context context, + List list) + { /* Example: - - FoodMart - FoodMart - Sales - [Customers] - [Customers] - (All) - [Customers].[(All)] - (All) - 0 - 1 - 1 - 0 - 3 - true - Sales Cube - Customers Hierarchy(All) Level - + + FoodMart + FoodMart + Sales + [Customers] + [Customers] + (All) + [Customers].[(All)] + (All) + 0 + 1 + 1 + 0 + 3 + true + Sales Cube - Customers Hierarchy - (All) + Level + */ final String levelName = @@ -1004,23 +1020,27 @@ public void handle(Element row, Context context, List list) { } static class MeasureHandler extends HandlerImpl { - public void handle(Element row, Context context, List list) - throws OlapException { + public void handle( + Element row, + Context context, + List list) + throws OlapException + { /* Example: - - FoodMart - FoodMart - Sales - Profit - [Measures].[Profit] - Profit - 127 - 130 - true - Sales Cube - Profit Member - + + FoodMart + FoodMart + Sales + Profit + [Measures].[Profit] + Profit + 127 + 130 + true + Sales Cube - Profit Member + */ final String measureName = @@ -1100,8 +1120,10 @@ static class MemberHandler extends HandlerImpl { Arrays.asList( Property.StandardMemberProperty.CATALOG_NAME.name(), Property.StandardMemberProperty.CUBE_NAME.name(), - Property.StandardMemberProperty.DIMENSION_UNIQUE_NAME.name(), - Property.StandardMemberProperty.HIERARCHY_UNIQUE_NAME.name(), + Property.StandardMemberProperty.DIMENSION_UNIQUE_NAME + .name(), + Property.StandardMemberProperty.HIERARCHY_UNIQUE_NAME + .name(), Property.StandardMemberProperty.LEVEL_UNIQUE_NAME.name(), Property.StandardMemberProperty.PARENT_LEVEL.name(), Property.StandardMemberProperty.PARENT_COUNT.name(), @@ -1118,29 +1140,33 @@ static class MemberHandler extends HandlerImpl { Property.StandardMemberProperty.CHILDREN_CARDINALITY.name(), Property.StandardMemberProperty.DEPTH.name())); - public void handle(Element row, Context context, List list) { + public void handle( + Element row, + Context context, + List list) + { /* Example: - - FoodMart - FoodMart - Sales - [Gender] - [Gender] - [Gender].[Gender] - 1 - 1 - F - [Gender].[All Gender].[F] - 1 - F - 0 - 0 - [Gender].[All Gender] - 1 - 1 - + + FoodMart + FoodMart + Sales + [Gender] + [Gender] + [Gender].[Gender] + 1 + 1 + F + [Gender].[F] + 1 + F + 0 + 0 + [Gender].[All Gender] + 1 + 1 + */ if (false) { @@ -1177,7 +1203,8 @@ public void handle(Element row, Context context, List list) { int childrenCardinality = integerElement( row, - Property.StandardMemberProperty.CHILDREN_CARDINALITY.name()); + Property.StandardMemberProperty.CHILDREN_CARDINALITY + .name()); // If this member is a measure, we want to return an object that // implements the Measure interface to all API calls. But we also // need to retrieve the properties that occur in MDSCHEMA_MEMBERS @@ -1200,7 +1227,9 @@ public void handle(Element row, Context context, List list) { if (depth != null && depth.intValue() != member.getLevel().getDepth()) { - member.setProperty(Property.StandardMemberProperty.DEPTH, depth); + member.setProperty( + Property.StandardMemberProperty.DEPTH, + depth); } list.add(member); } @@ -1228,17 +1257,21 @@ private void addUserDefinedDimensionProperties( } static class NamedSetHandler extends HandlerImpl { - public void handle(Element row, Context context, List list) { + public void handle( + Element row, + Context context, + List list) + { /* Example: - - FoodMart - FoodMart - Warehouse - [Top Sellers] - 1 - + + FoodMart + FoodMart + Warehouse + [Top Sellers] + 1 + */ final String setName = @@ -1250,8 +1283,15 @@ public void handle(Element row, Context context, List list) } static class SchemaHandler extends HandlerImpl { - public void handle(Element row, Context context, List list) throws OlapException { + public void handle( + Element row, + Context context, + List list) + throws OlapException + { /* + Example: + LOCALDB FoodMart @@ -1278,9 +1318,15 @@ public CatalogSchemaHandler(String catalogName) { this.catalogName = catalogName; } - public void handle(Element row, Context context, List list) throws OlapException + public void handle( + Element row, + Context context, + List list) + throws OlapException { /* + Example: + CatalogName FoodMart @@ -1289,12 +1335,11 @@ public void handle(Element row, Context context, List list) th */ /* - * We are looking for a schema name from the cubes query restricted on the - * catalog name. Some servers don't support nor include the SCHEMA_NAME column - * in it's response. If it's null, we convert it to an empty string as to not cause - * problems later on. + * We are looking for a schema name from the cubes query restricted + * on the catalog name. Some servers don't support nor include the + * SCHEMA_NAME column in its response. If it's null, we convert it + * to an empty string as to not cause problems later on. */ - String schemaName = stringElement(row, "SCHEMA_NAME"); String catalogName = stringElement(row, "CATALOG_NAME"); @@ -1408,7 +1453,8 @@ static class Context { * * @param olap4jConnection Connection (must not be null) * @param olap4jDatabaseMetaData DatabaseMetaData (may be null) - * @param olap4jCatalog Catalog (may be null if DatabaseMetaData is null) + * @param olap4jCatalog Catalog (may be null if DatabaseMetaData is + * null) * @param olap4jSchema Schema (may be null if Catalog is null) * @param olap4jCube Cube (may be null if Schema is null) * @param olap4jDimension Dimension (may be null if Cube is null) @@ -1862,7 +1908,10 @@ private static class XmlaOlap4jMdxValidator implements MdxValidator { this.connection = connection; } - public SelectNode validateSelect(SelectNode selectNode) throws OlapException { + public SelectNode validateSelect( + SelectNode selectNode) + throws OlapException + { StringWriter sw = new StringWriter(); selectNode.unparse(new ParseTreeWriter(new PrintWriter(sw))); String mdx = sw.toString(); diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java b/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java index 12c8638..a421bf6 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java @@ -138,7 +138,8 @@ class XmlaOlap4jCube implements Cube, Named final SoftReference measureRef = ((CachingMetadataReader) metadataReader).memberMap.get( member.getUniqueName()); - // gc not possible - we hold all members in 'measures' field. + // gc not possible - we hold all members in + // 'measures' field. assert measureRef.get() != null; measureList.add((Measure) measureRef.get()); } @@ -319,9 +320,12 @@ private static class CachingMetadataReader private final Map> memberMap = new HashMap>(); - private final Map>> - levelMemberListMap = - new HashMap>>(); + private final Map< + XmlaOlap4jLevel, + SoftReference>> levelMemberListMap = + new HashMap< + XmlaOlap4jLevel, + SoftReference>>(); /** * Creates a CachingMetadataReader. diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jDatabaseMetaData.java b/src/org/olap4j/driver/xmla/XmlaOlap4jDatabaseMetaData.java index cc1fa71..cef69dc 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jDatabaseMetaData.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jDatabaseMetaData.java @@ -72,8 +72,8 @@ NamedList getCatalogObjects() { * Executes a metadata query and returns the result as a JDBC * {@link ResultSet}. * - * @param metadataRequest Name of the metadata request. Corresponds to the XMLA - * method name, e.g. "MDSCHEMA_CUBES" + * @param metadataRequest Name of the metadata request. Corresponds to the + * XMLA method name, e.g. "MDSCHEMA_CUBES" * * @param patternValues Array of alternating parameter name and value * pairs. If the parameter value is null, it is ignored. @@ -335,7 +335,9 @@ public boolean supportsTableCorrelationNames() throws SQLException { throw new UnsupportedOperationException(); } - public boolean supportsDifferentTableCorrelationNames() throws SQLException { + public boolean supportsDifferentTableCorrelationNames() + throws SQLException + { throw new UnsupportedOperationException(); } @@ -471,7 +473,9 @@ public boolean supportsCatalogsInIndexDefinitions() throws SQLException { throw new UnsupportedOperationException(); } - public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException { + public boolean supportsCatalogsInPrivilegeDefinitions() + throws SQLException + { throw new UnsupportedOperationException(); } @@ -627,15 +631,21 @@ public boolean supportsTransactions() throws SQLException { throw new UnsupportedOperationException(); } - public boolean supportsTransactionIsolationLevel(int level) throws SQLException { + public boolean supportsTransactionIsolationLevel(int level) + throws SQLException + { throw new UnsupportedOperationException(); } - public boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException { + public boolean supportsDataDefinitionAndDataManipulationTransactions() + throws SQLException + { throw new UnsupportedOperationException(); } - public boolean supportsDataManipulationTransactionsOnly() throws SQLException { + public boolean supportsDataManipulationTransactionsOnly() + throws SQLException + { throw new UnsupportedOperationException(); } @@ -858,7 +868,9 @@ public ResultSet getAttributes( throw new UnsupportedOperationException(); } - public boolean supportsResultSetHoldability(int holdability) throws SQLException { + public boolean supportsResultSetHoldability(int holdability) + throws SQLException + { throw new UnsupportedOperationException(); } diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jDriver.java b/src/org/olap4j/driver/xmla/XmlaOlap4jDriver.java index 4a42bd8..5f0a033 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jDriver.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jDriver.java @@ -51,37 +51,40 @@ * multiple times in the connect string, the first occurrence is used. * * - * + * * - * + * * - * + * * - * + * * - * + * * - * + * + *

By default, no SOAP query cache will be + * used. * - *

+ * + * + * * *
Property Description
Property Description
Server URL of HTTP server. Required.
Server URL of HTTP server. Required.
Catalog Catalog name to use. - * By default, the first one returned by the - * XMLA server will be used.
Catalog Catalog name to use. + * By default, the first one returned by the + * XMLA server will be used.
Provider Name of the XMLA provider.
Provider Name of the XMLA provider.
DataSource Name of the XMLA datasource. When using a - * Mondrian backed XMLA server, be sure to - * include the full datasource name between - * quotes.
DataSource Name of the XMLA datasource. When using a + * Mondrian backed XMLA server, be sure to + * include the full datasource name between + * quotes.
Cache

Class name of the SOAP cache to use. A built in - * memory cache is available with - * org.olap4j.driver.xmla.cache.XmlaOlap4jNamedMemoryCache. - * Has to be an implementation of IXmlaOlap4jCache. - *

By default, no SOAP query cache will be used. - *

Cache

Class name of the SOAP cache to use. + * Must implement interface + * {@link org.olap4j.driver.xmla.proxy.XmlaOlap4jCachedProxy}. + * A built-in memory cache is available with + * {@link org.olap4j.driver.xmla.cache.XmlaOlap4jNamedMemoryCache}. * - *

Cache.* Properties to transfer to the selected cache - * implementation. See IXmlaOlap4jCache or your - * selected implementation for properties details. - *
TestProxyCookie String that uniquely identifies a proxy - * object in {@link #PROXY_MAP} via which to - * send XMLA requests for testing - * purposes.
Cache.* Properties to transfer to the selected cache + * implementation. See + * {@link org.olap4j.driver.xmla.cache.XmlaOlap4jCache} + * or your selected implementation for properties + * details.
TestProxyCookieString that uniquely identifies a proxy + * object in {@link #PROXY_MAP} via which to + * send XMLA requests for testing + * purposes.
* diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jPositionMember.java b/src/org/olap4j/driver/xmla/XmlaOlap4jPositionMember.java index 8ab4820..3a5654a 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jPositionMember.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jPositionMember.java @@ -160,7 +160,11 @@ public String getPropertyFormattedValue(Property property) { return member.getPropertyFormattedValue(property); } - public void setProperty(Property property, Object value) throws OlapException { + public void setProperty( + Property property, + Object value) + throws OlapException + { throw new UnsupportedOperationException(); } diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jPreparedStatement.java b/src/org/olap4j/driver/xmla/XmlaOlap4jPreparedStatement.java index c42a314..3e42b68 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jPreparedStatement.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jPreparedStatement.java @@ -344,11 +344,15 @@ public Class decimalType(DecimalType decimalType) { return Number.class; } - public Class dimensionType(DimensionType dimensionType) { + public Class dimensionType( + DimensionType dimensionType) + { return Dimension.class; } - public Class hierarchyType(HierarchyType hierarchyType) { + public Class hierarchyType( + HierarchyType hierarchyType) + { return Hierarchy.class; } diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jStatement.java b/src/org/olap4j/driver/xmla/XmlaOlap4jStatement.java index daad23b..984b226 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jStatement.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jStatement.java @@ -329,7 +329,10 @@ public CellSet executeOlapQuery(String mdx) throws OlapException { return openCellSet; } - public CellSet executeOlapQuery(SelectNode selectNode) throws OlapException { + public CellSet executeOlapQuery( + SelectNode selectNode) + throws OlapException + { final String mdx = toString(selectNode); return executeOlapQuery(mdx); } diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jUtil.java b/src/org/olap4j/driver/xmla/XmlaOlap4jUtil.java index a56d52c..721a0fe 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jUtil.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jUtil.java @@ -94,7 +94,7 @@ static DOMParser getParser( DOMParser parser = new DOMParser(); parser.setEntityResolver(entityResolver); - parser.setErrorHandler(new SAXErrorHandler()); + parser.setErrorHandler(new ErrorHandlerImpl()); parser.setFeature(DEFER_NODE_EXPANSION, false); parser.setFeature(NAMESPACES_FEATURE_ID, true); parser.setFeature(SCHEMA_VALIDATION_FEATURE_ID, doingValidation); @@ -115,12 +115,12 @@ static DOMParser getParser( static void checkForParseError(DOMParser parser, Throwable t) { final ErrorHandler errorHandler = parser.getErrorHandler(); - if (errorHandler instanceof SAXErrorHandler) { - final SAXErrorHandler saxEH = (SAXErrorHandler) errorHandler; + if (errorHandler instanceof ErrorHandlerImpl) { + final ErrorHandlerImpl saxEH = (ErrorHandlerImpl) errorHandler; final List errors = saxEH.getErrors(); if (errors != null && errors.size() > 0) { - String errorStr = SAXErrorHandler.formatErrorInfos(saxEH); + String errorStr = ErrorHandlerImpl.formatErrorInfos(saxEH); throw new RuntimeException(errorStr, t); } } else { @@ -397,7 +397,7 @@ public static String toString(Node node, boolean prettyPrint) { /** * Error handler plus helper methods. */ - static class SAXErrorHandler implements ErrorHandler { + static class ErrorHandlerImpl implements ErrorHandler { public static final String WARNING_STRING = "WARNING"; public static final String ERROR_STRING = "ERROR"; public static final String FATAL_ERROR_STRING = "FATAL"; @@ -415,7 +415,7 @@ public void printErrorInfos(PrintStream out) { } } - public static String formatErrorInfos(SAXErrorHandler saxEH) { + public static String formatErrorInfos(ErrorHandlerImpl saxEH) { if (! saxEH.hasErrors()) { return ""; } @@ -460,25 +460,32 @@ public static String formatErrorInfo(ErrorInfo ei) { } private List errors; - public SAXErrorHandler() { + + public ErrorHandlerImpl() { } + public List getErrors() { return this.errors; } + public boolean hasErrors() { return (this.errors != null); } + public void warning(SAXParseException exception) throws SAXException { addError(new ErrorInfo(SEVERITY_WARNING, exception)); } + public void error(SAXParseException exception) throws SAXException { addError(new ErrorInfo(SEVERITY_ERROR, exception)); } + public void fatalError(SAXParseException exception) throws SAXException { addError(new ErrorInfo(SEVERITY_FATAL_ERROR, exception)); } + protected void addError(ErrorInfo ei) { if (this.errors == null) { this.errors = new ArrayList(); diff --git a/src/org/olap4j/driver/xmla/cache/XmlaOlap4jCacheElement.java b/src/org/olap4j/driver/xmla/cache/XmlaOlap4jCacheElement.java index bdc98b5..3797290 100644 --- a/src/org/olap4j/driver/xmla/cache/XmlaOlap4jCacheElement.java +++ b/src/org/olap4j/driver/xmla/cache/XmlaOlap4jCacheElement.java @@ -14,6 +14,7 @@ /** * Internal POJO class definition for the XmlaOlap4jMemoryCache. + * * @author Luc Boudreau * @version $Id$ */ @@ -22,7 +23,8 @@ class XmlaOlap4jCacheElement { /** * The time in miliseconds when the entry was created. */ - private AtomicLong timestamp = new AtomicLong(Calendar.getInstance().getTimeInMillis()); + private AtomicLong timestamp = + new AtomicLong(Calendar.getInstance().getTimeInMillis()); /** @@ -38,14 +40,16 @@ class XmlaOlap4jCacheElement { /** - * Updates it's internal time stamp. + * Updates this element's internal timestamp. */ public void refreshTimestamp() { - this.timestamp.compareAndSet(this.timestamp.longValue(), Calendar.getInstance().getTimeInMillis()); + this.timestamp.compareAndSet( + this.timestamp.longValue(), + Calendar.getInstance().getTimeInMillis()); } /** - * Updates it's internal time stamp. + * Updates this element's internal timestamp. */ public void incrementHitCount() { this.hitMeter.incrementAndGet(); diff --git a/src/org/olap4j/driver/xmla/cache/XmlaOlap4jConcurrentMemoryCache.java b/src/org/olap4j/driver/xmla/cache/XmlaOlap4jConcurrentMemoryCache.java index 43d8f4e..0a82c9f 100644 --- a/src/org/olap4j/driver/xmla/cache/XmlaOlap4jConcurrentMemoryCache.java +++ b/src/org/olap4j/driver/xmla/cache/XmlaOlap4jConcurrentMemoryCache.java @@ -150,7 +150,7 @@ byte[] get( // Extract the data from the cache XmlaOlap4jCacheElement entry = this.cacheEntries.get( - XmlaOlap4jSHAEncoder.SHA1( + XmlaOlap4jShaEncoder.encodeSha1( url.toExternalForm() + new String(request))); // Increment its counter @@ -182,7 +182,7 @@ void put( entry.setResponse(response); this.cacheEntries.put( - XmlaOlap4jSHAEncoder.SHA1( + XmlaOlap4jShaEncoder.encodeSha1( String.valueOf(url.toExternalForm()) + new String(request)), entry); diff --git a/src/org/olap4j/driver/xmla/cache/XmlaOlap4jNamedMemoryCache.java b/src/org/olap4j/driver/xmla/cache/XmlaOlap4jNamedMemoryCache.java index 5aef912..a514598 100644 --- a/src/org/olap4j/driver/xmla/cache/XmlaOlap4jNamedMemoryCache.java +++ b/src/org/olap4j/driver/xmla/cache/XmlaOlap4jNamedMemoryCache.java @@ -129,7 +129,9 @@ public XmlaOlap4jNamedMemoryCache() { */ private static synchronized void initCaches() { if (caches == null) { - caches = new ConcurrentHashMap(); + caches = + new ConcurrentHashMap< + String, XmlaOlap4jConcurrentMemoryCache>(); } } @@ -210,8 +212,9 @@ public void put( if (caches.containsKey(id)) { caches.get(id).put(url, request, response); } else { - throw new RuntimeException( - "There are no configured caches of this name yet configured."); + throw new RuntimeException( + "There are no configured caches of this name yet " + + "configured."); } } } diff --git a/src/org/olap4j/driver/xmla/cache/XmlaOlap4jSHAEncoder.java b/src/org/olap4j/driver/xmla/cache/XmlaOlap4jShaEncoder.java similarity index 91% rename from src/org/olap4j/driver/xmla/cache/XmlaOlap4jSHAEncoder.java rename to src/org/olap4j/driver/xmla/cache/XmlaOlap4jShaEncoder.java index 142f43c..e047a12 100644 --- a/src/org/olap4j/driver/xmla/cache/XmlaOlap4jSHAEncoder.java +++ b/src/org/olap4j/driver/xmla/cache/XmlaOlap4jShaEncoder.java @@ -3,7 +3,7 @@ // This software is subject to the terms of the Eclipse Public License v1.0 // Agreement, available at the following URL: // http://www.eclipse.org/legal/epl-v10.html. -// Copyright (C) 2007-2008 Julian Hyde +// Copyright (C) 2007-2009 Julian Hyde // All Rights Reserved. // You must accept the terms of that agreement to use this software. */ @@ -17,9 +17,8 @@ * * @author Luc Boudreau * @version $Id$ - * */ -class XmlaOlap4jSHAEncoder { +class XmlaOlap4jShaEncoder { private static String convertToHex(byte[] data) { StringBuilder buf = new StringBuilder(); @@ -38,7 +37,7 @@ private static String convertToHex(byte[] data) { return buf.toString(); } - public static String SHA1(String text) { + public static String encodeSha1(String text) { MessageDigest md; try { md = MessageDigest.getInstance("SHA-1"); @@ -60,4 +59,4 @@ public static String SHA1(String text) { } } -// End XmlaOlap4jSHAEncoder.java +// End XmlaOlap4jShaEncoder.java diff --git a/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jAbstractHttpProxy.java b/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jAbstractHttpProxy.java index 07cd836..2b8b910 100644 --- a/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jAbstractHttpProxy.java +++ b/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jAbstractHttpProxy.java @@ -219,8 +219,8 @@ public Future submit(final URL url, final String request) { // call the get operation to fetch the data later on. It will get cached // then. // - // I still overridden the submit method in case we need some caching done - // in the end. - Luc + // I still overridden the submit method in case we need some caching + // done in the end. - Luc return getResponseViaSubmit(url, request); } diff --git a/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jCookieManager.java b/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jCookieManager.java index ea10c77..aa2a79c 100644 --- a/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jCookieManager.java +++ b/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jCookieManager.java @@ -148,13 +148,16 @@ public void storeCookies(URLConnection conn) { /** * Prior to opening a URLConnection, calling this method will set all - * unexpired cookies that match the path or subpaths for thi underlying URL + * unexpired cookies that match the path or subpaths for thi underlying URL. * - * The connection MUST NOT have been opened - * method or an IOException will be thrown. + *

The connection MUST NOT have been opened method or an IOException will + * be thrown. * - * @param conn a java.net.URLConnection - must NOT be open, or IOException will be thrown - * @throws java.io.IOException Thrown if conn has already been opened. + * @param conn a java.net.URLConnection - must NOT be open, or + * IOException will be thrown + * + * @throws java.io.IOException Thrown if conn has already been + * opened. */ public void setCookies(URLConnection conn) { // Determines the domain and path to retrieve the appropriate cookies diff --git a/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jProxy.java b/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jProxy.java index 8ff9960..e889718 100644 --- a/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jProxy.java +++ b/src/org/olap4j/driver/xmla/proxy/XmlaOlap4jProxy.java @@ -36,7 +36,10 @@ public interface XmlaOlap4jProxy { * class was created, but some proxies out there (MondrianInprocProxy...) * still uses this. */ - byte[] get(URL url, String request) throws XmlaOlap4jProxyException,IOException; + byte[] get( + URL url, + String request) + throws XmlaOlap4jProxyException, IOException; /** * Submits a request for background execution. diff --git a/src/org/olap4j/impl/Olap4jUtil.java b/src/org/olap4j/impl/Olap4jUtil.java index 51ab489..4fac9ae 100644 --- a/src/org/olap4j/impl/Olap4jUtil.java +++ b/src/org/olap4j/impl/Olap4jUtil.java @@ -280,7 +280,9 @@ public static String wildcardToRegexp(List wildcards) { } buf.append('.'); i = underscore + 1; - } else if (percent >= 0 && (percent < underscore || underscore < 0)) { + } else if (percent >= 0 + && (percent < underscore || underscore < 0)) + { if (i < percent) { buf.append( quotePattern(value.substring(i, percent))); diff --git a/src/org/olap4j/mdx/DefaultMdxValidatorImpl.java b/src/org/olap4j/mdx/DefaultMdxValidatorImpl.java index 3c1c654..9ed37b4 100644 --- a/src/org/olap4j/mdx/DefaultMdxValidatorImpl.java +++ b/src/org/olap4j/mdx/DefaultMdxValidatorImpl.java @@ -42,7 +42,9 @@ protected DefaultMdxValidatorImpl(SelectNode selectNode) { this.selectNode = selectNode; } - public SelectNode validateSelect(SelectNode selectNode) throws OlapException { + public SelectNode validateSelect(SelectNode selectNode) + throws OlapException + { return null; } diff --git a/src/org/olap4j/mdx/IdentifierNode.java b/src/org/olap4j/mdx/IdentifierNode.java index a3d173a..6966a7e 100644 --- a/src/org/olap4j/mdx/IdentifierNode.java +++ b/src/org/olap4j/mdx/IdentifierNode.java @@ -45,8 +45,8 @@ * name "Unit Sales" * * - *

A more complex example illustrates a compound key. The identifier - * {@code [Customers].[City].&[San Francisco]&CA&USA.&[cust1234]} + *

A more complex example illustrates a compound key. The identifier {@code + * [Customers].[City].&[San Francisco]&CA&USA.&[cust1234]} * contains four segments as follows: *

    *
  • Segment #0 is QUOTED, name "Customers"
  • @@ -259,7 +259,8 @@ private static int getEndIndex(String s, int i) { while (i < s.length()) { char ch = s.charAt(i); if (ch == ']') { - if (i + 1 < s.length() && s.charAt(i + 1) == ']') { // found ]] => skip + if (i + 1 < s.length() && s.charAt(i + 1) == ']') { + // found ]] => skip i += 2; } else { return i; diff --git a/src/org/olap4j/mdx/ParameterNode.java b/src/org/olap4j/mdx/ParameterNode.java index 81f06aa..bf5c66e 100644 --- a/src/org/olap4j/mdx/ParameterNode.java +++ b/src/org/olap4j/mdx/ParameterNode.java @@ -130,7 +130,8 @@ public ParseTreeNode getDefaultValueExpression() { * * @param defaultValueExpression default value expression */ - public void setDefaultValueExpression(ParseTreeNode defaultValueExpression) { + public void setDefaultValueExpression(ParseTreeNode defaultValueExpression) + { this.defaultValueExpression = defaultValueExpression; } diff --git a/src/org/olap4j/mdx/PropertyValueNode.java b/src/org/olap4j/mdx/PropertyValueNode.java index 8be5941..834e9d3 100644 --- a/src/org/olap4j/mdx/PropertyValueNode.java +++ b/src/org/olap4j/mdx/PropertyValueNode.java @@ -15,10 +15,15 @@ * Parse tree node representing a property-value pair. * *

    Property-value pairs are used to define properties of calculated members. - * For example, in WITH MEMBER [Measures].[Foo] AS ' [Measures].[Unit Sales] ', - * FORMAT_STRING = 'Bold', - * SOLVE_ORDER = 2 + * For example, in + * + *

    + * WITH MEMBER [Measures].[Foo] AS ' [Measures].[Unit Sales] ',
    + *   FORMAT_STRING = 'Bold',
    + *   SOLVE_ORDER = 2
    * SELECT ...
    + *
    + * * there are two property-value pairs FORMAT_STRING and SOLVE_ORDER. * * @version $Id$ diff --git a/src/org/olap4j/mdx/Syntax.java b/src/org/olap4j/mdx/Syntax.java index aa85e76..93e3921 100644 --- a/src/org/olap4j/mdx/Syntax.java +++ b/src/org/olap4j/mdx/Syntax.java @@ -205,7 +205,11 @@ public void unparse( * Defines syntax for expression invoked as CASE ... END. */ Case { - public void unparse(String operatorName, List argList, ParseTreeWriter writer) { + public void unparse( + String operatorName, + List argList, + ParseTreeWriter writer) + { final PrintWriter pw = writer.getPrintWriter(); if (operatorName.equals("_CaseTest")) { pw.print("CASE"); diff --git a/src/org/olap4j/mdx/parser/impl/DefaultMdxParser.cup b/src/org/olap4j/mdx/parser/impl/DefaultMdxParser.cup index 0f3ca0a..eb34fd8 100644 --- a/src/org/olap4j/mdx/parser/impl/DefaultMdxParser.cup +++ b/src/org/olap4j/mdx/parser/impl/DefaultMdxParser.cup @@ -221,7 +221,7 @@ parser code {: * returns true because there is a "<Level>.Ordinal" property.

    */ protected boolean isFunCall(String s) { - return funTable.isProperty(s); + return funTable.isProperty(s); } :}; @@ -545,7 +545,8 @@ cube_name ::= compound_id ; // // ::= [.] // | [[.]< dimension_name>.] -// jhyde: Need more lookahead for this to work... just use id in place of dim_hier. +// jhyde: Need more lookahead for this to work... just use id in place of +// dim_hier. // dim_hier ::= id; // // ::= @@ -895,7 +896,8 @@ value_expression_primary ::= region, j.getName(), Syntax.AmpersandQuotedProperty, i); } :} - | value_expression_primary:i DOT identifier:j LPAREN exp_list_opt:lis RPAREN:rparen {: + | value_expression_primary:i DOT identifier:j LPAREN exp_list_opt:lis + RPAREN:rparen {: lis.add(0, i); ParseRegion region = createRegion(ileft, rparenright); RESULT = new CallNode(region, j.getName(), Syntax.Method, lis); @@ -905,7 +907,8 @@ value_expression_primary ::= RESULT = new CallNode(region, i.getName(), Syntax.Function, lis); :} | CAST:cast LPAREN expression:e AS identifier:t RPAREN:rparen {: - LiteralNode symbol = LiteralNode.createSymbol(t.getRegion(), t.getName()); + LiteralNode symbol = + LiteralNode.createSymbol(t.getRegion(), t.getName()); ParseRegion region = createRegion(castleft, rparenright); RESULT = new CallNode(region, "CAST", Syntax.Cast, e, symbol); :} @@ -915,7 +918,8 @@ value_expression_primary ::= ParseRegion region = createRegion(lparenleft, rparenright); RESULT = new CallNode(region, "()", Syntax.Parentheses, lis); :} - | LBRACE:lbrace exp_list_opt:lis RBRACE:rbrace {: // set built from sets/tuples + | LBRACE:lbrace exp_list_opt:lis RBRACE:rbrace {: + // set built from sets/tuples ParseRegion region = createRegion(lbraceleft, rbraceright); RESULT = new CallNode(region, "{}", Syntax.Braces, lis); :} diff --git a/src/org/olap4j/metadata/Measure.java b/src/org/olap4j/metadata/Measure.java index b1d90e6..c2e4aee 100644 --- a/src/org/olap4j/metadata/Measure.java +++ b/src/org/olap4j/metadata/Measure.java @@ -89,12 +89,14 @@ enum Aggregator { */ STD(7), /** - * Identifies that the measure was derived from a formula that was not any single function above. + * Identifies that the measure was derived from a formula that was not + * any single function above. */ CALCULATED(127), /** - * Identifies that the measure was derived from an unknown aggregation function or formula. + * Identifies that the measure was derived from an unknown aggregation + * function or formula. */ UNKNOWN(0); diff --git a/src/org/olap4j/metadata/Property.java b/src/org/olap4j/metadata/Property.java index 59c3f66..4d179e1 100644 --- a/src/org/olap4j/metadata/Property.java +++ b/src/org/olap4j/metadata/Property.java @@ -262,7 +262,8 @@ enum StandardMemberProperty implements Property { /** * Definition of the property which holds the - * number of parents that this member has. Generally 1, or 0 for root members. + * number of parents that this member has. Generally 1, or 0 + * for root members. */ PARENT_COUNT(Datatype.UNSIGNED_INTEGER, 26, false, "Required. Number of parents that this member has."), @@ -275,8 +276,8 @@ enum StandardMemberProperty implements Property { /** * Definition of the internal property which holds the * name of the system property which determines whether to show a member - * (especially a measure or calculated member) in a user interface such as - * JPivot. + * (especially a measure or calculated member) in a user interface such + * as JPivot. */ $visible(Datatype.BOOLEAN, 28, true, null), @@ -306,8 +307,9 @@ enum StandardMemberProperty implements Property { * Definition of the property which * holds the level depth of a member. * - *

    Caution: Level depth of members in parent-child hierarchy isn't from their levels. - * It's calculated from the underlying data dynamically. + *

    Caution: Level depth of members in parent-child hierarchy isn't + * from their levels. It's calculated from the underlying data + * dynamically. */ DEPTH(Datatype.UNSIGNED_INTEGER, 43, true, "The level depth of a member"), @@ -315,14 +317,15 @@ enum StandardMemberProperty implements Property { * Definition of the property which * holds the DISPLAY_INFO required by XML/A. * - *

    Caution: This property's value is calculated based on a specified MDX query, so its value is dynamic at runtime. + *

    Caution: This property's value is calculated based on a specified + * MDX query, so its value is dynamic at runtime. */ DISPLAY_INFO(Datatype.UNSIGNED_INTEGER, 44, false, "Display instruction of a member for XML/A"), /** * Definition of the property which - * holds the value of a cell. Is usually numeric (since most measures are - * numeric) but is occasionally another type. + * holds the value of a cell. Is usually numeric (since most measures + * are numeric) but is occasionally another type. */ VALUE(Datatype.VARIANT, 41, false, "The unformatted value of the cell."); @@ -425,15 +428,15 @@ enum StandardCellProperty implements Property { /** * Definition of the property which - * determines the solve order of a calculated member with respect to other - * calculated members. + * determines the solve order of a calculated member with respect to + * other calculated members. */ SOLVE_ORDER(Datatype.INTEGER, 40, false, "The solve order of the cell."), /** * Definition of the property which - * holds the value of a cell. Is usually numeric (since most measures are - * numeric) but is occasionally another type. + * holds the value of a cell. Is usually numeric (since most measures + * are numeric) but is occasionally another type. */ VALUE(Datatype.VARIANT, 41, false, "The unformatted value of the cell."), diff --git a/src/org/olap4j/query/Olap4jNodeConverter.java b/src/org/olap4j/query/Olap4jNodeConverter.java index a25eb36..2bc9236 100644 --- a/src/org/olap4j/query/Olap4jNodeConverter.java +++ b/src/org/olap4j/query/Olap4jNodeConverter.java @@ -92,7 +92,10 @@ protected static CallNode getMemberSet(QueryDimension dimension) { toOlap4j(dimension)); } - protected static CallNode crossJoin(QueryDimension dim1, QueryDimension dim2) { + protected static CallNode crossJoin( + QueryDimension dim1, + QueryDimension dim2) + { return new CallNode( null, @@ -179,7 +182,8 @@ private static List toOlap4j(QueryDimension dimension) { Syntax.Function, generateListSetCall(members), currentMemberNameNode, - LiteralNode.createSymbol(null,dimension.getSortOrder().name()))); + LiteralNode.createSymbol( + null, dimension.getSortOrder().name()))); return orderedList; } else { return members; @@ -195,7 +199,10 @@ private static ParseTreeNode toOlap4j(Selection selection) { return null; } - private static ParseTreeNode toOlap4j(Member member, Selection.Operator oper) { + private static ParseTreeNode toOlap4j( + Member member, + Selection.Operator oper) + { ParseTreeNode node = null; try { switch (oper) { diff --git a/src/org/olap4j/query/RectangularCellSetFormatter.java b/src/org/olap4j/query/RectangularCellSetFormatter.java index 327305e..fdb6163 100644 --- a/src/org/olap4j/query/RectangularCellSetFormatter.java +++ b/src/org/olap4j/query/RectangularCellSetFormatter.java @@ -24,27 +24,27 @@ *

    With non-compact layout: * *

    - *                          | 1997                                                |
    - *                          | Q1                       | Q2                       |
    - *                          |                          | 4                        |
    - *                          | Unit Sales | Store Sales | Unit Sales | Store Sales |
    - * ----+----+---------------+------------+-------------+------------+-------------+
    - * USA | CA | Los Angeles   |            |             |            |             |
    - *     | WA | Seattle       |            |             |            |             |
    - *     | CA | San Francisco |            |             |            |             |
    + *                    | 1997                                                |
    + *                    | Q1                       | Q2                       |
    + *                    |                          | 4                        |
    + *                    | Unit Sales | Store Sales | Unit Sales | Store Sales |
    + * ----+----+---------+------------+-------------+------------+-------------+
    + * USA | CA | Modesto |         12 |        34.5 |         13 |       35.60 |
    + *     | WA | Seattle |         12 |        34.5 |         13 |       35.60 |
    + *     | CA | Fresno  |         12 |        34.5 |         13 |       35.60 |
      * 
    * *

    With compact layout: *

      *
    - *                      1997
    - *                      Q1                     Q2
    - *                                             4
    - *                      Unit Sales Store Sales Unit Sales Store Sales
    - * === == ============= ========== =========== ========== ===========
    - * USA CA Los Angeles           12        34.5         13       35.60
    - *     WA Seattle               12        34.5         13       35.60
    - *     CA San Francisco         12        34.5         13       35.60
    + *                1997
    + *                Q1                     Q2
    + *                                       4
    + *                Unit Sales Store Sales Unit Sales Store Sales
    + * === == ======= ========== =========== ========== ===========
    + * USA CA Modesto         12        34.5         13       35.60
    + *     WA Seattle         12        34.5         13       35.60
    + *     CA Fresno          12        34.5         13       35.60
      * 
    * *

    This class is experimental. It is not part of the olap4j diff --git a/src/org/olap4j/query/SelectionFactory.java b/src/org/olap4j/query/SelectionFactory.java index 499bfc0..1bcc0d1 100644 --- a/src/org/olap4j/query/SelectionFactory.java +++ b/src/org/olap4j/query/SelectionFactory.java @@ -32,7 +32,10 @@ public class SelectionFactory { this.query = query; } - Selection createMemberSelection(Member member, Selection.Operator operator) { + Selection createMemberSelection( + Member member, + Selection.Operator operator) + { return new SelectionImpl( member, diff --git a/src/org/olap4j/sample/SimpleQuerySample.java b/src/org/olap4j/sample/SimpleQuerySample.java index 9f5c6ab..110336b 100644 --- a/src/org/olap4j/sample/SimpleQuerySample.java +++ b/src/org/olap4j/sample/SimpleQuerySample.java @@ -154,7 +154,8 @@ void preparedStatement() throws SQLException, ClassNotFoundException { statement.getParameterMetaData(); // Locate the member "[Store].[USA].[WA].[Seattle]". - MemberType type = (MemberType) parameterMetaData.getParameterOlapType(1); + MemberType type = + (MemberType) parameterMetaData.getParameterOlapType(1); Dimension dimension = type.getDimension(); assert dimension.getName().equals("Store"); Member allStores = diff --git a/src/org/olap4j/transform/DrillDownOnPositionTransform.java b/src/org/olap4j/transform/DrillDownOnPositionTransform.java index 0992394..e62e8ba 100644 --- a/src/org/olap4j/transform/DrillDownOnPositionTransform.java +++ b/src/org/olap4j/transform/DrillDownOnPositionTransform.java @@ -113,7 +113,9 @@ protected ParseTreeNode processAxisExp(ParseTreeNode exp) { // visitor for a tree of expressions inside a query axis // (not sure this should go here) - class DrillDownOnPositionVisitor implements ParseTreeVisitor { + class DrillDownOnPositionVisitor + implements ParseTreeVisitor + { public ParseTreeNode visit(SelectNode selectNode) { // TODO Auto-generated method stub diff --git a/src/org/olap4j/type/TupleType.java b/src/org/olap4j/type/TupleType.java index 6007a1a..7906a80 100755 --- a/src/org/olap4j/type/TupleType.java +++ b/src/org/olap4j/type/TupleType.java @@ -76,7 +76,9 @@ private Type getValueType() throws OlapException { for (Type elementType : elementTypes) { if (elementType instanceof MemberType) { MemberType memberType = (MemberType) elementType; - if (memberType.getDimension().getDimensionType() == Dimension.Type.MEASURE) { + if (memberType.getDimension().getDimensionType() + == Dimension.Type.MEASURE) + { return memberType.getValueType(); } } diff --git a/testsrc/org/olap4j/CellSetFormatterTest.java b/testsrc/org/olap4j/CellSetFormatterTest.java index 515b0ae..84907ed 100644 --- a/testsrc/org/olap4j/CellSetFormatterTest.java +++ b/testsrc/org/olap4j/CellSetFormatterTest.java @@ -118,7 +118,8 @@ public enum Format { COMPACT_RECTANGULAR, /** - * Rectangular format that uses vertical bars and hyphens to draw a grid. + * Rectangular format that uses vertical bars and hyphens to draw a + * grid. */ RECTANGULAR } diff --git a/testsrc/org/olap4j/ConnectionTest.java b/testsrc/org/olap4j/ConnectionTest.java index 4d40a01..4a39b8e 100644 --- a/testsrc/org/olap4j/ConnectionTest.java +++ b/testsrc/org/olap4j/ConnectionTest.java @@ -36,7 +36,8 @@ * @version $Id$ */ public class ConnectionTest extends TestCase { - private final TestContext.Tester tester = TestContext.instance().getTester(); + private final TestContext.Tester tester = + TestContext.instance().getTester(); private static final boolean IS_JDK_16 = System.getProperty("java.version").startsWith("1.6."); @@ -75,7 +76,8 @@ public void testDriver() throws ClassNotFoundException, SQLException { // deregister driver DriverManager.deregisterDriver(driver); try { - Driver driver2 = DriverManager.getDriver(tester.getDriverUrlPrefix()); + Driver driver2 = + DriverManager.getDriver(tester.getDriverUrlPrefix()); fail("expected error, got " + driver2); } catch (SQLException e) { assertEquals("No suitable driver", e.getMessage()); @@ -252,7 +254,8 @@ public void testConnectionUnwrap() throws SQLException { // Trivial unwrap assertTrue(((OlapWrapper) connection).isWrapperFor(Connection.class)); - Connection connection2 = ((OlapWrapper) connection).unwrap(Connection.class); + Connection connection2 = + ((OlapWrapper) connection).unwrap(Connection.class); assertEquals(connection2, connection); // Silly unwrap @@ -580,7 +583,8 @@ public void testPreparedStatement() throws SQLException { assertEquals(ParameterMetaData.parameterModeIn, mode); break; case Type: - int type = parameterMetaData.getParameterType(paramIndex); + int type = + parameterMetaData.getParameterType(paramIndex); assertEquals(Types.OTHER, type); break; case TypeName: @@ -778,7 +782,9 @@ private void checkCellSetMetaData( : cellSetMetaData.getAxesMetaData()) { ++k; - assertEquals(Axis.Factory.forOrdinal(k), axisMetaData.getAxisOrdinal()); + assertEquals( + Axis.Factory.forOrdinal(k), + axisMetaData.getAxisOrdinal()); assertEquals(k, axisMetaData.getAxisOrdinal().axisOrdinal()); assertTrue(axisMetaData.getHierarchies().size() > 0); for (Hierarchy hierarchy : axisMetaData.getHierarchies()) { @@ -1635,7 +1641,8 @@ public void testMetadata() throws Exception { // FIXME: implement getExpression in XMLA driver break; default: - assertTrue(namedSet.getExpression().getType() instanceof SetType); + assertTrue( + namedSet.getExpression().getType() instanceof SetType); } } assertTrue(count > 0); @@ -1825,10 +1832,14 @@ public void testParentChild() throws ClassNotFoundException, SQLException { assertEquals("All Employees", member0.getName()); assertEquals(0, member0.getDepth()); Member member1 = rowsAxis.getPositions().get(1).getMembers().get(0); - assertEquals("[Employees].[All Employees].[Sheri Nowmer]", member1.getUniqueName()); + assertEquals( + "[Employees].[All Employees].[Sheri Nowmer]", + member1.getUniqueName()); assertEquals(1, member1.getDepth()); assertEquals(1, member1.getLevel().getDepth()); - assertEquals(member0.getUniqueName(), member1.getParentMember().getUniqueName()); + assertEquals( + member0.getUniqueName(), + member1.getParentMember().getUniqueName()); assertEquals(member0, member1.getParentMember()); Member member2 = rowsAxis.getPositions().get(2).getMembers().get(0); assertTrue( @@ -1996,7 +2007,8 @@ public void testAxisType() throws Throwable { final AxisNode rowsAxis = select.getAxisList().get(1); final Type rowsType = rowsAxis.getExpression().getType(); assertTrue(rowsType instanceof SetType); - MemberType memberType = (MemberType) ((SetType) rowsType).getElementType(); + MemberType memberType = + (MemberType) ((SetType) rowsType).getElementType(); assertNotNull(memberType.toString()); // MemberType.getMember is null because we know it belongs to the City // level, but no particular member of that level. diff --git a/testsrc/org/olap4j/MetadataTest.java b/testsrc/org/olap4j/MetadataTest.java index 2d4cfd4..a418701 100644 --- a/testsrc/org/olap4j/MetadataTest.java +++ b/testsrc/org/olap4j/MetadataTest.java @@ -239,7 +239,9 @@ public void testDatabaseMetaDataGetLiterals() throws SQLException { assertContains("LITERAL_NAME=DBLITERAL_QUOTE, LITERAL_VALUE=[, ", s); } - public void testDatabaseMetaDataGetDatabaseProperties() throws SQLException { + public void testDatabaseMetaDataGetDatabaseProperties() + throws SQLException + { String s = checkResultSet( olapDatabaseMetaData.getDatabaseProperties( dataSourceName, propertyNamePattern), diff --git a/testsrc/org/olap4j/OlapTest.java b/testsrc/org/olap4j/OlapTest.java index 63a9fa0..e5e9aaf 100644 --- a/testsrc/org/olap4j/OlapTest.java +++ b/testsrc/org/olap4j/OlapTest.java @@ -108,8 +108,8 @@ public void testModel() { String password = "foodmartpassword"; String jdbc = "jdbc:mysql://localhost/foodmart?user=foodmartuser&password=foodmartpassword"; - // Create a connection object to the specific implementation of an olap4j source - // This is the only provider-specific code + // Create a connection object to the specific implementation of an + // olap4j source. This is the only provider-specific code. Class.forName("mondrian.olap4j.MondrianOlap4jDriver"); connection = DriverManager.getConnection( "jdbc:mondrian:Jdbc=" + jdbc @@ -128,7 +128,8 @@ public void testModel() { // The code from here on is generic olap4j stuff - // Get a list of the schemas available from this connection and dump their names + // Get a list of the schemas available from this connection and dump + // their names. final String catalogName; switch (tester.getFlavor()) { case MONDRIAN: @@ -169,17 +170,21 @@ public void testModel() { Cube cube = cubes.get("Sales"); System.out.println("using cube name=" + cube.getName()); - // create an XML doc to represent the Cube and print it out - // This XML would be used by remote clients to enable cube navigation - System.out.println(Olap4jXml.xmlToString(Olap4jXml.cubeToDoc(cube))); + // Create an XML doc to represent the Cube and print it out. This + // XML would be used by remote clients to enable cube navigation. + System.out.println( + Olap4jXml.xmlToString(Olap4jXml.cubeToDoc(cube))); - // Get a list of dimension objects and dump their names, hierarchies, levels + // Get a list of dimension objects and dump their names, + // hierarchies, levels. NamedList dimensions = cube.getDimensions(); for (Dimension dimension : dimensions) { if (dimension.getDimensionType() == Dimension.Type.MEASURE) { - System.out.println("measures dimension name=" + dimension.getName()); + System.out.println( + "measures dimension name=" + dimension.getName()); } else { - System.out.println("dimension name=" + dimension.getName()); + System.out.println( + "dimension name=" + dimension.getName()); } listHierarchies(dimension); } @@ -192,36 +197,57 @@ public void testModel() { QueryDimension productQuery = query.getDimension("Product"); QueryDimension storeQuery = query.getDimension("Store"); - QueryDimension timeQuery = query.getDimension("Time"); //$NON-NLS-1$ + QueryDimension timeQuery = + query.getDimension("Time"); //$NON-NLS-1$ - listMembers(productQuery.getDimension().getHierarchies().get("Product").getLevels().get("Product Department")); + listMembers( + productQuery.getDimension().getHierarchies().get("Product") + .getLevels().get("Product Department")); - listMembers(storeQuery.getDimension().getHierarchies().get("Store").getLevels().get("Store Country")); + listMembers( + storeQuery.getDimension().getHierarchies().get("Store") + .getLevels().get("Store Country")); Member productMember = cube.lookupMember("Product", "Drink"); - Selection selection = productQuery.createSelection(productMember, Selection.Operator.CHILDREN); - - // Create an XML doc to represent the resolved selection and print it out - // This would be used by a client application to enable hierarchy navigation + Selection selection = + productQuery.createSelection( + productMember, + Selection.Operator.CHILDREN); + + // Create an XML doc to represent the resolved selection and print + // it out. This would be used by a client application to enable + // hierarchy navigation. List members = productQuery.resolve(selection); - System.out.println(Olap4jXml.xmlToString(Olap4jXml.selectionToDoc(selection, members))); + System.out.println( + Olap4jXml.xmlToString( + Olap4jXml.selectionToDoc(selection, members))); // create some selections for Store Member usaMember = cube.lookupMember("Store", "USA"); - Selection usa = storeQuery.createSelection(usaMember, Selection.Operator.CHILDREN); + Selection usa = + storeQuery.createSelection( + usaMember, Selection.Operator.CHILDREN); storeQuery.getSelections().add(usa); // create some selections for Product productQuery.getSelections().clear(); - Selection productSelection1 = productQuery.createSelection(productMember, Selection.Operator.CHILDREN); + Selection productSelection1 = + productQuery.createSelection( + productMember, + Selection.Operator.CHILDREN); Member productFoodMember = cube.lookupMember("Product", "Food"); - Selection productSelection2 = productQuery.createSelection(productFoodMember, Selection.Operator.CHILDREN); + Selection productSelection2 = + productQuery.createSelection( + productFoodMember, Selection.Operator.CHILDREN); productQuery.getSelections().add(productSelection1); productQuery.getSelections().add(productSelection2); // create some selections for Time Member timeMember = cube.lookupMember("Time", "1997"); - Selection year97 = timeQuery.createSelection(timeMember, Selection.Operator.CHILDREN); + Selection year97 = + timeQuery.createSelection( + timeMember, + Selection.Operator.CHILDREN); timeQuery.getSelections().add(year97); // place our dimensions on the axes @@ -237,26 +263,32 @@ public void testModel() { assertTrue(e.getMessage().contains("dimension already on this axis")); } - // Create an XML doc to represent the query and print it out - // This XML would be used by a client application to persist a query - System.out.println(Olap4jXml.xmlToString(Olap4jXml.queryToDoc(query))); + // Create an XML doc to represent the query and print it out. This + // XML would be used by a client application to persist a query. + System.out.println( + Olap4jXml.xmlToString( + Olap4jXml.queryToDoc(query))); query.validate(); CellSet result = query.execute(); System.out.println(TestContext.toString(result)); - // Create an XML doc to represent the results and print it out - // This XML would be used by a remote client application to get the results - System.out.println(Olap4jXml.xmlToString(Olap4jXml.resultToDoc(result))); + // Create an XML doc to represent the results and print it out. + // This XML would be used by a remote client application to get the + // results. + System.out.println( + Olap4jXml.xmlToString(Olap4jXml.resultToDoc(result))); // for shits and giggles we'll swap the axes over query.swapAxes(); - System.out.println(Olap4jXml.xmlToString(Olap4jXml.queryToDoc(query))); + System.out.println( + Olap4jXml.xmlToString(Olap4jXml.queryToDoc(query))); query.validate(); result = query.execute(); System.out.println(result.toString()); - System.out.println(Olap4jXml.xmlToString(Olap4jXml.resultToDoc(result))); + System.out.println( + Olap4jXml.xmlToString(Olap4jXml.resultToDoc(result))); } catch (Throwable t) { t.printStackTrace(); fail(); @@ -287,8 +319,10 @@ public void testSelectionModes() { Selection.Operator.MEMBER); measuresDimension.getSelections().add(storeSalesSelection); - query.getAxes().get(Axis.ROWS).getDimensions().add(productDimension); - query.getAxes().get(Axis.COLUMNS).getDimensions().add(measuresDimension); + query.getAxes().get(Axis.ROWS).getDimensions() + .add(productDimension); + query.getAxes().get(Axis.COLUMNS).getDimensions() + .add(measuresDimension); query.validate(); @@ -420,10 +454,12 @@ public void testMultipleDimensionSelections() { Selection.Operator.MEMBER); measuresDimension.getSelections().add(storeSalesSelection); - query.getAxes().get(Axis.ROWS).getDimensions().add(productDimension); + query.getAxes().get(Axis.ROWS).getDimensions() + .add(productDimension); query.getAxes().get(Axis.ROWS).getDimensions().add(storeDimension); query.getAxes().get(Axis.ROWS).getDimensions().add(timeDimension); - query.getAxes().get(Axis.COLUMNS).getDimensions().add(measuresDimension); + query.getAxes().get(Axis.COLUMNS).getDimensions() + .add(measuresDimension); query.validate(); @@ -462,19 +498,24 @@ public void testSwapAxes() { productDimension.getSelections().add(drinkSelection); QueryDimension measuresDimension = query.getDimension("Measures"); - Member storeSalesMember = cube.lookupMember("Measures", "Store Sales"); + Member storeSalesMember = + cube.lookupMember("Measures", "Store Sales"); Selection storeSalesSelection = measuresDimension.createSelection(storeSalesMember, Selection.Operator.MEMBER); measuresDimension.getSelections().add(storeSalesSelection); - query.getAxes().get(Axis.ROWS).getDimensions().add(productDimension); - query.getAxes().get(Axis.COLUMNS).getDimensions().add(measuresDimension); + query.getAxes().get(Axis.ROWS).getDimensions() + .add(productDimension); + query.getAxes().get(Axis.COLUMNS).getDimensions() + .add(measuresDimension); query.validate(); assertEquals(productDimension.getAxis().getLocation(), Axis.ROWS); - assertEquals(measuresDimension.getAxis().getLocation(), Axis.COLUMNS); + assertEquals( + measuresDimension.getAxis().getLocation(), + Axis.COLUMNS); SelectNode mdx = query.getSelect(); String mdxString = mdx.toString(); @@ -487,7 +528,9 @@ public void testSwapAxes() { query.swapAxes(); - assertEquals(productDimension.getAxis().getLocation(), Axis.COLUMNS); + assertEquals( + productDimension.getAxis().getLocation(), + Axis.COLUMNS); assertEquals(measuresDimension.getAxis().getLocation(), Axis.ROWS); mdx = query.getSelect(); @@ -519,24 +562,31 @@ public void testSortDimension() { QueryDimension productDimension = query.getDimension("Product"); Member drinkMember = cube.lookupMember("Product", "Drink"); Selection drinkSelection = - productDimension.createSelection(drinkMember, - Selection.Operator.INCLUDE_CHILDREN); + productDimension.createSelection( + drinkMember, + Selection.Operator.INCLUDE_CHILDREN); productDimension.getSelections().add(drinkSelection); QueryDimension measuresDimension = query.getDimension("Measures"); - Member storeSalesMember = cube.lookupMember("Measures", "Store Sales"); + Member storeSalesMember = + cube.lookupMember("Measures", "Store Sales"); Selection storeSalesSelection = - measuresDimension.createSelection(storeSalesMember, - Selection.Operator.MEMBER); + measuresDimension.createSelection( + storeSalesMember, + Selection.Operator.MEMBER); measuresDimension.getSelections().add(storeSalesSelection); - query.getAxes().get(Axis.ROWS).getDimensions().add(productDimension); - query.getAxes().get(Axis.COLUMNS).getDimensions().add(measuresDimension); + query.getAxes().get(Axis.ROWS).getDimensions().add( + productDimension); + query.getAxes().get(Axis.COLUMNS).getDimensions().add( + measuresDimension); query.validate(); assertEquals(productDimension.getAxis().getLocation(), Axis.ROWS); - assertEquals(measuresDimension.getAxis().getLocation(), Axis.COLUMNS); + assertEquals( + measuresDimension.getAxis().getLocation(), + Axis.COLUMNS); SelectNode mdx = query.getSelect(); String mdxString = mdx.toString(); @@ -640,7 +690,10 @@ public static Document cubeToDoc(Cube cube) { return doc; } - public static Document selectionToDoc(Selection selection, List members) { + public static Document selectionToDoc( + Selection selection, + List members) + { Document doc = Olap4jXml.newDocument(); Element root = doc.createElement("olap4j"); doc.appendChild(root); @@ -727,8 +780,11 @@ public static void resultsToXml( root.appendChild(gridNode); for (CellSetAxis axis : result.getAxes()) { - for (Hierarchy hierarchy : axis.getAxisMetaData().getHierarchies()) { - Element dimensionNode = dimensionInfoToXml(hierarchy.getDimension(), doc); + for (Hierarchy hierarchy : + axis.getAxisMetaData().getHierarchies()) + { + Element dimensionNode = + dimensionInfoToXml(hierarchy.getDimension(), doc); dimensionsNode.appendChild(dimensionNode); } } @@ -894,7 +950,8 @@ public static void dimensionSelectionsToXml( Document doc, Element parent) throws OlapException { - Element dimensionNode = dimensionInfoToXml(dimension.getDimension(), doc); + Element dimensionNode = + dimensionInfoToXml(dimension.getDimension(), doc); parent.appendChild(dimensionNode); Element selectionsNode; @@ -945,7 +1002,11 @@ public static Element memberToXml(Member member, Element parent) { return memberNode; } - public static void addCDataNode(String name, String value, Element parent) { + public static void addCDataNode( + String name, + String value, + Element parent) + { Document doc = parent.getOwnerDocument(); Element node = doc.createElement(name); if (value != null) { @@ -964,7 +1025,11 @@ public static void addNode(String name, String value, Element parent) { parent.appendChild(node); } - public static void addAttribute(String name, String value, Element parent) { + public static void addAttribute( + String name, + String value, + Element parent) + { if (name != null && value != null) { parent.setAttribute(name, value); } diff --git a/testsrc/org/olap4j/driver/xmla/cache/XmlaSHAEncoderTest.java b/testsrc/org/olap4j/driver/xmla/cache/XmlaSHAEncoderTest.java deleted file mode 100644 index eb23884..0000000 --- a/testsrc/org/olap4j/driver/xmla/cache/XmlaSHAEncoderTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.olap4j.driver.xmla.cache; - -import junit.framework.TestCase; - -import org.olap4j.driver.xmla.cache.XmlaOlap4jSHAEncoder; - -/** - *

    This is a simple test that makes sure that the SHA encoder works - * as expected. - * - * @author Luc Boudreau - */ -public class XmlaSHAEncoderTest extends TestCase { - - private static final String message_1 = "This is my nifty message number 1"; - private static final String message_2 = "This is my nifty message number 2"; - private static final String message_1_encoded = "0821347e66167004f9aba546ae9e61ec5b471e59"; - private static final String message_2_encoded = "95dfe200baddc69e2f53e78feeac445a0bdbb4e7"; - - - public void testSimpleEncoding() throws Exception { - String encoded = XmlaOlap4jSHAEncoder.SHA1(message_1); - assertEquals(message_1_encoded, encoded); - } - - - public void testDoubleEncoding() throws Exception - { - String encoded = XmlaOlap4jSHAEncoder.SHA1(message_1); - assertEquals(message_1_encoded, encoded); - - String encoded2 = XmlaOlap4jSHAEncoder.SHA1(message_2); - assertEquals(message_2_encoded, encoded2); - - assertFalse(encoded.equals(encoded2)); - - String encoded3 = XmlaOlap4jSHAEncoder.SHA1(message_1); - assertEquals(message_1_encoded, encoded3); - - String encoded4 = XmlaOlap4jSHAEncoder.SHA1(message_1); - assertEquals(message_1_encoded, encoded4); - - assertEquals(encoded3, encoded4); - } - -} - -// End XmlaSHAEncoderTest.java diff --git a/testsrc/org/olap4j/driver/xmla/cache/XmlaShaEncoderTest.java b/testsrc/org/olap4j/driver/xmla/cache/XmlaShaEncoderTest.java new file mode 100644 index 0000000..0f828a6 --- /dev/null +++ b/testsrc/org/olap4j/driver/xmla/cache/XmlaShaEncoderTest.java @@ -0,0 +1,58 @@ +/* +// $Id$ +// This software is subject to the terms of the Eclipse Public License v1.0 +// Agreement, available at the following URL: +// http://www.eclipse.org/legal/epl-v10.html. +// Copyright (C) 2008-2009 Julian Hyde +// All Rights Reserved. +// You must accept the terms of that agreement to use this software. +*/ +package org.olap4j.driver.xmla.cache; + +import junit.framework.TestCase; + +import org.olap4j.driver.xmla.cache.XmlaOlap4jShaEncoder; + +/** + *

    Test for {@ink org.olap4j.driver.xmla.cache.XmlaOlap4jShaEncoder}. + * + * @author Luc Boudreau + * @version $Id$ + */ +public class XmlaShaEncoderTest extends TestCase { + + private static final String message_1 = + "This is my nifty message number 1"; + private static final String message_2 = + "This is my nifty message number 2"; + private static final String message_1_encoded = + "0821347e66167004f9aba546ae9e61ec5b471e59"; + private static final String message_2_encoded = + "95dfe200baddc69e2f53e78feeac445a0bdbb4e7"; + + public void testSimpleEncoding() throws Exception { + String encoded = XmlaOlap4jShaEncoder.encodeSha1(message_1); + assertEquals(message_1_encoded, encoded); + } + + public void testDoubleEncoding() throws Exception { + String encoded = XmlaOlap4jShaEncoder.encodeSha1(message_1); + assertEquals(message_1_encoded, encoded); + + String encoded2 = XmlaOlap4jShaEncoder.encodeSha1(message_2); + assertEquals(message_2_encoded, encoded2); + + assertFalse(encoded.equals(encoded2)); + + String encoded3 = XmlaOlap4jShaEncoder.encodeSha1(message_1); + assertEquals(message_1_encoded, encoded3); + + String encoded4 = XmlaOlap4jShaEncoder.encodeSha1(message_1); + assertEquals(message_1_encoded, encoded4); + + assertEquals(encoded3, encoded4); + } + +} + +// End XmlaShaEncoderTest.java diff --git a/testsrc/org/olap4j/driver/xmla/proxy/XmlaCachedProxyTest.java b/testsrc/org/olap4j/driver/xmla/proxy/XmlaCachedProxyTest.java index 1b6ff33..53c3c5c 100644 --- a/testsrc/org/olap4j/driver/xmla/proxy/XmlaCachedProxyTest.java +++ b/testsrc/org/olap4j/driver/xmla/proxy/XmlaCachedProxyTest.java @@ -248,8 +248,10 @@ public void testCacheNameError() throws Exception /** - *

    Makes sure that a cache name is properly shared in a static way and - * that the parameters are not overwritten by subsequent connection creations. + *

    Makes sure that a cache name is properly shared in a static + * way and that the parameters are not overwritten by subsequent + * connection creations. + * * @throws Exception If the test fails. */ public void testCacheSharing() throws Exception diff --git a/testsrc/org/olap4j/driver/xmla/proxy/XmlaCookieManagerTest.java b/testsrc/org/olap4j/driver/xmla/proxy/XmlaCookieManagerTest.java index a80e921..ce449eb 100644 --- a/testsrc/org/olap4j/driver/xmla/proxy/XmlaCookieManagerTest.java +++ b/testsrc/org/olap4j/driver/xmla/proxy/XmlaCookieManagerTest.java @@ -17,23 +17,24 @@ public class XmlaCookieManagerTest extends TestCase { /** - *

    This simple test makes sure that the cookie manager works as expected. It creates a - * connection stub which returns fake Set-Cookie response headers. The cookies are then - * stored in the cookie manager and a new connection stub is created. The second connection - * is then passed back to the manager and we check if the cookies were applied - * to the connection. + * This simple test makes sure that the cookie manager works as expected. It + * creates a connection stub which returns fake Set-Cookie response + * headers. The cookies are then stored in the cookie manager and a new + * connection stub is created. The second connection is then passed back to + * the manager and we check if the cookies were applied to the connection. * * @throws Exception */ public void testCookieManager() throws Exception { - URLConnectionStub conn = new URLConnectionStub(new URL("http://example.com")); + UrlConnectionStub conn = + new UrlConnectionStub(new URL("http://example.com")); XmlaOlap4jCookieManager manager = new XmlaOlap4jCookieManager(); conn.connect(); manager.storeCookies(conn); - conn = new URLConnectionStub(new URL("http://example.com")); + conn = new UrlConnectionStub(new URL("http://example.com")); manager.setCookies(conn); @@ -41,15 +42,11 @@ public void testCookieManager() throws Exception { assertEquals(cookieValue, conn.getInternalCookieValue()); } - - - - - private static class URLConnectionStub extends HttpURLConnection { + private static class UrlConnectionStub extends HttpURLConnection { private String internalCookieKey = null; private String internalCookieValue = null; - protected URLConnectionStub(URL u) { + protected UrlConnectionStub(URL u) { super(u); } diff --git a/testsrc/org/olap4j/impl/Base64Test.java b/testsrc/org/olap4j/impl/Base64Test.java index 960b0a4..423c43a 100644 --- a/testsrc/org/olap4j/impl/Base64Test.java +++ b/testsrc/org/olap4j/impl/Base64Test.java @@ -47,7 +47,8 @@ private void runStreamTest(int length) throws Exception byte[] decoded = Base64.decode(encoded, 0, encoded.length); assertTrue(Arrays.equals(data, decoded)); - Base64.InputStream in = new Base64.InputStream(new ByteArrayInputStream(encoded)); + Base64.InputStream in = + new Base64.InputStream(new ByteArrayInputStream(encoded)); out_bytes = new ByteArrayOutputStream(); byte[] buffer = new byte[3]; for (int n = in.read(buffer); n > 0; n = in.read(buffer)) { diff --git a/testsrc/org/olap4j/test/ParserTest.java b/testsrc/org/olap4j/test/ParserTest.java index f0e94e3..c763acc 100644 --- a/testsrc/org/olap4j/test/ParserTest.java +++ b/testsrc/org/olap4j/test/ParserTest.java @@ -663,7 +663,9 @@ public void _testCloneQuery() throws SQLException { SelectNode selectClone = null; // select.copy(); assertTrue(selectClone instanceof SelectNode); - assertEquals(TestContext.toString(selectClone), TestContext.toString(query)); + assertEquals( + TestContext.toString(selectClone), + TestContext.toString(query)); } /** diff --git a/testsrc/org/olap4j/test/TestContext.java b/testsrc/org/olap4j/test/TestContext.java index 330d7f7..4750db6 100644 --- a/testsrc/org/olap4j/test/TestContext.java +++ b/testsrc/org/olap4j/test/TestContext.java @@ -522,7 +522,9 @@ public String getDriverClassName() { return tester.getDriverClassName(); } - public Connection createConnectionWithUserPassword() throws SQLException { + public Connection createConnectionWithUserPassword() + throws SQLException + { return tester.createConnectionWithUserPassword(); }