提交 3c6d2fb9 authored 作者: wangjiahao's avatar wangjiahao

refactor: 使用Gson 替换fastjson

上级 3c594429
......@@ -13,7 +13,6 @@ import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import io.dataease.commons.holder.ThreadLocalContextHolder;
import io.dataease.commons.utils.CommonBeanFactory;
......@@ -346,9 +345,8 @@ public class XssAndSqlHttpServletRequestWrapper extends HttpServletRequestWrappe
private static String orders(String json) {
if (StringUtils.isEmpty(json)) return null;
try{
Map<String, Object> map = JSONObject.parseObject(json, Map.class);
Map<String, Object> map = new Gson().fromJson(json, Map.class);
Object orders = map.get("orders");
if (orders != null) {
......
package io.dataease.config;
import com.alibaba.fastjson.JSONObject;
import com.fit2cloud.autoconfigure.QuartzAutoConfiguration;
import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.commons.utils.CommonThreadPool;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.repository.filerep.KettleFileRepository;
......
package io.dataease.controller.request.datasource;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonObject;
import io.dataease.plugins.common.base.domain.DatasetTableField;
import lombok.Data;
......@@ -17,5 +17,5 @@ public class ApiDefinition {
private String request;
private String dataPath;
private String status;
private List<JSONObject> datas = new ArrayList<>();
private List<JsonObject> datas = new ArrayList<>();
}
package io.dataease.controller.request.datasource;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonObject;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class ApiDefinitionRequest {
private List<JSONObject> headers = new ArrayList<>();
private JSONObject body = new JSONObject();
private List<JsonObject> headers = new ArrayList<>();
private JsonObject body = new JsonObject();
private AuthManager authManager = new AuthManager();
......
package io.dataease.dto;
import com.alibaba.fastjson.JSONArray;
import com.google.gson.JsonArray;
import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.constants.DatasourceCalculationMode;
import io.swagger.annotations.ApiModelProperty;
......@@ -16,7 +16,7 @@ public class DatasourceDTO extends Datasource {
@ApiModelProperty("权限")
private String privileges;
private JSONArray apiConfiguration;
private JsonArray apiConfiguration;
private String typeDesc;
private DatasourceCalculationMode calculationMode;
}
package io.dataease.provider.datasource;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.JsonParser;
import io.dataease.commons.utils.HttpClientConfig;
import io.dataease.commons.utils.HttpClientUtil;
import io.dataease.controller.request.datasource.es.EsReponse;
......@@ -254,13 +254,14 @@ public class EsProvider extends Provider {
@Override
public String checkStatus(DatasourceRequest datasourceRequest) throws Exception {
Gson gson = new Gson();
EsConfiguration esConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), EsConfiguration.class);
String response = exexGetQuery(datasourceRequest);
if (JSONObject.parseObject(response).getJSONObject("error") != null) {
throw new Exception(JSONObject.parseObject(response).getJSONObject("error").getString("reason"));
if (JsonParser.parseString(response).getAsJsonObject().getAsJsonObject("error") != null) {
throw new Exception(JsonParser.parseString(response).getAsJsonObject().getAsJsonObject("error").get("reason").getAsString());
}
String version = JSONObject.parseObject(response).getJSONObject("version").getString("number");
String version = JsonParser.parseString(response).getAsJsonObject().getAsJsonObject("version").get("number").getAsString();
String[] versionList = version.split("\\.");
if (Integer.valueOf(versionList[0]) < 7 && Integer.valueOf(versionList[1]) < 3) {
throw new Exception(Translator.get("i18n_es_limit"));
......
package io.dataease.service.dataset;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import io.dataease.auth.annotation.DeCleaner;
import io.dataease.auth.api.dto.CurrentUserDto;
import io.dataease.dto.SysLogDTO;
......@@ -1341,8 +1341,8 @@ public class DataSetTableService {
String keyword = datasourceTypes.getKeywordPrefix() + "%s" + datasourceTypes.getKeywordSuffix();
String configuration = ds.getConfiguration();
JSONObject jsonObject = JSON.parseObject(configuration);
String schema = jsonObject.getString("schema");
JsonObject jsonObject = JsonParser.parseString(configuration).getAsJsonObject();
String schema = jsonObject.get("schema").getAsString();
String joinPrefix = "";
if (StringUtils.isNotEmpty(schema) && (StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.db2.getType()) ||
StringUtils.equalsIgnoreCase(ds.getType(), DatasourceTypes.sqlServer.getType()) ||
......
package io.dataease.service.dataset;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import io.dataease.ext.ExtChartViewMapper;
import io.dataease.commons.constants.*;
import io.dataease.commons.model.AuthURD;
import io.dataease.commons.utils.*;
import io.dataease.controller.request.datasource.ApiDefinition;
import io.dataease.plugins.common.base.domain.*;
import io.dataease.plugins.common.base.mapper.DatasetTableMapper;
import io.dataease.plugins.common.base.mapper.DatasetTableTaskMapper;
import io.dataease.plugins.common.base.mapper.DatasourceMapper;
import io.dataease.plugins.common.constants.DatasourceTypes;
import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.dto.datasource.TableField;
......@@ -435,7 +432,7 @@ public class ExtractDataService {
}
private void extractApiData(DatasetTable datasetTable, Datasource datasource, List<DatasetTableField> datasetTableFields, String extractType) throws Exception {
List<ApiDefinition> lists = JSONObject.parseArray(datasource.getConfiguration(), ApiDefinition.class);
List<ApiDefinition> lists = new Gson().fromJson(datasource.getConfiguration(), new TypeToken<ArrayList<ApiDefinition>>(){}.getType());
lists = lists.stream().filter(item -> item.getName().equalsIgnoreCase(new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class).getTable())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(lists)) {
throw new Exception("未找到API数据表");
......
package io.dataease.service.dataset;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import io.dataease.auth.api.dto.CurrentRoleDto;
import io.dataease.auth.entity.SysUserEntity;
import io.dataease.auth.service.AuthUserService;
......@@ -46,7 +47,7 @@ public class PermissionService {
if (StringUtils.isEmpty(datasetRowPermissions.getFilter())) {
continue;
}
List<ChartCustomFilterItemDTO> lists = JSONObject.parseArray(datasetRowPermissions.getFilter(), ChartCustomFilterItemDTO.class);
List<ChartCustomFilterItemDTO> lists = new Gson().fromJson(datasetRowPermissions.getFilter(), new TypeToken<ArrayList<ChartCustomFilterItemDTO>>(){}.getType());
lists.forEach(chartCustomFilterDTO -> {
chartCustomFilterDTO.setFieldId(field.getId());
if(datasetRowPermissions.getAuthTargetType().equalsIgnoreCase("sysParams")){
......@@ -77,7 +78,7 @@ public class PermissionService {
List<DatasetTableField> result = new ArrayList<>();
List<ColumnPermissionItem> allColumnPermissionItems = new ArrayList<>();
for (DataSetColumnPermissionsDTO dataSetColumnPermissionsDTO : columnPermissions(datasetTableId, user)) {
ColumnPermissions columnPermissions = JSONObject.parseObject(dataSetColumnPermissionsDTO.getPermissions(), ColumnPermissions.class);
ColumnPermissions columnPermissions = new Gson().fromJson(dataSetColumnPermissionsDTO.getPermissions(), ColumnPermissions.class);
if(!columnPermissions.getEnable()){continue;}
allColumnPermissionItems.addAll(columnPermissions.getColumns().stream().filter(columnPermissionItem -> columnPermissionItem.getSelected()).collect(Collectors.toList()));
}
......
package io.dataease.service.engine;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.commons.utils.HttpClientConfig;
import io.dataease.commons.utils.HttpClientUtil;
......@@ -40,9 +41,9 @@ public class EngineService {
@Resource
private DatasourceService datasource;
static private List<String>simple_engine = Arrays.asList("engine_mysql");
static private List<String> simple_engine = Arrays.asList("engine_mysql");
static private List<String>cluster_engine = Arrays.asList("engine_doris");
static private List<String> cluster_engine = Arrays.asList("engine_doris");
public Boolean isLocalMode() {
return env.getProperty("engine_mode", "local").equalsIgnoreCase("local");
......@@ -96,24 +97,28 @@ public class EngineService {
String response;
try {
response = HttpClientUtil.get("http://" + dorisConfiguration.getHost() + ":" + dorisConfiguration.getHttpPort() + "/api/backends", httpClientConfig);
}catch (Exception e){
} catch (Exception e) {
return ResultHolder.error("Engine is invalid: " + e.getMessage());
}
JSONArray backends = Optional.ofNullable(JSONObject.parseObject(response).getJSONObject("data")).orElse(new JSONObject()).getJSONArray("backends");
if(CollectionUtils.isEmpty(backends)){
JsonArray backends = null;
JsonObject data = JsonParser.parseString(response).getAsJsonObject().getAsJsonObject("data");
if (data != null) {
backends = data.getAsJsonArray("backends");
}
if (backends == null || backends.size() == 0) {
return ResultHolder.error("Engine is invalid: no backends found.");
}
Integer alives = 0;
for (int i = 0; i < backends.size(); i++) {
JSONObject kv = backends.getJSONObject(i);
if (kv.getBoolean("is_alive")) {
alives ++;
JsonObject kv = backends.get(i).getAsJsonObject();
if (kv.get("is_alive").getAsBoolean()) {
alives++;
}
}
if(alives < dorisConfiguration.getReplicationNum()){
if (alives < dorisConfiguration.getReplicationNum()) {
return ResultHolder.error("Engine params is invalid: 副本数量不能大于节点数量.");
}
}
......@@ -135,17 +140,17 @@ public class EngineService {
return ResultHolder.success(engine);
}
private void checkValid(DeEngine engine)throws Exception{
if(isLocalMode()){
private void checkValid(DeEngine engine) throws Exception {
if (isLocalMode()) {
throw new Exception("Setting engine is not supported.");
}
if(isSimpleMode()){
if(!simple_engine.contains(engine.getType())){
if (isSimpleMode()) {
if (!simple_engine.contains(engine.getType())) {
throw new Exception("Engine type not supported.");
}
}
if(isClusterMode()){
if(!cluster_engine.contains(engine.getType())){
if (isClusterMode()) {
if (!cluster_engine.contains(engine.getType())) {
throw new Exception("Engine type not supported.");
}
}
......@@ -160,21 +165,21 @@ public class EngineService {
Datasource datasource = new Datasource();
if (isLocalMode()) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("dataSourceType", "jdbc");
jsonObject.put("dataBase", env.getProperty("doris.db", "doris"));
jsonObject.put("username", env.getProperty("doris.user", "root"));
jsonObject.put("password", env.getProperty("doris.password", "dataease"));
jsonObject.put("host", env.getProperty("doris.host", "doris"));
jsonObject.put("port", env.getProperty("doris.port", "9030"));
jsonObject.put("httpPort", env.getProperty("doris.httpPort", "8030"));
Map jsonObjectMap = new HashMap();
jsonObjectMap.put("dataSourceType", "jdbc");
jsonObjectMap.put("dataBase", env.getProperty("doris.db", "doris"));
jsonObjectMap.put("username", env.getProperty("doris.user", "root"));
jsonObjectMap.put("password", env.getProperty("doris.password", "dataease"));
jsonObjectMap.put("host", env.getProperty("doris.host", "doris"));
jsonObjectMap.put("port", env.getProperty("doris.port", "9030"));
jsonObjectMap.put("httpPort", env.getProperty("doris.httpPort", "8030"));
DeEngine engine = new DeEngine();
engine.setId("doris");
engine.setName("doris");
engine.setDesc("doris");
engine.setType("engine_doris");
engine.setConfiguration(jsonObject.toJSONString());
engine.setConfiguration(new Gson().toJson(jsonObjectMap));
BeanUtils.copyBean(datasource, engine);
}
if (isClusterMode()) {
......@@ -198,7 +203,7 @@ public class EngineService {
return datasource;
}
public void initSimpleEngine(){
public void initSimpleEngine() {
if (!isSimpleMode()) {
return;
}
......@@ -214,9 +219,10 @@ public class EngineService {
MysqlConfiguration mysqlConfiguration = new MysqlConfiguration();
Pattern WITH_SQL_FRAGMENT = Pattern.compile("jdbc:mysql://(.*):(\\d+)/(.*)");
Matcher matcher = WITH_SQL_FRAGMENT.matcher(env.getProperty("spring.datasource.url"));
if(!matcher.find()){
if (!matcher.find()) {
return;
};
}
;
mysqlConfiguration.setHost(matcher.group(1));
mysqlConfiguration.setPort(Integer.valueOf(matcher.group(2)));
mysqlConfiguration.setDataBase(matcher.group(3).split("\\?")[0]);
......
package io.dataease.service.panel;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import io.dataease.dto.chart.ChartViewDTO;
import io.dataease.exception.DataEaseException;
import io.dataease.plugins.common.base.domain.PanelGroupExtendData;
......@@ -25,11 +24,12 @@ public class PanelGroupExtendDataService {
private PanelGroupExtendDataMapper panelGroupExtendDataMapper;
public ChartViewDTO getChartDataInfo(String viewId,ChartViewDTO view){
Gson gson = new Gson();
PanelGroupExtendDataExample extendDataExample = new PanelGroupExtendDataExample();
extendDataExample.createCriteria().andViewIdEqualTo(viewId);
List<PanelGroupExtendData> extendDataList = panelGroupExtendDataMapper.selectByExampleWithBLOBs(extendDataExample);
if(CollectionUtils.isNotEmpty(extendDataList)){
ChartViewDTO chartViewTemplate = JSONObject.parseObject(extendDataList.get(0).getViewDetails(),ChartViewDTO.class);
ChartViewDTO chartViewTemplate = gson.fromJson(extendDataList.get(0).getViewDetails(),ChartViewDTO.class);
view.setData(chartViewTemplate.getData());
}else{
DataEaseException.throwException("模板缓存数据中未获取指定视图数据:"+viewId);
......
package io.dataease.service.panel;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import io.dataease.auth.annotation.DeCleaner;
import io.dataease.commons.constants.*;
import io.dataease.commons.utils.AuthUtils;
......@@ -384,6 +384,7 @@ public class PanelGroupService {
}
public String newPanel(PanelGroupRequest request) {
Gson gson = new Gson();
String newPanelId = UUIDUtil.getUUIDAsString();
String newFrom = request.getNewFrom();
String templateStyle = null;
......@@ -405,13 +406,13 @@ public class PanelGroupService {
dynamicData = request.getDynamicData();
staticResource = request.getStaticResource();
}
Map<String, String> dynamicDataMap = JSON.parseObject(dynamicData, Map.class);
Map<String, String> dynamicDataMap = gson.fromJson(dynamicData, Map.class);
List<PanelViewInsertDTO> panelViews = new ArrayList<>();
List<PanelGroupExtendDataDTO> viewsData = new ArrayList<>();
for (Map.Entry<String, String> entry : dynamicDataMap.entrySet()) {
String originViewId = entry.getKey();
String originViewData = entry.getValue();
ChartViewDTO chartView = JSON.parseObject(originViewData, ChartViewDTO.class);
ChartViewDTO chartView = gson.fromJson(originViewData, ChartViewDTO.class);
String position = chartView.getPosition();
String newViewId = UUIDUtil.getUUIDAsString();
chartView.setId(newViewId);
......@@ -472,7 +473,6 @@ public class PanelGroupService {
extPanelViewLinkageMapper.copyViewLinkageField(copyId);
} catch (Exception e) {
e.printStackTrace();
System.out.println("错误===》panel:" + panelGroupDTO.getId() + ";panelView:" + JSON.toJSONString(panelViewtemp));
}
}
}
......
package io.dataease.service.panel;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import io.dataease.ext.ExtChartViewMapper;
import io.dataease.ext.ExtPanelGroupMapper;
import io.dataease.ext.ExtPanelViewMapper;
......@@ -95,28 +94,29 @@ public class PanelViewService {
String panelData = panelGroup.getPanelData();
if (StringUtils.isNotEmpty(panelData)) {
mobileLayout = false;
JSONArray dataArray = JSON.parseArray(panelData);
JsonArray dataArray = JsonParser.parseString(panelData).getAsJsonArray();
List<PanelViewInsertDTO> panelViewInsertDTOList = new ArrayList<>();
for (int i = 0; i < dataArray.size(); i++) {
JSONObject jsonObject = dataArray.getJSONObject(i);
if ("view".equals(jsonObject.getString("type"))) {
panelViewInsertDTOList.add(new PanelViewInsertDTO(jsonObject.getJSONObject("propValue").getString("viewId"), panelId));
JsonObject jsonObject = dataArray.get(i).getAsJsonObject();
if (jsonObject.get("type")!=null && "view".equals(jsonObject.get("type").getAsString())) {
panelViewInsertDTOList.add(new PanelViewInsertDTO(jsonObject.get("propValue").getAsJsonObject().get("viewId").getAsString(), panelId));
}
// 选项卡内部视图
if ("de-tabs".equals(jsonObject.getString("type"))) {
JSONObject options = jsonObject.getJSONObject("options");
if (jsonObject.get("type")!=null && "de-tabs".equals(jsonObject.get("type").getAsString())) {
JsonObject options = jsonObject.getAsJsonObject("options");
if (options != null) {
JSONArray tabList = options.getJSONArray("tabList");
if (CollectionUtils.isNotEmpty(tabList)) {
JsonArray tabList = options.getAsJsonArray("tabList");
if (tabList != null && tabList.size() > 0) {
for (int y = 0; y < tabList.size(); y++) {
if(tabList.getJSONObject(y).getString("content").indexOf("viewId")>-1){
panelViewInsertDTOList.add(new PanelViewInsertDTO(tabList.getJSONObject(y).getJSONObject("content").getJSONObject("propValue").getString("viewId"), panelId,"tab"));
if (tabList.get(y).getAsJsonObject().get("content").toString().indexOf("viewId") > -1) {
panelViewInsertDTOList.add(new PanelViewInsertDTO(tabList.get(y).getAsJsonObject().getAsJsonObject("content").getAsJsonObject("propValue").get("viewId").getAsString(), panelId, "tab"));
}
}
}
}
}
if (jsonObject.getBoolean("mobileSelected") != null && jsonObject.getBoolean("mobileSelected")) {
if (jsonObject.get("mobileSelected") != null && jsonObject.get("mobileSelected").getAsBoolean()) {
mobileLayout = true;
}
}
......@@ -124,11 +124,11 @@ public class PanelViewService {
if (CollectionUtils.isNotEmpty(panelViewInsertDTOList)) {
extPanelViewMapper.savePanelView(panelViewInsertDTOList);
//将视图从cache表中更新到正式表中
viewIds = panelViewInsertDTOList.stream().map(panelView ->panelView.getChartViewId()).collect(Collectors.toList());
viewIds = panelViewInsertDTOList.stream().map(panelView -> panelView.getChartViewId()).collect(Collectors.toList());
// extChartViewMapper.copyCacheToView(viewIds);
}
extChartViewMapper.deleteCacheWithPanel(viewIds,panelId);
extChartViewMapper.deleteNoUseView(viewIds,panelId);
extChartViewMapper.deleteCacheWithPanel(viewIds, panelId);
extChartViewMapper.deleteNoUseView(viewIds, panelId);
}
panelGroup.setMobileLayout(mobileLayout);
return viewIds;
......@@ -138,19 +138,19 @@ public class PanelViewService {
return extPanelViewMapper.getPanelViewDetails(panelId);
}
public List<PanelView> findPanelViews(String copyId){
public List<PanelView> findPanelViews(String copyId) {
PanelViewExample panelViewExample = new PanelViewExample();
panelViewExample.createCriteria().andCopyIdEqualTo(copyId);
return panelViewMapper.selectByExample(panelViewExample);
}
public PanelView findByViewId(String viewId){
public PanelView findByViewId(String viewId) {
PanelViewExample panelViewExample = new PanelViewExample();
panelViewExample.createCriteria().andChartViewIdEqualTo(viewId);
List<PanelView> result = panelViewMapper.selectByExample(panelViewExample);
if(CollectionUtils.isNotEmpty(result)){
if (CollectionUtils.isNotEmpty(result)) {
return result.get(0);
}else{
} else {
return null;
}
}
......
......@@ -2,7 +2,7 @@ package io.dataease.service.staticResource;
import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import io.dataease.commons.utils.FileUtils;
import io.dataease.commons.utils.LogUtil;
import io.dataease.commons.utils.StaticResourceUtils;
......@@ -51,8 +51,9 @@ public class StaticResourceService {
}
public void saveFilesToServe(String staticResource){
Gson gson = new Gson();
if(StringUtils.isNotEmpty(staticResource)){
Map<String,String> resource = JSON.parseObject(staticResource,Map.class);
Map<String,String> resource = gson.fromJson(staticResource,Map.class);
for(Map.Entry<String,String> entry:resource.entrySet()){
String path = entry.getKey();
Path uploadPath = Paths.get(staticDir.toString(), path.substring(path.lastIndexOf("/")+1,path.length()));
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论