use of org.pentaho.platform.plugin.action.olap.IOlapService in project pentaho-platform by pentaho.
the class SystemRefreshResource method flushMondrianSchemaCache.
@GET
@Path("/mondrianSchemaCache")
@Produces({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON })
@Facet(name = "Unsupported")
public Response flushMondrianSchemaCache() {
if (canAdminister()) {
IPentahoSession pentahoSession = PentahoSessionHolder.getSession();
if (canAdminister()) {
// Flush the catalog helper (legacy)
IMondrianCatalogService mondrianCatalogService = // $NON-NLS-1$
PentahoSystem.get(IMondrianCatalogService.class, "IMondrianCatalogService", pentahoSession);
mondrianCatalogService.reInit(pentahoSession);
// Flush the IOlapService
IOlapService olapService = // $NON-NLS-1$
PentahoSystem.get(IOlapService.class, "IOlapService", pentahoSession);
olapService.flushAll(pentahoSession);
}
return Response.ok().type(MediaType.TEXT_PLAIN).build();
} else {
return Response.status(UNAUTHORIZED).build();
}
}
use of org.pentaho.platform.plugin.action.olap.IOlapService in project pentaho-platform by pentaho.
the class MondrianAbstractPlatformUserRoleMapper method getMondrianRolesFromCatalog.
/**
* This method returns the role names as found in the Mondrian schema. The returned names must be ordered (sorted) or
* code down-stream will not work.
*
* @param userSession
* Users' session
* @param catalogName
* The name of the catalog
* @return Array of role names from the schema file
*/
protected String[] getMondrianRolesFromCatalog(IPentahoSession userSession, String context) {
String[] rtn = null;
// Get the catalog service
IMondrianCatalogService catalogService = PentahoSystem.get(IMondrianCatalogService.class);
if (catalogService != null) {
// Get the catalog by name
MondrianCatalog catalog = catalogService.getCatalog(context, userSession);
if (catalog != null) {
// The roles are in the schema object
MondrianSchema schema = catalog.getSchema();
if (schema != null) {
// Ask the schema for the role names array
String[] roleNames = schema.getRoleNames();
if ((roleNames != null) && (roleNames.length > 0)) {
// Return the roles from the schema
Arrays.sort(roleNames);
return roleNames;
}
}
}
}
// Check with the IOlapService and try to get a list of roles there.
IOlapService olapService = PentahoSystem.get(IOlapService.class);
if (olapService != null) {
MondrianCatalogRepositoryHelper helper = new MondrianCatalogRepositoryHelper(PentahoSystem.get(IUnifiedRepository.class));
String serverName = null;
for (String name : helper.getOlap4jServers()) {
PropertyList props = Util.parseConnectString(helper.getOlap4jServerInfo(name).URL);
if (props.get(RolapConnectionProperties.Catalog.name(), "").equals(context)) {
serverName = name;
}
}
if (serverName != null) {
OlapConnection conn = null;
try {
// Use a null session for root access.
conn = olapService.getConnection(serverName, null);
List<String> roleList = conn.getAvailableRoleNames();
String[] roleArray = roleList.toArray(new String[roleList.size()]);
Arrays.sort(roleArray);
return roleArray;
} catch (OlapException e) {
log.error("Failed to get a list of roles from olap connection " + context, e);
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// OK to squash this one.
log.error("Failed to get a list of roles from olap connection " + context, e);
}
}
}
}
}
// Sort the returned list of roles.
return rtn;
}
use of org.pentaho.platform.plugin.action.olap.IOlapService in project pentaho-platform by pentaho.
the class MondrianCatalogHelper method flushCacheForCatalog.
private void flushCacheForCatalog(String catalogName, IPentahoSession pentahoSession) {
IOlapService olapService = PentahoSystem.get(IOlapService.class, "IOlapService", pentahoSession);
Connection unwrap = null;
try {
OlapConnection connection = olapService.getConnection(catalogName, pentahoSession);
unwrap = connection.unwrap(Connection.class);
unwrap.getCacheControl(null).flushSchema(unwrap.getSchema());
} catch (Throwable e) {
MondrianCatalogHelper.logger.warn(Messages.getInstance().getErrorString("MondrianCatalogHelper.ERROR_0019_FAILED_TO_FLUSH", catalogName), e);
} finally {
if (unwrap != null) {
unwrap.close();
}
}
}
use of org.pentaho.platform.plugin.action.olap.IOlapService in project pentaho-platform by pentaho.
the class SystemRefreshResource method flushMondrianSchemaCache.
@GET
@Path("/mondrianSingleSchemaCache")
@Produces({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON })
@Facet(name = "Unsupported")
public Response flushMondrianSchemaCache(@QueryParam("name") String name) {
if (canAdminister()) {
IPentahoSession pentahoSession = PentahoSessionHolder.getSession();
if (canAdminister()) {
IOlapService olapService = // $NON-NLS-1$
PentahoSystem.get(IOlapService.class, "IOlapService", pentahoSession);
olapService.flush(pentahoSession, name);
}
return Response.ok().type(MediaType.TEXT_PLAIN).build();
} else {
return Response.status(UNAUTHORIZED).build();
}
}
Aggregations