[saiku] 系统登录成功后查询Cubes
一、系统启动时初始化ds和conn
1、查询出目前系统拥有的Datasources和Connections放入内存中 2、比对saiku-datasources中的ds是否有新增的,如果有,创建新的ds
二、登陆授权成功后获取全部的Connections
1、查询OLAP数据连接(cubesConnectionList)列表 http://localhost:8080/saiku/rest/saiku/a1/discover
OlapDiscoverResource - getConnections() 2、根据单个 connection 解析出 catalog schema cube【SessionWorkspace.js】 var connection = this.connections[i];
var catalog = connection.catalogs[j];
var schema = catalog.schemas[k];
var cube = schema.cubes[l]; 3、拼凑成交互ID - key 根据这个ID去 new Cube({ key: key })【SessionWorkspace.js】 var key = connection.name + "/" + catalog.name + "/" + ((schema.name === "" || schema.name === null) ? "null" : schema.name) + "/" + encodeURIComponent(cube.name); 至此就完成了获取connections的操作
三、获取repositoryList(仓库列表)
http://localhost:8080/saiku/rest/saiku/api/repository?type=saiku,sdb
BasicRepositoryResource2 - getRepository()
返回的 repositoryList 如下:
ID NAME TYPE ACL
#/datasources datasources FOLDER [READ, WRITE]
#/etc etc FOLDER [READ, WRITE]
#/etc/legacyreports legacyreports FOLDER [READ, WRITE]
#/etc/theme theme FOLDER [READ, WRITE]
#/etc/theme/legacyreports legacyreports FOLDER [READ, WRITE]
#/homes homes FOLDER [READ]
#/homes/home:a1 home:a1 FOLDER [READ, WRITE, GRANT]
四、获取license
http://localhost:8080/saiku/rest/saiku/api/license
五、查询Cube
查询思路剖析:
通过第二步可知已经得到了connection的信息和拼凑了key[交互ID]
执行 new Cube({key:key}) 调用接口获取Cube内容
前端请求url :
Saiku.session.username + "/discover/" + args.key + "/metadata";
后端处理的方法:
OlapDiscoverResource - getMetadata()
后端rest接口所需参数 :
@Path("/saiku/{username}/discover") + @Path("/{connection}/{catalog}/{schema}/{cube}/metadata") + key参数
调用成功后返回的Model:
SaikuCubeMetadata
|-dimensions
|-measures
|-properties
附后台处理代码: @GET
@Produces({"application/json" })
@Path("/{connection}/{catalog}/{schema}/{cube}/metadata")
public SaikuCubeMetadata getMetadata(
@PathParam("connection") String connectionName,
@PathParam("catalog") String catalogName,
@PathParam("schema") String schemaName,
@PathParam("cube") String cubeName)
{
if ("null".equals(schemaName)) {
schemaName = "";
}
//获取Cube
SaikuCube cube = new SaikuCube(connectionName, cubeName,cubeName,cubeName, catalogName, schemaName);
try { //根据Cube获取 dimensions/measures/properties
List<SaikuDimension> dimensions = olapDiscoverService.getAllDimensions(cube);
List<SaikuMember> measures = olapDiscoverService.getMeasures(cube);
Map<String, Object> properties = olapDiscoverService.getProperties(cube);
return new SaikuCubeMetadata(dimensions, measures, properties);
} catch (Exception e) {
log.error(this.getClass().getName(),e);
}
return new SaikuCubeMetadata(null, null, null);
}
获取到的DEMO中的所有CUBE如下 参数分别是:
{connectionName}
{catalogName}
{schemaName}
{cubeName} (1)Earthquakes
/earthquakes
/Global%20Earthquakes
/Global%20Earthquakes
/Earthquakes http://localhost:8080/saiku/rest/saiku/a1/discover/earthquakes/Global%20Earthquakes/Global%20Earthquakes/Earthquakes/metadata?key=earthquakes%2FGlobal+Earthquakes%2FGlobal+Earthquakes%2FEarthquakes (2)HR
/foodmart
/FoodMart
/FoodMart
/HR http://localhost:8080/saiku/rest/saiku/a1/discover/foodmart/FoodMart/FoodMart/HR/metadata?key=foodmart%2FFoodMart%2FFoodMart%2FHR (3)Sales
/foodmart
/FoodMart
/FoodMart
/Sales http://localhost:8080/saiku/rest/saiku/a1/discover/foodmart/FoodMart/FoodMart/Sales/metadata?key=foodmart%2FFoodMart%2FFoodMart%2FSales (4)Sales%202
/foodmart
/FoodMart
/FoodMart
/Sales%202 http://localhost:8080/saiku/rest/saiku/a1/discover/foodmart/FoodMart/FoodMart/Sales%202/metadata?key=foodmart%2FFoodMart%2FFoodMart%2FSales%25202 (5)Sales%202
/foodmart
/FoodMart
/FoodMart
/Store http://localhost:8080/saiku/rest/saiku/a1/discover/foodmart/FoodMart/FoodMart/Store/metadata?key=foodmart%2FFoodMart%2FFoodMart%2FStore (6)Warehouse
/foodmart
/FoodMart
/FoodMart
/Warehouse http://localhost:8080/saiku/rest/saiku/a1/discover/foodmart/FoodMart/FoodMart/Warehouse/metadata?key=foodmart%2FFoodMart%2FFoodMart%2FWarehouse (7)Warehouse%20and%20Sales
/foodmart
/FoodMart
/FoodMart
/Warehouse%20and%20Sales http://localhost:8080/saiku/rest/saiku/a1/discover/foodmart/FoodMart/FoodMart/Warehouse%20and%20Sales/metadata?key=foodmart%2FFoodMart%2FFoodMart%2FWarehouse%2520and%2520Sales
[saiku] 系统登录成功后查询Cubes的更多相关文章
- [原]基于CAS实现单点登录(SSO):登录成功后,cas client如何返回更多用户信息
从cas server登录成功后,默认只能从casclient得到用户名.但程序中也可能遇到需要得到更多如姓名,手机号,email等更多用户信息的情况. cas client拿到用户名后再到数据库中查 ...
- 苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转
昨天下午,测试提了一个bug,问题是:在苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转. 思前想后找了半天没思路,后来经过同事的点拨,说可能是禁用了cookie之类的,反正我也没思路就顺 ...
- 【转】【可用】Android 登录判断器,登录成功后帮你准确跳转到目标activity
我们在使用应用时肯定遇到过这样的情景,打开应用,并不是需要我们登录,你可以浏览应用中的大部分页面,但是当你想看某个详情页的时候,点击后突然跳转到了登录页面,好,我们输入账号密码,点击登录,登录成功,跳 ...
- IdentityServer4 登录成功后,跳转到原来页面
IdentityServer4 登录成功后,默认会跳转到Config.Client配置的RedirectUris地址http://localhost:5003/callback.html,用于获取 T ...
- 使用Shiro登录成功后,跳转到之前访问的页面实现
转:http://blog.csdn.net/lhacker/article/details/20450855 很多时候,我们需要做到,当用户登录成功后,跳转回登录前的页面.如果用户是点击" ...
- taotao用户登录(及登录成功后的回调url处理)
后台Controller: package com.taotao.sso.controller; import org.springframework.stereotype.Controller; i ...
- windows修改系统登录密码后,出现SQLserver服务无法启动,启动报错17051
windows修改系统登录密码后,出现SQLserver服务无法启动,启动报错17051具体报错如下: 根据错误提示,去到windows的事件查看器.在win10上,右击左下角的菜单图标:然后依次点击 ...
- 在某网站的登录页面登录时如果选择“记住用户名”,登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页面中存在一个超链接,单击超链接可以链接到第三个页面查看信息。若选择“
Response实现登录并记录用户名和密码信息 在某网站的登录页面登录时如果选择"记住用户名",登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页 ...
- cas 3.5.2 登录成功后,如何返回用户更多信息?
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
随机推荐
- Cheatsheet: 2013 12.01 ~ 12.16
Mobile Performance Tuning On Android Interoperation Issues in Mixed C/C++/Objective-C Development We ...
- 【mark】自己整合的vi/vim命令
又发现一篇很好的 http://blog.chinaunix.net/uid-16759545-id-4891666.html 又发现一个很好的系列:有空闲要精读一下: http://www.cnbl ...
- Know How To Use Check Box Mapping Of Other Values Property In Oracle Forms
Check Box Mapping of Other Values specifies how any fetched or assigned value that is not one of the ...
- Freebie: Date Picker Calendar Demo Form For Oracle Forms 6i
I have already posted and provided the required PLSQL Library and the Calendar FMX file in my previo ...
- VBA中方法的函数式调用和过程式调用的差别
因见到有人求助批量设置工作簿中的超链接,尝试写了一段代码: Sub AddHyperlinks() Dim strName As String, source As String, target As ...
- CentOS 6.5 64位 安装zabbix-2.2.0
安装环境: VM 10 + CentOS-6.5-x86_64-minimal 虚拟机网络是NAT方式, 动态IP Xshell登录到Centos操作 刚装的centos,啥都没有,先配一下yum 首 ...
- ubuntu14.04换一个更快的源
mirrors.yun-idc.com,这个源可比ubuntu自带的源快多了,我的source.list文件内容如下: deb http://mirrors.yun-idc.com/ubuntu/ t ...
- CentOS7编译安装Nginx-1.8.1和编译参数
CentOS7编译安装Nginx-1.8.1和编译参数 Web服务器Nginx LNMP是一组众所周知的Web网站服务器架构环境,即由Linux+Nginx+MySQL+PHP(MySQL有时也 ...
- 详解 ASP.NET异步
在前文中,介绍了.NET下的多种异步的形式,在WEB程序中,天生就是多线程的,因此使用异步应该更为谨慎.本文将着重展开ASP.NET中的异步. [注意]本文中提到的异步指的是服务器端异步,而非客户端异 ...
- 加快Win7整体运行速度的12个小技巧
在整体运行速度方面,微软Windows 7系统超越了它的前任Vista,拥有明显的提升;但是相比最新的Windows 8,似乎又有所不及,至少很少有Windows用户能够体会到15秒的开机速度.虽然如 ...