diff --git a/build.xml b/build.xml
index cc3f00f..7243bab 100644
--- a/build.xml
+++ b/build.xml
@@ -14,7 +14,7 @@
Authors: Julian Hyde, Barry Klawans
-Version: 0.89.2-dev (draft)
+Version: 0.89.3-dev (draft)
Revision: $Id$
(log)
-Last modified: September 21st, 2007.
Package name: org.olap4j.mdx.parser
-Provides an MDX parser.
+Provides an MDX parser and validator.
+Parser and validator are both allocated via a parser factory, which is +obtained from a connection:
+ +Parser and validator are not thread-safe (they cannot be used by more than +one thread simultaneously) but they can be re-used for multiple statements.
+One of the chief purposes of validation is to assign a type to every
+expression within the parse tree. Before validation, any node's
+
+ParseTreeNode.getType() method may throw an exception, but after validation
+the getType()
method will return a type. Nodes which are not
+expressions do not have types, and will always return null
.
Classes:
MdxParserFactory
MdxParser
List<Dimension> getDimensions()
NamedList<Dimension> getDimensions()
List<Measure> getMeasures()
NamedList<NamedSet> getSets()
Schema getSchema()
String getName()
List<Locale> getSupportedLocales()
(see
Internationalization)Member lookupMember(String... nameParts)
Member lookupMembers(Set<TreeOp> treeOps, String... nameParts)
String getName()
List<Hierarchy> getHierarchies()
List<Member> getRootMembers()
NamedList<Hierarchy> getHierarchies()
Dimension.Type getDimensionType()
Dimension getDimension()
String getName()
List<Level> getLevels()
NamedList<Level> getLevels()
boolean hasAll()
Member getDefaultMember()
NamedList<Member> getRootMembers()
A Level @@ -1257,7 +1283,7 @@
int getDepth()
Hierarchy getHierarchy()
Level.Type getLevelType()
List<Property> getProperties()
NamedList<Property> getProperties()
List<Member> getMembers()
String getName()
List<Member> getChildMembers()
NamedList<Member> getChildMembers()
Member getParentMember()
Level getLevel()
Hierarchy getHierarchy()
boolean isAll()
boolean isChildOrEqualTo(Member member)
boolean isCalculated()
boolean isCalculatedInQuery()
Object getPropertyValue(Property property)
String getPropertyFormattedValue(Property property)
void setProperty(Property property, Object value)
List<Property> getProperties()
NamedList<Property> getProperties()
int getOrdinal()
boolean isHidden()
Member getDataMember()
A Measure (extends @@ -1312,7 +1340,6 @@
Datatype getType()
Scope getScope()
boolean isInternal()
enum Scope { MEMBER, CELL }
enum Datatype { STRING, OTHER, NUMERIC, BOOLEAN }
enum StandardMemberProperty implements Property { CATALOG_NAME, SCHEMA_NAME, CUBE_NAME, ...
@@ -3451,8 +3478,9 @@ Appendix D. Miscellaneous
D.1. To be specified
+[Method for richer query of members, analogous to OlapDatabaseMetaData.getMembers(). Maybe extend Cube.lookupMember. Something with a treeop.]
[Discuss thread safety of connections, statements, result sets.]
-[API for cancelling statements.]
+[API for canceling statements.]
[2006/10/20#1. Specification should include compliance levels, like the SQL
specification does. In particular, we will allow providers to comply with a
limited subset of MDX.]
@@ -3476,10 +3504,12 @@ D.1. To be specified
efficiency as a design goal.]
D.2. Design notes
-JDK. We are targeting JDK 1.5, and running retroweaver for
+
JDK.
+We are targeting JDK 1.5, and running retroweaver for
backward compatibility for JDK 1.4. See forum thread:
-olap4j, JDK 1.5 and generics.
+olap4j, JDK 1.5 and generics.
+We also support JDK 1.6, and with it JDBC 4.0.
Result sets, random access, and memory usage
Should result sets return their axes as cursors or collections? Cursors
require less memory, but collections provide an easier programming model.
@@ -3520,4 +3550,4 @@ Appendix F. Change log
-