完善JSON文件数据集功能

This commit is contained in:
datagear 2020-08-14 16:09:25 +08:00
parent 92ebe89e9e
commit ba5f3cf7ae
13 changed files with 276 additions and 130 deletions

View File

@ -0,0 +1,41 @@
/*
* Copyright (c) 2018 datagear.tech. All Rights Reserved.
*/
/**
*
*/
package org.datagear.analysis.support;
import org.datagear.analysis.DataSetException;
/**
* 数据集源解析异常
*
* @author datagear@163.com
*
*/
public class DataSetSourceParseException extends DataSetException
{
private static final long serialVersionUID = 1L;
public DataSetSourceParseException()
{
super();
}
public DataSetSourceParseException(String message)
{
super(message);
}
public DataSetSourceParseException(Throwable cause)
{
super(cause);
}
public DataSetSourceParseException(String message, Throwable cause)
{
super(message, cause);
}
}

View File

@ -42,9 +42,10 @@ public class JsonDataSetSupport extends JsonSupport
*
* @param jsonValue
* @return
* @throws DataSetSourceParseException
* @throws DataSetException
*/
public Object resolveValue(String jsonValue) throws DataSetException
public Object resolveValue(String jsonValue) throws DataSetSourceParseException, DataSetException
{
StringReader reader = new StringReader(jsonValue);
return resolveValue(reader);
@ -55,9 +56,10 @@ public class JsonDataSetSupport extends JsonSupport
*
* @param jsonReader
* @return
* @throws DataSetSourceParseException
* @throws DataSetException
*/
public Object resolveValue(Reader jsonReader) throws DataSetException
public Object resolveValue(Reader jsonReader) throws DataSetSourceParseException, DataSetException
{
try
{
@ -74,10 +76,12 @@ public class JsonDataSetSupport extends JsonSupport
*
* @param jsonValue
* @return
* @throws DataSetException
* @throws DataSetSourceParseException
* @throws UnsupportedJsonResultDataException
* @throws DataSetException
*/
public Object resolveResultData(String jsonValue) throws DataSetException, UnsupportedJsonResultDataException
public Object resolveResultData(String jsonValue)
throws DataSetSourceParseException, UnsupportedJsonResultDataException, DataSetException
{
StringReader reader = new StringReader(jsonValue);
return resolveResultData(reader);
@ -89,11 +93,12 @@ public class JsonDataSetSupport extends JsonSupport
* @param file
* @param encoding
* @return
* @throws DataSetException
* @throws DataSetSourceParseException
* @throws UnsupportedJsonResultDataException
* @throws DataSetException
*/
public Object resolveResultData(File file, String encoding)
throws DataSetException, UnsupportedJsonResultDataException
throws DataSetSourceParseException, UnsupportedJsonResultDataException, DataSetException
{
Reader reader = null;
@ -102,7 +107,7 @@ public class JsonDataSetSupport extends JsonSupport
reader = IOUtil.getReader(file, encoding);
return resolveResultData(reader);
}
catch(IOException e)
catch (IOException e)
{
throw new DataSetException(e);
}
@ -117,10 +122,12 @@ public class JsonDataSetSupport extends JsonSupport
*
* @param reader
* @return
* @throws DataSetException
* @throws DataSetSourceParseException
* @throws UnsupportedJsonResultDataException
* @throws DataSetException
*/
public Object resolveResultData(Reader reader) throws DataSetException, UnsupportedJsonResultDataException
public Object resolveResultData(Reader reader)
throws DataSetSourceParseException, UnsupportedJsonResultDataException, DataSetException
{
JsonNode jsonNode = null;
@ -130,7 +137,7 @@ public class JsonDataSetSupport extends JsonSupport
}
catch (Throwable t)
{
throw new DataSetException(t);
throw new DataSetSourceParseException(t);
}
if (!isLegalResultDataJsonNode(jsonNode))

View File

@ -0,0 +1,80 @@
/*
* Copyright (c) 2018 datagear.tech. All Rights Reserved.
*/
/**
*
*/
package org.datagear.analysis.support;
import java.io.File;
import java.util.List;
import java.util.Map;
import org.datagear.analysis.DataSet;
import org.datagear.analysis.DataSetException;
import org.datagear.analysis.DataSetProperty;
import org.datagear.util.FileUtil;
/**
* 目录内JSON文件{@linkplain DataSet}
*
* @author datagear@163.com
*
*/
public class JsonDirectoryFileDataSet extends AbstractJsonFileDataSet
{
/** JSON文件所在的目录 */
private File directory;
/** JSON文件名 */
private String fileName;
public JsonDirectoryFileDataSet()
{
super();
}
public JsonDirectoryFileDataSet(String id, String name, File directory, String fileName)
{
super(id, name);
this.directory = directory;
this.fileName = fileName;
}
public JsonDirectoryFileDataSet(String id, String name, List<DataSetProperty> properties, File directory,
String fileName)
{
super(id, name, properties);
this.directory = directory;
this.fileName = fileName;
}
public File getDirectory()
{
return directory;
}
public void setDirectory(File directory)
{
this.directory = directory;
}
public String getFileName()
{
return fileName;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
@Override
protected File getJsonFile(Map<String, ?> paramValues) throws DataSetException
{
String fileName = resolveTemplate(this.fileName, paramValues);
File jsonFile = FileUtil.getFile(directory, fileName);
return jsonFile;
}
}

View File

@ -10,31 +10,20 @@ package org.datagear.management.domain;
import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.datagear.analysis.DataSetException;
import org.datagear.analysis.DataSetProperty;
import org.datagear.analysis.support.AbstractJsonFileDataSet;
import org.datagear.util.FileUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import org.datagear.analysis.support.JsonDirectoryFileDataSet;
/**
* {@linkplain AbstractJsonFileDataSet}实体
* {@linkplain JsonDirectoryFileDataSet}实体
*
* @author datagear@163.com
*
*/
public class JsonFileDataSetEntity extends AbstractJsonFileDataSet implements DataSetEntity
public class JsonFileDataSetEntity extends JsonDirectoryFileDataSet implements DataSetEntity
{
private static final long serialVersionUID = 1L;
/** JSON文件所在的目录 */
private File directory;
/** JSON文件名 */
private String fileName;
/** 展示名 */
private String displayName;
@ -56,36 +45,12 @@ public class JsonFileDataSetEntity extends AbstractJsonFileDataSet implements Da
public JsonFileDataSetEntity(String id, String name, List<DataSetProperty> properties, File directory,
String fileName, String displayName, User createUser)
{
super(id, name, properties);
this.directory = directory;
this.fileName = fileName;
super(id, name, properties, directory, fileName);
this.displayName = displayName;
this.createTime = new Date();
this.createUser = createUser;
}
@JsonIgnore
public File getDirectory()
{
return directory;
}
@JsonIgnore
public void setDirectory(File directory)
{
this.directory = directory;
}
public String getFileName()
{
return fileName;
}
public void setFileName(String fileName)
{
this.fileName = fileName;
}
public String getDisplayName()
{
return displayName;
@ -144,12 +109,4 @@ public class JsonFileDataSetEntity extends AbstractJsonFileDataSet implements Da
{
this.dataPermission = dataPermission;
}
@Override
protected File getJsonFile(Map<String, ?> paramValues) throws DataSetException
{
String fileName = resolveTemplate(this.fileName, paramValues);
File jsonFile = FileUtil.getFile(directory, fileName);
return jsonFile;
}
}

View File

@ -11,7 +11,6 @@ import java.io.File;
import org.datagear.analysis.DataSet;
import org.datagear.management.domain.DataSetEntity;
import org.datagear.management.domain.JsonFileDataSetEntity;
/**
* {@linkplain DataSetEntity}业务服务接口
@ -30,16 +29,10 @@ public interface DataSetEntityService extends DataPermissionEntityService<String
DataSet getDataSet(String id);
/**
* 获取{@linkplain JsonFileDataSetEntity#getDirectory()}
* 获取指定ID的文件存储目录
*
* @param dataSetId
* @return
*/
File getDataSetJsonFileDirectory();
/**
* 设置{@linkplain JsonFileDataSetEntity}使其具备执行分析的条件
*
* @param entity
*/
void inflateJsonFileDataSetEntity(JsonFileDataSetEntity entity);
File getDataSetDirectory(String dataSetId);
}

View File

@ -48,10 +48,8 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
private AuthorizationService authorizationService;
/** 数据集资源文件存储根目录 */
private File dataSetResourceRootDirectory;
private File _dataSetJsonFileDirectory;
/** 数据集文件存储根目录 */
private File dataSetRootDirectory;
public DataSetEntityServiceImpl()
{
@ -59,23 +57,23 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
}
public DataSetEntityServiceImpl(SqlSessionFactory sqlSessionFactory, ConnectionSource connectionSource,
SchemaService schemaService, AuthorizationService authorizationService, File dataSetResourceRootDirectory)
SchemaService schemaService, AuthorizationService authorizationService, File dataSetRootDirectory)
{
super(sqlSessionFactory);
this.connectionSource = connectionSource;
this.schemaService = schemaService;
this.authorizationService = authorizationService;
setDataSetResourceRootDirectory(dataSetResourceRootDirectory);
setDataSetRootDirectory(dataSetRootDirectory);
}
public DataSetEntityServiceImpl(SqlSessionTemplate sqlSessionTemplate, ConnectionSource connectionSource,
SchemaService schemaService, AuthorizationService authorizationService, File dataSetResourceRootDirectory)
SchemaService schemaService, AuthorizationService authorizationService, File dataSetRootDirectory)
{
super(sqlSessionTemplate);
this.connectionSource = connectionSource;
this.schemaService = schemaService;
this.authorizationService = authorizationService;
setDataSetResourceRootDirectory(dataSetResourceRootDirectory);
setDataSetRootDirectory(dataSetRootDirectory);
}
public ConnectionSource getConnectionSource()
@ -108,22 +106,20 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
this.authorizationService = authorizationService;
}
public File getDataSetResourceRootDirectory()
public File getDataSetRootDirectory()
{
return dataSetResourceRootDirectory;
return dataSetRootDirectory;
}
public void setDataSetResourceRootDirectory(File dataSetResourceRootDirectory)
public void setDataSetRootDirectory(File dataSetRootDirectory)
{
this.dataSetResourceRootDirectory = dataSetResourceRootDirectory;
this._dataSetJsonFileDirectory = FileUtil.getDirectory(this.dataSetResourceRootDirectory,
DataSetEntity.DATA_SET_TYPE_JsonFile, true);
this.dataSetRootDirectory = dataSetRootDirectory;
}
@Override
public File getDataSetJsonFileDirectory()
public File getDataSetDirectory(String dataSetId)
{
return _dataSetJsonFileDirectory;
return FileUtil.getDirectory(getDataSetRootDirectory(), dataSetId);
}
@Override
@ -144,12 +140,6 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
return entity;
}
@Override
public void inflateJsonFileDataSetEntity(JsonFileDataSetEntity entity)
{
entity.setDirectory(getDataSetJsonFileDirectory());
}
@Override
protected boolean add(DataSetEntity entity, Map<String, Object> params)
{
@ -291,14 +281,17 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
else if (DataSetEntity.DATA_SET_TYPE_JsonFile.equals(obj.getDataSetType()))
obj = getJsonFileDataSetEntityById(obj.getId());
Map<String, Object> sqlParams = buildParamMapWithIdentifierQuoteParameter();
sqlParams.put("dataSetId", obj.getId());
if (obj == null)
return null;
List<DataSetPropertyPO> propertyPOs = selectListMybatis("getPropertyPOs", sqlParams);
Map<String, Object> params = buildParamMapWithIdentifierQuoteParameter();
params.put("dataSetId", obj.getId());
List<DataSetPropertyPO> propertyPOs = selectListMybatis("getPropertyPOs", params);
List<DataSetProperty> dataSetProperties = DataSetPropertyPO.to(propertyPOs);
obj.setProperties(dataSetProperties);
List<DataSetParamPO> paramPOs = selectListMybatis("getParamPOs", sqlParams);
List<DataSetParamPO> paramPOs = selectListMybatis("getParamPOs", params);
List<DataSetParam> dataSetParams = DataSetParamPO.to(paramPOs);
obj.setParams(dataSetParams);
@ -333,7 +326,7 @@ public class DataSetEntityServiceImpl extends AbstractMybatisDataPermissionEntit
JsonFileDataSetEntity entity = selectOneMybatis("getJsonFileDataSetEntityById", params);
if (entity != null)
entity.setDirectory(getDataSetJsonFileDirectory());
entity.setDirectory(getDataSetDirectory(id));
return entity;
}

View File

@ -228,9 +228,9 @@ public class CoreConfiguration implements InitializingBean
}
@Bean
public File dataSetResourceRootDirectory() throws IOException
public File dataSetRootDirectory() throws IOException
{
return createDirectory(environment.getProperty("directory.dataSetResource"), true);
return createDirectory(environment.getProperty("directory.dataSet"), true);
}
protected File createDirectory(String directoryName, boolean createIfInexistence) throws IOException
@ -391,7 +391,7 @@ public class CoreConfiguration implements InitializingBean
{
DataSetEntityServiceImpl bean = new DataSetEntityServiceImpl(this.sqlSessionFactory().getObject(),
this.connectionSource(), this.schemaService(), this.authorizationService(),
this.dataSetResourceRootDirectory());
this.dataSetRootDirectory());
return bean;
}

