66import com .alibaba .fastjson .JSONObject ;
77import com .xwintop .xJavaFxTool .controller .index .PluginManageController ;
88import com .xwintop .xJavaFxTool .model .PluginJarInfo ;
9- import com .xwintop .xJavaFxTool .utils .XJavaFxSystemUtil ;
9+ import com .xwintop .xJavaFxTool .utils .ConfigureUtil ;
1010import com .xwintop .xcore .util .javafx .TooltipUtil ;
1111import lombok .Getter ;
1212import lombok .Setter ;
1313import lombok .extern .slf4j .Slf4j ;
14- import okhttp3 .OkHttpClient ;
14+ import org .apache .commons .io .FileUtils ;
15+ import org .apache .commons .lang3 .StringUtils ;
1516
1617import java .io .File ;
1718import java .util .HashMap ;
19+ import java .util .List ;
1820import java .util .Map ;
1921
2022/**
2931@ Slf4j
3032public class PluginManageService {
3133 private PluginManageController pluginManageController ;
32- private OkHttpClient client = new OkHttpClient ();
34+ public final static Map <String , PluginJarInfo > PLUGIN_JAR_INFO_MAP = new HashMap <>();
35+ private JSONArray jsonArray = null ;
3336
3437 public PluginManageService (PluginManageController pluginManageController ) {
3538 this .pluginManageController = pluginManageController ;
3639 }
3740
3841 public void getPluginList () {
3942 try {
40- // String jsonString = HttpUtil.get("https://xwintop.gitee.io/xjavafxtool-plugin/plugin-list.json");
41- String jsonString = "[{\" name\" :\" Zookeeper工具\" ,\" synopsis\" :\" Zookeeper工具(方便对zookeeper的一系列操作,包括新增、修改、删除(包括子文件)、重命名、复制、添加变更通知)\" ,\" version\" :\" 0.0.1\" ,\" downloadUrl\" :\" https://xwintop.gitee.io/xjavafxtool-plugin/plugin-libs/x-ZookeeperTool-0.0.1.jar\" }]" ;
42- JSONArray jsonArray = JSON .parseArray (jsonString );
43+ String jsonString = HttpUtil .get ("https://xwintop.gitee.io/xjavafxtool-plugin/plugin-list.json" );
44+ // String jsonString = "[{\"name\":\"Zookeeper工具\",\"synopsis\":\"Zookeeper工具(方便对zookeeper的一系列操作,包括新增、修改、删除(包括子文件)、重命名、复制、添加变更通知)\",\"version\":\"0.0.1\",\"jarName\": \"x-ZookeeperTool\",\"versionNumber\": 1 ,\"downloadUrl\":\"https://xwintop.gitee.io/xjavafxtool-plugin/plugin-libs/x-ZookeeperTool-0.0.1.jar\"}]";
45+ jsonArray = JSON .parseArray (jsonString );
4346 for (Object json : jsonArray ) {
44- JSONObject data = (JSONObject ) json ;
45- PluginJarInfo pluginJarInfo = XJavaFxSystemUtil .pluginJarInfoMap .get (data .getString ("jarName" ));
46- Map <String , String > dataRow = new HashMap <String , String >();
47- dataRow .put ("nameTableColumn" , data .getString ("name" ));
48- dataRow .put ("synopsisTableColumn" , data .getString ("synopsis" ));
49- dataRow .put ("versionTableColumn" , data .getString ("version" ));
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" ));
62- dataRow .put ("downloadUrl" , data .getString ("downloadUrl" ));
63- dataRow .put ("versionNumber" , data .getString ("versionNumber" ));
64- pluginManageController .getPluginDataTableData ().add (dataRow );
47+ addDataRow ((JSONObject ) json );
6548 }
6649 } catch (Exception e ) {
6750 log .error ("获取列表失败:" , e );
6851 TooltipUtil .showToast ("获取列表失败:" + e .getMessage ());
6952 }
7053 }
7154
55+ private void addDataRow (JSONObject data ) {
56+ PluginJarInfo pluginJarInfo = PLUGIN_JAR_INFO_MAP .get (data .getString ("jarName" ));
57+ Map <String , String > dataRow = new HashMap <String , String >();
58+ dataRow .put ("nameTableColumn" , data .getString ("name" ));
59+ dataRow .put ("synopsisTableColumn" , data .getString ("synopsis" ));
60+ dataRow .put ("versionTableColumn" , data .getString ("version" ));
61+ if (pluginJarInfo == null ) {
62+ dataRow .put ("isDownloadTableColumn" , "下载" );
63+ dataRow .put ("isEnableTableColumn" , "false" );
64+ } else {
65+ if (Integer .parseInt (data .getString ("versionNumber" )) > pluginJarInfo .getVersionNumber ()) {
66+ dataRow .put ("isDownloadTableColumn" , "更新" );
67+ } else {
68+ dataRow .put ("isDownloadTableColumn" , "已下载" );
69+ }
70+ dataRow .put ("isEnableTableColumn" , pluginJarInfo .getIsEnable ().toString ());
71+ }
72+ dataRow .put ("jarName" , data .getString ("jarName" ));
73+ dataRow .put ("downloadUrl" , data .getString ("downloadUrl" ));
74+ dataRow .put ("versionNumber" , data .getString ("versionNumber" ));
75+ pluginManageController .getPluginDataTableData ().add (dataRow );
76+ }
77+
7278 public void downloadPluginJar (Map <String , String > dataRow ) throws Exception {
7379 PluginJarInfo pluginJarInfo = new PluginJarInfo ();
7480 pluginJarInfo .setName (dataRow .get ("nameTableColumn" ));
@@ -82,6 +88,66 @@ public void downloadPluginJar(Map<String, String> dataRow) throws Exception {
8288// File file = new File("libs/", StringUtils.substring(downloadUrl, 56, downloadUrl.length()));
8389 File file = new File ("libs/" , pluginJarInfo .getJarName () + "-" + pluginJarInfo .getVersion () + ".jar" );
8490 HttpUtil .downloadFile (pluginJarInfo .getDownloadUrl (), file );
85- XJavaFxSystemUtil .pluginJarInfoMap .put (pluginJarInfo .getJarName (), pluginJarInfo );
91+ PLUGIN_JAR_INFO_MAP .put (pluginJarInfo .getJarName (), pluginJarInfo );
92+ PluginManageService .savePluginJarList ();
93+ }
94+
95+ public void setIsEnableTableColumn (Integer index ) {
96+ Map <String , String > dataRow = pluginManageController .getPluginDataTableData ().get (index );
97+ String jarName = dataRow .get ("jarName" );
98+ PluginJarInfo pluginJarInfo = PLUGIN_JAR_INFO_MAP .get (jarName );
99+ if (pluginJarInfo != null ) {
100+ pluginJarInfo .setIsEnable (Boolean .parseBoolean (dataRow .get ("isEnableTableColumn" )));
101+ }
102+ }
103+
104+ public void selectPluginAction () {
105+ pluginManageController .getPluginDataTableData ().clear ();
106+ String selectText = pluginManageController .getSelectPluginTextField ().getText ();
107+ for (Object json : jsonArray ) {
108+ JSONObject data = (JSONObject ) json ;
109+ if (StringUtils .containsIgnoreCase (data .toString (),selectText )) {
110+ addDataRow (data );
111+ }
112+ }
113+ }
114+
115+ /*加载插件列表*/
116+ public static void reloadPluginJarList () {
117+ File systemPluginListfile = ConfigureUtil .getConfigureFile ("system_plugin_list.json" );
118+ if (systemPluginListfile .exists ()) {
119+ try {
120+ List <PluginJarInfo > pluginJarInfoList = JSON .parseArray (FileUtils .readFileToString (systemPluginListfile , "utf-8" ), PluginJarInfo .class );
121+ for (PluginJarInfo pluginJarInfo : pluginJarInfoList ) {
122+ PLUGIN_JAR_INFO_MAP .put (pluginJarInfo .getJarName (), pluginJarInfo );
123+ }
124+ } catch (Exception e ) {
125+ log .error ("读取插件jar包配置文件失败:" , e );
126+ }
127+ }
128+ }
129+
130+ /*保存插件列表*/
131+ public static void savePluginJarList () {
132+ File systemPluginListfile = ConfigureUtil .getConfigureFile ("system_plugin_list.json" );
133+ String systemPluginListString = JSON .toJSONString (PLUGIN_JAR_INFO_MAP .values ());
134+ try {
135+ FileUtils .writeStringToFile (systemPluginListfile , systemPluginListString , "utf-8" );
136+ } catch (Exception e ) {
137+ log .error ("保存插件jar包配置文件失败:" , e );
138+ }
139+ }
140+
141+
142+ /**
143+ * 判断插件是否启用
144+ */
145+ public static boolean getPluginJarIsEnable (String fileName ) {
146+ String jarName = StringUtils .substring (fileName , 0 , StringUtils .lastIndexOf (fileName , "-" ));
147+ PluginJarInfo pluginJarInfo = PLUGIN_JAR_INFO_MAP .get (jarName );
148+ if (pluginJarInfo != null && !pluginJarInfo .getIsEnable ()) {
149+ return false ;
150+ }
151+ return true ;
86152 }
87153}
0 commit comments