forked from p85126437/datagear
完善JSON文件数据集功能
This commit is contained in:
parent
92ebe89e9e
commit
ba5f3cf7ae
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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))
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue