use of org.olap4j.OlapException in project pentaho-platform by pentaho.
the class OlapServiceImpl method addCatalogToCache.
/**
* Adds a catalog and its children to the cache.
* Do not use directly. This must be called with a write lock
* on the cache.
*
* @param catalogName The name of the catalog to load in cache.
*/
private void addCatalogToCache(IPentahoSession session, String catalogName) {
final IOlapService.Catalog catalog = new Catalog(catalogName, new ArrayList<IOlapService.Schema>());
OlapConnection connection = null;
try {
connection = getConnection(catalogName, session);
for (org.olap4j.metadata.Schema schema4j : connection.getOlapSchemas()) {
connection.setSchema(schema4j.getName());
final IOlapService.Schema schema = new Schema(schema4j.getName(), catalog, new ArrayList<IOlapService.Cube>(), new ArrayList<String>(connection.getAvailableRoleNames()));
for (org.olap4j.metadata.Cube cube4j : schema4j.getCubes()) {
schema.cubes.add(new IOlapService.Cube(cube4j.getName(), cube4j.getCaption(), schema));
}
catalog.schemas.add(schema);
}
// We're done.
getCache(session).add(catalog);
} catch (OlapException e) {
LOG.warn("Failed to initialize the olap connection cache for catalog " + catalogName, e);
} finally {
try {
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
LOG.warn("Failed to gracefully close an olap connection to catalog " + catalogName, e);
}
}
}
Aggregations