From e201c97bcba0892cc4883733a0e89c5ef19f026b Mon Sep 17 00:00:00 2001 From: Julian Hyde Date: Tue, 27 May 2008 19:21:25 +0000 Subject: [PATCH] Implement clearWarnings() as no-op (needed by apache-commons-dbcp); Make sure Level.getMembers() returns objects that implement Measure if applied to level in [Measures] dimension; Minor changes to web home page. git-svn-id: https://olap4j.svn.sourceforge.net/svnroot/olap4j/trunk@95 c6a108a4-781c-0410-a6c6-c2d559e19af0 --- doc/index.html | 12 +++-- .../driver/xmla/XmlaOlap4jConnection.java | 2 +- .../olap4j/driver/xmla/XmlaOlap4jCube.java | 45 +++++++++++++++++++ 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/doc/index.html b/doc/index.html index 79769a5..9d58586 100644 --- a/doc/index.html +++ b/doc/index.html @@ -7,7 +7,7 @@ == This software is subject to the terms of the Common Public License == Agreement, available at the following URL: == http://www.opensource.org/licenses/cpl.html. - == Copyright (C) 2006-2007 Julian Hyde and others. + == Copyright (C) 2006-2008 Julian Hyde and others. == All Rights Reserved. == You must accept the terms of that agreement to use this software. --> @@ -188,7 +188,8 @@

Resources

Get involved!

Join the forum, download the specification, and give us your feedback. If you are developing an OLAP server, component or application, let's work together to make your project olap4j-compliant.


-

Drivers for mondrian and XML/A are under development; we're looking for committers to work on these drivers and drivers for other servers.

+

Drivers for mondrian and XML/A are under development; we're looking for committers to work on these drivers and drivers for other servers.

+

Participation

olap4j is an open specification, being developed by a consortium of companies and open source projects, including: @@ -214,7 +215,12 @@
Companies
- © 2007 + © 2007-2008 + + + +SourceForge.net_Logo + diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java index 7716ff0..db37413 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java @@ -342,7 +342,7 @@ public SQLWarning getWarnings() throws SQLException { } public void clearWarnings() throws SQLException { - throw new UnsupportedOperationException(); + // this driver does not support warnings, so nothing to do } public Statement createStatement( diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java b/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java index b378acf..b8604b2 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jCube.java @@ -46,6 +46,13 @@ class XmlaOlap4jCube implements Cube, Named new NamedListImpl(); private final MetadataReader metadataReader; + /** + * Creates an XmlaOlap4jCube. + * + * @param olap4jSchema Schema + * @param name Name + * @param description Description + */ XmlaOlap4jCube( XmlaOlap4jSchema olap4jSchema, String name, @@ -120,6 +127,27 @@ class XmlaOlap4jCube implements Cube, Named measure.getUniqueName(), new SoftReference(measure)); } + if (!measures.isEmpty()) { + final XmlaOlap4jHierarchy measuresHierarchy = + measures.get(0).getHierarchy(); + for (XmlaOlap4jLevel level : measuresHierarchy.levels) { + final List memberList = level.getMembers(); + final List measureList = + new ArrayList(memberList.size()); + for (Member member : memberList) { + final SoftReference measureRef = + ((CachingMetadataReader) metadataReader).memberMap.get( + member.getUniqueName()); + // gc not possible - we hold all members in 'measures' field. + assert measureRef.get() != null; + measureList.add((Measure) measureRef.get()); + } + ((CachingMetadataReader) metadataReader).levelMemberListMap.put( + level, + new SoftReference>( + Olap4jUtil.cast(measureList))); + } + } // populate named sets olap4jConnection.populateList( namedSets, context, @@ -177,6 +205,13 @@ public Member lookupMember(String... nameParts) throws OlapException { return lookupMember(segmentList); } + /** + * Finds a member, given its fully qualfieid name. + * + * @param segmentList List of the segments of the name + * @return Member, or null if not found + * @throws OlapException on error + */ private Member lookupMember( List segmentList) throws OlapException { @@ -230,6 +265,11 @@ private static abstract class DelegatingMetadataReader { private final MetadataReader metadataReader; + /** + * Creates a DelegatingMetadataReader. + * + * @param metadataReader Underlying metadata reader + */ DelegatingMetadataReader(MetadataReader metadataReader) { this.metadataReader = metadataReader; } @@ -283,6 +323,11 @@ private static class CachingMetadataReader levelMemberListMap = new HashMap>>(); + /** + * Creates a CachingMetadataReader. + * + * @param metadataReader Underlying metadata reader + */ CachingMetadataReader(MetadataReader metadataReader) { super(metadataReader); }