From ee5acfa3e0954105eea638edaccd7a4cc6dffa4b Mon Sep 17 00:00:00 2001 From: chenlw <874313221@qq.com> Date: Sun, 30 Oct 2016 12:32:10 +0800 Subject: [PATCH] =?UTF-8?q?=E8=81=94=E8=B0=83-=E8=84=9A=E6=9C=AC=E7=9A=84?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E3=80=81=E5=AE=A1=E6=A0=B8=E3=80=81=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E3=80=81=E5=BD=92=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/base/CustomException.java | 3 +- .../controller/DataModelController.java | 2 +- .../controller/DefaultController.java | 3 + .../controller/FilePackageController.java | 41 ++- .../platform/controller/FolderController.java | 7 +- .../controller/SetGlusterfsController.java | 5 + .../controller/ShowGlusterfsController.java | 4 + .../controller/TaskModelController.java | 4 + .../platform/controller/VolumeController.java | 4 +- src/com/platform/form/ScriptForm.java | 38 +++ src/com/platform/http/gfs/HttpUtils.java | 7 +- .../platform/service/IScriptMakeService.java | 14 +- .../service/impl/PreDataInfoServiceImpl.java | 22 +- .../service/impl/ScriptMakeService.java | 313 ++++++++++++++---- .../service/impl/VolumeServiceImpl.java | 5 + src/com/platform/utils/Configs.java | 4 +- src/com/platform/utils/FileOperateHelper.java | 89 ++++- src/com/platform/utils/ThreadRemoveFile.java | 16 +- src/com/platform/utils/ThreadVolume.java | 11 +- 19 files changed, 493 insertions(+), 99 deletions(-) create mode 100644 src/com/platform/form/ScriptForm.java diff --git a/src/com/base/CustomException.java b/src/com/base/CustomException.java index f24b1674..ad10869c 100644 --- a/src/com/base/CustomException.java +++ b/src/com/base/CustomException.java @@ -24,7 +24,8 @@ import com.platform.utils.Constant; public class CustomException extends Exception { /** log4j */ - public static Logger log = Configs.DAILY_ROLLING_LOGGER; + @SuppressWarnings("static-access") + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(CustomException.class); /** 自定义异常信息-错误信息 */ private String msg; diff --git a/src/com/platform/controller/DataModelController.java b/src/com/platform/controller/DataModelController.java index d943d0aa..4bae752d 100644 --- a/src/com/platform/controller/DataModelController.java +++ b/src/com/platform/controller/DataModelController.java @@ -53,7 +53,7 @@ import com.platform.utils.UtilsHelper; @Controller public class DataModelController extends BaseController { - public static Logger log = Configs.DAILY_ROLLING_LOGGER; + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(DataModelController.class); @Resource(name = "dataInfoService") private DataInfoService dfs; diff --git a/src/com/platform/controller/DefaultController.java b/src/com/platform/controller/DefaultController.java index 7fb907c8..740ea3ff 100644 --- a/src/com/platform/controller/DefaultController.java +++ b/src/com/platform/controller/DefaultController.java @@ -4,6 +4,7 @@ package com.platform.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; @@ -14,6 +15,8 @@ import com.platform.utils.Configs; @Controller public class DefaultController { + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(DefaultController.class); + @RequestMapping("/") public ModelAndView defaultHandler(HttpServletRequest req, HttpServletResponse res){ //处理不匹配的请求 diff --git a/src/com/platform/controller/FilePackageController.java b/src/com/platform/controller/FilePackageController.java index 5906dbea..14c5e503 100644 --- a/src/com/platform/controller/FilePackageController.java +++ b/src/com/platform/controller/FilePackageController.java @@ -2,24 +2,29 @@ package com.platform.controller; import java.io.File; import java.util.List; +import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FileUtils; +import org.apache.log4j.Logger; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestBody; 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 com.base.BaseController; import com.platform.entities.MyFilesEntity; -import com.platform.entities.PreDataInfo; +import com.platform.form.ScriptForm; import com.platform.service.IScriptMakeService; import com.platform.utils.Configs; import com.platform.utils.ZipCompressUtils; @@ -28,12 +33,16 @@ import com.platform.utils.ZipCompressUtils; @RequestMapping("/filePackage") public class FilePackageController extends BaseController { + @SuppressWarnings("static-access") + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(FilePackageController.class); + @Resource(name = "scriptMakeService") private IScriptMakeService scriptMakeService; @RequestMapping("/download") public ResponseEntity downloadFile(HttpServletRequest request, HttpServletResponse response) throws Exception { + log.info("---------/download--- "); scriptMakeService.makeCfg(); scriptMakeService.makeXml(); String filePath = Configs.PACKAGE_DOWNLOAD_PATH; @@ -61,10 +70,40 @@ public class FilePackageController extends BaseController { @ResponseBody @RequestMapping("/findAll") public ModelMap findAll() throws Exception { + log.info("---------/findAll--- "); ModelMap modelMap = new ModelMap(); List result = scriptMakeService.FindAllFiles(); modelMap.addAttribute("data", result); modelMap.addAttribute("length", result.size()); return modelMap; } + + @RequestMapping(value = "/readSqlFile", method = RequestMethod.POST) + @ResponseBody + public Object getSqlFile(/*@PathVariable*/@RequestParam("type") String type, @RequestBody MyFilesEntity data, + HttpServletRequest res, HttpServletResponse req) throws Exception { + log.info("---------/readSqlFile------------------"); + ModelMap modelMap = new ModelMap(); + Map result = scriptMakeService.readSql(type, data); + // StringBuilder sb = new StringBuilder(); + // sb.append("查看相应日志").append("\n").append("看到了"); +// modelMap.addAttribute("data1", result.get("data1").toString()); +// modelMap.addAttribute("data2", result.get("data2").toString()); + modelMap.addAllAttributes(result); + return modelMap; + } + + @RequestMapping(value = "/handleSqlFile", method = RequestMethod.POST) + @ResponseBody + public ModelMap handleSqlFile(@RequestParam("type") String type, @RequestParam("opt") String opt, @RequestBody ScriptForm form, + HttpServletRequest req, HttpServletResponse res) throws Exception { + log.info("---------/handleSqlFile--- " + type +" "+ opt + " "); + ModelMap modelMap = new ModelMap(); + Map result = scriptMakeService.handleSqlFile(type, opt, form.getContent(), form.getItem()); + modelMap.addAllAttributes(result); + List results = scriptMakeService.FindAllFiles(); + modelMap.addAttribute("data", results); + modelMap.addAttribute("length", results.size()); + return modelMap; + } } diff --git a/src/com/platform/controller/FolderController.java b/src/com/platform/controller/FolderController.java index 8bea311e..9020cf9f 100644 --- a/src/com/platform/controller/FolderController.java +++ b/src/com/platform/controller/FolderController.java @@ -9,6 +9,7 @@ import javax.annotation.Resource; import oracle.sql.DATE; +import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMethod; + import com.base.BaseController; import com.base.CustomException; import com.platform.entities.GfsFolderEntity; @@ -23,11 +25,10 @@ import com.platform.entities.GfsFolderEntity; import com.platform.entities.VolumeEntity; import com.platform.glusterfs.VolumeInfo; - import com.platform.entities.VolumeEntity; import com.platform.glusterfs.VolumeInfo; - import com.platform.service.IGfsService; +import com.platform.utils.Configs; /** @@ -44,6 +45,8 @@ import com.platform.service.IGfsService; public class FolderController extends BaseController { + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(FolderController.class); + @Resource(name = "gfsService") private IGfsService gfsService; diff --git a/src/com/platform/controller/SetGlusterfsController.java b/src/com/platform/controller/SetGlusterfsController.java index 78ce8915..3fffa5e2 100644 --- a/src/com/platform/controller/SetGlusterfsController.java +++ b/src/com/platform/controller/SetGlusterfsController.java @@ -13,9 +13,12 @@ package com.platform.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; +import com.platform.utils.Configs; + /** * <一句话功能简述> @@ -31,6 +34,8 @@ import org.springframework.web.bind.annotation.RequestMapping; */ @Controller public class SetGlusterfsController { + + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(SetGlusterfsController.class); @RequestMapping("/tes") public Object defaultHandler(HttpServletRequest req, HttpServletResponse request) { diff --git a/src/com/platform/controller/ShowGlusterfsController.java b/src/com/platform/controller/ShowGlusterfsController.java index 6fa3fadd..2501d4c8 100644 --- a/src/com/platform/controller/ShowGlusterfsController.java +++ b/src/com/platform/controller/ShowGlusterfsController.java @@ -14,11 +14,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.platform.glusterfs.ClusterInfo; import com.platform.glusterfs.VolumeInfo; +import com.platform.utils.Configs; /** * <一句话功能简述> @@ -31,6 +33,8 @@ import com.platform.glusterfs.VolumeInfo; */ @Controller public class ShowGlusterfsController { + + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(ShowGlusterfsController.class); /** diff --git a/src/com/platform/controller/TaskModelController.java b/src/com/platform/controller/TaskModelController.java index 7a861661..5983ab04 100644 --- a/src/com/platform/controller/TaskModelController.java +++ b/src/com/platform/controller/TaskModelController.java @@ -6,14 +6,18 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.base.BaseController; +import com.platform.utils.Configs; @Controller public class TaskModelController extends BaseController{ + + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(TaskModelController.class); @RequestMapping("/task/transfer/list") @ResponseBody diff --git a/src/com/platform/controller/VolumeController.java b/src/com/platform/controller/VolumeController.java index b3f348a7..5c4ecbfb 100644 --- a/src/com/platform/controller/VolumeController.java +++ b/src/com/platform/controller/VolumeController.java @@ -24,8 +24,8 @@ import com.platform.utils.ThreadVolumeImm; @Controller public class VolumeController extends BaseController{ - public static Logger log = Configs.DAILY_ROLLING_LOGGER; - + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(VolumeController.class); + @Resource(name = "volumeService") private IVolumeService volumeService; diff --git a/src/com/platform/form/ScriptForm.java b/src/com/platform/form/ScriptForm.java new file mode 100644 index 00000000..a510bd10 --- /dev/null +++ b/src/com/platform/form/ScriptForm.java @@ -0,0 +1,38 @@ +package com.platform.form; + +import com.platform.entities.MyFilesEntity; + +public class ScriptForm { + + private String content; + + private MyFilesEntity item; + + /** + * @return the content + */ + public String getContent() { + return content; + } + + /** + * @param content the content to set + */ + public void setContent(String content) { + this.content = content; + } + + /** + * @return the item + */ + public MyFilesEntity getItem() { + return item; + } + + /** + * @param item the item to set + */ + public void setItem(MyFilesEntity item) { + this.item = item; + } +} diff --git a/src/com/platform/http/gfs/HttpUtils.java b/src/com/platform/http/gfs/HttpUtils.java index 070337e1..149c1091 100644 --- a/src/com/platform/http/gfs/HttpUtils.java +++ b/src/com/platform/http/gfs/HttpUtils.java @@ -15,13 +15,18 @@ import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; +import org.apache.log4j.Logger; +import com.platform.controller.DataModelController; import com.platform.utils.Bean2MapUtils; +import com.platform.utils.Configs; public class HttpUtils { + + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(HttpUtils.class); public String sendPost(String subUrl, Object data) { - String resultStr = null; + String resultStr = ""; HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(HttpClientConstant.URL_IP_PORT + subUrl); try { diff --git a/src/com/platform/service/IScriptMakeService.java b/src/com/platform/service/IScriptMakeService.java index 3e93bb62..a81ac532 100644 --- a/src/com/platform/service/IScriptMakeService.java +++ b/src/com/platform/service/IScriptMakeService.java @@ -1,6 +1,7 @@ package com.platform.service; import java.util.List; +import java.util.Map; import com.platform.entities.MyFilesEntity; @@ -13,5 +14,16 @@ public interface IScriptMakeService { public int moveFiles(List file) throws Exception; public List FindAllFiles() throws Exception; - + + public Map readSql(String name, MyFilesEntity form); + + /** + * @param type 那种脚本(3种脚本之一) + * @param opt 那种操作 + * @param content 内容 + * @param form 当前是那个系统 + * @return + */ + public Map handleSqlFile(String type, String opt, String content, MyFilesEntity form); + } diff --git a/src/com/platform/service/impl/PreDataInfoServiceImpl.java b/src/com/platform/service/impl/PreDataInfoServiceImpl.java index ec7aaf70..25073949 100644 --- a/src/com/platform/service/impl/PreDataInfoServiceImpl.java +++ b/src/com/platform/service/impl/PreDataInfoServiceImpl.java @@ -118,6 +118,11 @@ public class PreDataInfoServiceImpl implements IPreDataInfoService { | IllegalAccessException | InstantiationException e) { e.printStackTrace(); } + finally{ + if (null != workbook) { + workbook.close(); + } + } } if (errFile.size() > 0) { @@ -328,17 +333,28 @@ public class PreDataInfoServiceImpl implements IPreDataInfoService { | IllegalAccessException | IOException e) { errList.add(e.getMessage()); } + finally{ + if (null != workbook) { + workbook.close(); + } + } + FileOutputStream fileOut = null; try { File f = new File(path); - FileOutputStream fileOut = null; f.createNewFile(); fileOut = new FileOutputStream(f); result.write(fileOut); - fileOut.close(); } catch (IOException e) { errList.add(e.getMessage()); } - map.put("err", errList); + finally{ + if (null != fileOut) { + fileOut.close(); + } + } + if (errList.size() > 0) { + map.put("err", errList); + } return map; } diff --git a/src/com/platform/service/impl/ScriptMakeService.java b/src/com/platform/service/impl/ScriptMakeService.java index 287662aa..167160fb 100644 --- a/src/com/platform/service/impl/ScriptMakeService.java +++ b/src/com/platform/service/impl/ScriptMakeService.java @@ -1,6 +1,9 @@ package com.platform.service.impl; +import java.io.BufferedReader; import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -24,33 +27,36 @@ import com.platform.utils.Compare4MyFilesEntity; import com.platform.utils.Configs; import com.platform.utils.Constant; import com.platform.utils.FileOperateHelper; +import com.platform.utils.ThreadRemoveFile; import com.platform.utils.XmlOperationByDom4j; import dk.brics.automaton.RegExp; @Service(value = "scriptMakeService") public class ScriptMakeService implements IScriptMakeService { - - public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(PreDataInfoServiceImpl.class); - + + @SuppressWarnings("static-access") + public static Logger log = Configs.DAILY_ROLLING_LOGGER + .getLogger(ScriptMakeService.class); + @Resource(name = "preDataInfoDao") private PreDataInfoDao preDataInfoDao; - - + @Override public int makeCfg() throws Exception { log.info("makeCfg"); List systemInfoList = preDataInfoDao.findAll(); - String path = FileOperateHelper.addLastSeparator(Configs.SQL_SCRIPT_PATH_STANDARD); + String path = FileOperateHelper + .addLastSeparator(Configs.SQL_SCRIPT_PATH_STANDARD); StringBuffer sb = new StringBuffer(); sb.append("市\t县(市、区)\t行政区划代码\r\n"); Map startData = new HashMap(); for (PreDataInfo preDataInfo : systemInfoList) { startData.put(preDataInfo.getAreaCode(), preDataInfo); - + } - //以地区为准--一个地区一个xml - for ( String key : startData.keySet()) { + // 以地区为准--一个地区一个xml + for (String key : startData.keySet()) { PreDataInfo preDataInfo = (PreDataInfo) startData.get(key); sb.append(preDataInfo.getCityName()); sb.append("\t"); @@ -59,7 +65,8 @@ public class ScriptMakeService implements IScriptMakeService { sb.append(preDataInfo.getAreaCode()); sb.append("\r\n"); } - FileOperateHelper.fileWrite(path+Constant.cfgFileName, sb.toString()); + FileOperateHelper.fileReWrite(path + Constant.cfgFileName, + sb.toString()); log.info("makeCfg--end"); return 1; } @@ -68,13 +75,14 @@ public class ScriptMakeService implements IScriptMakeService { public int makeXml() throws Exception { log.info("makeXml"); List systemInfoList = preDataInfoDao.findAll(); - String dirpath = FileOperateHelper.addLastSeparator(Configs.SQL_SCRIPT_PATH_STANDARD); + String dirpath = FileOperateHelper + .addLastSeparator(Configs.SQL_SCRIPT_PATH_STANDARD); Map> map = new HashMap>(); for (PreDataInfo preDataInfo : systemInfoList) { putSystemByAreaCode(map, preDataInfo.getAreaCode(), preDataInfo); } - //一个地区一个xml - for ( String key : map.keySet()) { + // 一个地区一个xml + for (String key : map.keySet()) { String areaPath = dirpath + key; File f = new File(areaPath); f.mkdir(); @@ -85,40 +93,149 @@ public class ScriptMakeService implements IScriptMakeService { defaul.setvalue((PreDataInfo) object); defList.add(defaul); } - - XmlOperationByDom4j.createXml(FileOperateHelper.addLastSeparator(areaPath)+key+".xml", defList, "Data_info", "workRange"); + + XmlOperationByDom4j + .createXml(FileOperateHelper.addLastSeparator(areaPath) + + key + ".xml", defList, "Data_info", "workRange"); } log.info("makeXml--end"); return 1; } - @Override - public int moveFiles(List files) throws Exception { - - return 0; - } - @Override public List FindAllFiles() throws Exception { List systemDataInfo = preDataInfoDao.findAll(); - // 查找 Configs.SQL_SCRIPT_PATH_LAST 路径下的 所有的文件:路径 + // 查找 Configs.SQL_SCRIPT_PATH_LAST 路径下的 所有的文件:路径 Map sqlFilePathsLast = new HashMap(); - sqlFilePathsLast = getAllFile(sqlFilePathsLast, Configs.SQL_SCRIPT_PATH_LAST); - //遍历 查找 Configs.SQL_SCRIPT_PATH_STANDARD 脚本文件 放入集合中 + sqlFilePathsLast = getAllFile(sqlFilePathsLast, + Configs.SQL_SCRIPT_PATH_LAST); + // 遍历 查找 Configs.SQL_SCRIPT_PATH_STANDARD 脚本文件 放入集合中 Map sqlFilePathsStandard = new HashMap(); - sqlFilePathsStandard = getAllFile(sqlFilePathsStandard, Configs.SQL_SCRIPT_PATH_STANDARD); + sqlFilePathsStandard = getAllFile(sqlFilePathsStandard, + Configs.SQL_SCRIPT_PATH_STANDARD); // 填充 脚本状态、位置的信息 - List result = setScript(systemDataInfo, sqlFilePathsStandard, sqlFilePathsLast); + List result = setScript(systemDataInfo, + sqlFilePathsStandard, sqlFilePathsLast); return result; } - + + @Override + public Map readSql(String name, MyFilesEntity form) { + Map map = new HashMap(); + String path1 = ""; + String path2 = ""; + switch (name) { + case "userTableStatus": + path1 = form.getUserTableScriptPathStandard(); + map.put("data1Path", path1); + map.put("data1", fileReader(path1)); + path2 = form.getUserTableScriptPathLast(); + map.put("data2Path", path2); + map.put("data2", fileReader(path2)); + break; + case "ckIndicateStatus": + path1 = form.getCkIndicateScriptPathStandard(); + map.put("data1Path", path1); + map.put("data1", fileReader(path1)); + path2 = form.getCkIndicateScriptPathLast(); + map.put("data2Path", path2); + map.put("data2", fileReader(path2)); + break; + case "ckPayStatus": + path1 = form.getCkPayScriptPathStandard(); + map.put("data1Path", path1); + map.put("data1", fileReader(path1)); + path2 = form.getCkPayScriptPathLast(); + map.put("data2Path", path2); + map.put("data2", fileReader(path2)); + break; + default: + break; + } + return map; + } + + @Override + public int moveFiles(List files) throws Exception { + + return 0; + } + + @Override + public Map handleSqlFile(String type, String opt, String content, MyFilesEntity form) { + Map map = new HashMap(); + String standardPath = ""; + String lastPath = ""; + if (null == form.getAreaCode() || form.getSysCode() < 1) { + map.put("err", "请选择信息系统!"); + return map; + } +// 选择哪种类型的 脚本 path 可能 = null + switch (type) { + case "userTableStatus": + standardPath = form.getUserTableScriptPathStandard(); + if (null == standardPath || standardPath.isEmpty()) { + standardPath = FileOperateHelper.addLastSeparator(Configs.SQL_SCRIPT_PATH_STANDARD) + form.getAreaCode() + + File.separator + "UserTablespace_" + form.getAreaCode() + "_" + form.getSysCode() + ".sql"; + } + lastPath = form.getUserTableScriptPathLast(); + break; + case "ckIndicateStatus": + if (null == standardPath || standardPath.isEmpty()) { + standardPath = FileOperateHelper.addLastSeparator(Configs.SQL_SCRIPT_PATH_STANDARD) + form.getAreaCode() + + File.separator + "Checkout_Indicate_" + form.getAreaCode() + "_" + form.getSysCode() + ".sql"; + } + standardPath = form.getCkIndicateScriptPathStandard(); + lastPath = form.getCkIndicateScriptPathLast(); + break; + case "ckPayStatus": + if (null == standardPath || standardPath.isEmpty()) { + standardPath = FileOperateHelper.addLastSeparator(Configs.SQL_SCRIPT_PATH_STANDARD) + form.getAreaCode() + + File.separator + "Checkout_Pay_" + form.getAreaCode() + "_" + form.getSysCode() + ".sql"; + } + standardPath = form.getCkPayScriptPathStandard(); + lastPath = form.getCkPayScriptPathLast(); + break; + default: + map.put("err", "请选择脚本类型!"); + break; + } + if (map.containsKey("err_opt")) { + return map; + } + switch (opt) { + // 删除 最新的 脚本 (审核-保留) + case "delete": + fileDelete(lastPath); + break; + // 最新脚本 替换 标准脚本(即 以最新脚本为准 )(归档或审核-替换) + case "replace": + FileOperateHelper.fileReWrite(standardPath, fileReader(lastPath)); + fileDelete(lastPath); + break; + //新增 标准的脚本(注意 造出 对应的 standardPath standardPath不能 = null '')(上传) + case "add": + FileOperateHelper.fileReWrite(standardPath,content); + break; + // (查看) + case "read": + map = readSql(type, form); + break; + default: + map.put("err", "请选择操作选项!"); + break; + } + return map; + } + /** * @param map * @param code * @param data * @return */ - private Map> putSystemByAreaCode(Map> map,String code, PreDataInfo data) { + private Map> putSystemByAreaCode( + Map> map, String code, PreDataInfo data) { List list = map.get(code); if (null == list) { list = new ArrayList(); @@ -127,63 +244,86 @@ public class ScriptMakeService implements IScriptMakeService { map.put(code, list); return map; } - - /** 遍历文件 + + /** + * 遍历文件 + * * @param ps * @param path * @return */ - private Map getAllFile(Map ps, String path){ + public Map getAllFile(Map ps, String path) { File f = new File(path); String name = f.getName(); - //如果是 sql文件 - if(name.endsWith(".sql") || name.endsWith(".SQL")) - ps.put(name.toLowerCase(),f.getAbsolutePath()); + // 如果是 sql文件 + if (name.endsWith(".sql") || name.endsWith(".SQL")) + ps.put(name.toLowerCase(), f.getAbsolutePath()); if (f.exists()) { String[] subpaths = f.list(); if (null != subpaths) { for (String tmppath : subpaths) { - getAllFile(ps, f.getAbsolutePath()+"/"+tmppath); + getAllFile(ps, f.getAbsolutePath() + "/" + tmppath); } } } return ps; } - + /** - * @param systemDataInfo 系统信息 - * @param sqlFilePathsStandard 标准的-归档的脚本 - * @param sqlFilePathsLast 最新的脚本 + * @param systemDataInfo + * 系统信息 + * @param sqlFilePathsStandard + * 标准的-归档的脚本 + * @param sqlFilePathsLast + * 最新的脚本 * @return */ - private List setScript(List systemDataInfo, Map sqlFilePathsStandard, Map sqlFilePathsLast){ + private List setScript(List systemDataInfo, + Map sqlFilePathsStandard, + Map sqlFilePathsLast) { List fileEntitys = new ArrayList(); for (PreDataInfo preDataInfo : systemDataInfo) { MyFilesEntity myfile = new MyFilesEntity(); - //复制 + // 复制 BeanCopy.copyBean(preDataInfo, myfile); // 归档表空间脚本的位置- - String TablePathStandard = getFilePath("UserTablespace_", sqlFilePathsStandard, myfile, ".sql"); + String TablePathStandard = getFilePath("UserTablespace_", + sqlFilePathsStandard, myfile, ".sql"); myfile.setUserTableScriptPathStandard(TablePathStandard); // 归档预算 脚本的位置- - String indicatePathStandard = getFilePath("Checkout_Indicate_", sqlFilePathsStandard, myfile, ".sql"); + String indicatePathStandard = getFilePath("Checkout_Indicate_", + sqlFilePathsStandard, myfile, ".sql"); myfile.setCkIndicateScriptPathStandard(indicatePathStandard); // 归档表空间脚本的位置- - String payPathStandard = getFilePath("Checkout_Pay_", sqlFilePathsStandard, myfile, ".sql"); + String payPathStandard = getFilePath("Checkout_Pay_", + sqlFilePathsStandard, myfile, ".sql"); myfile.setCkPayScriptPathStandard(payPathStandard); // 最新表空间脚本的位置- - String TablePathLast = getFilePath("UserTablespace_", sqlFilePathsLast, myfile, ".sql"); + String TablePathLast = getFilePath("UserTablespace_", + sqlFilePathsLast, myfile, ".sql"); myfile.setUserTableScriptPathLast(TablePathLast); // 最新预算 脚本的位置- - String indicatePathLast = getFilePath("Checkout_Indicate_", sqlFilePathsLast, myfile, ".sql"); + String indicatePathLast = getFilePath("Checkout_Indicate_", + sqlFilePathsLast, myfile, ".sql"); myfile.setCkIndicateScriptPathLast(indicatePathLast); // 最新表空间脚本的位置- - String payPathLast = getFilePath("Checkout_Pay_", sqlFilePathsLast, myfile, ".sql"); + String payPathLast = getFilePath("Checkout_Pay_", sqlFilePathsLast, + myfile, ".sql"); myfile.setCkPayScriptPathLast(payPathLast); - //设置 状态 - myfile.setUserTableStatus(getStatus(myfile.getUserTableScriptPathStandard(), myfile.getUserTableScriptPathLast())); - myfile.setCkIndicateStatus(getStatus(myfile.getCkIndicateScriptPathStandard(), myfile.getCkIndicateScriptPathLast())); - myfile.setCkPayStatus(getStatus(myfile.getCkPayScriptPathStandard(), myfile.getCkPayScriptPathLast())); + // 设置 状态 + if ("ORACLE".equals(myfile.getDataBaseType().toUpperCase())) { + myfile.setUserTableStatus(getStatus( + myfile.getUserTableScriptPathStandard(), + myfile.getUserTableScriptPathLast())); + } else { + myfile.setUserTableStatus(4); + } + myfile.setCkIndicateStatus(getStatus( + myfile.getCkIndicateScriptPathStandard(), + myfile.getCkIndicateScriptPathLast())); + myfile.setCkPayStatus(getStatus( + myfile.getCkPayScriptPathStandard(), + myfile.getCkPayScriptPathLast())); myfile.setSysStatus(getTotalStatus(myfile)); fileEntitys.add(myfile); } @@ -191,28 +331,35 @@ public class ScriptMakeService implements IScriptMakeService { Collections.sort(fileEntitys, com); return fileEntitys; } - - /** 查找文件 + + /** + * 查找文件 + * * @param prefix * @param map * @param myf * @param affix * @return */ - private String getFilePath(String prefix, Map map, MyFilesEntity myf, String affix) { + private String getFilePath(String prefix, Map map, + MyFilesEntity myf, String affix) { StringBuffer sb = new StringBuffer(); - sb.append(prefix).append(myf.getAreaCode().toLowerCase()).append("_").append(myf.getSysCode()).append(affix.toLowerCase()); + sb.append(prefix).append(myf.getAreaCode()).append("_") + .append(myf.getSysCode()).append(affix); String fileName = sb.toString().toLowerCase(); - if (!map.keySet().contains(fileName)) { + if (!map.containsKey(fileName)) { return null; } - // 地区字母 小写 -- 文件属性小写 + // 地区字母 小写 -- 文件属性小写 String pathStandard = map.get(fileName); return pathStandard; } - - /** 返回状态--0: standard, last为空; 1:standard不空,last为空; 2:standard为空,last不空,3:standard不空,last不空 - * 对应 含义,操作: 0:(有缺失,上传) ; 1: (正常 ,查看); 2:(待归档,归档) ; 3: (待审核,审核) + + /** + * 返回状态--0: standard, last为空; 1:standard不空,last为空; + * 2:standard为空,last不空,3:standard不空,last不空 对应 含义,操作: 0:(有缺失,上传) ; 1: (正常 + * ,查看); 2:(待归档,归档) ; 3: (待审核,审核) + * * @param standard * @param last * @return @@ -227,9 +374,10 @@ public class ScriptMakeService implements IScriptMakeService { } return status; } - - /** 返回状态 - * 对应 含义,操作: 0:(有缺失,上传) ; 1: (正常 ,查看); 2:(待归档,归档) ; 3: (待审核,审核) + + /** + * 返回状态 对应 含义,操作: 0:(有缺失,上传) ; 1: (正常 ,查看); 2:(待归档,归档) ; 3: (待审核,审核) + * * @param standard * @param last * @return @@ -237,7 +385,7 @@ public class ScriptMakeService implements IScriptMakeService { private int getTotalStatus(MyFilesEntity myfile) { Integer[] numArr = new Integer[3]; Integer result = 1; - numArr[0] = myfile.getUserTableStatus(); + numArr[0] = myfile.getUserTableStatus(); numArr[1] = myfile.getCkIndicateStatus(); numArr[2] = myfile.getCkPayStatus(); for (Integer integer : numArr) { @@ -256,4 +404,41 @@ public class ScriptMakeService implements IScriptMakeService { return result; } + private static String fileReader(String path) { + StringBuffer sb = new StringBuffer(); + String tempString = ""; + if (null == path || "".equals(path)) { + return sb.toString(); + } + try { + File file = new File(path); + if (!file.exists()) + return null; + FileInputStream fis = new FileInputStream(file); + @SuppressWarnings("resource") + BufferedReader br = new BufferedReader(new InputStreamReader(fis, + "UTF-8")); + while ((tempString = br.readLine()) != null) { + sb.append(tempString).append("\r\n"); + } + } catch (Exception e) { + log.error(e.getStackTrace()); + } + return sb.toString(); + } + + private static int fileDelete(String path) { + if (null == path || "".equals(path)) { + return -1; + } + File file = new File(path); + if (!file.exists()) + return -1; + if (!file.delete()) { + ArrayList arr = new ArrayList(); + arr.add(path); + new ThreadRemoveFile(arr).start(); + } + return 1; + } } diff --git a/src/com/platform/service/impl/VolumeServiceImpl.java b/src/com/platform/service/impl/VolumeServiceImpl.java index 4527f603..420777c5 100644 --- a/src/com/platform/service/impl/VolumeServiceImpl.java +++ b/src/com/platform/service/impl/VolumeServiceImpl.java @@ -8,8 +8,10 @@ import java.util.Set; import javax.annotation.Resource; +import org.apache.log4j.Logger; import org.springframework.stereotype.Service; +import com.platform.controller.FilePackageController; import com.platform.dao.VolumeDao; import com.platform.entities.Brick; import com.platform.entities.VolumeEntity; @@ -17,10 +19,13 @@ import com.platform.entities.VolumeInitEntity; import com.platform.glusterfs.SetVolume; import com.platform.service.IGfsService; import com.platform.service.IVolumeService; +import com.platform.utils.Configs; @Service(value = "volumeService") public class VolumeServiceImpl implements IVolumeService { + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(VolumeServiceImpl.class); + /** gfs的api */ SetVolume volumeService = new SetVolume(); diff --git a/src/com/platform/utils/Configs.java b/src/com/platform/utils/Configs.java index abc6e2da..259cddcb 100644 --- a/src/com/platform/utils/Configs.java +++ b/src/com/platform/utils/Configs.java @@ -58,7 +58,7 @@ public class Configs { public static String PACKAGE_NAME=""; - public static String SQL_SCRIPT_PATH_LAST=""; + public static String SQL_SCRIPT_PATH_LAST="D:\\test\\sql_script_last\\"; - public static String SQL_SCRIPT_PATH_STANDARD=""; + public static String SQL_SCRIPT_PATH_STANDARD="D:\\test\\sql_script_standard\\"; } diff --git a/src/com/platform/utils/FileOperateHelper.java b/src/com/platform/utils/FileOperateHelper.java index e47e5362..276fafe7 100644 --- a/src/com/platform/utils/FileOperateHelper.java +++ b/src/com/platform/utils/FileOperateHelper.java @@ -9,6 +9,8 @@ import java.io.InputStreamReader; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.log4j.Logger; + /** * 文件读写操作帮助类 * @@ -16,6 +18,8 @@ import java.util.regex.Pattern; * */ public class FileOperateHelper { + + private static Logger log = Configs.CONSOLE_LOGGER.getLogger(FileOperateHelper.class); /** * 以追加的方式将信息写入文件 @@ -28,16 +32,50 @@ public class FileOperateHelper { if (null == path || "".equals(path)) { return; } + try { + File file = new File(path); + if (!file.exists()) { + file.createNewFile(); + } + FileOutputStream out = new FileOutputStream(file, true); // 如果追加方式用true + StringBuffer sb = new StringBuffer(); + sb.append(message); + out.write(sb.toString().getBytes("utf-8")); + } catch (IOException e) { + log.error(e.getStackTrace()); + } + } + + /** + * 以重写的方式将信息写入文件 + * + * @param path + * @param message + */ + public static void fileReWrite(String path, String message) { + if (null == path || "".equals(path)) { + return; + } + FileOutputStream out = null; try { File file = new File(path); file.delete(); file.createNewFile(); - FileOutputStream out = new FileOutputStream(file, true); // 如果追加方式用true + out = new FileOutputStream(file, true); // 如果追加方式用true StringBuffer sb = new StringBuffer(); sb.append(message); out.write(sb.toString().getBytes("utf-8")); } catch (IOException e) { - // TODO: handle exception + log.error(e.getStackTrace()); + } + finally{ + if (null != out) { + try { + out.close(); + } catch (IOException e) { + log.error(e.getStackTrace()); + } + } } } @@ -50,17 +88,27 @@ public class FileOperateHelper { public static String fileReader(String path) { StringBuffer sb = new StringBuffer(); String tempString = ""; + FileInputStream fis = null; try { File file = new File(path); if (!file.exists()) - return "当前没有日志信息!"; - FileInputStream fis = new FileInputStream(file); + return "当前没有信息!"; + fis = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fis,"UTF-8")); while ((tempString = br.readLine()) != null) { sb.append(tempString).append("\r\n"); } } catch (Exception e) { - Configs.CONSOLE_LOGGER.info(e.getMessage()); + log.error(e.getStackTrace()); + } + finally{ + if (null != fis) { + try { + fis.close(); + } catch (IOException e) { + log.error(e.getStackTrace()); + } + } } return sb.toString(); } @@ -76,35 +124,43 @@ public class FileOperateHelper { StringBuffer sb = new StringBuffer(); String tempString = ""; + FileInputStream fis = null; try { File file = new File(path); if (!file.exists()) - return ""; - - FileInputStream fis = new FileInputStream(file); + fis = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(fis)); while ((tempString = br.readLine()) != null) { sb.append(tempString+"\n"); } } catch (Exception e) { - // TODO: handle exception + log.error(e.getStackTrace()); + } + finally{ + if (null != fis) { + try { + fis.close(); + } catch (IOException e) { + log.error(e.getStackTrace()); + } + } } return sb.toString(); } public static String addLastSeparator(String path){ - // 末尾 含有 / - Pattern pattern2 = Pattern.compile(File.separator+"$"); - Matcher matcher2 = pattern2.matcher(path); - if (!matcher2.find()) { - path = path + File.separator; - } + //去掉 File.separator + path = removeLastSeparator(path); + // 末尾 加上 / + path = path + File.separator; return path; } + + public static String removeLastSeparator(String path){ - // 末尾 含有 / + // 递归去掉 所有 结尾 / if (path.length() < 1) { return path; } @@ -112,6 +168,7 @@ public class FileOperateHelper { Matcher matcher2 = pattern2.matcher(path); if (matcher2.find()) { path = path.substring(0, path.length()-1); + path = removeLastSeparator(path); } return path; } diff --git a/src/com/platform/utils/ThreadRemoveFile.java b/src/com/platform/utils/ThreadRemoveFile.java index 787afba8..0caedf00 100644 --- a/src/com/platform/utils/ThreadRemoveFile.java +++ b/src/com/platform/utils/ThreadRemoveFile.java @@ -4,12 +4,19 @@ import java.io.File; import java.util.ArrayList; import java.util.List; +import org.apache.log4j.Logger; + +import com.platform.controller.FilePackageController; + /** 删除文件 * @author chen * */ public class ThreadRemoveFile extends Thread { + @SuppressWarnings("static-access") + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(FilePackageController.class); + private List path4Delete = new ArrayList(); public ThreadRemoveFile(List paths) { @@ -19,6 +26,11 @@ public class ThreadRemoveFile extends Thread { @Override public void run() { while (true) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + log.error(e.getStackTrace()); + } List tmpPathArr = new ArrayList(); if (null != path4Delete && path4Delete.size() > 0) { for (String path : path4Delete) { @@ -34,10 +46,6 @@ public class ThreadRemoveFile extends Thread { break; } path4Delete = tmpPathArr; - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - } } } diff --git a/src/com/platform/utils/ThreadVolume.java b/src/com/platform/utils/ThreadVolume.java index 563ceaf0..f82bc33b 100644 --- a/src/com/platform/utils/ThreadVolume.java +++ b/src/com/platform/utils/ThreadVolume.java @@ -6,10 +6,12 @@ import java.util.Map; import net.sf.json.JSONArray; +import org.apache.log4j.Logger; import org.springframework.stereotype.Service; import com.base.Custom4exception; import com.base.CustomException; +import com.platform.controller.FilePackageController; import com.platform.entities.Brick; import com.platform.entities.FolderNode; import com.platform.entities.VolumeEntity; @@ -19,6 +21,9 @@ import com.platform.glusterfs.VolumeInfo; import com.platform.http.gfs.HttpUtils; public class ThreadVolume extends Thread { + + @SuppressWarnings("static-access") + public static Logger log = Configs.DAILY_ROLLING_LOGGER.getLogger(ThreadVolume.class); /** * 挂载点路径 -- 暂时无用的 @@ -34,7 +39,6 @@ public class ThreadVolume extends Thread { private GetTreeData gfsTree = new GetTreeData(); public ThreadVolume() { - // TODO Auto-generated constructor stub } public ThreadVolume(String name) { @@ -77,7 +81,12 @@ public class ThreadVolume extends Thread { HttpUtils ht = new HttpUtils(); String rest = ht.sendPost("gfs/getAllvolume", null); // JSONArray jsondata = JSONArray.fromObject(volumeList); + if (null == rest || "".equals(rest)) { + log.error(" --- gluster is disconnect ! \n"); + return; + } JSONArray json = JSONArray.fromObject(rest); + @SuppressWarnings("unchecked") List volumes = (List)JSONArray.toCollection(json, VolumeEntity.class); for (VolumeEntity volumeEntity : volumes) { if (null != volumeEntity.getFolder()) {