View File

@ -9,6 +9,7 @@ import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.datagear.analysis.support.DataSetSourceParseException;
import org.datagear.analysis.support.SqlDataSetUnsupportedSqlTypeException;
import org.datagear.analysis.support.TemplateResolverException;
import org.datagear.analysis.support.UnsupportedJsonResultDataException;
@ -422,6 +423,17 @@ public class ControllerAdvice extends AbstractController
return getErrorView(request, response);
}
@ExceptionHandler(DataSetSourceParseException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleAnalysisDataSetSourceParseException(HttpServletRequest request, HttpServletResponse response,
DataSetSourceParseException exception)
{
setOperationMessageForThrowable(request, buildMessageCode(DataSetSourceParseException.class), exception, false,
exception.getMessage());
return getErrorView(request, response);
}
@ExceptionHandler(SaveSchemaUrlPermissionDeniedException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleServicePermissionDeniedException(HttpServletRequest request, HttpServletResponse response,

View File

@ -5,6 +5,7 @@
package org.datagear.web.controller;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
@ -19,10 +20,12 @@ import javax.servlet.http.HttpServletResponse;
import org.datagear.analysis.DataSetParam;
import org.datagear.analysis.DataSetProperty;
import org.datagear.analysis.ResolvedDataSetResult;
import org.datagear.analysis.support.AbstractFmkTemplateDataSet;
import org.datagear.analysis.support.AbstractJsonDataSet;
import org.datagear.analysis.support.DataSetFmkTemplateResolver;
import org.datagear.analysis.support.DataSetParamValueConverter;
import org.datagear.analysis.support.JsonDirectoryFileDataSet;
import org.datagear.analysis.support.SqlDataSetSupport;
import org.datagear.analysis.support.TemplateContext;
import org.datagear.management.domain.DataSetEntity;
@ -212,7 +215,7 @@ public class DataSetController extends AbstractSchemaConnController
@RequestMapping(value = "/saveAddForJsonFile", produces = CONTENT_TYPE_JSON)
@ResponseBody
public ResponseEntity<OperationMessage> saveAddForJsonFile(HttpServletRequest request, HttpServletResponse response,
@RequestBody JsonFileDataSetEntity dataSet)
@RequestBody JsonFileDataSetEntity dataSet) throws Throwable
{
User user = WebUtils.getUser(request, response);
@ -222,6 +225,7 @@ public class DataSetController extends AbstractSchemaConnController
checkSaveJsonFileDataSetEntity(dataSet);
this.dataSetEntityService.add(user, dataSet);
copyToJsonFileDataSetEntityDirectoryIf(dataSet, "");
return buildOperationMessageSaveSuccessResponseEntity(request, dataSet);
}
@ -243,6 +247,9 @@ public class DataSetController extends AbstractSchemaConnController
model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSet.editDataSet");
model.addAttribute(KEY_FORM_ACTION, "saveEditFor" + dataSet.getDataSetType());
if (DataSetEntity.DATA_SET_TYPE_JsonFile.equals(dataSet.getDataSetType()))
model.addAttribute("availableCharsetNames", getAvailableCharsetNames());
return buildFormView(dataSet.getDataSetType());
}
@ -277,13 +284,15 @@ public class DataSetController extends AbstractSchemaConnController
@RequestMapping(value = "/saveEditFor" + DataSetEntity.DATA_SET_TYPE_JsonFile, produces = CONTENT_TYPE_JSON)
@ResponseBody
public ResponseEntity<OperationMessage> saveEditForJsonFile(HttpServletRequest request,
HttpServletResponse response, @RequestBody JsonFileDataSetEntity dataSet)
HttpServletResponse response, @RequestBody JsonFileDataSetEntity dataSet,
@RequestParam("originalFileName") String originalFileName) throws Throwable
{
User user = WebUtils.getUser(request, response);
checkSaveJsonFileDataSetEntity(dataSet);
this.dataSetEntityService.update(user, dataSet);
copyToJsonFileDataSetEntityDirectoryIf(dataSet, originalFileName);
return buildOperationMessageSaveSuccessResponseEntity(request, dataSet);
}
@ -333,6 +342,9 @@ public class DataSetController extends AbstractSchemaConnController
model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSet.viewDataSet");
model.addAttribute(KEY_READONLY, true);
if (DataSetEntity.DATA_SET_TYPE_JsonFile.equals(dataSet.getDataSetType()))
model.addAttribute("availableCharsetNames", getAvailableCharsetNames());
return buildFormView(dataSet.getDataSetType());
}
@ -387,6 +399,9 @@ public class DataSetController extends AbstractSchemaConnController
{
String id = ids[i];
this.dataSetEntityService.deleteById(user, id);
File dataSetDirectory = getDataSetEntityService().getDataSetDirectory(id);
FileUtil.deleteFile(dataSetDirectory);
}
return buildOperationMessageDeleteSuccessResponseEntity(request);
@ -468,16 +483,47 @@ public class DataSetController extends AbstractSchemaConnController
org.springframework.ui.Model springModel, @RequestBody JsonFileDataSetEntityPreview preview)
throws Throwable
{
JsonFileDataSetEntity dataSet = preview.getDataSet();
JsonDirectoryFileDataSet dataSet = preview.getDataSet();
setJsonDirectoryFileDataSetDirectory(dataSet, preview.getOriginalFileName());
getDataSetEntityService().inflateJsonFileDataSetEntity(dataSet);
Object data = dataSet.getResult(preview.getParamValues());
List<DataSetProperty> dataSetProperties = AbstractJsonDataSet.JSON_DATA_SET_SUPPORT
.resolveDataSetProperties(data);
ResolvedDataSetResult result = dataSet.resolve(preview.getParamValues());
DataSetPreviewResult result = new DataSetPreviewResult(dataSet.getFileName(), data, dataSetProperties);
DataSetPreviewResult previewResult = new DataSetPreviewResult("", result.getResult().getData(),
result.getProperties());
return result;
return previewResult;
}
protected boolean copyToJsonFileDataSetEntityDirectoryIf(JsonFileDataSetEntity entity, String originalFileName)
throws IOException
{
String fileName = entity.getFileName();
if (isEmpty(entity.getId()))
return false;
if (!isEmpty(originalFileName) && originalFileName.equals(fileName))
return false;
File dataSetDirectory = getDataSetEntityService().getDataSetDirectory(entity.getId());
FileUtil.clearDirectory(dataSetDirectory);
File tmpFile = FileUtil.getFile(getTempDataSetDirectory(), fileName);
File entityFile = FileUtil.getFile(dataSetDirectory, fileName);
IOUtil.copy(tmpFile, entityFile, false);
return true;
}
protected void setJsonDirectoryFileDataSetDirectory(JsonDirectoryFileDataSet dataSet, String originalFileName)
{
String fileName = dataSet.getFileName();
if (!isEmpty(dataSet.getId()) && !isEmpty(originalFileName) && originalFileName.equals(fileName))
dataSet.setDirectory(getDataSetEntityService().getDataSetDirectory(dataSet.getId()));
else
dataSet.setDirectory(getTempDataSetDirectory());
}
protected String buildFormView(String dataSetType)
@ -875,7 +921,9 @@ public class DataSetController extends AbstractSchemaConnController
public static class JsonFileDataSetEntityPreview
{
private JsonFileDataSetEntity dataSet;
private JsonDirectoryFileDataSet dataSet;
private String originalFileName;
@SuppressWarnings("unchecked")
private Map<String, Object> paramValues = Collections.EMPTY_MAP;
@ -885,23 +933,26 @@ public class DataSetController extends AbstractSchemaConnController
super();
}
public JsonFileDataSetEntityPreview(JsonFileDataSetEntity dataSet, Map<String, Object> paramValues)
{
super();
this.dataSet = dataSet;
this.paramValues = paramValues;
}
public JsonFileDataSetEntity getDataSet()
public JsonDirectoryFileDataSet getDataSet()
{
return dataSet;
}
public void setDataSet(JsonFileDataSetEntity dataSet)
public void setDataSet(JsonDirectoryFileDataSet dataSet)
{
this.dataSet = dataSet;
}
public String getOriginalFileName()
{
return originalFileName;
}
public void setOriginalFileName(String originalFileName)
{
this.originalFileName = originalFileName;
}
public Map<String, Object> getParamValues()
{
return paramValues;

View File

@ -58,10 +58,10 @@
</bean>
<bean id="resetPasswordCheckFileDirectory" factory-bean="resetPasswordCheckFileDirectoryFactory" factory-method="getDirectory" />
<bean id="dataSetResourceRootDirectoryFactory" class="org.datagear.web.util.DirectoryFactory" init-method="init">
<property name="directoryName" value="${directory.dataSetResource}" />
<bean id="dataSetRootDirectoryFactory" class="org.datagear.web.util.DirectoryFactory" init-method="init">
<property name="directoryName" value="${directory.dataSet}" />
</bean>
<bean id="dataSetResourceRootDirectory" factory-bean="dataSetResourceRootDirectoryFactory" factory-method="getDirectory" />
<bean id="dataSetRootDirectory" factory-bean="dataSetRootDirectoryFactory" factory-method="getDirectory" />
<bean id="dbVersionManager" class="org.datagear.management.dbversion.DbVersionManager" init-method="upgrade">
<property name="dataSource" ref="dataSource" />
@ -230,7 +230,7 @@
<property name="connectionSource" ref="connectionSource" />
<property name="schemaService" ref="schemaService" />
<property name="authorizationService" ref="authorizationService" />
<property name="dataSetResourceRootDirectory" ref="dataSetResourceRootDirectory" />
<property name="dataSetRootDirectory" ref="dataSetRootDirectory" />
</bean>
<bean id="directoryHtmlChartPluginManager" class="org.datagear.analysis.support.html.DirectoryHtmlChartPluginManager">

View File

@ -20,8 +20,8 @@ directory.chartPlugin=${directory.root}/chartPlugin
#看板主目录
directory.dashboard=${directory.root}/dashboard
#数据集资源文件主目录
directory.dataSetResource=${directory.root}/dataset/resource
#数据集文件主目录
directory.dataSet=${directory.root}/dataSet
#数据编辑界面自定义URL构建器脚本文件
schemaUrlBuilderScriptFile=${directory.root}/db_url_builder.js

View File

@ -109,6 +109,7 @@ error.httpError.400=\u8BF7\u6C42\u65E0\u6548
error.httpError.403=\u7981\u6B62\u8BBF\u95EE
error.httpError.404=\u7F51\u9875\u672A\u627E\u5230
error.httpError.500=\u670D\u52A1\u51FA\u9519
error.Throwable=\u670D\u52A1\u51FA\u9519
error.MethodArgumentNotValidException=\u8F93\u5165\u975E\u6CD5
error.MissingServletRequestParameterException=\u8F93\u5165\u975E\u6CD5
error.BindException=\u8F93\u5165\u6709\u8BEF\uFF0C\u8BF7\u68C0\u67E5
@ -144,7 +145,7 @@ error.SqlDataSetUnsupportedSqlTypeException=SQL\u6570\u636E\u96C6\u67E5\u8BE2\u7
error.TemplateResolverException=\u53C2\u6570\u5316\u8BED\u53E5\u683C\u5F0F\u6709\u8BEF\uFF1A{0}
error.UnsupportedResultDataException=\u4E0D\u652F\u6301\u7684\u6570\u636E\u96C6\u7ED3\u679C\u6570\u636E\u7C7B\u578B\uFF1A{0}
error.UnsupportedJsonResultDataException=\u4E0D\u652F\u6301\u7684JSON\u6570\u636E\u7C7B\u578B\uFF0C\u9700\u4E3AJSON\u5BF9\u8C61\u3001JSON\u5BF9\u8C61\u6570\u7EC4
error.Throwable=\u670D\u52A1\u51FA\u9519
error.DataSetSourceParseException=\u6587\u4EF6\u89E3\u6790\u9519\u8BEF\uFF1A{0}
#data
data.queryWithShortcut=\u67E5\u8BE2\uFF08CTRL+ENTER\uFF09

View File

@ -38,7 +38,7 @@ readonly 是否只读操作允许为null
<label><@spring.message code='dataSet.jsonFile' /></label>
</div>
<div class="form-item-value">
<input type="hidden" name="originalFileName" value="${(dataSet.fileName)!''?html}" />
<input type="hidden" id="${pageId}-originalFileName" value="${(dataSet.fileName)!''?html}" />
<input type="hidden" name="fileName" value="${(dataSet.fileName)!''?html}" />
<div class="workspace-editor-wrapper">
<input type="text" name="displayName" value="${(dataSet.displayName)!''?html}" class="file-display-name ui-widget ui-widget-content" readonly="readonly" />
@ -111,22 +111,31 @@ readonly 是否只读操作允许为null
if(!fileName)
return false;
this.data.fileName = fileName;
this.data.dataSet = {};
this.data.dataSet.id = po.element("input[name='id']").val();
this.data.dataSet.name = po.element("input[name='name']").val();
this.data.dataSet.encoding = po.element("select[name='encoding']").val();
this.data.dataSet.fileName = fileName;
this.data.originalFileName = po.element("#${pageId}-originalFileName").val();
};
po.previewOptions.beforeMore = function()
{
if(!this.data.fileName)
if(!this.data.dataSet || !this.data.dataSet.fileName)
return false;
};
po.previewOptions.beforeRefresh = function()
{
if(!this.data.fileName)
if(!this.data.dataSet || !this.data.dataSet.fileName)
return false;
};
po.previewOptions.beforeRequest = function()
{
this.data.dataSet.params = this.data.dataSetParams;
this.data.dataSetParams = undefined;
};
po.previewOptions.success = function(previewResponse)
{
po.element("input[name='fileName']").val(this.data.fileName);
po.jsonEditor.focus();
po.element("input[name='fileName']").val(this.data.dataSet.fileName);
};
po.initPreviewOperations();
@ -184,7 +193,9 @@ readonly 是否只读操作允许为null
formData["properties"] = po.getFormDataSetProperties();
formData["params"] = po.getFormDataSetParams();
$.postJson("${contextPath}/analysis/dataSet/${formAction}", formData,
var originalFileName = po.element("#${pageId}-originalFileName").val();
$.postJson("${contextPath}/analysis/dataSet/${formAction}?originalFileName="+originalFileName, formData,
function(response)
{
po.pageParamCallAfterSave(true, response.data);