一、系统启动时初始化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的更多相关文章

  1. [原]基于CAS实现单点登录(SSO):登录成功后,cas client如何返回更多用户信息

    从cas server登录成功后,默认只能从casclient得到用户名.但程序中也可能遇到需要得到更多如姓名,手机号,email等更多用户信息的情况. cas client拿到用户名后再到数据库中查 ...

  2. 苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转

    昨天下午,测试提了一个bug,问题是:在苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转. 思前想后找了半天没思路,后来经过同事的点拨,说可能是禁用了cookie之类的,反正我也没思路就顺 ...

  3. 【转】【可用】Android 登录判断器,登录成功后帮你准确跳转到目标activity

    我们在使用应用时肯定遇到过这样的情景,打开应用,并不是需要我们登录,你可以浏览应用中的大部分页面,但是当你想看某个详情页的时候,点击后突然跳转到了登录页面,好,我们输入账号密码,点击登录,登录成功,跳 ...

  4. IdentityServer4 登录成功后,跳转到原来页面

    IdentityServer4 登录成功后,默认会跳转到Config.Client配置的RedirectUris地址http://localhost:5003/callback.html,用于获取 T ...

  5. 使用Shiro登录成功后,跳转到之前访问的页面实现

    转:http://blog.csdn.net/lhacker/article/details/20450855 很多时候,我们需要做到,当用户登录成功后,跳转回登录前的页面.如果用户是点击" ...

  6. taotao用户登录(及登录成功后的回调url处理)

    后台Controller: package com.taotao.sso.controller; import org.springframework.stereotype.Controller; i ...

  7. windows修改系统登录密码后,出现SQLserver服务无法启动,启动报错17051

    windows修改系统登录密码后,出现SQLserver服务无法启动,启动报错17051具体报错如下: 根据错误提示,去到windows的事件查看器.在win10上,右击左下角的菜单图标:然后依次点击 ...

  8. 在某网站的登录页面登录时如果选择“记住用户名”,登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页面中存在一个超链接,单击超链接可以链接到第三个页面查看信息。若选择“

    Response实现登录并记录用户名和密码信息 在某网站的登录页面登录时如果选择"记住用户名",登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页 ...

  9. cas 3.5.2 登录成功后,如何返回用户更多信息?

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

随机推荐

  1. .Net操作注册表--un

    C#操作注册表 导入命名空间 Using MicroSoft.Win32;//64位系统装的64位版本

  2. TCP/IP协议简介

    计算机网络是什么? 简单地理解,计算机网络的任务就是传输数据.为了完成这一复杂的任务,国际标准化组织ISO提供了OSI参考模型,这种模型把互联网网络氛围7层,分别是物理层.数据链路层.网络层.传输层. ...

  3. Using Post_Query Trigger in Oracle Forms

    When a query is open in the block, the Post-Query trigger fires each time Form Builder fetches a rec ...

  4. How To Tune or Test PLSQL Code Performance in Oracle D2k Forms

    You can test or tune your program unit performance in Oracle forms with Ora_Prof package.Suppose you ...

  5. MyBatis 内连接association 左外连接collection

    前提条件: 学生表 (多  子表) 年级表(一  主表) 1,第一种情况:先查子表所有 student.sql.xml文件如何配 由于有多表连接,无法把查询结果直接封装成一个实体对象--------& ...

  6. Apache-Shiro+Zookeeper系统集群安全解决方案之会话管理

    如今的系统多不是孤军奋战,在多结点会话共享管理方面有着各自的解决办法,比如Session粘连,基于Web容器的各种处理等或者类似本文说的完全接管Web容器的Session管理,只是做法不尽相同. 而本 ...

  7. python_way day16 DOM

    Python_way day16 1.Dom  (找到html中的标签) 一.DOM 1.查找元素 直接查找 document.getElementById 根据ID获取一个标签 --->这里是 ...

  8. 移动应用调试之 Inspect

    移动端开发时,我们常使用chrome自带的模拟器,模拟各种手机设备. 但模拟毕竟是模拟,当开发完毕,使用真机访问页面出现问题时如何调试呢? 下面介绍2种针对android机的调试方法 一.直接使用Ch ...

  9. Scrum Meeting---Four(2015-10-28)

    今日已完成任务和明日要做的任务 姓名 今日已完成任务 今日时间 明日计划完成任务 估计用时 董元财 今日我完成了数据库表的设计以及创建 3h 进行Java Web工程的编写 4h 胡亚坤 用户之间的通 ...

  10. iOS - OC Enum 枚举

    前言 iOS 5.0 之后,提供了新的枚举定义方式,定义枚举的同时,可以指定枚举中数据的类型. typedef NS_OPTIONS(_type, _name) new; -> 位移的,可以使用 ...