From 0c14c644ae2181582fc0ab8be66847ef7f50a318 Mon Sep 17 00:00:00 2001 From: wodezy66 Date: Sat, 26 Sep 2020 17:52:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=9B=AE=E5=BD=95=E7=AE=A1=E7=90=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/DataSetResDirectory.java | 113 +++++++++ .../service/DataSetResDirectoryService.java | 19 ++ .../impl/DataSetResDirectoryServiceImpl.java | 91 ++++++++ .../org/datagear/management/ddl/datagear.sql | 12 + .../mapper/DataSetResDirectoryMapper.xml | 151 ++++++++++++ .../web/config/CoreConfiguration.java | 9 + .../web/controller/AbstractController.java | 41 ++++ .../web/controller/ControllerAdvice.java | 44 ---- .../DataSetResDirectoryController.java | 218 ++++++++++++++++++ .../DataSetResDirectoryNotFoundException.java | 55 +++++ .../web/datagear-applicationContext.xml | 4 + .../org/datagear/web/datagear-security.xml | 6 + .../datagear/web/locales/datagear.properties | 16 +- .../dataSetResDirectory_form.ftl | 92 ++++++++ .../dataSetResDirectory_grid.ftl | 158 +++++++++++++ .../web/webapp/view/freemarker/main.ftl | 8 + 16 files changed, 992 insertions(+), 45 deletions(-) create mode 100644 datagear-management/src/main/java/org/datagear/management/domain/DataSetResDirectory.java create mode 100644 datagear-management/src/main/java/org/datagear/management/service/DataSetResDirectoryService.java create mode 100644 datagear-management/src/main/java/org/datagear/management/service/impl/DataSetResDirectoryServiceImpl.java create mode 100644 datagear-management/src/main/resources/org/datagear/management/mapper/DataSetResDirectoryMapper.xml create mode 100644 datagear-web/src/main/java/org/datagear/web/controller/DataSetResDirectoryController.java create mode 100644 datagear-web/src/main/java/org/datagear/web/controller/DataSetResDirectoryNotFoundException.java create mode 100644 datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/dataSetResDirectory/dataSetResDirectory_form.ftl create mode 100644 datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/dataSetResDirectory/dataSetResDirectory_grid.ftl diff --git a/datagear-management/src/main/java/org/datagear/management/domain/DataSetResDirectory.java b/datagear-management/src/main/java/org/datagear/management/domain/DataSetResDirectory.java new file mode 100644 index 00000000..dee0cd9b --- /dev/null +++ b/datagear-management/src/main/java/org/datagear/management/domain/DataSetResDirectory.java @@ -0,0 +1,113 @@ +/* + * Copyright 2018 datagear.tech. All Rights Reserved. + */ + +package org.datagear.management.domain; + +import java.util.Date; + +/** + * 数据集资源目录实体。 + *

+ * 文件类数据集允许选择服务器端文件,需要限定用户可访问的服务端目录,此类即用于定义访问目录。 + *

+ * + * @author datagear@163.com + * + */ +public class DataSetResDirectory extends AbstractStringIdEntity + implements CreateUserEntity, DataPermissionEntity +{ + private static final long serialVersionUID = 1L; + + /** 授权资源类型 */ + public static final String AUTHORIZATION_RESOURCE_TYPE = "DataSetDirectory"; + + /** 目录 */ + private String directory; + + /** 描述 */ + private String desc = ""; + + /** 此模式的创建用户 */ + private User createUser; + + /** 此模式的创建时间 */ + private Date createTime = new Date(); + + /** 权限 */ + private int dataPermission = PERMISSION_NOT_LOADED; + + public DataSetResDirectory() + { + super(); + } + + public DataSetResDirectory(String id, String directory, User createuUser) + { + super(id); + this.directory = directory; + this.createUser = createuUser; + } + + public String getDirectory() + { + return directory; + } + + public void setDirectory(String directory) + { + this.directory = directory; + } + + public String getDesc() + { + return desc; + } + + public void setDesc(String desc) + { + this.desc = desc; + } + + @Override + public User getCreateUser() + { + return createUser; + } + + @Override + public void setCreateUser(User createUser) + { + this.createUser = createUser; + } + + public Date getCreateTime() + { + return createTime; + } + + public void setCreateTime(Date createTime) + { + this.createTime = createTime; + } + + @Override + public int getDataPermission() + { + return dataPermission; + } + + @Override + public void setDataPermission(int dataPermission) + { + this.dataPermission = dataPermission; + } + + @Override + public String toString() + { + return getClass().getSimpleName() + " [directory=" + directory + ", desc=" + desc + ", createUser=" + createUser + + ", createTime=" + createTime + ", dataPermission=" + dataPermission + "]"; + } +} diff --git a/datagear-management/src/main/java/org/datagear/management/service/DataSetResDirectoryService.java b/datagear-management/src/main/java/org/datagear/management/service/DataSetResDirectoryService.java new file mode 100644 index 00000000..c2f4d6ca --- /dev/null +++ b/datagear-management/src/main/java/org/datagear/management/service/DataSetResDirectoryService.java @@ -0,0 +1,19 @@ +/* + * Copyright 2018 datagear.tech. All Rights Reserved. + */ + +package org.datagear.management.service; + +import org.datagear.management.domain.DataSetResDirectory; + +/** + * {@linkplain DataSetResDirectory}业务服务接口。 + * + * @author datagear@163.com + * + */ +public interface DataSetResDirectoryService + extends DataPermissionEntityService, CreateUserEntityService +{ + +} diff --git a/datagear-management/src/main/java/org/datagear/management/service/impl/DataSetResDirectoryServiceImpl.java b/datagear-management/src/main/java/org/datagear/management/service/impl/DataSetResDirectoryServiceImpl.java new file mode 100644 index 00000000..753ffa01 --- /dev/null +++ b/datagear-management/src/main/java/org/datagear/management/service/impl/DataSetResDirectoryServiceImpl.java @@ -0,0 +1,91 @@ +/* + * Copyright 2018 datagear.tech. All Rights Reserved. + */ + +package org.datagear.management.service.impl; + +import java.util.Map; + +import org.apache.ibatis.session.SqlSessionFactory; +import org.datagear.management.domain.DataSetResDirectory; +import org.datagear.management.domain.User; +import org.datagear.management.service.DataSetResDirectoryService; +import org.datagear.management.service.PermissionDeniedException; +import org.mybatis.spring.SqlSessionTemplate; + +/** + * {@linkplain DataSetResDirectoryService}实现类。 + * + * @author datagear@163.com + * + */ +public class DataSetResDirectoryServiceImpl + extends AbstractMybatisDataPermissionEntityService + implements DataSetResDirectoryService +{ + protected static final String SQL_NAMESPACE = DataSetResDirectory.class.getName(); + + public DataSetResDirectoryServiceImpl() + { + super(); + } + + public DataSetResDirectoryServiceImpl(SqlSessionFactory sqlSessionFactory) + { + super(sqlSessionFactory); + } + + public DataSetResDirectoryServiceImpl(SqlSessionTemplate sqlSessionTemplate) + { + super(sqlSessionTemplate); + } + + @Override + public String getResourceType() + { + return DataSetResDirectory.AUTHORIZATION_RESOURCE_TYPE; + } + + @Override + public DataSetResDirectory getByStringId(User user, String id) throws PermissionDeniedException + { + return getById(user, id); + } + + @Override + public int updateCreateUserId(String oldUserId, String newUserId) + { + Map params = buildParamMap(); + addIdentifierQuoteParameter(params); + params.put("oldUserId", oldUserId); + params.put("newUserId", newUserId); + + return updateMybatis("updateCreateUserId", params); + } + + @Override + protected void checkAddInput(DataSetResDirectory entity) + { + if (isBlank(entity.getId()) || isBlank(entity.getDirectory()) || isEmpty(entity.getCreateUser())) + throw new IllegalArgumentException(); + } + + @Override + protected void checkUpdateInput(DataSetResDirectory entity) + { + if (isBlank(entity.getId()) || isBlank(entity.getDirectory())) + throw new IllegalArgumentException(); + } + + @Override + protected void addDataPermissionParameters(Map params, User user) + { + addDataPermissionParameters(params, user, getResourceType(), false, true); + } + + @Override + protected String getSqlNamespace() + { + return SQL_NAMESPACE; + } +} diff --git a/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql b/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql index a7d0c662..3baaf073 100644 --- a/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql +++ b/datagear-management/src/main/resources/org/datagear/management/ddl/datagear.sql @@ -617,3 +617,15 @@ CREATE INDEX DATAGEAR_DATA_SET_CREATE_USER_ID ON DATAGEAR_DATA_SET(DS_CREATE_USE CREATE INDEX DATAGEAR_HTML_CHART_WIDGET_CREATE_USER_ID ON DATAGEAR_HTML_CHART_WIDGET(HCW_CREATE_USER_ID); CREATE INDEX DATAGEAR_HTML_DASHBOARD_CREATE_USER_ID ON DATAGEAR_HTML_DASHBOARD(HD_CREATE_USER_ID); + +--2020-09-26 +--数据集资源目录 +CREATE TABLE DATAGEAR_DSR_DIRECTORY +( + DD_ID VARCHAR(50) NOT NULL, + DD_DIRECTORY VARCHAR(250) NOT NULL, + DD_DESC VARCHAR(500), + DD_CREATE_USER_ID VARCHAR(50), + DD_CREATE_TIME TIMESTAMP, + PRIMARY KEY (DD_ID) +); diff --git a/datagear-management/src/main/resources/org/datagear/management/mapper/DataSetResDirectoryMapper.xml b/datagear-management/src/main/resources/org/datagear/management/mapper/DataSetResDirectoryMapper.xml new file mode 100644 index 00000000..63d7d981 --- /dev/null +++ b/datagear-management/src/main/resources/org/datagear/management/mapper/DataSetResDirectoryMapper.xml @@ -0,0 +1,151 @@ + + + + + + + INSERT INTO DATAGEAR_DSR_DIRECTORY + ( + DD_ID, DD_DIRECTORY, DD_DESC, DD_CREATE_USER_ID, DD_CREATE_TIME + ) + VALUES + ( + #{entity.id}, #{entity.directory}, #{entity.desc}, #{entity.createUser.id}, #{entity.createTime} + ) + + + + UPDATE DATAGEAR_DSR_DIRECTORY SET + DD_DIRECTORY = #{entity.directory}, + DD_DESC = #{entity.desc} + WHERE + DD_ID = #{entity.id} + + + + UPDATE DATAGEAR_DSR_DIRECTORY SET + DD_CREATE_USER_ID = #{newUserId} + WHERE + DD_CREATE_USER_ID = #{oldUserId} + + + + DELETE FROM DATAGEAR_DSR_DIRECTORY + WHERE + DD_ID = #{id} + + + + + + + + + + + + + + + + + SELECT + T0.*, + T1.DATA_PERMISSION as ${_iq_}dataPermission${_iq_} + FROM + () T0 + INNER JOIN + ( + + + + ) T1 + ON + T0.${_iq_}id${_iq_} = T1.DATA_ID + WHERE + T1.DATA_PERMISSION >= ${DP_MIN_READ_PERMISSION} + + + + + SELECT + A.DD_ID AS DP_AUTH_DATA_ID, + A.DD_CREATE_USER_ID AS DP_AUTH_DATA_CREATOR_ID + FROM + DATAGEAR_DSR_DIRECTORY A + + + + SELECT + A.DD_ID AS ${_iq_}id${_iq_}, + A.DD_DIRECTORY AS ${_iq_}directory${_iq_}, + A.DD_DESC AS ${_iq_}desc${_iq_}, + A.DD_CREATE_TIME AS ${_iq_}createTime${_iq_}, + A.DD_CREATE_USER_ID AS ${_iq_}createUser.id${_iq_}, + + FROM + DATAGEAR_DSR_DIRECTORY A + LEFT JOIN + DATAGEAR_USER USR + ON + A.DD_CREATE_USER_ID = USR.USER_ID + + + + 1 = 1 + + AND + ( + ${_iq_}directory${_iq_} LIKE #{queryKeyword} + OR ${_iq_}desc${_iq_} LIKE #{queryKeyword} + ) + + + + + + \ No newline at end of file diff --git a/datagear-web/src/main/java/org/datagear/web/config/CoreConfiguration.java b/datagear-web/src/main/java/org/datagear/web/config/CoreConfiguration.java index b1292795..b74ce1d2 100644 --- a/datagear-web/src/main/java/org/datagear/web/config/CoreConfiguration.java +++ b/datagear-web/src/main/java/org/datagear/web/config/CoreConfiguration.java @@ -51,6 +51,7 @@ import org.datagear.management.service.AnalysisProjectService; import org.datagear.management.service.AuthorizationService; import org.datagear.management.service.DataPermissionEntityService; import org.datagear.management.service.DataSetEntityService; +import org.datagear.management.service.DataSetResDirectoryService; import org.datagear.management.service.HtmlChartWidgetEntityService; import org.datagear.management.service.HtmlTplDashboardWidgetEntityService; import org.datagear.management.service.RoleService; @@ -61,6 +62,7 @@ import org.datagear.management.service.UserService; import org.datagear.management.service.impl.AnalysisProjectServiceImpl; import org.datagear.management.service.impl.AuthorizationServiceImpl; import org.datagear.management.service.impl.DataSetEntityServiceImpl; +import org.datagear.management.service.impl.DataSetResDirectoryServiceImpl; import org.datagear.management.service.impl.HtmlChartWidgetEntityServiceImpl; import org.datagear.management.service.impl.HtmlTplDashboardWidgetEntityServiceImpl; import org.datagear.management.service.impl.RoleServiceImpl; @@ -562,6 +564,13 @@ public class CoreConfiguration implements InitializingBean return bean; } + @Bean + public DataSetResDirectoryService dataSetResDirectoryService() throws Exception + { + DataSetResDirectoryService bean = new DataSetResDirectoryServiceImpl(this.sqlSessionFactory().getObject()); + return bean; + } + @Bean public SqlHistoryService sqlHistoryService() throws Exception { diff --git a/datagear-web/src/main/java/org/datagear/web/controller/AbstractController.java b/datagear-web/src/main/java/org/datagear/web/controller/AbstractController.java index fc8f25e0..c3d70cdc 100644 --- a/datagear-web/src/main/java/org/datagear/web/controller/AbstractController.java +++ b/datagear-web/src/main/java/org/datagear/web/controller/AbstractController.java @@ -28,6 +28,7 @@ import org.datagear.util.StringUtil; import org.datagear.web.OperationMessage; import org.datagear.web.convert.StringToJsonConverter; import org.datagear.web.freemarker.WriteJsonTemplateDirectiveModel; +import org.datagear.web.util.DeliverContentTypeExceptionHandlerExceptionResolver; import org.datagear.web.util.WebContextPath; import org.datagear.web.util.WebUtils; import org.datagear.web.vo.APIDDataFilterPagingQuery; @@ -323,6 +324,46 @@ public abstract class AbstractController WebUtils.setOperationMessage(request, operationMessage); } + /** + * 获取错误信息视图。 + * + * @param request + * @param response + * @return + */ + protected String getErrorView(HttpServletRequest request, HttpServletResponse response) + { + setAttributeIfIsJsonResponse(request, response); + return ERROR_PAGE_URL; + } + + /** + * 设置JSON响应的错误页面属性。 + * + * @param request + * @param response + */ + protected void setAttributeIfIsJsonResponse(HttpServletRequest request, HttpServletResponse response) + { + String expectedContentType = DeliverContentTypeExceptionHandlerExceptionResolver.getHandlerContentType(request); + if (expectedContentType != null && !expectedContentType.isEmpty()) + response.setContentType(expectedContentType); + + boolean isJsonResponse = WebUtils.isJsonResponse(response); + + request.setAttribute("isJsonResponse", isJsonResponse); + + if (isJsonResponse) + { + OperationMessage operationMessage = getOperationMessageForHttpError(request, response); + + request.setAttribute(WebUtils.KEY_OPERATION_MESSAGE, + WriteJsonTemplateDirectiveModel.toWriteJsonTemplateModel(operationMessage)); + + response.setContentType(CONTENT_TYPE_JSON); + } + } + /** * 构建操作成功消息(无消息内容)对应的{@linkplain ResponseEntity}。 *

diff --git a/datagear-web/src/main/java/org/datagear/web/controller/ControllerAdvice.java b/datagear-web/src/main/java/org/datagear/web/controller/ControllerAdvice.java index 7ca1b892..49e99ab9 100644 --- a/datagear-web/src/main/java/org/datagear/web/controller/ControllerAdvice.java +++ b/datagear-web/src/main/java/org/datagear/web/controller/ControllerAdvice.java @@ -38,10 +38,6 @@ import org.datagear.persistence.support.NoColumnDefinedException; import org.datagear.persistence.support.SqlParamValueSqlExpressionException; import org.datagear.persistence.support.SqlParamValueVariableExpressionException; import org.datagear.persistence.support.UnsupportedDialectException; -import org.datagear.web.OperationMessage; -import org.datagear.web.freemarker.WriteJsonTemplateDirectiveModel; -import org.datagear.web.util.DeliverContentTypeExceptionHandlerExceptionResolver; -import org.datagear.web.util.WebUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.convert.ConversionException; @@ -543,46 +539,6 @@ public class ControllerAdvice extends AbstractController LOGGER.error("", t); } - /** - * 获取错误信息视图。 - * - * @param request - * @param response - * @return - */ - protected String getErrorView(HttpServletRequest request, HttpServletResponse response) - { - setAttributeIfIsJsonResponse(request, response); - return ERROR_PAGE_URL; - } - - /** - * 设置JSON响应的错误页面属性。 - * - * @param request - * @param response - */ - protected void setAttributeIfIsJsonResponse(HttpServletRequest request, HttpServletResponse response) - { - String expectedContentType = DeliverContentTypeExceptionHandlerExceptionResolver.getHandlerContentType(request); - if (expectedContentType != null && !expectedContentType.isEmpty()) - response.setContentType(expectedContentType); - - boolean isJsonResponse = WebUtils.isJsonResponse(response); - - request.setAttribute("isJsonResponse", isJsonResponse); - - if (isJsonResponse) - { - OperationMessage operationMessage = getOperationMessageForHttpError(request, response); - - request.setAttribute(WebUtils.KEY_OPERATION_MESSAGE, - WriteJsonTemplateDirectiveModel.toWriteJsonTemplateModel(operationMessage)); - - response.setContentType(CONTENT_TYPE_JSON); - } - } - protected String buildMessageCode(Class clazz) { return buildMessageCode(clazz.getSimpleName()); diff --git a/datagear-web/src/main/java/org/datagear/web/controller/DataSetResDirectoryController.java b/datagear-web/src/main/java/org/datagear/web/controller/DataSetResDirectoryController.java new file mode 100644 index 00000000..b237385b --- /dev/null +++ b/datagear-web/src/main/java/org/datagear/web/controller/DataSetResDirectoryController.java @@ -0,0 +1,218 @@ +/* + * Copyright 2018 datagear.tech. All Rights Reserved. + */ + +package org.datagear.web.controller; + +import java.io.File; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.datagear.management.domain.DataSetResDirectory; +import org.datagear.management.domain.User; +import org.datagear.management.service.DataSetResDirectoryService; +import org.datagear.persistence.PagingData; +import org.datagear.persistence.PagingQuery; +import org.datagear.util.FileUtil; +import org.datagear.util.IDUtil; +import org.datagear.web.OperationMessage; +import org.datagear.web.util.WebUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +/** + * 数据集资源目录控制器。 + * + * @author datagear@163.com + * + */ +@Controller +@RequestMapping("/dataSetResDirectory") +public class DataSetResDirectoryController extends AbstractController +{ + static + { + AuthorizationResourceMetas.registerForShare(DataSetResDirectory.AUTHORIZATION_RESOURCE_TYPE, + "dataSetResDirectory"); + } + + @Autowired + private DataSetResDirectoryService dataSetResDirectoryService; + + public DataSetResDirectoryController() + { + super(); + } + + public DataSetResDirectoryService getDataSetResDirectoryService() + { + return dataSetResDirectoryService; + } + + public void setDataSetResDirectoryService(DataSetResDirectoryService dataSetResDirectoryService) + { + this.dataSetResDirectoryService = dataSetResDirectoryService; + } + + @ExceptionHandler(DataSetResDirectoryNotFoundException.class) + @ResponseStatus(HttpStatus.BAD_REQUEST) + public String handleDataSetResDirectoryNotFoundException(HttpServletRequest request, + HttpServletResponse response, DataSetResDirectoryNotFoundException exception) + { + setOperationMessageForThrowable(request, "dataSetResDirectory.DataSetResDirectoryNotFoundException", exception, + false, exception.getDirectory()); + + return getErrorView(request, response); + } + + @RequestMapping("/add") + public String add(HttpServletRequest request, org.springframework.ui.Model model) + { + DataSetResDirectory dataSetResDirectory = new DataSetResDirectory(); + + model.addAttribute("dataSetResDirectory", dataSetResDirectory); + model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSetResDirectory.addDataSetResDirectory"); + model.addAttribute(KEY_FORM_ACTION, "saveAdd"); + + return "/dataSetResDirectory/dataSetResDirectory_form"; + } + + @RequestMapping(value = "/saveAdd", produces = CONTENT_TYPE_JSON) + @ResponseBody + public ResponseEntity saveAdd(HttpServletRequest request, HttpServletResponse response, + @RequestBody DataSetResDirectory dataSetResDirectory) + { + checkSaveEntity(dataSetResDirectory); + + User user = WebUtils.getUser(request, response); + + dataSetResDirectory.setId(IDUtil.randomIdOnTime20()); + dataSetResDirectory.setCreateUser(user); + + this.dataSetResDirectoryService.add(dataSetResDirectory); + + return buildOperationMessageSaveSuccessResponseEntity(request, dataSetResDirectory); + } + + @RequestMapping("/edit") + public String edit(HttpServletRequest request, HttpServletResponse response, org.springframework.ui.Model model, + @RequestParam("id") String id) + { + User user = WebUtils.getUser(request, response); + + DataSetResDirectory dataSetResDirectory = this.dataSetResDirectoryService.getByIdForEdit(user, id); + + if (dataSetResDirectory == null) + throw new RecordNotFoundException(); + + model.addAttribute("dataSetResDirectory", dataSetResDirectory); + model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSetResDirectory.editDataSetResDirectory"); + model.addAttribute(KEY_FORM_ACTION, "saveEdit"); + + return "/dataSetResDirectory/dataSetResDirectory_form"; + } + + @RequestMapping(value = "/saveEdit", produces = CONTENT_TYPE_JSON) + @ResponseBody + public ResponseEntity save(HttpServletRequest request, HttpServletResponse response, + @RequestBody DataSetResDirectory dataSetResDirectory) + { + checkSaveEntity(dataSetResDirectory); + + User user = WebUtils.getUser(request, response); + + this.dataSetResDirectoryService.update(user, dataSetResDirectory); + + return buildOperationMessageSaveSuccessResponseEntity(request, dataSetResDirectory); + } + + @RequestMapping("/view") + public String view(HttpServletRequest request, HttpServletResponse response, org.springframework.ui.Model model, + @RequestParam("id") String id) + { + User user = WebUtils.getUser(request, response); + + DataSetResDirectory dataSetResDirectory = this.dataSetResDirectoryService.getById(user, id); + + if (dataSetResDirectory == null) + throw new RecordNotFoundException(); + + model.addAttribute("dataSetResDirectory", dataSetResDirectory); + model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSetResDirectory.viewDataSetResDirectory"); + model.addAttribute(KEY_READONLY, true); + + return "/dataSetResDirectory/dataSetResDirectory_form"; + } + + @RequestMapping(value = "/delete", produces = CONTENT_TYPE_JSON) + @ResponseBody + public ResponseEntity delete(HttpServletRequest request, HttpServletResponse response, + @RequestBody String[] ids) + { + User user = WebUtils.getUser(request, response); + + for (int i = 0; i < ids.length; i++) + { + String id = ids[i]; + this.dataSetResDirectoryService.deleteById(user, id); + } + + return buildOperationMessageDeleteSuccessResponseEntity(request); + } + + @RequestMapping("/pagingQuery") + public String pagingQuery(HttpServletRequest request, HttpServletResponse response, + org.springframework.ui.Model model) + { + User user = WebUtils.getUser(request, response); + model.addAttribute("currentUser", user); + + model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSetResDirectory.manageDataSetResDirectory"); + + return "/dataSetResDirectory/dataSetResDirectory_grid"; + } + + @RequestMapping(value = "/select") + public String select(HttpServletRequest request, HttpServletResponse response, org.springframework.ui.Model model) + { + model.addAttribute(KEY_TITLE_MESSAGE_KEY, "dataSetResDirectory.selectDataSetResDirectory"); + model.addAttribute(KEY_SELECT_OPERATION, true); + setIsMultipleSelectAttribute(request, model); + + return "/dataSetResDirectory/dataSetResDirectory_grid"; + } + + @RequestMapping(value = "/pagingQueryData", produces = CONTENT_TYPE_JSON) + @ResponseBody + public PagingData pagingQueryData(HttpServletRequest request, HttpServletResponse response, + final org.springframework.ui.Model springModel, + @RequestBody(required = false) PagingQuery pagingQueryParam) throws Exception + { + User user = WebUtils.getUser(request, response); + final PagingQuery pagingQuery = inflatePagingQuery(request, pagingQueryParam); + + PagingData pagingData = this.dataSetResDirectoryService.pagingQuery(user, pagingQuery); + + return pagingData; + } + + protected void checkSaveEntity(DataSetResDirectory dataSetResDirectory) + { + if (isBlank(dataSetResDirectory.getDirectory())) + throw new IllegalInputException(); + + File directory = FileUtil.getDirectory(dataSetResDirectory.getDirectory(), false); + + if (!directory.exists()) + throw new DataSetResDirectoryNotFoundException(dataSetResDirectory.getDirectory()); + } +} diff --git a/datagear-web/src/main/java/org/datagear/web/controller/DataSetResDirectoryNotFoundException.java b/datagear-web/src/main/java/org/datagear/web/controller/DataSetResDirectoryNotFoundException.java new file mode 100644 index 00000000..b98e93f7 --- /dev/null +++ b/datagear-web/src/main/java/org/datagear/web/controller/DataSetResDirectoryNotFoundException.java @@ -0,0 +1,55 @@ +/* + * Copyright 2018 datagear.tech. All Rights Reserved. + */ + +package org.datagear.web.controller; + +import org.datagear.management.domain.DataSetResDirectory; + +/** + * {@linkplain DataSetResDirectory#getDirectory()}未找到异常。 + * + * @author datagear@163.com + * + */ +public class DataSetResDirectoryNotFoundException extends IllegalInputException +{ + private static final long serialVersionUID = 1L; + + private String directory; + + public DataSetResDirectoryNotFoundException(String directory) + { + super(); + this.directory = directory; + } + + public DataSetResDirectoryNotFoundException(String directory, String message) + { + super(message); + this.directory = directory; + } + + public DataSetResDirectoryNotFoundException(String directory, Throwable cause) + { + super(cause); + this.directory = directory; + } + + public DataSetResDirectoryNotFoundException(String directory, String message, Throwable cause) + { + super(message, cause); + this.directory = directory; + } + + public String getDirectory() + { + return directory; + } + + protected void setDirectory(String directory) + { + this.directory = directory; + } + +} diff --git a/datagear-web/src/main/resources/org/datagear/web/datagear-applicationContext.xml b/datagear-web/src/main/resources/org/datagear/web/datagear-applicationContext.xml index 1eaf8c09..a4de349d 100644 --- a/datagear-web/src/main/resources/org/datagear/web/datagear-applicationContext.xml +++ b/datagear-web/src/main/resources/org/datagear/web/datagear-applicationContext.xml @@ -274,6 +274,10 @@ + + + + diff --git a/datagear-web/src/main/resources/org/datagear/web/datagear-security.xml b/datagear-web/src/main/resources/org/datagear/web/datagear-security.xml index fe2add8a..cee61632 100644 --- a/datagear-web/src/main/resources/org/datagear/web/datagear-security.xml +++ b/datagear-web/src/main/resources/org/datagear/web/datagear-security.xml @@ -60,6 +60,12 @@ + + + + + + diff --git a/datagear-web/src/main/resources/org/datagear/web/locales/datagear.properties b/datagear-web/src/main/resources/org/datagear/web/locales/datagear.properties index 88d03b46..6b049ef9 100644 --- a/datagear-web/src/main/resources/org/datagear/web/locales/datagear.properties +++ b/datagear-web/src/main/resources/org/datagear/web/locales/datagear.properties @@ -235,6 +235,7 @@ main.manageRole=管理用户组 main.manageSchemaAuth=数据源授权 main.manageChartPlugin=管理图表插件 main.uploadChartPlugin=上传图表插件 +main.manageDataSetResDirectory=管理数据集资源目录 main.personalSet=个人设置 main.changeTheme=切换肤色 main.changeTheme.light=浅色 @@ -830,4 +831,17 @@ analysisProject.auth.resouceTypeLabel=数据分析项目 analysisProject.name=名称 analysisProject.desc=描述 analysisProject.createUser=创建用户 -analysisProject.createTime=创建时间 \ No newline at end of file +analysisProject.createTime=创建时间 + +#数据集资源目录 +dataSetResDirectory.manageDataSetResDirectory=管理数据集资源目录 +dataSetResDirectory.addDataSetResDirectory=添加数据集资源目录 +dataSetResDirectory.editDataSetResDirectory=编辑数据集资源目录 +dataSetResDirectory.viewDataSetResDirectory=查看数据集资源目录 +dataSetResDirectory.selectDataSetResDirectory=选择数据集资源目录 +dataSetResDirectory.auth.resouceTypeLabel=数据集资源目录 +dataSetResDirectory.directory=目录 +dataSetResDirectory.desc=描述 +dataSetResDirectory.createUser=创建用户 +dataSetResDirectory.createTime=创建时间 +dataSetResDirectory.DataSetResDirectoryNotFoundException=目录[{0}]不存在 \ No newline at end of file diff --git a/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/dataSetResDirectory/dataSetResDirectory_form.ftl b/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/dataSetResDirectory/dataSetResDirectory_form.ftl new file mode 100644 index 00000000..3679e95d --- /dev/null +++ b/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/dataSetResDirectory/dataSetResDirectory_form.ftl @@ -0,0 +1,92 @@ +<#include "../include/import_global.ftl"> +<#include "../include/html_doctype.ftl"> +<#-- +titleMessageKey 标题标签I18N关键字,不允许null +formAction 表单提交action,允许为null +readonly 是否只读操作,允许为null +--> +<#assign formAction=(formAction!'#')> +<#assign readonly=(readonly!false)> +<#assign isAdd=(formAction == 'saveAdd')> + + +<#include "../include/html_head.ftl"> +<#include "../include/html_title_app_name.ftl"><@spring.message code='${titleMessageKey}' /> + + +

