(feature)(headless) Add a new headless-api module and Change old headless-api module to headless-common (#582)

* (improvement)(headless) Add headless-api module

* (improvement)(headless) Change old headless-api module to headless-common

---------

Co-authored-by: jolunoluo <jolunoluo@tencent.com>
This commit is contained in:
LXW
2023-12-28 22:14:57 +08:00
committed by GitHub
parent 9e69002d70
commit af6c8cdbda
270 changed files with 1310 additions and 1155 deletions

View File

@@ -42,7 +42,7 @@
</dependency>
<dependency>
<groupId>com.tencent.supersonic</groupId>
<artifactId>headless-api</artifactId>
<artifactId>headless-common</artifactId>
<version>${project.version}</version>
<scope>compile</scope>
</dependency>

View File

@@ -1,225 +0,0 @@
package com.tencent.supersonic.headless.model.application;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
import com.tencent.supersonic.common.pojo.exception.InvalidPermissionException;
import com.tencent.supersonic.common.util.BeanMapper;
import com.tencent.supersonic.common.util.PageUtils;
import com.tencent.supersonic.headless.api.model.enums.AppStatusEnum;
import com.tencent.supersonic.headless.api.model.pojo.AppConfig;
import com.tencent.supersonic.headless.api.model.request.AppQueryReq;
import com.tencent.supersonic.headless.api.model.request.AppReq;
import com.tencent.supersonic.headless.api.model.response.AppDetailResp;
import com.tencent.supersonic.headless.api.model.response.AppResp;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.model.domain.AppService;
import com.tencent.supersonic.headless.model.domain.DimensionService;
import com.tencent.supersonic.headless.model.domain.MetricService;
import com.tencent.supersonic.headless.model.domain.dataobject.AppDO;
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;
import com.tencent.supersonic.headless.model.infrastructure.mapper.AppMapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
@Service
public class AppServiceImpl extends ServiceImpl<AppMapper, AppDO> implements AppService {
private AppMapper appMapper;
private MetricService metricService;
private DimensionService dimensionService;
public AppServiceImpl(AppMapper appMapper, MetricService metricService,
DimensionService dimensionService) {
this.appMapper = appMapper;
this.metricService = metricService;
this.dimensionService = dimensionService;
}
@Override
public AppDetailResp save(AppReq app, User user) {
app.createdBy(user.getName());
AppDO appDO = new AppDO();
BeanMapper.mapper(app, appDO);
appDO.setStatus(AppStatusEnum.INIT.getCode());
appDO.setConfig(JSONObject.toJSONString(app.getConfig()));
appDO.setAppSecret(getUniqueId());
appMapper.insert(appDO);
return convertDetail(appDO);
}
@Override
public AppDetailResp update(AppReq app, User user) {
app.updatedBy(user.getName());
AppDO appDO = getById(app.getId());
checkAuth(appDO, user);
BeanMapper.mapper(app, appDO);
appDO.setConfig(JSONObject.toJSONString(app.getConfig()));
appMapper.updateById(appDO);
return convertDetail(appDO);
}
@Override
public void online(Integer id, User user) {
AppDO appDO = getAppDO(id);
checkAuth(appDO, user);
appDO.setStatus(AppStatusEnum.ONLINE.getCode());
appDO.setUpdatedAt(new Date());
appDO.setUpdatedBy(user.getName());
updateById(appDO);
}
@Override
public void offline(Integer id, User user) {
AppDO appDO = getAppDO(id);
checkAuth(appDO, user);
appDO.setStatus(AppStatusEnum.OFFLINE.getCode());
appDO.setUpdatedAt(new Date());
appDO.setUpdatedBy(user.getName());
updateById(appDO);
}
@Override
public void delete(Integer id, User user) {
AppDO appDO = getAppDO(id);
checkAuth(appDO, user);
appDO.setStatus(AppStatusEnum.DELETED.getCode());
appDO.setUpdatedAt(new Date());
appDO.setUpdatedBy(user.getName());
updateById(appDO);
}
@Override
public PageInfo<AppResp> pageApp(AppQueryReq appQueryReq, User user) {
PageInfo<AppDO> appDOPageInfo = PageHelper.startPage(appQueryReq.getCurrent(),
appQueryReq.getPageSize())
.doSelectPageInfo(() -> queryApp(appQueryReq));
PageInfo<AppResp> appPageInfo = PageUtils.pageInfo2PageInfoVo(appDOPageInfo);
Map<Long, MetricResp> metricResps = metricService.getMetrics(new MetaFilter())
.stream().collect(Collectors.toMap(MetricResp::getId, m -> m));
Map<Long, DimensionResp> dimensionResps = dimensionService.getDimensions(new MetaFilter())
.stream().collect(Collectors.toMap(DimensionResp::getId, m -> m));
appPageInfo.setList(appDOPageInfo.getList().stream().map(appDO
-> convert(appDO, dimensionResps, metricResps, user))
.collect(Collectors.toList()));
return appPageInfo;
}
public List<AppDO> queryApp(AppQueryReq appQueryReq) {
QueryWrapper<AppDO> appDOQueryWrapper = new QueryWrapper<>();
appDOQueryWrapper.lambda().ne(AppDO::getStatus, AppStatusEnum.DELETED.getCode());
if (StringUtils.isNotBlank(appQueryReq.getName())) {
appDOQueryWrapper.lambda().like(AppDO::getName, appQueryReq.getName());
}
if (!CollectionUtils.isEmpty(appQueryReq.getStatus())) {
appDOQueryWrapper.lambda().in(AppDO::getStatus, appQueryReq.getStatus());
}
if (StringUtils.isNotBlank(appQueryReq.getCreatedBy())) {
appDOQueryWrapper.lambda().eq(AppDO::getCreatedBy, appQueryReq.getCreatedBy());
}
return list(appDOQueryWrapper);
}
@Override
public AppDetailResp getApp(Integer id, User user) {
AppDO appDO = getAppDO(id);
Map<Long, MetricResp> metricResps = metricService.getMetrics(new MetaFilter())
.stream().collect(Collectors.toMap(MetricResp::getId, m -> m));
Map<Long, DimensionResp> dimensionResps = dimensionService.getDimensions(new MetaFilter())
.stream().collect(Collectors.toMap(DimensionResp::getId, m -> m));
checkAuth(appDO, user);
return convertDetail(appDO, dimensionResps, metricResps);
}
@Override
public AppDetailResp getApp(Integer id) {
AppDO appDO = getAppDO(id);
return convertDetail(appDO, new HashMap<>(), new HashMap<>());
}
private AppDO getAppDO(Integer id) {
AppDO appDO = getById(id);
if (appDO == null) {
throw new InvalidArgumentException("该应用不存在");
}
return appDO;
}
private void checkAuth(AppDO appDO, User user) {
if (!hasAuth(appDO, user)) {
throw new InvalidPermissionException("您不是该应用的负责人, 暂无权查看或者修改");
}
}
private boolean hasAuth(AppDO appDO, User user) {
if (appDO.getCreatedBy().equalsIgnoreCase(user.getName())) {
return true;
}
return StringUtils.isNotBlank(appDO.getOwner())
&& appDO.getOwner().contains(user.getName());
}
private AppResp convert(AppDO appDO, Map<Long, DimensionResp> dimensionMap,
Map<Long, MetricResp> metricMap, User user) {
AppResp app = new AppResp();
BeanMapper.mapper(appDO, app);
AppConfig appConfig = JSONObject.parseObject(appDO.getConfig(), AppConfig.class);
fillItemName(appConfig, dimensionMap, metricMap);
app.setConfig(appConfig);
app.setAppStatus(AppStatusEnum.fromCode(appDO.getStatus()));
app.setHasAdminRes(hasAuth(appDO, user));
return app;
}
private AppDetailResp convertDetail(AppDO appDO) {
return convertDetail(appDO, new HashMap<>(), new HashMap<>());
}
private AppDetailResp convertDetail(AppDO appDO, Map<Long, DimensionResp> dimensionMap,
Map<Long, MetricResp> metricMap) {
AppDetailResp app = new AppDetailResp();
BeanMapper.mapper(appDO, app);
AppConfig appConfig = JSONObject.parseObject(appDO.getConfig(), AppConfig.class);
fillItemName(appConfig, dimensionMap, metricMap);
app.setConfig(appConfig);
app.setAppStatus(AppStatusEnum.fromCode(appDO.getStatus()));
return app;
}
private void fillItemName(AppConfig appConfig, Map<Long, DimensionResp> dimensionMap,
Map<Long, MetricResp> metricMap) {
appConfig.getItems().forEach(metricItem -> {
metricItem.setName(metricMap.getOrDefault(metricItem.getId(), new MetricResp()).getName());
metricItem.setBizName(metricMap.getOrDefault(metricItem.getId(), new MetricResp()).getBizName());
metricItem.setCreatedBy(metricMap.getOrDefault(metricItem.getId(), new MetricResp()).getCreatedBy());
metricItem.getRelateItems().forEach(dimensionItem -> {
dimensionItem.setName(dimensionMap.getOrDefault(dimensionItem.getId(), new DimensionResp()).getName());
dimensionItem.setBizName(dimensionMap.getOrDefault(dimensionItem.getId(),
new DimensionResp()).getBizName());
dimensionItem.setCreatedBy(dimensionMap.getOrDefault(dimensionItem.getId(),
new DimensionResp()).getCreatedBy());
});
});
}
private String getUniqueId() {
return UUID.randomUUID().toString().replaceAll("_", "");
}
}

View File

@@ -3,14 +3,14 @@ package com.tencent.supersonic.headless.model.application;
import com.tencent.supersonic.common.pojo.ItemDateResp;
import com.tencent.supersonic.common.pojo.ModelRela;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.headless.api.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.yaml.DataModelYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.common.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
import com.tencent.supersonic.headless.common.model.response.MetricResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.yaml.DataModelYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.model.domain.Catalog;
import com.tencent.supersonic.headless.model.domain.DatabaseService;
import com.tencent.supersonic.headless.model.domain.DimensionService;

View File

@@ -1,10 +1,10 @@
package com.tencent.supersonic.headless.model.application;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.headless.api.model.request.DatabaseReq;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.model.request.DatabaseReq;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.model.domain.DatabaseService;
import com.tencent.supersonic.headless.model.domain.ModelService;
import com.tencent.supersonic.headless.model.domain.adaptor.engineadapter.EngineAdaptor;

View File

@@ -15,15 +15,15 @@ import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
import com.tencent.supersonic.common.util.ChatGptHelper;
import com.tencent.supersonic.headless.api.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.api.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.api.model.request.DimensionReq;
import com.tencent.supersonic.headless.api.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.api.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.common.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.common.model.request.DimensionReq;
import com.tencent.supersonic.headless.common.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.model.domain.DatabaseService;
import com.tencent.supersonic.headless.model.domain.DimensionService;
import com.tencent.supersonic.headless.model.domain.ModelRelaService;

View File

@@ -6,10 +6,10 @@ import com.tencent.supersonic.auth.api.authentication.service.UserService;
import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.util.BeanMapper;
import com.tencent.supersonic.headless.api.model.request.DomainReq;
import com.tencent.supersonic.headless.api.model.request.DomainUpdateReq;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.request.DomainReq;
import com.tencent.supersonic.headless.common.model.request.DomainUpdateReq;
import com.tencent.supersonic.headless.common.model.response.DomainResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.model.domain.DomainService;
import com.tencent.supersonic.headless.model.domain.ModelService;
import com.tencent.supersonic.headless.model.domain.dataobject.DomainDO;

View File

@@ -15,16 +15,16 @@ import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
import com.tencent.supersonic.common.util.BeanMapper;
import com.tencent.supersonic.common.util.ChatGptHelper;
import com.tencent.supersonic.headless.api.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.api.model.pojo.Measure;
import com.tencent.supersonic.headless.api.model.pojo.MetricQueryDefaultConfig;
import com.tencent.supersonic.headless.api.model.pojo.MetricTypeParams;
import com.tencent.supersonic.headless.api.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.api.model.request.MetricReq;
import com.tencent.supersonic.headless.api.model.request.PageMetricReq;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.common.model.pojo.Measure;
import com.tencent.supersonic.headless.common.model.pojo.MetricQueryDefaultConfig;
import com.tencent.supersonic.headless.common.model.pojo.MetricTypeParams;
import com.tencent.supersonic.headless.common.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.common.model.request.MetricReq;
import com.tencent.supersonic.headless.common.model.request.PageMetricReq;
import com.tencent.supersonic.headless.common.model.response.DomainResp;
import com.tencent.supersonic.headless.common.model.response.MetricResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.model.domain.CollectService;
import com.tencent.supersonic.headless.model.domain.DomainService;
import com.tencent.supersonic.headless.model.domain.MetricService;

View File

@@ -10,29 +10,29 @@ import com.tencent.supersonic.common.pojo.enums.EventType;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
import com.tencent.supersonic.common.util.JsonUtil;
import com.tencent.supersonic.headless.api.model.pojo.Dim;
import com.tencent.supersonic.headless.api.model.pojo.Identify;
import com.tencent.supersonic.headless.api.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.api.model.pojo.Measure;
import com.tencent.supersonic.headless.api.model.pojo.RelateDimension;
import com.tencent.supersonic.headless.api.model.request.DateInfoReq;
import com.tencent.supersonic.headless.api.model.request.DimensionReq;
import com.tencent.supersonic.headless.api.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.api.model.request.MetricReq;
import com.tencent.supersonic.headless.api.model.request.ModelReq;
import com.tencent.supersonic.headless.api.model.request.ModelSchemaFilterReq;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.response.DimSchemaResp;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.api.model.response.MeasureResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.MetricSchemaResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
import com.tencent.supersonic.headless.api.model.yaml.DataModelYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.common.model.pojo.Dim;
import com.tencent.supersonic.headless.common.model.pojo.Identify;
import com.tencent.supersonic.headless.common.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.common.model.pojo.Measure;
import com.tencent.supersonic.headless.common.model.pojo.RelateDimension;
import com.tencent.supersonic.headless.common.model.request.DateInfoReq;
import com.tencent.supersonic.headless.common.model.request.DimensionReq;
import com.tencent.supersonic.headless.common.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.common.model.request.MetricReq;
import com.tencent.supersonic.headless.common.model.request.ModelReq;
import com.tencent.supersonic.headless.common.model.request.ModelSchemaFilterReq;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.response.DimSchemaResp;
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
import com.tencent.supersonic.headless.common.model.response.DomainResp;
import com.tencent.supersonic.headless.common.model.response.MeasureResp;
import com.tencent.supersonic.headless.common.model.response.MetricResp;
import com.tencent.supersonic.headless.common.model.response.MetricSchemaResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
import com.tencent.supersonic.headless.common.model.yaml.DataModelYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.model.domain.DatabaseService;
import com.tencent.supersonic.headless.model.domain.DimensionService;
import com.tencent.supersonic.headless.model.domain.DomainService;
@@ -116,11 +116,11 @@ public class ModelServiceImpl implements ModelService {
@Transactional
public ModelResp createModel(ModelReq modelReq, User user) throws Exception {
checkName(modelReq);
ModelDO datasourceDO = ModelConverter.convert(modelReq, user);
modelRepository.createModel(datasourceDO);
batchCreateDimension(datasourceDO, user);
batchCreateMetric(datasourceDO, user);
return ModelConverter.convert(datasourceDO);
ModelDO modelDO = ModelConverter.convert(modelReq, user);
modelRepository.createModel(modelDO);
batchCreateDimension(modelDO, user);
batchCreateMetric(modelDO, user);
return ModelConverter.convert(modelDO);
}
@Override

View File

@@ -4,11 +4,11 @@ package com.tencent.supersonic.headless.model.application;
import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.headless.api.model.request.ViewInfoReq;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.response.ModelSchemaRelaResp;
import com.tencent.supersonic.headless.common.model.request.ViewInfoReq;
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
import com.tencent.supersonic.headless.common.model.response.MetricResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.response.ModelSchemaRelaResp;
import com.tencent.supersonic.headless.model.domain.DimensionService;
import com.tencent.supersonic.headless.model.domain.MetricService;
import com.tencent.supersonic.headless.model.domain.ModelService;

View File

@@ -1,28 +0,0 @@
package com.tencent.supersonic.headless.model.domain;
import com.github.pagehelper.PageInfo;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.headless.api.model.request.AppQueryReq;
import com.tencent.supersonic.headless.api.model.request.AppReq;
import com.tencent.supersonic.headless.api.model.response.AppDetailResp;
import com.tencent.supersonic.headless.api.model.response.AppResp;
public interface AppService {
AppDetailResp save(AppReq app, User user);
AppDetailResp update(AppReq app, User user);
void online(Integer id, User user);
void offline(Integer id, User user);
void delete(Integer id, User user);
PageInfo<AppResp> pageApp(AppQueryReq appQueryReq, User user);
AppDetailResp getApp(Integer id, User user);
AppDetailResp getApp(Integer id);
}

View File

@@ -2,14 +2,14 @@ package com.tencent.supersonic.headless.model.domain;
import com.tencent.supersonic.common.pojo.ItemDateResp;
import com.tencent.supersonic.common.pojo.ModelRela;
import com.tencent.supersonic.headless.api.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.yaml.DataModelYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.common.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
import com.tencent.supersonic.headless.common.model.response.MetricResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.yaml.DataModelYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.MetricYamlTpl;
import java.util.List;
import java.util.Map;

View File

@@ -1,9 +1,9 @@
package com.tencent.supersonic.headless.model.domain;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.headless.api.model.request.DatabaseReq;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.model.request.DatabaseReq;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import java.util.List;

View File

@@ -4,11 +4,11 @@ import com.github.pagehelper.PageInfo;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.DataItem;
import com.tencent.supersonic.common.pojo.enums.EventType;
import com.tencent.supersonic.headless.api.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.api.model.request.DimensionReq;
import com.tencent.supersonic.headless.api.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.api.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.common.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.common.model.request.DimensionReq;
import com.tencent.supersonic.headless.common.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;
import java.util.List;

View File

@@ -2,9 +2,9 @@ package com.tencent.supersonic.headless.model.domain;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.headless.api.model.request.DomainReq;
import com.tencent.supersonic.headless.api.model.request.DomainUpdateReq;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.common.model.request.DomainReq;
import com.tencent.supersonic.headless.common.model.request.DomainUpdateReq;
import com.tencent.supersonic.headless.common.model.response.DomainResp;
import java.util.List;
import java.util.Map;

View File

@@ -4,12 +4,12 @@ import com.github.pagehelper.PageInfo;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.DataItem;
import com.tencent.supersonic.common.pojo.enums.EventType;
import com.tencent.supersonic.headless.api.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.api.model.pojo.MetricQueryDefaultConfig;
import com.tencent.supersonic.headless.api.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.api.model.request.MetricReq;
import com.tencent.supersonic.headless.api.model.request.PageMetricReq;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.common.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.common.model.pojo.MetricQueryDefaultConfig;
import com.tencent.supersonic.headless.common.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.common.model.request.MetricReq;
import com.tencent.supersonic.headless.common.model.request.PageMetricReq;
import com.tencent.supersonic.headless.common.model.response.MetricResp;
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;
import java.util.List;
import java.util.Set;

View File

@@ -3,17 +3,17 @@ package com.tencent.supersonic.headless.model.domain;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.ItemDateResp;
import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.headless.api.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.api.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.api.model.request.ModelReq;
import com.tencent.supersonic.headless.api.model.request.ModelSchemaFilterReq;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.response.MeasureResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
import com.tencent.supersonic.headless.api.model.yaml.DataModelYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.common.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.common.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.common.model.request.ModelReq;
import com.tencent.supersonic.headless.common.model.request.ModelSchemaFilterReq;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.response.MeasureResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
import com.tencent.supersonic.headless.common.model.yaml.DataModelYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.model.domain.pojo.ModelFilter;
import java.util.List;
import java.util.Map;

View File

@@ -1,41 +0,0 @@
package com.tencent.supersonic.headless.model.domain.dataobject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("s2_app")
public class AppDO {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private String description;
private String config;
private Date endDate;
private Integer qps;
private String owner;
private Integer status;
private String appSecret;
private String createdBy;
private String updatedBy;
private Date createdAt;
private Date updatedAt;
}

View File

@@ -1,16 +1,16 @@
package com.tencent.supersonic.headless.model.domain.manager;
import com.tencent.supersonic.headless.api.model.enums.ModelSourceTypeEnum;
import com.tencent.supersonic.headless.api.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.api.model.pojo.Dim;
import com.tencent.supersonic.headless.api.model.pojo.Identify;
import com.tencent.supersonic.headless.api.model.pojo.Measure;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.yaml.DataModelYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.DimensionTimeTypeParamsTpl;
import com.tencent.supersonic.headless.api.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.IdentifyYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.MeasureYamlTpl;
import com.tencent.supersonic.headless.common.model.enums.ModelSourceTypeEnum;
import com.tencent.supersonic.headless.common.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.common.model.pojo.Dim;
import com.tencent.supersonic.headless.common.model.pojo.Identify;
import com.tencent.supersonic.headless.common.model.pojo.Measure;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.yaml.DataModelYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.DimensionTimeTypeParamsTpl;
import com.tencent.supersonic.headless.common.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.IdentifyYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.MeasureYamlTpl;
import com.tencent.supersonic.headless.model.domain.pojo.Datasource;
import com.tencent.supersonic.headless.model.domain.pojo.DatasourceQueryEnum;
import com.tencent.supersonic.headless.model.domain.adaptor.engineadapter.EngineAdaptor;

View File

@@ -1,7 +1,7 @@
package com.tencent.supersonic.headless.model.domain.manager;
import com.tencent.supersonic.headless.api.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.model.domain.pojo.Dimension;
import com.tencent.supersonic.headless.model.domain.utils.DimensionConverter;
import java.util.ArrayList;

View File

@@ -1,6 +1,6 @@
package com.tencent.supersonic.headless.model.domain.manager;
import com.tencent.supersonic.headless.api.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.model.domain.pojo.Metric;
import com.tencent.supersonic.headless.model.domain.utils.MetricConverter;
import java.util.ArrayList;

View File

@@ -1,8 +1,8 @@
package com.tencent.supersonic.headless.model.domain.pojo;
import com.tencent.supersonic.headless.api.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.common.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
import lombok.Data;

View File

@@ -2,8 +2,8 @@ package com.tencent.supersonic.headless.model.domain.pojo;
import com.tencent.supersonic.common.pojo.enums.DataTypeEnums;
import com.tencent.supersonic.headless.api.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.common.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
import lombok.Data;
import java.util.List;

View File

@@ -1,10 +1,10 @@
package com.tencent.supersonic.headless.model.domain.pojo;
import com.tencent.supersonic.headless.api.model.pojo.Entity;
import com.tencent.supersonic.headless.api.model.request.DomainReq;
import com.tencent.supersonic.headless.common.model.pojo.Entity;
import com.tencent.supersonic.headless.common.model.request.DomainReq;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
import java.util.List;
import lombok.Data;
import org.springframework.beans.BeanUtils;

View File

@@ -6,8 +6,8 @@ import com.alibaba.druid.filter.Filter;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.wall.WallConfig;
import com.alibaba.druid.wall.WallFilter;
import com.tencent.supersonic.headless.api.model.enums.DataTypeEnum;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.enums.DataTypeEnum;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.model.domain.utils.JdbcDataSourceUtils;
import java.util.Arrays;

View File

@@ -1,9 +1,9 @@
package com.tencent.supersonic.headless.model.domain.pojo;
import com.tencent.supersonic.common.pojo.DataFormat;
import com.tencent.supersonic.headless.api.model.pojo.MetricTypeParams;
import com.tencent.supersonic.headless.api.model.pojo.RelateDimension;
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.common.model.pojo.MetricTypeParams;
import com.tencent.supersonic.headless.common.model.pojo.RelateDimension;
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
import lombok.Data;
import java.util.List;

View File

@@ -1,9 +1,9 @@
package com.tencent.supersonic.headless.model.domain.pojo;
import com.tencent.supersonic.headless.api.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.api.model.pojo.Entity;
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
import com.tencent.supersonic.headless.common.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.common.model.pojo.Entity;
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
import lombok.Data;
import java.util.List;

View File

@@ -1,8 +1,8 @@
package com.tencent.supersonic.headless.model.domain.repository;
import com.tencent.supersonic.headless.api.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.api.model.request.DateInfoReq;
import com.tencent.supersonic.headless.common.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.common.model.request.DateInfoReq;
import com.tencent.supersonic.headless.model.domain.dataobject.DateInfoDO;
import java.util.List;

View File

@@ -1,8 +1,8 @@
package com.tencent.supersonic.headless.model.domain.utils;
import com.alibaba.fastjson.JSONObject;
import com.tencent.supersonic.headless.api.model.request.DatabaseReq;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.request.DatabaseReq;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.model.domain.dataobject.DatabaseDO;
import com.tencent.supersonic.headless.model.domain.pojo.ConnectInfo;
import com.tencent.supersonic.headless.model.domain.pojo.Database;

View File

@@ -5,11 +5,11 @@ import com.tencent.supersonic.common.pojo.enums.DataTypeEnums;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.util.BeanMapper;
import com.tencent.supersonic.common.util.JsonUtil;
import com.tencent.supersonic.headless.api.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.api.model.request.DimensionReq;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.common.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.common.model.request.DimensionReq;
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.yaml.DimensionYamlTpl;
import com.tencent.supersonic.headless.model.domain.dataobject.DimensionDO;
import com.tencent.supersonic.headless.model.domain.pojo.Dimension;
import org.apache.logging.log4j.util.Strings;

View File

@@ -3,10 +3,10 @@ package com.tencent.supersonic.headless.model.domain.utils;
import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.headless.api.model.request.DomainReq;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.common.model.request.DomainReq;
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
import com.tencent.supersonic.headless.common.model.response.DomainResp;
import com.tencent.supersonic.headless.common.model.response.MetricResp;
import com.tencent.supersonic.headless.model.domain.dataobject.DomainDO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;

View File

@@ -10,8 +10,8 @@ import static com.tencent.supersonic.common.pojo.Constants.PATTERN_JDBC_TYPE;
import static com.tencent.supersonic.common.pojo.Constants.SPACE;
import com.alibaba.druid.util.StringUtils;
import com.tencent.supersonic.headless.api.model.enums.DataTypeEnum;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.enums.DataTypeEnum;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.common.util.MD5Util;
import com.tencent.supersonic.headless.model.domain.pojo.Database;
import com.tencent.supersonic.headless.model.domain.pojo.JdbcDataSource;

View File

@@ -5,15 +5,15 @@ import com.google.common.collect.Lists;
import com.tencent.supersonic.common.pojo.DataFormat;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.util.BeanMapper;
import com.tencent.supersonic.headless.api.model.pojo.Measure;
import com.tencent.supersonic.headless.api.model.pojo.MetricTypeParams;
import com.tencent.supersonic.headless.api.model.pojo.RelateDimension;
import com.tencent.supersonic.headless.api.model.request.MetricReq;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.api.model.yaml.MeasureYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.MetricTypeParamsYamlTpl;
import com.tencent.supersonic.headless.api.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.common.model.pojo.Measure;
import com.tencent.supersonic.headless.common.model.pojo.MetricTypeParams;
import com.tencent.supersonic.headless.common.model.pojo.RelateDimension;
import com.tencent.supersonic.headless.common.model.request.MetricReq;
import com.tencent.supersonic.headless.common.model.response.MetricResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.yaml.MeasureYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.MetricTypeParamsYamlTpl;
import com.tencent.supersonic.headless.common.model.yaml.MetricYamlTpl;
import com.tencent.supersonic.headless.model.domain.dataobject.MetricDO;
import com.tencent.supersonic.headless.model.domain.pojo.Metric;
import org.springframework.beans.BeanUtils;

View File

@@ -6,19 +6,22 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.util.BeanMapper;
import com.tencent.supersonic.common.util.JsonUtil;
import com.tencent.supersonic.headless.api.model.enums.MetricTypeEnum;
import com.tencent.supersonic.headless.api.model.pojo.Dim;
import com.tencent.supersonic.headless.api.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.api.model.pojo.Identify;
import com.tencent.supersonic.headless.api.model.pojo.Measure;
import com.tencent.supersonic.headless.api.model.pojo.MetricTypeParams;
import com.tencent.supersonic.headless.api.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.api.model.request.DimensionReq;
import com.tencent.supersonic.headless.api.model.request.MetricReq;
import com.tencent.supersonic.headless.api.model.request.ModelReq;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.api.model.response.MeasureResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.enums.DimensionTypeEnum;
import com.tencent.supersonic.headless.common.model.enums.IdentifyTypeEnum;
import com.tencent.supersonic.headless.common.model.enums.MetricTypeEnum;
import com.tencent.supersonic.headless.common.model.enums.SemanticTypeEnum;
import com.tencent.supersonic.headless.common.model.pojo.Dim;
import com.tencent.supersonic.headless.common.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.common.model.pojo.Identify;
import com.tencent.supersonic.headless.common.model.pojo.Measure;
import com.tencent.supersonic.headless.common.model.pojo.MetricTypeParams;
import com.tencent.supersonic.headless.common.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.common.model.request.DimensionReq;
import com.tencent.supersonic.headless.common.model.request.MetricReq;
import com.tencent.supersonic.headless.common.model.request.ModelReq;
import com.tencent.supersonic.headless.common.model.response.DomainResp;
import com.tencent.supersonic.headless.common.model.response.MeasureResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.model.domain.dataobject.ModelDO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -74,6 +77,9 @@ public class ModelConverter {
public static ModelDO convert(ModelDO modelDO, ModelReq modelReq, User user) {
ModelDetail modelDetail = getModelDetail(modelReq);
BeanMapper.mapper(modelReq, modelDO);
if (modelReq.getDrillDownDimensions() != null) {
modelDO.setDrillDownDimensions(JSONObject.toJSONString(modelReq.getDrillDownDimensions()));
}
modelDO.setModelDetail(JSONObject.toJSONString((modelDetail)));
modelDO.setUpdatedBy(user.getName());
modelDO.setUpdatedAt(new Date());
@@ -95,10 +101,10 @@ public class ModelConverter {
dimensionReq.setName(dim.getName());
dimensionReq.setBizName(dim.getBizName());
dimensionReq.setDescription(dim.getName());
dimensionReq.setSemanticType("CATEGORY");
dimensionReq.setSemanticType(SemanticTypeEnum.CATEGORY.name());
dimensionReq.setModelId(modelDO.getId());
dimensionReq.setExpr(dim.getBizName());
dimensionReq.setType("categorical");
dimensionReq.setType(DimensionTypeEnum.categorical.name());
dimensionReq.setDescription(Objects.isNull(dim.getDescription()) ? "" : dim.getDescription());
dimensionReq.setIsTag(dim.getIsTag());
return dimensionReq;
@@ -123,7 +129,7 @@ public class ModelConverter {
dimensionReq.setName(identify.getName());
dimensionReq.setBizName(identify.getBizName());
dimensionReq.setDescription(identify.getName());
dimensionReq.setSemanticType("CATEGORY");
dimensionReq.setSemanticType(SemanticTypeEnum.CATEGORY.name());
dimensionReq.setModelId(modelDO.getId());
dimensionReq.setExpr(identify.getBizName());
dimensionReq.setType(identify.getType());
@@ -141,7 +147,7 @@ public class ModelConverter {
private static boolean isCreateDimension(Dim dim) {
return dim.getIsCreateDimension() == 1
&& StringUtils.isNotBlank(dim.getName())
&& !dim.getType().equalsIgnoreCase("time");
&& !dim.getType().equalsIgnoreCase(DimensionTypeEnum.time.name());
}
private static boolean isCreateMetric(Measure measure) {
@@ -175,7 +181,7 @@ public class ModelConverter {
return dimensionReqs;
}
dimensionReqs.addAll(identifies.stream()
.filter(i -> i.getType().equalsIgnoreCase("primary"))
.filter(i -> i.getType().equalsIgnoreCase(IdentifyTypeEnum.primary.name()))
.filter(i -> StringUtils.isNotBlank(i.getName()))
.map(identify -> convert(identify, modelDO)).collect(Collectors.toList()));
return dimensionReqs;
@@ -196,17 +202,18 @@ public class ModelConverter {
BeanMapper.mapper(modelReq.getModelDetail(), modelDetail);
List<Measure> measures = modelDetail.getMeasures();
for (Measure measure : measures) {
if (StringUtils.isBlank(measure.getExpr())) {
measure.setExpr(measure.getBizName());
if (StringUtils.isBlank(measure.getBizName())) {
continue;
}
if (StringUtils.isBlank(measure.getConstraint())) {
measure.setConstraint(null);
//Compatible with front-end tmp
String oriFieldName = measure.getBizName()
.replaceFirst(modelReq.getBizName() + "_", "");
measure.setExpr(oriFieldName);
if (!measure.getBizName().startsWith(modelReq.getBizName())) {
measure.setBizName(String.format("%s_%s", modelReq.getBizName(), oriFieldName));
}
if (StringUtils.isBlank(measure.getAlias())) {
measure.setAlias(null);
}
measure.setBizName(String.format("%s_%s", modelReq.getBizName(), measure.getBizName()));
}
return modelDetail;
}
}

View File

@@ -4,9 +4,9 @@ import static com.tencent.supersonic.common.pojo.Constants.AT_SYMBOL;
import com.tencent.supersonic.common.pojo.QueryColumn;
import com.tencent.supersonic.common.util.DateUtils;
import com.tencent.supersonic.headless.api.model.enums.DataTypeEnum;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.model.enums.DataTypeEnum;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.model.domain.pojo.JdbcDataSource;
import java.rmi.ServerException;
import java.sql.Connection;

View File

@@ -1,9 +1,9 @@
package com.tencent.supersonic.headless.model.domain.utils;
import com.tencent.supersonic.headless.api.model.enums.DimensionTypeEnum;
import com.tencent.supersonic.headless.common.model.enums.DimensionTypeEnum;
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
import com.tencent.supersonic.headless.api.model.pojo.Dim;
import com.tencent.supersonic.headless.api.model.pojo.DimensionTimeTypeParams;
import com.tencent.supersonic.headless.common.model.pojo.Dim;
import com.tencent.supersonic.headless.common.model.pojo.DimensionTimeTypeParams;
import com.tencent.supersonic.headless.model.domain.adaptor.engineadapter.EngineAdaptor;
import java.util.List;
import lombok.extern.slf4j.Slf4j;

View File

@@ -1,10 +0,0 @@
package com.tencent.supersonic.headless.model.infrastructure.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tencent.supersonic.headless.model.domain.dataobject.AppDO;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AppMapper extends BaseMapper<AppDO> {
}

View File

@@ -1,11 +1,11 @@
package com.tencent.supersonic.headless.model.infrastructure.mapper;
import com.tencent.supersonic.headless.api.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.common.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.model.domain.dataobject.DateInfoDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DateInfoMapper {

View File

@@ -3,22 +3,23 @@ package com.tencent.supersonic.headless.model.infrastructure.repository;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Stopwatch;
import com.tencent.supersonic.headless.api.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.api.model.request.DateInfoReq;
import com.tencent.supersonic.common.pojo.Constants;
import com.tencent.supersonic.headless.common.model.pojo.ItemDateFilter;
import com.tencent.supersonic.headless.common.model.request.DateInfoReq;
import com.tencent.supersonic.headless.model.domain.dataobject.DateInfoDO;
import com.tencent.supersonic.headless.model.domain.repository.DateInfoRepository;
import com.tencent.supersonic.headless.model.infrastructure.mapper.DateInfoMapper;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
@Slf4j
@Repository
public class DateInfoRepositoryImpl implements DateInfoRepository {

View File

@@ -1,84 +0,0 @@
package com.tencent.supersonic.headless.model.rest;
import com.github.pagehelper.PageInfo;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
import com.tencent.supersonic.headless.api.model.request.AppQueryReq;
import com.tencent.supersonic.headless.api.model.request.AppReq;
import com.tencent.supersonic.headless.api.model.response.AppDetailResp;
import com.tencent.supersonic.headless.api.model.response.AppResp;
import com.tencent.supersonic.headless.model.domain.AppService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@RestController
@RequestMapping("/api/semantic/app")
public class AppController {
@Autowired
private AppService appService;
@PostMapping
public boolean save(@RequestBody AppReq app,
HttpServletRequest request, HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
appService.save(app, user);
return true;
}
@PutMapping
public boolean update(@RequestBody AppReq app,
HttpServletRequest request, HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
appService.update(app, user);
return true;
}
@PutMapping("/online/{id}")
public boolean online(@PathVariable("id") Integer id,
HttpServletRequest request, HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
appService.online(id, user);
return true;
}
@PutMapping("/offline/{id}")
public boolean offline(@PathVariable("id") Integer id,
HttpServletRequest request, HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
appService.offline(id, user);
return true;
}
@DeleteMapping("/{id}")
public boolean delete(@PathVariable("id") Integer id,
HttpServletRequest request, HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
appService.delete(id, user);
return true;
}
@GetMapping("/{id}")
public AppDetailResp getApp(@PathVariable("id") Integer id,
HttpServletRequest request, HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
return appService.getApp(id, user);
}
@PostMapping("/page")
public PageInfo<AppResp> pageApp(@RequestBody AppQueryReq appQueryReq,
HttpServletRequest request, HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
return appService.pageApp(appQueryReq, user);
}
}

View File

@@ -2,10 +2,10 @@ package com.tencent.supersonic.headless.model.rest;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
import com.tencent.supersonic.headless.api.model.request.DatabaseReq;
import com.tencent.supersonic.headless.api.model.request.SqlExecuteReq;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.common.model.request.DatabaseReq;
import com.tencent.supersonic.headless.common.model.request.SqlExecuteReq;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
import com.tencent.supersonic.headless.model.domain.DatabaseService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

View File

@@ -5,11 +5,11 @@ import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
import com.tencent.supersonic.common.pojo.enums.SensitiveLevelEnum;
import com.tencent.supersonic.headless.api.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.api.model.request.DimensionReq;
import com.tencent.supersonic.headless.api.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.api.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
import com.tencent.supersonic.headless.common.model.pojo.DimValueMap;
import com.tencent.supersonic.headless.common.model.request.DimensionReq;
import com.tencent.supersonic.headless.common.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
import com.tencent.supersonic.headless.model.domain.DimensionService;
import com.tencent.supersonic.headless.model.domain.pojo.DimensionFilter;
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;

View File

@@ -2,9 +2,9 @@ package com.tencent.supersonic.headless.model.rest;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
import com.tencent.supersonic.headless.api.model.request.DomainReq;
import com.tencent.supersonic.headless.api.model.request.DomainUpdateReq;
import com.tencent.supersonic.headless.api.model.response.DomainResp;
import com.tencent.supersonic.headless.common.model.request.DomainReq;
import com.tencent.supersonic.headless.common.model.request.DomainUpdateReq;
import com.tencent.supersonic.headless.common.model.response.DomainResp;
import com.tencent.supersonic.headless.model.domain.DomainService;
import java.util.Arrays;

View File

@@ -6,12 +6,12 @@ import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
import com.tencent.supersonic.common.pojo.enums.SensitiveLevelEnum;
import com.tencent.supersonic.headless.api.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.api.model.pojo.MetricQueryDefaultConfig;
import com.tencent.supersonic.headless.api.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.api.model.request.MetricReq;
import com.tencent.supersonic.headless.api.model.request.PageMetricReq;
import com.tencent.supersonic.headless.api.model.response.MetricResp;
import com.tencent.supersonic.headless.common.model.pojo.DrillDownDimension;
import com.tencent.supersonic.headless.common.model.pojo.MetricQueryDefaultConfig;
import com.tencent.supersonic.headless.common.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.common.model.request.MetricReq;
import com.tencent.supersonic.headless.common.model.request.PageMetricReq;
import com.tencent.supersonic.headless.common.model.response.MetricResp;
import com.tencent.supersonic.headless.model.domain.MetricService;
import com.tencent.supersonic.headless.model.domain.pojo.MetricFilter;
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;

View File

@@ -3,10 +3,10 @@ package com.tencent.supersonic.headless.model.rest;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.headless.api.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.api.model.request.ModelReq;
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.request.MetaBatchReq;
import com.tencent.supersonic.headless.common.model.request.ModelReq;
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.model.domain.ModelService;
import com.tencent.supersonic.headless.model.domain.pojo.ModelFilter;
import org.springframework.web.bind.annotation.RestController;

View File

@@ -3,8 +3,8 @@ package com.tencent.supersonic.headless.model.rest;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
import com.tencent.supersonic.headless.api.model.request.ViewInfoReq;
import com.tencent.supersonic.headless.api.model.response.ModelSchemaRelaResp;
import com.tencent.supersonic.headless.common.model.request.ViewInfoReq;
import com.tencent.supersonic.headless.common.model.response.ModelSchemaRelaResp;
import com.tencent.supersonic.headless.model.domain.dataobject.ViewInfoDO;
import com.tencent.supersonic.headless.model.application.ViewInfoServiceImpl;
import org.springframework.web.bind.annotation.DeleteMapping;

View File

@@ -5,15 +5,15 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.auth.api.authentication.service.UserService;
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.headless.api.model.enums.DimensionTypeEnum;
import com.tencent.supersonic.headless.api.model.enums.IdentifyTypeEnum;
import com.tencent.supersonic.headless.api.model.pojo.Dim;
import com.tencent.supersonic.headless.api.model.pojo.DimensionTimeTypeParams;
import com.tencent.supersonic.headless.api.model.pojo.Identify;
import com.tencent.supersonic.headless.api.model.pojo.Measure;
import com.tencent.supersonic.headless.api.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.api.model.request.ModelReq;
import com.tencent.supersonic.headless.api.model.response.ModelResp;
import com.tencent.supersonic.headless.common.model.enums.DimensionTypeEnum;
import com.tencent.supersonic.headless.common.model.enums.IdentifyTypeEnum;
import com.tencent.supersonic.headless.common.model.pojo.Dim;
import com.tencent.supersonic.headless.common.model.pojo.DimensionTimeTypeParams;
import com.tencent.supersonic.headless.common.model.pojo.Identify;
import com.tencent.supersonic.headless.common.model.pojo.Measure;
import com.tencent.supersonic.headless.common.model.pojo.ModelDetail;
import com.tencent.supersonic.headless.common.model.request.ModelReq;
import com.tencent.supersonic.headless.common.model.response.ModelResp;
import com.tencent.supersonic.headless.model.domain.DatabaseService;
import com.tencent.supersonic.headless.model.domain.DimensionService;
import com.tencent.supersonic.headless.model.domain.DomainService;