public void openQuery() throws Exception { Class.forName( olap4jDriver ); OlapConnection connection = null; if ( Utils.isEmpty( username ) && Utils.isEmpty( password ) ) { connection = (OlapConnection) DriverManager.getConnection( olap4jUrl ); } else { connection = (OlapConnection) DriverManager.getConnection( olap4jUrl, username, password ); } OlapWrapper wrapper = connection; olapConnection = wrapper.unwrap( OlapConnection.class ); try { if ( !Utils.isEmpty( catalogName ) ) { olapConnection.setCatalog( catalogName ); } } catch ( SQLException e ) { throw new OlapException( "Error setting catalog for MDX statement: '" + catalogName + "'" ); } OlapStatement stmt = olapConnection.createStatement(); if ( !Utils.isEmpty( mdx ) ) { CellSet tmp = stmt.executeOlapQuery( mdx ); result = tmp; } else { throw new Exception( "Error executing empty MDX query" ); } }
/** * Gets an olap4j connection, creating a new one if fresh is true. * * @return mondrian Connection. */ public synchronized OlapConnection getOlapConnection() throws SQLException { if (this.connectString == null) { makeConnectString(); } final String olapConnectString = "jdbc:mondrian:" + connectString; final java.sql.Connection jdbcConnection = java.sql.DriverManager.getConnection(olapConnectString); // Cast to OlapWrapper lets code work on JDK1.5, before java.sql.Wrapper //noinspection RedundantCast return ((OlapWrapper) jdbcConnection).unwrap(OlapConnection.class); }
return olapWrapper.unwrap(clazz);
public Map<String, Object> getAnnotationMap(MetadataElement element) throws SQLException { if (element instanceof OlapWrapper) { OlapWrapper wrapper = (OlapWrapper) element; if (wrapper.isWrapperFor(Annotated.class)) { final Annotated annotated = wrapper.unwrap(Annotated.class); final Map<String, Object> map = new HashMap<String, Object>(); for (Map.Entry<String, Annotation> entry : annotated.getAnnotationMap().entrySet()) { map.put(entry.getKey(), entry.getValue().getValue()); } return map; } } return Collections.emptyMap(); }
return ((OlapWrapper) connection).unwrap(OlapConnection.class);
private OlapConnection unwrap(Connection conn) throws TranslatorException { try { OlapWrapper wrapper = conn.unwrap(OlapWrapper.class); OlapConnection olapConn = wrapper.unwrap(OlapConnection.class); return olapConn; } catch(SQLException e) { throw new TranslatorException(e); } }