+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ <#if !readonly> + + +
+
+
+<#include "../include/page_js_obj.ftl" > +<#include "../include/page_obj_form.ftl"> + + + \ No newline at end of file diff --git a/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/dataSetResDirectory/dataSetResDirectory_grid.ftl b/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/dataSetResDirectory/dataSetResDirectory_grid.ftl new file mode 100644 index 00000000..e2b3c703 --- /dev/null +++ b/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/dataSetResDirectory/dataSetResDirectory_grid.ftl @@ -0,0 +1,158 @@ +<#include "../include/import_global.ftl"> +<#include "../include/html_doctype.ftl"> +<#-- +titleMessageKey 标题标签I18N关键字,不允许null +selectOperation 是否选择操作,允许为null +--> +<#assign selectOperation=(selectOperation!false)> +<#assign DataSetResDirectory=statics['org.datagear.management.domain.DataSetResDirectory']> + + +<#include "../include/html_head.ftl"> +<#include "../include/html_title_app_name.ftl"><@spring.message code='${titleMessageKey}' /> + + +<#if !isAjaxRequest> +
+ +<#include "../include/page_js_obj.ftl"> +
+
+ +
+ <#if selectOperation> + + + <#else> + + + + <#if !(currentUser.anonymous)> + + + + +
+
+
+ +
+
+
+
+ +
+
+
+<#if !isAjaxRequest> +
+ +<#include "../include/page_obj_searchform_js.ftl"> +<#include "../include/page_obj_pagination.ftl"> +<#include "../include/page_obj_grid.ftl"> +<#include "../include/page_obj_data_permission.ftl" > + + + diff --git a/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/main.ftl b/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/main.ftl index afa1e6d2..786d7f8a 100644 --- a/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/main.ftl +++ b/datagear-web/src/main/resources/org/datagear/web/webapp/view/freemarker/main.ftl @@ -841,6 +841,12 @@ ${detectNewVersionScript} $.setGridPageHeightOption(options); po.open(contextPath+"/user/query", options); } + else if($item.hasClass("system-set-dataSetResDirectory-manage")) + { + var options = {}; + $.setGridPageHeightOption(options); + po.open(contextPath+"/dataSetResDirectory/pagingQuery", options); + } else if($item.hasClass("system-set-rold-manage")) { var options = {}; @@ -1406,6 +1412,8 @@ ${detectNewVersionScript}
  • <@spring.message code='main.manageChartPlugin' />
  • <@spring.message code='main.uploadChartPlugin' />
  • +
  • <@spring.message code='main.manageDataSetResDirectory' />
  • +
  • <@spring.message code='main.manageUser' />
  • <@spring.message code='main.addUser' />
  • <@spring.message code='main.manageRole' />