package com.baidu.disconf.web.web.config.controller; import javax.validation.Valid; import javax.validation.constraints.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import com.baidu.disconf.core.common.constants.DisConfigTypeEnum; import com.baidu.disconf.web.service.config.form.ConfNewForm; import com.baidu.disconf.web.service.config.form.ConfNewItemForm; import com.baidu.disconf.web.service.config.service.ConfigMgr; import com.baidu.disconf.web.web.config.validator.ConfigValidator; import com.baidu.disconf.web.web.config.validator.FileUploadValidator; import com.baidu.dsp.common.constant.WebConstants; import com.baidu.dsp.common.controller.BaseController; import com.baidu.dsp.common.exception.FileUploadException; import com.baidu.dsp.common.vo.JsonObjectBase; /** * 专用于配置新建 * * @author liaoqiqi * @version 2014-6-24 */ @Controller @RequestMapping(WebConstants.API_PREFIX + "/web/config") public class ConfigNewController extends BaseController { protected static final Logger LOG = LoggerFactory.getLogger(ConfigUpdateController.class); @Autowired private ConfigMgr configMgr; @Autowired private ConfigValidator configValidator; @Autowired private FileUploadValidator fileUploadValidator; /** * 配置项的新建 * * @param confNewForm * * @return */ @RequestMapping(value = "/item", method = RequestMethod.POST) @ResponseBody public JsonObjectBase newItem(@Valid ConfNewItemForm confNewForm) { // 业务校验 configValidator.validateNew(confNewForm, DisConfigTypeEnum.ITEM); // configMgr.newConfig(confNewForm, DisConfigTypeEnum.ITEM); return buildSuccess("创建成功"); } /** * 配置文件的新建(使用上传配置文件) * * @param confNewForm * @param file * * @return */ @ResponseBody @RequestMapping(value = "/file", method = RequestMethod.POST) public JsonObjectBase updateFile(@Valid ConfNewForm confNewForm, @RequestParam("myfilerar") MultipartFile file) { LOG.info(confNewForm.toString()); // // 校验 // int fileSize = 1024 * 1024 * 4; String[] allowExtName = {".properties", ".xml"}; fileUploadValidator.validateFile(file, fileSize, allowExtName); // // 更新 // String fileContent = ""; try { fileContent = new String(file.getBytes(), "UTF-8"); LOG.info("receive file: " + fileContent); } catch (Exception e) { LOG.error(e.toString()); throw new FileUploadException("upload file error", e); } // 创建配置文件表格 ConfNewItemForm confNewItemForm = new ConfNewItemForm(confNewForm); confNewItemForm.setKey(file.getOriginalFilename()); confNewItemForm.setValue(fileContent); // 业务校验 configValidator.validateNew(confNewItemForm, DisConfigTypeEnum.FILE); // configMgr.newConfig(confNewItemForm, DisConfigTypeEnum.FILE); return buildSuccess("创建成功"); } /** * 配置文件的新建(使用文本) * * @param confNewForm * @param fileContent * @param fileName * * @return */ @ResponseBody @RequestMapping(value = "/filetext", method = RequestMethod.POST) public JsonObjectBase updateFileWithText(@Valid ConfNewForm confNewForm, @NotNull String fileContent, @NotNull String fileName) { LOG.info(confNewForm.toString()); // 创建配置文件表格 ConfNewItemForm confNewItemForm = new ConfNewItemForm(confNewForm); confNewItemForm.setKey(fileName); confNewItemForm.setValue(fileContent); // 业务校验 configValidator.validateNew(confNewItemForm, DisConfigTypeEnum.FILE); // configMgr.newConfig(confNewItemForm, DisConfigTypeEnum.FILE); return buildSuccess("创建成功"); } }