Halogen
Bill Seyler has been working on an open source web 2.0 GWT pivot viewer based on the new olap4j API. He recently posted the first cut over on this google code project. Julian Hyde has a few words to say about the release over on his blog. I’ve been working with Bill and Julian on the olap4j query implementation behind Halogen. By separating the UI from concepts like pivoting, etc, it makes it much easier for other UI developers to incorporate multi-dimensional queries into their own applications. Hopefully olap4j will encourage new OLAP UI development in the open source community!
Hi Will,
I’m trying to get Halogen to work. My project compiles ok, but I get an error when trying to run it (see stacktrace below). I have copied in two dlls to get it this far: gwt-ll.dll and swt-win32-3235.dll. It’s using the SWT that shipped with my Eclipse (3.3.1.1). I’m wondering if I need to use a different version of SWT or if I have the right SWT dll - I downloaded the one I’m using as the dll in the Eclipse SWT jar was a different version.
Any ideas?
thanks,
Tom
Exception in thread “main” java.lang.UnsatisfiedLinkError: org.eclipse.swt.internal.ole.win32.COM.SysAllocStringLen([CI)I
at org.eclipse.swt.internal.ole.win32.COM.SysAllocStringLen(Native Method)
at org.eclipse.swt.ole.win32.Variant.getData(Variant.java:539)
at org.eclipse.swt.ole.win32.OleAutomation.invoke(OleAutomation.java:472)
at org.eclipse.swt.ole.win32.OleAutomation.invoke(OleAutomation.java:448)
at org.eclipse.swt.browser.Browser.setUrl(Browser.java:1430)
at com.google.gwt.dev.shell.BrowserWidget.go(BrowserWidget.java:291)
at com.google.gwt.dev.GWTShell.launchStartupUrls(GWTShell.java:466)
at com.google.gwt.dev.GWTShell.run(GWTShell.java:548)
at com.google.gwt.dev.GWTShell.main(GWTShell.java:321)
From Bill:
It looks like he’s trying to use a java launch configuration (looks like he is trying to launch it as an swt app) instead of the included Halogen.launch. This can be set through the run preferences. There is no “main” for gwt apps. He doesn’t need swt at all. He will have to point gwt-user jar to the one in his gwt sdk.
Bill
Thanks for your help, Will and Bill
I was using the Halogen launch configuration (and gwt jars), but must have gone wrong somewhere, leading me down the path of adding dlls, etc. After checking out the project again, I managed to get it running as far as the point where it connects to the datasource.
It is not finding the driver (”No suitable driver found..”) for the database I’m using - I have added the appropriate driver jar to the project’s build path. Is there something else I should do to configure Halogen for a particular database? Is there somewhere I need to enter the class name for my database driver?
thanks again for your help,
Tom
The exception is raised in:
at org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:97)
at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:300)
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:816)
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:140)
at mondrian.rolap.sql.SqlQuery$Dialect.create(SqlQuery.java:802)
at mondrian.rolap.RolapSchema.getDialect(RolapSchema.java:379)
at mondrian.rolap.RolapStar.(RolapStar.java:169)
at mondrian.rolap.RolapSchema.makeRolapStar(RolapSchema.java:1603)
at mondrian.rolap.RolapSchema.access$6(RolapSchema.java:1601)
at mondrian.rolap.RolapSchema$RolapStarRegistry.getOrCreateStar(RolapSchema.java:1627)
You didn’t need to add the driver jar to the build path. But you do need to add it to the Classpath. You can do this in eclipse by selecting Run->Open Run Dialog… and selecting the “Halogen” run configuration under Java Applications in the left hand panel. Then in the right hand panel select the “Classpath” tag. Click the “User Entries” and then the “Add Jars…” button. This will bring up a dialog where you can select your driver and add it to the runtime classpath.
Yes, I had the driver jar added to the runtime classpath, but it still didn’t find it. I found that adding a ‘Class.forName(”") line to the Olap4JServiceImpl.connect() has fixed the problem - I realise that it’s not the ideal solution. How does the Mondrian driver pick up my database driver, does it not also need the full class name to be listed somewhere?
Thanks again for all your help. It’s an interesting application.
Tom