diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..164f7d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +*~ +*.iml +.idea/ +VERSION.txt +bin/ +dist/ +doc/olap4j_api.pdf +lib/ +out/ +src/org/olap4j/driver/xmla/XmlaOlap4jDriverVersion.java +src/org/olap4j/mdx/parser/impl/MdxParserImpl.java +src/org/olap4j/mdx/parser/impl/MdxParserImplConstants.java +src/org/olap4j/mdx/parser/impl/MdxParserImplTokenManager.java +src/org/olap4j/mdx/parser/impl/ParseException.java +src/org/olap4j/mdx/parser/impl/SimpleCharStream.java +src/org/olap4j/mdx/parser/impl/Token.java +src/org/olap4j/mdx/parser/impl/TokenMgrError.java +testlib/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..2d4c298 --- /dev/null +++ b/README.md @@ -0,0 +1,120 @@ +# olap4j # + +Olap4j is an open Java API for accessing OLAP data. + +It is an extension to JDBC. For example, its +OlapConnection +class extends +java.sql.Connection, +from which you can create an +OlapStatement, +and execute to create a +CellSet +(analogous to a +java.sql.ResultSet). +There are also similar mechanisms for browsing metadata. +As a result, olap4j is easy to learn if you have JDBC +experience and know a little about OLAP. + +## Prerequisites ## + +Olap4j requires ant (version 1.7 or later) and JDK 1.7 to build. (Once built, it also runs under JDK 1.5 and 1.6.) + +## Download and build ## + +```bash +$ git clone git://github.com/julianhyde/olap4j.git +$ cd olap4j +$ ant +``` + +## Writing a simple program ## + +You can now write and run a simple program against olap4j. For +example, you can write: + +```java +import org.olap4j.*; +import org.olap4j.metadata.Member; +import java.sql.*; + +Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver"); +Connection connection = + DriverManager.getConnection( + "jdbc:xmla:Server=http://example.com:8080/mondrian/xmla"); +OlapConnection olapConnection = connection.unwrap(OlapConnection.class); +OlapStatement statement = olapConnection.createStatement(); +CellSet cellSet = + statement.executeOlapQuery( + "SELECT {[Measures].[Unit Sales]} ON 0,\n" + + "{[Product].Children} ON 1\n" + + "FROM [Sales]"); +for (Position row : cellSet.getAxes().get(1)) { + for (Position column : cellSet.getAxes().get(0)) { + for (Member member : row.getMembers()) { + System.out.println(member.getUniqueName()); + } + for (Member member : column.getMembers()) { + System.out.println(member.getUniqueName()); + } + final Cell cell = cellSet.getCell(column, row); + System.out.println(cell.getFormattedValue()); + System.out.println(); + } +} +``` + +Or, if you are using the in-process mondrian driver, include mondrian.jar +and its dependencies in your classpath, and change the +appropriate lines in the above code to the following: + +```java +Class.forName("mondrian.olap4j.MondrianOlap4jDriver"); +Connection connection = + DriverManager.getConnection( + "jdbc:mondrian:" + + "Jdbc='jdbc:odbc:MondrianFoodMart';" + + "Catalog='file://c:/open/mondrian/demo/FoodMart.xml';" + + "JdbcDrivers=sun.jdbc.odbc.JdbcOdbcDriver;"); +``` + +## Packages and Roadmap ## + +The core API of olap4j version 1.0 is a Long Term Support (LTS) release, +but some parts of the olap4j project will remain considered as experimental, +thus subject to change in future releases. + +Core packages are as follows: +* org.olap4j.driver.xmla - Generic XML/A driver. +* org.olap4j.mdx - Core objects of the MDX model. +* org.olap4j.mdx.parser - Parser for the MDX query language. +* org.olap4j.metadata - Discovery of an OLAP server's metadata. +* org.olap4j.type - System for the core MDX object model and the metadata package. + +The following packages are considered experimental and are subject to change: +* org.olap4j.query - Programmatic Query Model. +* org.olap4j.transform - Core MDX object model transformation utilities. +* org.olap4j.layout - Utility classes to display CellSets. +* org.olap4j.CellSetListener and all associated classes - Event-based system for real time updates of CellSet objects. +* org.olap4j.Scenario and all associated classes - Statistical simulations module. + +## More information ## + +General project information: +* License: Apache License, Version 2.0. +* Lead developers: Julian Hyde, Luc Boudreau. +* Project page: http://www.olap4j.org +* Specification: HTML, PDF, history. +* Javadoc: http://www.olap4j.org/api +* Source code: http://github.com/julianhyde/olap4j +* Developers list: https://lists.sourceforge.net/lists/listinfo/olap4j-devel +* Forum: http://sourceforge.net/p/olap4j/discussion/577988/ + +Related projects: +* Mondrian +* olap4j-xmlaserver + +If you have downloaded a release: +* README.txt describes the release structure. +* CHANGES.txt describes what has changed in the release. +* The VERSION.txt file holds the version number of the release. \ No newline at end of file