From 219cbb7fa54e91373a2b7684287755b2d5956f25 Mon Sep 17 00:00:00 2001 From: wangbing Date: Fri, 17 May 2019 00:10:18 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../javafx/ctrl/OptionVueController.java | 10 -- .../manger/callable/AndroidCallable.java | 4 +- .../javafx/manger/callable/SDKCallable.java | 4 +- .../manger/callable/SpringBootCallable.java | 22 ++- .../manger/callable/SpringMVCCallable.java | 22 ++- .../javafx/manger/callable/VueCallable.java | 39 ++-- .../wbsite/dbtool/javafx/po/VueOption.java | 1 - .../xyz/wbsite/dbtool/javafx/tool/Dialog.java | 1 - .../xyz/wbsite/dbtool/javafx/tool/Tool.java | 5 +- .../wbsite/dbtool/javafx/tool/ZipUtil.java | 82 ++++----- src/main/resources/fxml/vueOption.fxml | 64 +++---- .../resources/static/js/ajax_es6.js | 170 ++++++++++++++++++ 12 files changed, 271 insertions(+), 153 deletions(-) create mode 100644 src/main/resources/modules/SpringBoot/resources/static/js/ajax_es6.js diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/ctrl/OptionVueController.java b/src/main/java/xyz/wbsite/dbtool/javafx/ctrl/OptionVueController.java index bad99e4c..b605d464 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/ctrl/OptionVueController.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/ctrl/OptionVueController.java @@ -8,8 +8,6 @@ import javafx.scene.control.ToggleGroup; public class OptionVueController { - @FXML - private TextField name; @FXML private Button ok; @FXML @@ -33,14 +31,6 @@ public class OptionVueController { this.cancel = cancel; } - public TextField getName() { - return name; - } - - public void setName(TextField name) { - this.name = name; - } - public ToggleGroup getType() { return type; } diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/AndroidCallable.java b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/AndroidCallable.java index 0e7afb12..f383e71f 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/AndroidCallable.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/AndroidCallable.java @@ -13,8 +13,6 @@ import java.util.HashMap; import java.util.concurrent.Callable; import java.util.regex.Matcher; -import static xyz.wbsite.dbtool.javafx.tool.Tool.clear; - public class AndroidCallable implements Callable { private Tool tool = new Tool(); @@ -36,7 +34,7 @@ public class AndroidCallable implements Callable { if (!project.exists()) { project.mkdirs(); } else { - clear(project); + Tool.clear(project); } dBmapper = ProjectManager.dBmapper; diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SDKCallable.java b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SDKCallable.java index b289f13f..5b929ba3 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SDKCallable.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SDKCallable.java @@ -14,8 +14,6 @@ import java.io.IOException; import java.util.*; import java.util.concurrent.Callable; -import static xyz.wbsite.dbtool.javafx.tool.Tool.clear; - public class SDKCallable implements Callable { private File sdk; @@ -44,7 +42,7 @@ public class SDKCallable implements Callable { if (!sdk.exists()) { sdk.mkdir(); } else { - clear(sdk); + Tool.clear(sdk); } dBmapper = ProjectManager.dBmapper; diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SpringBootCallable.java b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SpringBootCallable.java index 26a487a4..38601e6c 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SpringBootCallable.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SpringBootCallable.java @@ -13,8 +13,6 @@ import java.util.Date; import java.util.HashMap; import java.util.concurrent.Callable; -import static xyz.wbsite.dbtool.javafx.tool.Tool.clear; - public class SpringBootCallable implements Callable { private String root; @@ -44,7 +42,7 @@ public class SpringBootCallable implements Callable { if (!projectDir.exists()) { projectDir.mkdir(); } else { - clear(projectDir); + Tool.clear(projectDir); } // 生成POM @@ -204,7 +202,7 @@ public class SpringBootCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } HashMap ctx = new HashMap(); ctx.put("basePackage", project.getProjectBasePackage()); @@ -230,7 +228,7 @@ public class SpringBootCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } HashMap ctx = new HashMap(); ctx.put("basePackage", project.getProjectBasePackage()); @@ -255,7 +253,7 @@ public class SpringBootCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } for (Table table : md.getTables()) { @@ -283,7 +281,7 @@ public class SpringBootCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } HashMap ctx = new HashMap(); @@ -319,7 +317,7 @@ public class SpringBootCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } HashMap ctx = new HashMap(); @@ -342,7 +340,7 @@ public class SpringBootCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } HashMap ctx = new HashMap(); @@ -375,7 +373,7 @@ public class SpringBootCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } HashMap ctx = new HashMap(); @@ -431,7 +429,7 @@ public class SpringBootCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } HashMap ctx = new HashMap(); @@ -487,7 +485,7 @@ public class SpringBootCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } HashMap ctx = new HashMap(); ctx.put("basePackage", project.getProjectBasePackage()); diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SpringMVCCallable.java b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SpringMVCCallable.java index fd5c50f8..48887253 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SpringMVCCallable.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/SpringMVCCallable.java @@ -16,8 +16,6 @@ import java.util.Date; import java.util.HashMap; import java.util.concurrent.Callable; -import static xyz.wbsite.dbtool.javafx.tool.Tool.clear; - public class SpringMVCCallable implements Callable { private String root; @@ -44,7 +42,7 @@ public class SpringMVCCallable implements Callable { if (!projectFile.exists()) { projectFile.mkdir(); } else { - clear(projectFile); + Tool.clear(projectFile); } dBmapper = ProjectManager.dBmapper; @@ -181,7 +179,7 @@ public class SpringMVCCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } for (Table table : project.getTables()) { @@ -212,7 +210,7 @@ public class SpringMVCCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } try { @@ -241,7 +239,7 @@ public class SpringMVCCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } try { @@ -268,7 +266,7 @@ public class SpringMVCCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } HashMap ctx = new HashMap(); @@ -297,7 +295,7 @@ public class SpringMVCCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } try { HashMap ctx = new HashMap(); @@ -330,7 +328,7 @@ public class SpringMVCCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } try { @@ -368,7 +366,7 @@ public class SpringMVCCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } try { @@ -404,7 +402,7 @@ public class SpringMVCCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } try { HashMap ctx = new HashMap(); @@ -471,7 +469,7 @@ public class SpringMVCCallable implements Callable { if (!root.exists()) { root.mkdirs(); } else { - clear(root); + Tool.clear(root); } try { HashMap ctx = new HashMap(); diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/VueCallable.java b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/VueCallable.java index edda9efc..7b974f1d 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/VueCallable.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/manger/callable/VueCallable.java @@ -2,7 +2,6 @@ package xyz.wbsite.dbtool.javafx.manger.callable; import xyz.wbsite.dbtool.javafx.manger.FreeMarkerManager; import xyz.wbsite.dbtool.javafx.manger.ManagerFactory; -import xyz.wbsite.dbtool.javafx.po.AbstractDBmapper; import xyz.wbsite.dbtool.javafx.po.VueOption; import xyz.wbsite.dbtool.javafx.tool.Tool; import xyz.wbsite.dbtool.javafx.tool.ZipUtil; @@ -10,9 +9,6 @@ import xyz.wbsite.dbtool.javafx.tool.ZipUtil; import javax.validation.constraints.NotNull; import java.io.File; import java.util.concurrent.Callable; -import java.util.zip.ZipFile; - -import static xyz.wbsite.dbtool.javafx.tool.Tool.clear; public class VueCallable implements Callable { @@ -27,28 +23,21 @@ public class VueCallable implements Callable { this.freeMarkerManager = ManagerFactory.getFreeMarkerManager(); } - private AbstractDBmapper dBmapper; - public Boolean call() throws Exception { - File app = new File(path, option.projectName); - if (!app.exists()) { - app.mkdirs(); - } else { - clear(app); - } - - switch (option.type) { - case "vue": - Tool.outputResource("Vue/vue-simple.zip", new File(path, "vue-simple.zip")); - new ZipUtil().unZip(new File(path, "vue-simple.zip"),app); - break; - case "vue-element-admin": - Tool.outputResource("Vue/vue-element-admin.zip", new File(path, "vue-element-admin.zip")); - break; - case "vue-admin-template": - Tool.outputResource("Vue/vue-admin-template.zip", new File(path, "vue-admin-template.zip")); - break; - } + // 文件输出文件 + File zipFile = new File(path, option.type + ".zip"); + // 文件输出目录 + File dir = new File(path, option.type); + // 清空输出目录 + Tool.clear(dir); + System.out.println("清空文件" + dir.getAbsolutePath()); + // 输出文件 + Tool.outputResource("Vue/" + option.type + ".zip", zipFile); + // 解压文件 + new ZipUtil().unZip(zipFile, new File(path)); + // 删除文件 + zipFile.delete(); + System.out.println("删除文件" + zipFile.getAbsolutePath()); return true; } } diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/po/VueOption.java b/src/main/java/xyz/wbsite/dbtool/javafx/po/VueOption.java index 82ffc367..8317ff5f 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/po/VueOption.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/po/VueOption.java @@ -1,6 +1,5 @@ package xyz.wbsite.dbtool.javafx.po; public class VueOption { - public String projectName; public String type; } diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/tool/Dialog.java b/src/main/java/xyz/wbsite/dbtool/javafx/tool/Dialog.java index 4e76fade..61cf3f13 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/tool/Dialog.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/tool/Dialog.java @@ -639,7 +639,6 @@ public class Dialog { if (file != null) { System.out.println("生成目录:" + file.getAbsolutePath()); VueOption vueOption = new VueOption(); - vueOption.projectName = controller.getName().getText(); ToggleGroup type = controller.getType(); RadioButton value = (RadioButton) type.selectedToggleProperty().getValue(); vueOption.type = value.textProperty().getValue(); diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/tool/Tool.java b/src/main/java/xyz/wbsite/dbtool/javafx/tool/Tool.java index f0029b9a..b0ff5faa 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/tool/Tool.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/tool/Tool.java @@ -2,7 +2,6 @@ package xyz.wbsite.dbtool.javafx.tool; import java.io.*; import java.net.URL; -import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -336,9 +335,9 @@ public class Tool { for (File file : files) { if (file.isDirectory()) { clear(file, exclude); - System.out.println("删除文件夹" + file.getName() + (file.delete() ? "成功" : "失败")); +// System.out.println("删除文件夹" + file.getName() + (file.delete() ? "成功" : "失败")); } else { - System.out.println("删除" + file.getName() + (file.delete() ? "成功" : "失败")); +// System.out.println("删除" + file.getName() + (file.delete() ? "成功" : "失败")); } } } diff --git a/src/main/java/xyz/wbsite/dbtool/javafx/tool/ZipUtil.java b/src/main/java/xyz/wbsite/dbtool/javafx/tool/ZipUtil.java index 450179a4..a72f3f96 100644 --- a/src/main/java/xyz/wbsite/dbtool/javafx/tool/ZipUtil.java +++ b/src/main/java/xyz/wbsite/dbtool/javafx/tool/ZipUtil.java @@ -1,67 +1,69 @@ package xyz.wbsite.dbtool.javafx.tool; -import java.io.*; -import java.nio.charset.Charset; -import java.util.ArrayList; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; import java.util.Enumeration; -import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class ZipUtil { - public boolean unZip(File zipFile, File descDir) { - return unZip(zipFile, descDir, new ArrayList<>()); - } - /** * 解压文件 * * @param zipFile 目标文件 * @param descDir 指定解压目录 - * @param urlList 存放解压后的文件目录(可选) * @return */ - public boolean unZip(File zipFile, File descDir, List urlList) { - boolean flag = false; + public void unZip(File zipFile, File descDir) { if (!descDir.exists()) { descDir.mkdirs(); } ZipFile zip = null; + System.out.println("解压文件" + zipFile.getAbsolutePath()); try { - //指定编码,否则压缩包里面不能有中文目录 - zip = new ZipFile(zipFile, Charset.forName("gbk")); - for (Enumeration entries = zip.entries(); entries.hasMoreElements(); ) { + zip = new ZipFile(zipFile); + Enumeration entries = zip.entries(); + while (entries.hasMoreElements()) { ZipEntry entry = (ZipEntry) entries.nextElement(); - String zipEntryName = entry.getName(); - InputStream in = zip.getInputStream(entry); - File outPath = new File(descDir, zipEntryName); - //判断路径是否存在,不存在则创建文件路径 - if (!outPath.getParentFile().exists()) { - outPath.getParentFile().mkdirs(); - } - //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压 - if (outPath.isDirectory()) { - continue; + // 如果是文件夹,就创建个文件夹 + if (entry.isDirectory()) { + String dirPath = descDir + "/" + entry.getName(); + File dir = new File(dirPath); + dir.mkdirs(); + } else { + // 如果是文件,就先创建一个文件,然后用io流把内容copy过去 + File targetFile = new File(descDir + "/" + entry.getName()); + // 保证这个文件的父文件夹必须要存在 + if (!targetFile.getParentFile().exists()) { + targetFile.getParentFile().mkdirs(); + } + targetFile.createNewFile(); + // 将压缩文件内容写入到这个文件中 + InputStream is = zip.getInputStream(entry); + FileOutputStream fos = new FileOutputStream(targetFile); + int len; + byte[] buf = new byte[1024]; + while ((len = is.read(buf)) != -1) { + fos.write(buf, 0, len); + } + // 关流顺序,先打开的后关闭 + fos.close(); + is.close(); } - //保存文件路径信息 - urlList.add(outPath.getAbsolutePath()); - - OutputStream out = new FileOutputStream(outPath); - byte[] buf1 = new byte[2048]; - int len; - while ((len = in.read(buf1)) > 0) { - out.write(buf1, 0, len); + } + } catch (Exception e) { + throw new RuntimeException("unzip error from ZipUtils", e); + } finally { + if (zip != null) { + try { + zip.close(); + } catch (IOException e) { + e.printStackTrace(); } - in.close(); - out.close(); } - flag = true; - //必须关闭,否则无法删除该zip文件 - zip.close(); - } catch (IOException e) { - e.printStackTrace(); } - return flag; } } diff --git a/src/main/resources/fxml/vueOption.fxml b/src/main/resources/fxml/vueOption.fxml index 5a79357f..f09d05fb 100644 --- a/src/main/resources/fxml/vueOption.fxml +++ b/src/main/resources/fxml/vueOption.fxml @@ -9,53 +9,31 @@
- - - - - - - - - - - - - - - - - + + + + +
diff --git a/src/main/resources/modules/SpringBoot/resources/static/js/ajax_es6.js b/src/main/resources/modules/SpringBoot/resources/static/js/ajax_es6.js new file mode 100644 index 00000000..42ddcd66 --- /dev/null +++ b/src/main/resources/modules/SpringBoot/resources/static/js/ajax_es6.js @@ -0,0 +1,170 @@ +import axios from 'axios' +//创建axios实例 +const instance = axios.create({ + method: 'post', + timeout: 30000, +}); + +// 添加请求拦截器 +instance.interceptors.request.use(function (config) { + // 在发送请求之前做些什么 + if (config.url == '/upload') { + + } else { + + } + return config; +}, function (error) { + // 对请求错误做些什么 + return Promise.reject(error); +}); + +// 添加响应拦截器 +instance.interceptors.response.use(function (response) { + // 对响应数据做点什么 + try {//确保服务器正确返回Json + if(response.data.errors.length > 0){ + console.error(response.data.errors) + } + }catch (e){ + response.data = {errors: [{message: '服务器错误'}]}; + } + return response; +}, function (error) { + // 对响应错误做点什么,保准化返回结果 + const rsp = {errors: []}; + if (!error.response) { + rsp.errors.push({message: error.message}); + } else { + switch (error.response.status) { + case 401: + rsp.errors.push({message: "未授权,请登录(401)"}); + break + case 403: + rsp.errors.push({message: "拒绝访问(403)"}); + break + case 404: + rsp.errors.push({message: "请求地址错误(404)"}); + break + case 408: + rsp.errors.push({message: "请求超时(408)"}); + break + case 500: + rsp.errors.push({message: "服务器内部错误(500)"}); + break + case 501: + rsp.errors.push({message: "服务未实现(501)"}); + break + default: + rsp.errors.push({message: "请求错误(" + error.response.status + ")"}); + break + } + } + return Promise.reject(rsp); +}); +let jsonRequest = function (config) { + return instance.request({ + params: { + method: config.method + }, + url: '${contextPath?default("")}/ajax', + headers: {'Content-Type': 'text/plain'}, + data: config.data + }).then(function (response) { + return Promise.resolve(response.data); + }, function (response) { + return Promise.resolve(response); + }) +}; +let fileRequest = function (config) { + return instance.request({ + url: '${contextPath?default("")}/upload', + data: config.data, + headers: {'Content-Type': 'multipart/form-data'}, + onUploadProgress: function (progressEvent) { + var complete = (progressEvent.loaded / progressEvent.total * 100 | 0) + '%' + nav.tip.show("上传中(" + complete + ")") + } + }).then(function (response) { + return Promise.resolve(response.data); + }, function (response) { + return Promise.resolve(response); + }) +}; +let ajax = { + example: function (data) { + return jsonRequest({ + method: "ajax.example.example", + data: data + }) + }, + fileUpload: function (file) { + var fd = new FormData(); + fd.append("file", file); + return fileRequest({ + data: fd + }) + }, +<#list modules as db> +<#list db.tables as table> +<#if table.getCreate()> + ${table.getFName()}Create: function (data) { + return jsonRequest({ + method:"ajax.${db.moduleName}.${table.getLName()}.create", + data: JSON.stringify(data), + }) + }, + +<#if table.getDelete()> + ${table.getFName()}Delete: function (data) { + return jsonRequest({ + method:"ajax.${db.moduleName}.${table.getLName()}.delete", + data: JSON.stringify(data), + }) + }, + +<#if table.getUpdate()> + ${table.getFName()}Update: function (data) { + return jsonRequest({ + method:"ajax.${db.moduleName}.${table.getLName()}.update", + data: JSON.stringify(data), + }) + }, + +<#if table.getFind()> + ${table.getFName()}Find: function (data) { + return jsonRequest({ + method:"ajax.${db.moduleName}.${table.getLName()}.find", + data: JSON.stringify(data), + }) + }, + +<#if table.getGet()> + ${table.getFName()}Get: function(data) { + return jsonRequest({ + method:"ajax.${db.moduleName}.${table.getLName()}.get", + data: JSON.stringify(data), + }) + }, + +<#if table.getSearch()> + ${table.getFName()}Search: function (data) { + return jsonRequest({ + method:"ajax.${db.moduleName}.${table.getLName()}.search", + data: JSON.stringify(data), + }) + }, + +<#if table.getGetAll()> + ${table.getFName()}GetAll: function (data) { + return jsonRequest({ + method:"ajax.${db.moduleName}.${table.getLName()}.get.all", + data: JSON.stringify(data), + }) + }, + + + +} + +export default ajax \ No newline at end of file