public List<SaikuCube> getCubes(String connectionName) { OlapConnection olapcon = connections.getOlapConnection(connectionName); List<SaikuCube> cubes = new ArrayList<SaikuCube>(); if (olapcon != null) { try { for (Catalog cat : olapcon.getOlapCatalogs()) { for (Schema schem : cat.getSchemas()) { for (Cube cub : schem.getCubes()) { cubes.add( new SaikuCube( connectionName, cub.getUniqueName(), cub.getName(), cub.getCaption(), cat.getName(), schem.getName(), cub.isVisible())); } } } } catch (OlapException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Collections.sort(cubes, new SaikuCubeCaptionComparator()); return cubes; }
public SaikuConnection getConnection(String connectionName) throws SaikuOlapException { OlapConnection olapcon = connections.getOlapConnection(connectionName); SaikuConnection connection = null; if (olapcon != null) { List<SaikuCatalog> catalogs = new ArrayList<SaikuCatalog>(); try { for (Catalog cat : olapcon.getOlapCatalogs()) { List<SaikuSchema> schemas = new ArrayList<SaikuSchema>(); for (Schema schem : cat.getSchemas()) { List<SaikuCube> cubes = new ArrayList<SaikuCube>(); for (Cube cub : schem.getCubes()) { cubes.add( new SaikuCube( connectionName, cub.getUniqueName(), cub.getName(), cub.getCaption(), cat.getName(), schem.getName(), cub.isVisible())); } Collections.sort(cubes, new SaikuCubeCaptionComparator()); schemas.add(new SaikuSchema(schem.getName(), cubes)); } if (schemas.size() == 0) { OlapDatabaseMetaData olapDbMeta = olapcon.getMetaData(); ResultSet cubesResult = olapDbMeta.getCubes(cat.getName(), null, null); try { List<SaikuCube> cubes = new ArrayList<SaikuCube>(); while (cubesResult.next()) { cubes.add( new SaikuCube( connectionName, cubesResult.getString("CUBE_NAME"), cubesResult.getString("CUBE_NAME"), cubesResult.getString("CUBE_NAME"), cubesResult.getString("CATALOG_NAME"), cubesResult.getString("SCHEMA_NAME"))); } Collections.sort(cubes, new SaikuCubeCaptionComparator()); schemas.add(new SaikuSchema("", cubes)); } catch (SQLException e) { throw new OlapException(e.getMessage(), e); } finally { try { cubesResult.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } Collections.sort(schemas); catalogs.add(new SaikuCatalog(cat.getName(), schemas)); } } catch (OlapException e) { throw new SaikuOlapException( "Error getting objects of connection (" + connectionName + ")", e); } Collections.sort(catalogs); connection = new SaikuConnection(connectionName, catalogs); return connection; } throw new SaikuOlapException("Cannot find connection: (" + connectionName + ")"); }