Skip to content

Commit 7a9be09

Browse files
committed
1.优化初始化加载插件信息
1 parent 393ffca commit 7a9be09

7 files changed

Lines changed: 25 additions & 37 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
logs/
77
target/
88
libs/
9+
devLibs
910

1011
system_plugin_list.json
1112
RUNNING_PID

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

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.xwintop.xJavaFxTool.event.AppEvents;
55
import com.xwintop.xJavaFxTool.event.PluginEvent;
66
import com.xwintop.xJavaFxTool.model.PluginJarInfo;
7-
import com.xwintop.xJavaFxTool.plugin.PluginClassLoader;
87
import com.xwintop.xJavaFxTool.plugin.PluginManager;
98
import com.xwintop.xJavaFxTool.plugin.PluginParser;
109
import com.xwintop.xJavaFxTool.services.index.PluginManageService;
@@ -60,8 +59,6 @@ public void initialize(URL location, ResourceBundle resources) {
6059
}
6160

6261
private void initView() {
63-
addLocalPluginButton.setVisible(Boolean.parseBoolean(System.getProperty("localPluginEnabled", "false")));
64-
6562
JavaFxViewUtil.setTableColumnMapValueFactory(nameTableColumn, "nameTableColumn");
6663
JavaFxViewUtil.setTableColumnMapValueFactory(synopsisTableColumn, "synopsisTableColumn");
6764
JavaFxViewUtil.setTableColumnMapValueFactory(versionTableColumn, "versionTableColumn");
@@ -121,14 +118,11 @@ private void afterDownload(Map<String, String> dataRow, PluginJarInfo pluginJarI
121118
}
122119
PluginManager.getInstance().getPluginList().remove(pluginJarInfoOld);
123120
PluginManager.getInstance().getPluginList().add(pluginJarInfo);
124-
PluginManager.getInstance().saveToFile();
125121
TooltipUtil.showToast("插件 " + dataRow.get("nameTableColumn") + " 下载完成");
126-
PluginClassLoader tempClassLoader = PluginClassLoader.create(pluginJarInfo.getFile());
127-
PluginParser.parse(pluginJarInfo.getFile(), pluginJarInfo, tempClassLoader);
128-
122+
PluginParser.parse(pluginJarInfo.getFile(), pluginJarInfo);
123+
PluginManager.getInstance().saveToFile();
129124
dataRow.put("isEnableTableColumn", "true");
130125
dataRow.put("isDownloadTableColumn", "已下载");
131-
132126
pluginDataTableView.refresh();
133127
AppEvents.fire(new PluginEvent(PluginEvent.PLUGIN_DOWNLOADED, pluginJarInfo));
134128
} catch (IOException e) {
@@ -163,15 +157,4 @@ private void initService() {
163157
public void searchPlugin() {
164158
pluginManageService.searchPlugin(selectPluginTextField.getText());
165159
}
166-
167-
public void addLocalPlugin() {
168-
// File jarFile = FileChooserUtil.chooseFile(new ExtensionFilter("打包插件(*.jar)", "*.jar"));
169-
// if (jarFile != null) {
170-
// AddPluginResult result = PluginManager.getInstance().addPluginJar(jarFile);
171-
// if (result.isNewPlugin()) {
172-
// pluginManageService.addDataRow(result.getPluginJarInfo());
173-
// }
174-
// AppEvents.fire(new PluginEvent(PluginEvent.PLUGIN_DOWNLOADED, result.getPluginJarInfo()));
175-
// }
176-
}
177160
}

src/main/java/com/xwintop/xJavaFxTool/plugin/PluginManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public void loadLocalPlugins() {
100100
File pluginFile = plugin.getFile();
101101
if (pluginFile.exists()) {
102102
try {
103-
PluginParser.parse(pluginFile, plugin);
103+
PluginParser.initParse(pluginFile, plugin);
104104
} catch (Exception e) {
105105
log.error("解析失败", e);
106106
}

src/main/java/com/xwintop/xJavaFxTool/plugin/PluginParser.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,27 @@ public static void parse(File pluginFile, PluginJarInfo pluginJarInfo, ClassLoad
9090
}
9191
}
9292

93+
//简单解析插件信息
94+
public static void initParse(File pluginFile, PluginJarInfo pluginJarInfo) {
95+
try (JarFile jarFile = new JarFile(pluginFile)) {
96+
JarEntry entry = jarFile.getJarEntry(ENTRY_NAME);
97+
if (entry == null) {
98+
return;
99+
}
100+
Element root = createRootElement(jarFile, entry);
101+
Element pluginElement = selectSingleElement(root, "/root/ToolFxmlLoaderConfiguration[not(@isMenu)]");
102+
String title = getTitleFromResourceBundle(pluginFile, null, pluginElement, pluginJarInfo.getBundleName());
103+
pluginJarInfo.setTitle(title);
104+
if (StringUtils.isNotBlank(pluginJarInfo.getIconPath())) {
105+
Image iconImage = new Image(jarFile.getInputStream(jarFile.getJarEntry(StringUtils.removeStart(pluginJarInfo.getIconPath(),"/"))));
106+
pluginJarInfo.setIconImage(iconImage);
107+
}
108+
pluginJarInfo.setName(StringUtils.defaultString(pluginJarInfo.getName(), title));
109+
} catch (IOException | DocumentException e) {
110+
throw new AppException(e);
111+
}
112+
}
113+
93114
private static String getTitleFromResourceBundle(File pluginFile, ClassLoader classLoader, Element pluginElement, String bundleName) {
94115
String titleResourceBundleKey = getChildNodeText(pluginElement, "title");
95116
ClassLoader tmpClassLoader = classLoader == null ? PluginClassLoader.create(pluginFile) : classLoader;

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -149,19 +149,6 @@ private boolean isPluginDataMatch(Map<String, String> map, String keyword) {
149149
);
150150
}
151151

152-
/**
153-
* 判断插件是否启用
154-
*/
155-
public static boolean isPluginEnabled(String fileName) {
156-
String jarName = StringUtils.substringBeforeLast(fileName, "-");
157-
PluginJarInfo pluginJarInfo = PluginManager.getInstance().getPlugin(jarName);
158-
if (pluginJarInfo == null) {
159-
return false;
160-
}
161-
Boolean isEnable = pluginJarInfo.getIsEnable();
162-
return isEnable != null && isEnable;
163-
}
164-
165152
public void loadServerPlugins() {
166153
try {
167154
String json = HttpUtil.get(SERVER_PLUGINS_URL);

src/main/java/com/xwintop/xJavaFxTool/view/index/PluginManageView.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,6 @@ public abstract class PluginManageView implements Initializable {
2727
@FXML
2828
protected Button selectPluginButton;
2929

30-
@FXML
31-
protected Button addLocalPluginButton;
32-
3330
@FXML
3431
protected TableView<Map<String, String>> pluginDataTableView;
3532

src/main/resources/com/xwintop/xJavaFxTool/fxmlView/index/PluginManage.fxml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
<Label text="插件名:" />
1717
<TextField fx:id="selectPluginTextField" promptText="输入插件相关内容" />
1818
<Button fx:id="selectPluginButton" onAction="#searchPlugin" text="查找" />
19-
<Button fx:id="addLocalPluginButton" onAction="#addLocalPlugin" text="打开本地插件..." />
2019
<padding>
2120
<Insets bottom="10.0" />
2221
</padding>

0 commit comments

Comments
 (0)