Skip to content

Commit 0aa7f62

Browse files
committed
添加插件信息
1 parent 4843244 commit 0aa7f62

5 files changed

Lines changed: 78 additions & 29 deletions

File tree

src/main/java/com/xwintop/xJavaFxTool/controller/IndexController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ public void initialize(URL location, ResourceBundle resources) {
5959
initView();
6060
initEvent();
6161
initService();
62-
new Thread(() -> {//启动SpringBoot
62+
// new Thread(() -> {//启动SpringBoot
6363
// SpringApplication.run(Main.class,new String[0]);
64-
}).start();
64+
// }).start();
6565
addNodepadAction(null);
6666
}
6767

src/main/java/com/xwintop/xJavaFxTool/controller/index/PluginManageController.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ private void initView() {
5353
JavaFxViewUtil.setTableColumnButonFactory(downloadTableColumn, "下载", (me, index) -> {
5454
try {
5555
Map<String, String> dataRow = pluginDataTableData.get(index);
56-
String downloadUrl = dataRow.get("downloadUrl");
57-
pluginManageService.downloadPluginJar(downloadUrl);
56+
pluginManageService.downloadPluginJar(dataRow);
5857
TooltipUtil.showToast("下载插件完成");
5958
} catch (Exception e) {
6059
log.error("下载插件失败:", e);
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.xwintop.xJavaFxTool.model;
2+
3+
import lombok.Data;
4+
5+
/**
6+
* @ClassName: PluginJarInfo
7+
* @Description: 插件信息
8+
* @author: xufeng
9+
* @date: 2020/1/20 17:28
10+
*/
11+
12+
@Data
13+
public class PluginJarInfo {
14+
private String name;//名称
15+
private String synopsis;//简介
16+
private String jarName;//jar包名称
17+
private String version;//版本名称
18+
private Integer versionNumber;//版本号(用来判断更新)
19+
private String downloadUrl;//下载地址
20+
private Boolean isDownload;//是否下载
21+
private Boolean isEnable;//是否启用
22+
}

src/main/java/com/xwintop/xJavaFxTool/services/index/PluginManageService.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
import com.alibaba.fastjson.JSONArray;
66
import com.alibaba.fastjson.JSONObject;
77
import com.xwintop.xJavaFxTool.controller.index.PluginManageController;
8+
import com.xwintop.xJavaFxTool.model.PluginJarInfo;
9+
import com.xwintop.xJavaFxTool.utils.XJavaFxSystemUtil;
810
import com.xwintop.xcore.util.javafx.TooltipUtil;
911
import lombok.Getter;
1012
import lombok.Setter;
1113
import lombok.extern.slf4j.Slf4j;
1214
import okhttp3.OkHttpClient;
13-
import org.apache.commons.lang3.StringUtils;
1415

1516
import java.io.File;
1617
import java.util.HashMap;
@@ -41,13 +42,25 @@ public void getPluginList() {
4142
JSONArray jsonArray = JSON.parseArray(jsonString);
4243
for (Object json : jsonArray) {
4344
JSONObject data = (JSONObject) json;
45+
PluginJarInfo pluginJarInfo = XJavaFxSystemUtil.pluginJarInfoMap.get(data.getString("jarName"));
4446
Map<String, String> dataRow = new HashMap<String, String>();
4547
dataRow.put("nameTableColumn", data.getString("name"));
4648
dataRow.put("synopsisTableColumn", data.getString("synopsis"));
4749
dataRow.put("versionTableColumn", data.getString("version"));
48-
dataRow.put("isDownloadTableColumn", "否");
49-
dataRow.put("isEnableTableColumn", "false");
50+
if (pluginJarInfo == null) {
51+
dataRow.put("isDownloadTableColumn", "否");
52+
dataRow.put("isEnableTableColumn", "false");
53+
} else {
54+
if (Integer.parseInt(data.getString("versionNumber")) > pluginJarInfo.getVersionNumber()) {
55+
dataRow.put("isDownloadTableColumn", "更新");
56+
} else {
57+
dataRow.put("isDownloadTableColumn", "是");
58+
}
59+
dataRow.put("isEnableTableColumn", pluginJarInfo.getIsDownload().toString());
60+
}
61+
dataRow.put("jarName", data.getString("jarName"));
5062
dataRow.put("downloadUrl", data.getString("downloadUrl"));
63+
dataRow.put("versionNumber", data.getString("versionNumber"));
5164
pluginManageController.getPluginDataTableData().add(dataRow);
5265
}
5366
} catch (Exception e) {
@@ -56,8 +69,19 @@ public void getPluginList() {
5669
}
5770
}
5871

59-
public void downloadPluginJar(String downloadUrl) throws Exception {
60-
File file = new File("libs/", StringUtils.substring(downloadUrl, 56, downloadUrl.length()));
61-
HttpUtil.downloadFile(downloadUrl, file);
72+
public void downloadPluginJar(Map<String, String> dataRow) throws Exception {
73+
PluginJarInfo pluginJarInfo = new PluginJarInfo();
74+
pluginJarInfo.setName(dataRow.get("nameTableColumn"));
75+
pluginJarInfo.setSynopsis(dataRow.get("synopsisTableColumn"));
76+
pluginJarInfo.setVersion(dataRow.get("versionTableColumn"));
77+
pluginJarInfo.setVersionNumber(Integer.parseInt(dataRow.get("versionNumber")));
78+
pluginJarInfo.setDownloadUrl(dataRow.get("downloadUrl"));
79+
pluginJarInfo.setJarName(dataRow.get("jarName"));
80+
pluginJarInfo.setIsDownload(true);
81+
pluginJarInfo.setIsEnable(true);
82+
// File file = new File("libs/", StringUtils.substring(downloadUrl, 56, downloadUrl.length()));
83+
File file = new File("libs/", pluginJarInfo.getJarName() + "-" + pluginJarInfo.getVersion() + ".jar");
84+
HttpUtil.downloadFile(pluginJarInfo.getDownloadUrl(), file);
85+
XJavaFxSystemUtil.pluginJarInfoMap.put(pluginJarInfo.getJarName(), pluginJarInfo);
6286
}
6387
}

src/main/java/com/xwintop/xJavaFxTool/utils/XJavaFxSystemUtil.java

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package com.xwintop.xJavaFxTool.utils;
22

3+
import com.alibaba.fastjson.JSON;
4+
import com.xwintop.xJavaFxTool.model.PluginJarInfo;
35
import com.xwintop.xJavaFxTool.model.ToolFxmlLoaderConfiguration;
6+
import lombok.Getter;
7+
import lombok.Setter;
48
import lombok.extern.slf4j.Slf4j;
59
import org.apache.commons.beanutils.BeanUtils;
610
import org.apache.commons.configuration.PropertiesConfiguration;
711
import org.apache.commons.configuration.XMLConfiguration;
812
import org.apache.commons.configuration.tree.ConfigurationNode;
13+
import org.apache.commons.io.FileUtils;
914
import org.apache.commons.lang3.StringUtils;
1015
import org.dom4j.Document;
1116
import org.dom4j.Element;
@@ -21,9 +26,8 @@
2126
import java.lang.reflect.Method;
2227
import java.net.URL;
2328
import java.net.URLClassLoader;
24-
import java.util.ArrayList;
2529
import java.util.List;
26-
import java.util.Locale;
30+
import java.util.*;
2731
import java.util.jar.JarEntry;
2832
import java.util.jar.JarFile;
2933

@@ -35,6 +39,8 @@
3539
*/
3640
@Slf4j
3741
public class XJavaFxSystemUtil {
42+
public final static Map<String, PluginJarInfo> pluginJarInfoMap = new HashMap<>();
43+
3844
/**
3945
* @Title: initSystemLocal
4046
* @Description: 初始化本地语言
@@ -143,14 +149,21 @@ public boolean accept(File dir, String name) {
143149
* @Description: 添加libs中jar包到系统中
144150
*/
145151
public static void addJarByLibs() {
152+
File systemPluginListfile = ConfigureUtil.getConfigureFile("system_plugin_list.json");
146153
try {
154+
if (systemPluginListfile.exists()) {
155+
List<PluginJarInfo> pluginJarInfoList = JSON.parseArray(FileUtils.readFileToString(systemPluginListfile, "utf-8"), PluginJarInfo.class);
156+
for (PluginJarInfo pluginJarInfo : pluginJarInfoList) {
157+
pluginJarInfoMap.put(pluginJarInfo.getJarName(), pluginJarInfo);
158+
}
159+
}
147160
// 系统类库路径
148161
File libPath = new File("libs/");
149162
// 获取所有的.jar和.zip文件
150163
File[] jarFiles = libPath.listFiles(new FilenameFilter() {
151164
@Override
152165
public boolean accept(File dir, String name) {
153-
return name.endsWith(".jar") || name.endsWith(".zip");
166+
return name.endsWith(".jar");
154167
}
155168
});
156169
if (jarFiles != null) {
@@ -165,6 +178,12 @@ public boolean accept(File dir, String name) {
165178
// 获取系统类加载器
166179
URLClassLoader classLoader = (URLClassLoader) ClassLoader.getSystemClassLoader();
167180
for (File file : jarFiles) {
181+
String fileName = file.getName();
182+
String jarName = StringUtils.substring(fileName, 0, StringUtils.lastIndexOf(fileName, "-"));
183+
PluginJarInfo pluginJarInfo = pluginJarInfoMap.get(jarName);
184+
if (pluginJarInfo != null && !pluginJarInfo.getIsEnable()) {
185+
continue;
186+
}
168187
URL url = file.toURI().toURL();
169188
try {
170189
method.invoke(classLoader, url);
@@ -177,7 +196,7 @@ public boolean accept(File dir, String name) {
177196
}
178197
}
179198
} catch (Exception e) {
180-
log.error("添加libs中jar包到系统中", e);
199+
log.error("添加libs中jar包到系统中异常:", e);
181200
}
182201
}
183202

@@ -191,20 +210,5 @@ public static void openDirectory(String directoryPath) {
191210
} catch (IOException e) {
192211
log.error("打开目录异常:" + directoryPath, e);
193212
}
194-
// Runtime runtime = null;
195-
// try {
196-
// runtime = Runtime.getRuntime();
197-
// if (File.separatorChar == '\\') {
198-
// runtime.exec("cmd /c start explorer " + directoryPath);
199-
// } else {
200-
// runtime.exec("nautilus " + directoryPath);
201-
// }
202-
// } catch (IOException ex) {
203-
// log.error("打开目录异常:" + ex.getMessage());
204-
// } finally {
205-
// if (null != runtime) {
206-
// runtime.runFinalization();
207-
// }
208-
// }
209213
}
210214
}

0 commit comments

Comments
 (0)