From 7f9abdb73562166c33cbd1aba61e40fc0a8d7392 Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 26 May 2017 17:02:34 +0800 Subject: [PATCH 1/7] =?UTF-8?q?REPORT-2354=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E6=93=8D=E4=BD=9C=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/extra/PluginWebBridge.java | 78 ++-------- .../com/fr/design/extra/WebViewDlgHelper.java | 4 +- .../extra/exe/GetLoginInfoExecutor.java | 4 +- .../exe/GetPluginCategoriesExecutor.java | 5 +- .../extra/exe/GetPluginFromStoreExecutor.java | 4 +- .../extra/exe/InstallFromDiskExecutor.java | 64 ++++++-- .../extra/exe/InstallOnlineExecutor.java | 138 +++++++++-------- .../extra/exe/ModifyStatusExecutor.java | 51 +++++-- .../extra/exe/ReadUpdateOnlineExecutor.java | 12 +- .../design/extra/exe/UninstallExecutor.java | 62 ++++---- .../extra/exe/UpdateFromDiskExecutor.java | 46 +++++- .../extra/exe/UpdateOnlineExecutor.java | 139 +++++++++--------- 12 files changed, 333 insertions(+), 274 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index f1759f016..8df0f7494 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -9,10 +9,10 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.SiteCenter; -import com.fr.plugin.Plugin; import com.fr.plugin.PluginLicense; import com.fr.plugin.PluginLicenseManager; -import com.fr.plugin.PluginLoader; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.manage.PluginManager; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; import javafx.concurrent.Task; @@ -143,14 +143,16 @@ public class PluginWebBridge { /** * 从插件服务器上安装插件 * - * @param pluginID 插件的ID + * @param pluginInfo 插件的ID * @param callback 回调函数 */ - public void installPluginOnline(final String pluginID, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new InstallOnlineExecutor(pluginID)); + public void installPluginOnline(final String pluginInfo, final JSObject callback) { + Task task = new PluginTask<>(webEngine, callback, new InstallOnlineExecutor(pluginInfo)); new Thread(task).start(); } + + /** * 从磁盘上选择插件安装包进行安装 * @@ -164,13 +166,14 @@ public class PluginWebBridge { /** * 卸载当前选中的插件 * - * @param pluginIDs 插件集合 + * @param pluginInfo 插件信息 */ - public void uninstallPlugin(JSObject pluginIDs, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new UninstallExecutor(jsObjectToStringArray(pluginIDs))); + public void uninstallPlugin(final String pluginInfo, final boolean isForce, final JSObject callback) { + Task task = new PluginTask<>(webEngine, callback, new UninstallExecutor(pluginInfo, isForce)); new Thread(task).start(); } + /** * 从插件服务器上更新选中的插件 * @@ -266,8 +269,9 @@ public class PluginWebBridge { * * @return 已安装的插件组成的数组 */ - public Plugin[] getInstalledPlugins() { - return PluginLoader.getLoader().getInstalled(); + public PluginContext[] getInstalledPlugins() { + List plugins = PluginManager.getContexts(); + return plugins.toArray(new PluginContext[plugins.size()]); } @@ -439,60 +443,6 @@ public class PluginWebBridge { } } - /** - * 从硬盘升级 - * - * @param fileOnDisk 硬盘上的文件 - */ - public void updateFileFromDisk(File fileOnDisk) { - try { - Plugin plugin = PluginHelper.readPlugin(fileOnDisk); - if (plugin == null) { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Illegal_Plugin_Zip"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - return; - } - Plugin oldPlugin = PluginLoader.getLoader().getPluginById(plugin.getId()); - if (oldPlugin != null) { - // 说明安装了同ID的插件,再比较两个插件的版本 - if (PluginHelper.isNewThan(plugin, oldPlugin)) { - // 说明是新的插件,删除老的然后安装新的 - final String[] files = PluginHelper.uninstallPlugin(FRContext.getCurrentEnv(), oldPlugin); - PluginHelper.installPluginFromUnzippedTempDir(FRContext.getCurrentEnv(), plugin, new After() { - @Override - public void done() { - int rv = JOptionPane.showOptionDialog( - null, - Inter.getLocText("FR-Designer-Plugin_Update_Successful"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.YES_NO_OPTION, - JOptionPane.INFORMATION_MESSAGE, - null, - new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), - Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later") - }, - null - ); - - if (rv == JOptionPane.OK_OPTION) { - RestartHelper.restart(); - } - // 如果不是立即重启,就把要删除的文件存放起来 - if (rv == JOptionPane.CANCEL_OPTION || rv == JOptionPane.CLOSED_OPTION) { - RestartHelper.saveFilesWhichToDelete(files); - } - } - }); - } else { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Version_Is_Lower_Than_Current"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - } - } else { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Cannot_Update_Not_Install"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - } - } catch (Exception e1) { - JOptionPane.showMessageDialog(null, e1.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - } - } - /*-------------------------------登录部分的处理----------------------------------*/ diff --git a/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java b/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java index 481498fc8..8bb7cfc57 100644 --- a/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java +++ b/designer_base/src/com/fr/design/extra/WebViewDlgHelper.java @@ -133,7 +133,7 @@ public class WebViewDlgHelper { String username = DesignerEnvManager.getEnvManager().getBBSName(); String password = DesignerEnvManager.getEnvManager().getBBSPassword(); try { - PluginHelper.downloadPluginFile(scriptsId, username, password, new Process() { + PluginUtils.downloadShopScripts(scriptsId, username, password, new Process() { @Override public void process(Double integer) { } @@ -153,7 +153,7 @@ public class WebViewDlgHelper { try { if (get()) { - IOUtils.unzip(new File(StableUtils.pathJoin(PluginHelper.DOWNLOAD_PATH, PluginHelper.TEMP_FILE)), StableUtils.getInstallHome()); + IOUtils.unzip(new File(StableUtils.pathJoin(PluginConstants.DOWNLOAD_PATH, PluginConstants.TEMP_FILE)), StableUtils.getInstallHome()); int rv = JOptionPane.showOptionDialog( null, Inter.getLocText("FR-Designer-Plugin_Shop_Installed"), diff --git a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java index 91402c47c..f65dd1584 100644 --- a/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/GetLoginInfoExecutor.java @@ -2,6 +2,7 @@ package com.fr.design.extra.exe; import com.fr.design.DesignerEnvManager; import com.fr.design.extra.Process; +import com.fr.plugin.manage.bbs.BBSPluginLogin; import com.fr.stable.StringUtils; /** @@ -26,9 +27,10 @@ public class GetLoginInfoExecutor implements Executor { @Override public void run(Process process) { - String username = DesignerEnvManager.getEnvManager().getBBSName(); + String username = BBSPluginLogin.getInstance().getUserInfo().getUserName(); String inShowUsername = DesignerEnvManager.getEnvManager().getInShowBBsName(); if (StringUtils.isEmpty(username) && StringUtils.isEmpty(inShowUsername)) { + return; }else { result = StringUtils.isEmpty(inShowUsername) ? username : inShowUsername; } diff --git a/designer_base/src/com/fr/design/extra/exe/GetPluginCategoriesExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetPluginCategoriesExecutor.java index 92aa0bbe8..c90521316 100644 --- a/designer_base/src/com/fr/design/extra/exe/GetPluginCategoriesExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/GetPluginCategoriesExecutor.java @@ -1,6 +1,6 @@ package com.fr.design.extra.exe; -import com.fr.design.extra.PluginHelper; +import com.fr.design.extra.PluginConstants; import com.fr.design.extra.Process; import com.fr.general.SiteCenter; import com.fr.general.http.HttpClient; @@ -32,9 +32,8 @@ public class GetPluginCategoriesExecutor implements Executor { HttpClient httpClient = new HttpClient(url); result = httpClient.getResponseText(); } else { - result = PluginHelper.CONNECTION_404; + result = PluginConstants.CONNECTION_404; } - } } }; diff --git a/designer_base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java b/designer_base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java index 9bd7e2bbe..a276d386c 100644 --- a/designer_base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/GetPluginFromStoreExecutor.java @@ -1,6 +1,6 @@ package com.fr.design.extra.exe; -import com.fr.design.extra.PluginHelper; +import com.fr.design.extra.PluginConstants; import com.fr.design.extra.Process; import com.fr.general.FRLogger; import com.fr.general.SiteCenter; @@ -59,7 +59,7 @@ public class GetPluginFromStoreExecutor implements Executor { FRLogger.getLogger().error(e.getMessage()); } } else { - result = PluginHelper.CONNECTION_404; + result = PluginConstants.CONNECTION_404; } } } diff --git a/designer_base/src/com/fr/design/extra/exe/InstallFromDiskExecutor.java b/designer_base/src/com/fr/design/extra/exe/InstallFromDiskExecutor.java index da5222f96..5e7f5e2b8 100644 --- a/designer_base/src/com/fr/design/extra/exe/InstallFromDiskExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/InstallFromDiskExecutor.java @@ -1,12 +1,12 @@ package com.fr.design.extra.exe; -import com.fr.design.extra.After; -import com.fr.design.extra.PluginHelper; -import com.fr.design.extra.PluginWebBridge; import com.fr.design.extra.Process; import com.fr.general.FRLogger; import com.fr.general.Inter; -import com.fr.plugin.PluginVerifyException; +import com.fr.plugin.error.PluginErrorCode; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.control.PluginTaskResult; +import com.fr.plugin.manage.control.ProgressCallback; import javax.swing.*; import java.io.File; @@ -49,21 +49,55 @@ public class InstallFromDiskExecutor implements Executor { @Override public void run(Process process) { - try { - PluginHelper.installPluginFromDisk(new File(filePath), new After() { - @Override - public void done() { + PluginManager.getController().install(new File(filePath), new ProgressCallback() { + @Override + public void updateProgress(String description, double progress) { + } + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { FRLogger.getLogger().info("插件安装成功"); - PluginWebBridge.getHelper().showRestartMessage(Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else if(result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()){ + int rv = JOptionPane.showOptionDialog( + null, + Inter.getLocText("安装依赖"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + null, + null + ); + if (rv == JOptionPane.CANCEL_OPTION || rv == JOptionPane.CLOSED_OPTION) { + return; + } + installWithDepenndence(); + }else{ + FRLogger.getLogger().info("插件安装失败"); + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } - }); - } catch (PluginVerifyException e) { - JOptionPane.showMessageDialog(null, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - } catch (Exception e) { - FRLogger.getLogger().error(e.getMessage()); - } + } + }); } } }; } + + public void installWithDepenndence(){ + PluginManager.getController().install(new File(filePath), new ProgressCallback() { + @Override + public void updateProgress(String description, double progress) { + } + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info("插件安装成功"); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else{ + FRLogger.getLogger().info("插件安装失败"); + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } + }); + } } diff --git a/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java index 53fc738ad..2a95ec29a 100644 --- a/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java @@ -1,16 +1,16 @@ package com.fr.design.extra.exe; -import com.fr.base.FRContext; -import com.fr.design.DesignerEnvManager; -import com.fr.design.RestartHelper; -import com.fr.design.extra.After; import com.fr.design.extra.LoginCheckContext; -import com.fr.design.extra.PluginHelper; +import com.fr.design.extra.PluginUtils; import com.fr.design.extra.Process; +import com.fr.general.FRLogger; import com.fr.general.Inter; -import com.fr.plugin.PluginVerifyException; -import com.fr.plugin.dependence.PluginDependenceException; -import com.fr.stable.StringUtils; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.error.PluginErrorCode; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.bbs.BBSPluginLogin; +import com.fr.plugin.manage.control.PluginTaskResult; +import com.fr.plugin.manage.control.ProgressCallback; import javax.swing.*; @@ -19,10 +19,10 @@ import javax.swing.*; */ public class InstallOnlineExecutor implements Executor { - private String pluginID; + private String pluginInfo; - public InstallOnlineExecutor(String pluginID) { - this.pluginID = pluginID; + public InstallOnlineExecutor(String pluginInfo) { + this.pluginInfo = pluginInfo; } @Override @@ -36,69 +36,89 @@ public class InstallOnlineExecutor implements Executor { new Command() { @Override public String getExecuteMessage() { - return "正在下载插件:" + pluginID; + return "正在下载插件:" + pluginInfo.split("_")[0]; } @Override public void run(final Process process) { //下载插件 - if(StringUtils.isBlank(DesignerEnvManager.getEnvManager().getBBSName())){ + if (!BBSPluginLogin.getInstance().hasLogin()) { LoginCheckContext.fireLoginCheckListener(); } - if(StringUtils.isNotBlank(DesignerEnvManager.getEnvManager().getBBSName())) { - String username = DesignerEnvManager.getEnvManager().getBBSName(); - String password = DesignerEnvManager.getEnvManager().getBBSPassword(); - try { - PluginHelper.downloadPluginFile(pluginID, username, password, new Process() { - @Override - public void process(Double integer) { - process.process(Math.round(integer * 100) + "%"); - } - }); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - } - } - } - }, - new Command() { - @Override - public String getExecuteMessage() { - return "正在安装插件:" + pluginID; - } + PluginMarker pluginMarker = PluginUtils.createPluginMarker(pluginInfo); + if (BBSPluginLogin.getInstance().hasLogin()) { + PluginManager.getController().download(pluginMarker, new ProgressCallback() { + @Override + public void updateProgress(String description, double aProgress) { + process.process(Math.round(aProgress * 100) + "%"); + } - @Override - public void run(Process process) { - try { - PluginHelper.installPluginFromDisk(PluginHelper.getDownloadTempFile(), new After() { @Override - public void done() { - int rv = JOptionPane.showOptionDialog( - null, - Inter.getLocText("FR-Designer-Plugin_Install_Successful"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.YES_NO_OPTION, - JOptionPane.INFORMATION_MESSAGE, - null, - new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later")}, - null - ); - if (rv == JOptionPane.OK_OPTION) { - RestartHelper.restart(); + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + installPlugin(pluginMarker); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } }); - } catch (PluginVerifyException e) { - JOptionPane.showMessageDialog(null, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - } catch (PluginDependenceException e){ - JOptionPane.showMessageDialog(null, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); + } } } }; } + + public void installPlugin(PluginMarker pluginMarker) { + PluginManager.getController().install(pluginMarker, new ProgressCallback() { + @Override + public void updateProgress(String description, double progress) { + + } + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info("插件安装成功"); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { + int rv = JOptionPane.showOptionDialog( + null, + Inter.getLocText("安装依赖"), + Inter.getLocText("FR-Designer-Plugin_Warning"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + null, + null + ); + if (rv == JOptionPane.CANCEL_OPTION || rv == JOptionPane.CLOSED_OPTION) { + return; + } + installPluginWithDependence(pluginMarker); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } + }); + } + + public void installPluginWithDependence(PluginMarker pluginMarker) { + PluginManager.getController().install(pluginMarker, new ProgressCallback() { + @Override + public void updateProgress(String description, double progress) { + } + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info("插件安装成功"); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else { + FRLogger.getLogger().info("插件安装失败"); + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } + }); + } } diff --git a/designer_base/src/com/fr/design/extra/exe/ModifyStatusExecutor.java b/designer_base/src/com/fr/design/extra/exe/ModifyStatusExecutor.java index c544858dd..0f1c6405d 100644 --- a/designer_base/src/com/fr/design/extra/exe/ModifyStatusExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/ModifyStatusExecutor.java @@ -1,24 +1,28 @@ package com.fr.design.extra.exe; -import com.fr.base.FRContext; -import com.fr.design.extra.PluginWebBridge; +import com.fr.design.extra.PluginUtils; import com.fr.design.extra.Process; import com.fr.general.Inter; -import com.fr.plugin.Plugin; -import com.fr.plugin.PluginLoader; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.control.PluginTaskCallback; +import com.fr.plugin.manage.control.PluginTaskResult; import com.fr.stable.StringUtils; +import javax.swing.*; + /** * Created by richie on 16/3/19. */ public class ModifyStatusExecutor implements Executor { - private String pluginID; + private String pluginInfo; private boolean active; - private Plugin plugin; + private PluginContext plugin; - public ModifyStatusExecutor(String pluginID) { - this.pluginID = pluginID; + public ModifyStatusExecutor(String pluginInfo) { + this.pluginInfo = pluginInfo; } @Override @@ -37,14 +41,31 @@ public class ModifyStatusExecutor implements Executor { @Override public void run(Process process) { - plugin = PluginLoader.getLoader().getPluginById(pluginID); + PluginMarker pluginMarker = PluginUtils.createPluginMarker(pluginInfo); + plugin = PluginManager.getContext(pluginMarker); active = !plugin.isActive(); - plugin.setActive(active); - try { - FRContext.getCurrentEnv().writePlugin(plugin); - PluginWebBridge.getHelper().showRestartMessage(plugin.isActive() ? Inter.getLocText("FR-Designer-Plugin_Has_Been_Actived") : Inter.getLocText("FR-Designer-Plugin_Has_Been_Disabled")); - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage()); + if (active) { + PluginManager.getController().forbid(pluginMarker, new PluginTaskCallback() { + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Has_Been_Disabled")); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } + }); + } else { + PluginManager.getController().enable(pluginMarker, new PluginTaskCallback() { + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Has_Been_Actived")); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } + }); } } } diff --git a/designer_base/src/com/fr/design/extra/exe/ReadUpdateOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/ReadUpdateOnlineExecutor.java index c510a67cc..9bcfce699 100644 --- a/designer_base/src/com/fr/design/extra/exe/ReadUpdateOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/ReadUpdateOnlineExecutor.java @@ -1,10 +1,8 @@ package com.fr.design.extra.exe; -import com.fr.design.extra.PluginsReaderFromStore; +import com.fr.design.extra.PluginReaderForDesigner; import com.fr.design.extra.Process; import com.fr.general.FRLogger; - -import com.fr.plugin.Plugin; import com.fr.stable.StringUtils; import org.json.JSONArray; import org.json.JSONObject; @@ -13,7 +11,7 @@ import org.json.JSONObject; * Created by vito on 16/4/19. */ public class ReadUpdateOnlineExecutor implements Executor { - private Plugin[] plugins; + private String[] plugins; private String result; @Override @@ -33,11 +31,11 @@ public class ReadUpdateOnlineExecutor implements Executor { @Override public void run(Process process) { try { - plugins = PluginsReaderFromStore.readPluginsForUpdate(); + plugins = PluginReaderForDesigner.readPluginsForUpdate(); JSONArray jsonArray = new JSONArray(); - for (Plugin plugin : plugins) { + for (String plugin : plugins) { JSONObject jsonObject = new JSONObject(); - jsonObject.put("pluginid", plugin.getId()); + jsonObject.put("pluginid", plugin); jsonArray.put(jsonObject); } result = jsonArray.toString(); diff --git a/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java b/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java index d8fc7d9ec..9eaa49ac9 100644 --- a/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java @@ -1,12 +1,13 @@ package com.fr.design.extra.exe; -import com.fr.base.FRContext; -import com.fr.design.RestartHelper; -import com.fr.design.extra.PluginHelper; +import com.fr.design.extra.PluginUtils; import com.fr.design.extra.Process; +import com.fr.general.FRLogger; import com.fr.general.Inter; -import com.fr.plugin.Plugin; -import com.fr.plugin.PluginLoader; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.control.PluginTaskCallback; +import com.fr.plugin.manage.control.PluginTaskResult; import javax.swing.*; @@ -15,11 +16,13 @@ import javax.swing.*; */ public class UninstallExecutor implements Executor { - private String[] pluginIDs; + private String pluginInfo; + private boolean isForce; private String result = "undo"; - public UninstallExecutor(String[] pluginIDs) { - this.pluginIDs = pluginIDs; + public UninstallExecutor(String pluginInfo, boolean isForce) { + this.pluginInfo = pluginInfo; + this.isForce = isForce; } @Override @@ -38,35 +41,20 @@ public class UninstallExecutor implements Executor { @Override public void run(Process process) { - int rv = JOptionPane.showOptionDialog( - null, - Inter.getLocText("FR-Designer-Plugin_Will_Be_Delete"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.YES_NO_CANCEL_OPTION, - JOptionPane.INFORMATION_MESSAGE, - null, - new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), - Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later"), - Inter.getLocText("FR-Designer-Basic_Cancel") - }, - null - ); - if (rv == JOptionPane.CANCEL_OPTION || rv == JOptionPane.CLOSED_OPTION) { - return; - } - for (String pluginID : pluginIDs) { - try { - Plugin plugin = PluginLoader.getLoader().getPluginById(pluginID); - String[] filesToBeDelete = PluginHelper.uninstallPlugin(FRContext.getCurrentEnv(), plugin); - RestartHelper.saveFilesWhichToDelete(filesToBeDelete); - } catch (Exception e) { - JOptionPane.showMessageDialog(null, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - } - } - result = "done"; - if (rv == JOptionPane.OK_OPTION) { - RestartHelper.restart(); - } + PluginMarker pluginMarker = PluginUtils.createPluginMarker(pluginInfo); + PluginManager.getController().uninstall(pluginMarker, isForce, new PluginTaskCallback() { + @Override + public void done(PluginTaskResult pluginTaskResult) { + if (pluginTaskResult.isSuccess()) { + result = "done"; + FRLogger.getLogger().info("删除成功"); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else { + FRLogger.getLogger().info("删除失败"); + JOptionPane.showMessageDialog(null, pluginTaskResult.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } + }); } } }; diff --git a/designer_base/src/com/fr/design/extra/exe/UpdateFromDiskExecutor.java b/designer_base/src/com/fr/design/extra/exe/UpdateFromDiskExecutor.java index 5c8c6e361..c415127f7 100644 --- a/designer_base/src/com/fr/design/extra/exe/UpdateFromDiskExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/UpdateFromDiskExecutor.java @@ -1,8 +1,14 @@ package com.fr.design.extra.exe; -import com.fr.design.extra.PluginWebBridge; import com.fr.design.extra.Process; +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.plugin.error.PluginErrorCode; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.control.PluginTaskResult; +import com.fr.plugin.manage.control.ProgressCallback; +import javax.swing.*; import java.io.File; /** @@ -32,9 +38,45 @@ public class UpdateFromDiskExecutor implements Executor { @Override public void run(Process process) { - PluginWebBridge.getHelper().updateFileFromDisk(new File(filePath)); + PluginManager.getController().update(new File(filePath), new ProgressCallback() { + @Override + public void updateProgress(String description, double progress) { + + } + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info("更新成功"); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { + updatePluginWithDependence(); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } + }); } } }; } + + public void updatePluginWithDependence() { + PluginManager.getController().update(new File(filePath), new ProgressCallback() { + @Override + public void updateProgress(String description, double progress) { + + } + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info("更新成功"); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } + }); + } } diff --git a/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java index fa295cd36..7cb467470 100644 --- a/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java @@ -2,30 +2,32 @@ package com.fr.design.extra.exe; import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; -import com.fr.design.RestartHelper; -import com.fr.design.extra.After; -import com.fr.design.extra.LoginCheckContext; -import com.fr.design.extra.PluginHelper; +import com.fr.design.extra.*; import com.fr.design.extra.Process; +import com.fr.general.FRLogger; import com.fr.general.Inter; -import com.fr.plugin.Plugin; -import com.fr.plugin.PluginLoader; -import com.fr.plugin.PluginVerifyException; +import com.fr.json.JSONObject; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.error.PluginErrorCode; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.control.PluginTaskResult; +import com.fr.plugin.manage.control.ProgressCallback; import com.fr.stable.StringUtils; import javax.swing.*; -import java.io.File; +import java.util.ArrayList; +import java.util.List; /** * Created by richie on 16/3/19. */ public class UpdateOnlineExecutor implements Executor { - private String[] pluginIDs; + private String[] pluginInfos; private static final int PERCENT_100 = 100; - public UpdateOnlineExecutor(String[] pluginIDs) { - this.pluginIDs = pluginIDs; + public UpdateOnlineExecutor(String[] pluginInfos) { + this.pluginInfos = pluginInfos; } @Override @@ -48,69 +50,72 @@ public class UpdateOnlineExecutor implements Executor { LoginCheckContext.fireLoginCheckListener(); } if (StringUtils.isNotBlank(DesignerEnvManager.getEnvManager().getBBSName())) { - try { - for (int i = 0; i < pluginIDs.length; i++) { - try { - Plugin plugin = PluginLoader.getLoader().getPluginById(pluginIDs[i]); - String id = null; - if (plugin != null) { - id = plugin.getId(); - } - String username = DesignerEnvManager.getEnvManager().getBBSName(); - String password = DesignerEnvManager.getEnvManager().getBBSPassword(); - PluginHelper.downloadPluginFile(id, username, password, new Process() { - @Override - public void process(Double integer) { - } - }); - updateFileFromDisk(PluginHelper.getDownloadTempFile()); - process.process(PERCENT_100 / pluginIDs.length * (i + 1) + "%"); - } catch (PluginVerifyException e) { - throw e; - } catch (Exception e) { - FRContext.getLogger().error(e.getMessage(), e); - } - } - int rv = JOptionPane.showOptionDialog( - null, - Inter.getLocText("FR-Designer-Plugin_Update_Successful"), - Inter.getLocText("FR-Designer-Plugin_Warning"), - JOptionPane.YES_NO_OPTION, - JOptionPane.INFORMATION_MESSAGE, - null, - new String[]{Inter.getLocText("FR-Designer-Basic_Restart_Designer"), - Inter.getLocText("FR-Designer-Basic_Restart_Designer_Later") - }, - null - ); - if (rv == JOptionPane.OK_OPTION) { - RestartHelper.restart(); - } - } catch (PluginVerifyException e) { - JOptionPane.showMessageDialog(null, e.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + List pluginMarkerList = new ArrayList(); + for (int i = 0; i < pluginInfos.length; i++) { + pluginMarkerList.add(PluginUtils.createPluginMarker(pluginInfos[i])); } - } + updatePlugins(pluginMarkerList, process); } } } }; } - private void updateFileFromDisk(File fileOnDisk) throws Exception { - Plugin plugin = PluginHelper.readPlugin(fileOnDisk); - if (plugin == null) { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Illegal_Plugin_Zip"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); - return; - } - Plugin oldPlugin = PluginLoader.getLoader().getPluginById(plugin.getId()); - if (oldPlugin != null) { - String[] files = PluginHelper.uninstallPlugin(FRContext.getCurrentEnv(), oldPlugin); - PluginHelper.installPluginFromUnzippedTempDir(FRContext.getCurrentEnv(), plugin, new After() { - @Override - public void done() { + public void updatePluginWithDependence(PluginMarker pluginMarker, PluginMarker toMarker) { + PluginManager.getController().update(pluginMarker, toMarker, new ProgressCallback() { + @Override + public void updateProgress(String description, double progress) { + + } + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info("更新成功"); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else { + FRLogger.getLogger().info("更新失败"); + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } - }); - } else { - JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Cannot_Update_Not_Install"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + }); + } + + public void updatePlugins(List pluginMarkerList, Process process) { + for (int i = 0; i < pluginMarkerList.size(); i++) { + try { + int a = i; + //todo check下此插件的最新版本 + String latestPluginInfo = PluginUtils.getLatestPluginInfo(pluginMarkerList.get(i).getPluginID()); + if (StringUtils.isEmpty(latestPluginInfo) || PluginConstants.CONNECTION_404.equals(latestPluginInfo)) { + JOptionPane.showMessageDialog(null, "插件商城连接失败", Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + return; + } + JSONObject resultArr = new JSONObject(latestPluginInfo); + String latestPluginVersion = (String) resultArr.get("version"); + PluginManager.getController().update(pluginMarkerList.get(i), PluginMarker.create(pluginMarkerList.get(i).getPluginID(), latestPluginVersion), new ProgressCallback() { + @Override + public void updateProgress(String description, double progress) { + process.process(PERCENT_100 / pluginMarkerList.size() * (a + 1) + "%"); + + } + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info("更新成功"); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { + updatePluginWithDependence(pluginMarkerList.get(a), PluginMarker.create(pluginMarkerList.get(a).getPluginID(), latestPluginVersion)); + } else { + FRLogger.getLogger().info("更新失败"); + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } + }); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } } } + } From 6b3bdcaa9d56ff2863bceba973924f3e6d0b9c83 Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 26 May 2017 17:03:25 +0800 Subject: [PATCH 2/7] =?UTF-8?q?REPORT-2354=20=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E6=93=8D=E4=BD=9C=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/extra/PluginConstants.java | 15 +++ .../design/extra/PluginReaderForDesigner.java | 60 ++++++++++ .../src/com/fr/design/extra/PluginUtils.java | 107 ++++++++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 designer_base/src/com/fr/design/extra/PluginConstants.java create mode 100644 designer_base/src/com/fr/design/extra/PluginReaderForDesigner.java create mode 100644 designer_base/src/com/fr/design/extra/PluginUtils.java diff --git a/designer_base/src/com/fr/design/extra/PluginConstants.java b/designer_base/src/com/fr/design/extra/PluginConstants.java new file mode 100644 index 000000000..ad560b458 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/PluginConstants.java @@ -0,0 +1,15 @@ +package com.fr.design.extra; + +/** + * Created by ibm on 2017/5/25. + */ +public class PluginConstants { + public static final int BYTES_NUM = 1024; + private static final String TEMP_PATH = System.getProperty("user.dir") + "/tmp"; + public static final String DOWNLOAD_PATH = System.getProperty("user.dir") + "/download"; + //插件依赖的下载位置 + public static final String DEPENDENCE_DOWNLOAD_PATH = System.getProperty("user.dir") + "/download/dependence"; + public static final String TEMP_FILE = "temp.zip"; + public static final String CONNECTION_404 = "404"; + +} diff --git a/designer_base/src/com/fr/design/extra/PluginReaderForDesigner.java b/designer_base/src/com/fr/design/extra/PluginReaderForDesigner.java new file mode 100644 index 000000000..5fbb410fd --- /dev/null +++ b/designer_base/src/com/fr/design/extra/PluginReaderForDesigner.java @@ -0,0 +1,60 @@ +package com.fr.design.extra; + +import com.fr.general.GeneralUtils; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.general.http.HttpClient; +import com.fr.json.JSONArray; +import com.fr.json.JSONException; +import com.fr.json.JSONObject; +import com.fr.plugin.manage.PluginManager; +import com.fr.stable.EncodeConstants; +import com.fr.stable.StringUtils; + +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; + +/** + * Created by ibm on 2017/5/25. + */ +public class PluginReaderForDesigner { + private static Set pluginsToUpdate = new HashSet(); + + /** + * 从插件商店服务器读取插件信息,以JSON形式返回 + * + * @return 插件信息 + */ + public static String[] readPluginsForUpdate() throws Exception { + String resText = null; + String url = SiteCenter.getInstance().acquireUrlByKind("plugin.update"); + if (StringUtils.isNotEmpty(url)) { + HashMap para = new HashMap(); + para.put("plugins", PluginUtils.transPluginsToString(PluginManager.getContexts())); + //只有当前设计器的jar高于插件新版本需要的jarTime时, 才提示更新该插件. + para.put("jarTime", GeneralUtils.readBuildNO()); + HttpClient httpClient = new HttpClient(url, para); + resText = httpClient.getResponseText(); + String charSet = EncodeConstants.ENCODING_UTF_8; + resText = URLDecoder.decode(URLDecoder.decode(resText, charSet), charSet); + } + if (StringUtils.isNotEmpty(resText)) { + try { + pluginsToUpdate.clear(); + JSONArray jsonArray = new JSONArray(resText); + for (int i = 0, size = jsonArray.length(); i < size; i++) { + JSONObject jo = jsonArray.optJSONObject(i); + String id = jo.optString("id"); + if(StringUtils.isNotEmpty(id)){ + pluginsToUpdate.add(jo.optString("id", "")); + } + } + } catch (JSONException e) { + throw new Exception(Inter.getLocText("FS-Web-Plugin_Read_Plugin_List_Error")); + } + } + return pluginsToUpdate.toArray(new String[pluginsToUpdate.size()]); + } +} diff --git a/designer_base/src/com/fr/design/extra/PluginUtils.java b/designer_base/src/com/fr/design/extra/PluginUtils.java new file mode 100644 index 000000000..31a1ff203 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/PluginUtils.java @@ -0,0 +1,107 @@ +package com.fr.design.extra; + +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.general.http.HttpClient; +import com.fr.json.JSONArray; +import com.fr.json.JSONObject; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.context.PluginMarker; + +import com.fr.stable.EncodeConstants; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URLDecoder; +import java.util.HashMap; +import java.util.List; + +/** + * Created by ibm on 2017/5/25. + */ +public class PluginUtils { + + + public static PluginMarker createPluginMarker(String pluginInfo) { + //todo 判空 + String[] plugin = pluginInfo.split("_"); + PluginMarker pluginMarker = PluginMarker.create(plugin[0], plugin[1]); + return pluginMarker; + } + + public static String getLatestPluginInfo(String pluginID){ + String result = ""; + String plistUrl = SiteCenter.getInstance().acquireUrlByKind("plugin.searchAPI"); + if (StringUtils.isNotEmpty(plistUrl)) { + StringBuilder url = new StringBuilder(plistUrl); + if (StringUtils.isNotBlank(pluginID)) { + url.append("?keyword=").append(pluginID); + } + try { + HttpClient httpClient = new HttpClient(url.toString()); + result = httpClient.getResponseText(); + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage()); + } + } else { + result = PluginConstants.CONNECTION_404; + } + return result; + } + + public static String transPluginsToString(List plugins) throws Exception { + JSONArray jsonArray = new JSONArray(); + for (PluginContext plugin : plugins) { + JSONObject jo = new JSONObject(); + jo.put("id", plugin.getID()); + jo.put("version", plugin.getVersion()); + jsonArray.put(jo); + } + return jsonArray.toString(); + } + + public static void downloadShopScripts(String id, String username, String password, Process p) throws Exception{ + HttpClient httpClient = new HttpClient(getDownloadPath(id, username, password)); + if (httpClient.getResponseCode() == HttpURLConnection.HTTP_OK) { + int totalSize = httpClient.getContentLength(); + InputStream reader = httpClient.getResponseStream(); + String temp = StableUtils.pathJoin(PluginConstants.DOWNLOAD_PATH, PluginConstants.TEMP_FILE); + StableUtils.makesureFileExist(new File(temp)); + FileOutputStream writer = new FileOutputStream(temp); + byte[] buffer = new byte[PluginConstants.BYTES_NUM]; + int bytesRead = 0; + int totalBytesRead = 0; + + while ((bytesRead = reader.read(buffer)) > 0) { + writer.write(buffer, 0, bytesRead); + buffer = new byte[PluginConstants.BYTES_NUM]; + totalBytesRead += bytesRead; + p.process(totalBytesRead / (double) totalSize); + } + reader.close(); + writer.flush(); + writer.close(); + } else { + throw new com.fr.plugin.PluginVerifyException(Inter.getLocText("FR-Designer-Plugin_Connect_Server_Error")); + } + } + + private static String getDownloadPath(String id, String username, String password) throws Exception { + HashMap map = new HashMap(); + map.put("id", id); + map.put("username", username); + map.put("password", password); + HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("plugin.download"), map); + String resText = httpClient.getResponseText(); + String charSet = EncodeConstants.ENCODING_UTF_8; + resText = URLDecoder.decode(URLDecoder.decode(resText, charSet), charSet); + + return resText; + } + +} From 363138e5fc2283c6a1e3f4c678e30cedc4a089f5 Mon Sep 17 00:00:00 2001 From: kerry Date: Sat, 27 May 2017 13:46:21 +0800 Subject: [PATCH 3/7] =?UTF-8?q?report-2354=20=E6=95=B4=E5=90=88=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E6=8F=92=E4=BB=B6=E6=93=8D=E4=BD=9C=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/extra/PluginOperateUtils.java | 111 ++++++++++++++++++ .../com/fr/design/extra/PluginWebBridge.java | 25 ++-- .../callback/AbstractPluginTaskCallback.java | 21 ++++ .../extra/exe/callback/DownloadCallback.java | 34 ++++++ .../exe/callback/InstallFromDiskCallback.java | 52 ++++++++ .../exe/callback/InstallOnlineCallback.java | 53 +++++++++ .../design/extra/exe/callback/JSCallback.java | 29 +++++ .../exe/callback/ModifyStatusCallback.java | 28 +++++ .../exe/callback/UnistallPluginCallback.java | 26 ++++ .../exe/callback/UpdateFromDiskCallback.java | 53 +++++++++ .../exe/callback/UpdateOnlineCallback.java | 55 +++++++++ .../extra/exe/extratask/ExtraPluginTask.java | 10 ++ .../exe/extratask/InstallPluginTask.java | 25 ++++ .../extra/exe/extratask/UpdatePluginTask.java | 28 +++++ 14 files changed, 538 insertions(+), 12 deletions(-) create mode 100644 designer_base/src/com/fr/design/extra/PluginOperateUtils.java create mode 100644 designer_base/src/com/fr/design/extra/exe/callback/AbstractPluginTaskCallback.java create mode 100644 designer_base/src/com/fr/design/extra/exe/callback/DownloadCallback.java create mode 100644 designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java create mode 100644 designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java create mode 100644 designer_base/src/com/fr/design/extra/exe/callback/JSCallback.java create mode 100644 designer_base/src/com/fr/design/extra/exe/callback/ModifyStatusCallback.java create mode 100644 designer_base/src/com/fr/design/extra/exe/callback/UnistallPluginCallback.java create mode 100644 designer_base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java create mode 100644 designer_base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java create mode 100644 designer_base/src/com/fr/design/extra/exe/extratask/ExtraPluginTask.java create mode 100644 designer_base/src/com/fr/design/extra/exe/extratask/InstallPluginTask.java create mode 100644 designer_base/src/com/fr/design/extra/exe/extratask/UpdatePluginTask.java diff --git a/designer_base/src/com/fr/design/extra/PluginOperateUtils.java b/designer_base/src/com/fr/design/extra/PluginOperateUtils.java new file mode 100644 index 000000000..beb84b9c6 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/PluginOperateUtils.java @@ -0,0 +1,111 @@ +package com.fr.design.extra; + +import com.fr.base.FRContext; +import com.fr.design.extra.exe.callback.*; +import com.fr.design.extra.exe.extratask.InstallPluginTask; +import com.fr.design.extra.exe.extratask.UpdatePluginTask; +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.json.JSONObject; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.bbs.BBSPluginLogin; +import com.fr.plugin.manage.control.PluginTaskCallback; +import com.fr.plugin.manage.control.PluginTaskResult; +import com.fr.stable.ArrayUtils; +import com.fr.stable.StringUtils; +import javafx.scene.web.WebEngine; +import netscape.javascript.JSObject; +import sun.plugin2.main.server.Plugin; + +import javax.swing.*; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + + +/** + * Created by ibm on 2017/5/26. + */ +public class PluginOperateUtils { + + public static void installPluginOnline(final String pluginInfo, JSCallback jsCallback) { + //下载插件 + if (!BBSPluginLogin.getInstance().hasLogin()) { + LoginCheckContext.fireLoginCheckListener(); + } + PluginMarker pluginMarker = PluginUtils.createPluginMarker(pluginInfo); + if (BBSPluginLogin.getInstance().hasLogin()) { + PluginManager.getController().download(pluginMarker, new DownloadCallback(new InstallPluginTask(pluginMarker, jsCallback), jsCallback)); + } + } + + public static void installPluginFromDisk(final String filePath, JSCallback jsCallback) { + PluginManager.getController().install(new File(filePath), new InstallFromDiskCallback(new File(filePath), jsCallback)); + } + + public static void updatePluginOnline(JSObject pluginIDs, JSCallback jsCallback) { + String[] pluginInfos = jsObjectToStringArray(pluginIDs); + if (!(BBSPluginLogin.getInstance().hasLogin())) { + LoginCheckContext.fireLoginCheckListener(); + } + if (BBSPluginLogin.getInstance().hasLogin()) { + List pluginMarkerList = new ArrayList(); + for (int i = 0; i < pluginInfos.length; i++) { + pluginMarkerList.add(PluginUtils.createPluginMarker(pluginInfos[i])); + } + for (int i = 0; i < pluginMarkerList.size(); i++) { + try { + //todo check下此插件的最新版本 + String latestPluginInfo = PluginUtils.getLatestPluginInfo(pluginMarkerList.get(i).getPluginID()); + if (StringUtils.isEmpty(latestPluginInfo) || PluginConstants.CONNECTION_404.equals(latestPluginInfo)) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Connect_Failed"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + return; + } + JSONObject resultArr = new JSONObject(latestPluginInfo); + String latestPluginVersion = (String) resultArr.get("version"); + PluginMarker pluginMarker = pluginMarkerList.get(i); + PluginMarker toPluginMarker = PluginMarker.create(pluginMarkerList.get(i).getPluginID(), latestPluginVersion); + PluginManager.getController().download(pluginMarkerList.get(i), new DownloadCallback(new UpdatePluginTask(pluginMarker, toPluginMarker, jsCallback), jsCallback)); + } catch (Exception e) { + FRContext.getLogger().error(e.getMessage(), e); + } + } + } + } + + public static void updatePluginFromDisk(final String filePath, JSCallback jsCallback) { + PluginManager.getController().update(new File(filePath), new UpdateFromDiskCallback(new File(filePath), jsCallback)); + } + + public static void setPluginActive(String pluginInfo, JSCallback jsCallback) { + PluginMarker pluginMarker = PluginUtils.createPluginMarker(pluginInfo); + PluginContext plugin = PluginManager.getContext(pluginMarker); + boolean active = !plugin.isActive(); + PluginTaskCallback modifyStatusCallback = new ModifyStatusCallback(active); + if (active) { + PluginManager.getController().forbid(pluginMarker, modifyStatusCallback); + } else { + PluginManager.getController().enable(pluginMarker, modifyStatusCallback); + } + } + + public static void uninstallPlugin(final String pluginInfo, final boolean isForce, JSCallback jsCallback) { + PluginMarker pluginMarker = PluginUtils.createPluginMarker(pluginInfo); + PluginManager.getController().uninstall(pluginMarker, isForce, new UnistallPluginCallback()); + } + + private static String[] jsObjectToStringArray(JSObject obj) { + if (obj == null) { + return ArrayUtils.EMPTY_STRING_ARRAY; + } + int len = (int) obj.getMember("length"); + List list = new ArrayList<>(); + for (int i = 0; i < len; i++) { + list.add(obj.getSlot(i).toString()); + } + return list.toArray(new String[len]); + } + +} diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 8df0f7494..808eabfe1 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -5,6 +5,7 @@ import com.fr.design.DesignerEnvManager; import com.fr.design.RestartHelper; import com.fr.design.dialog.UIDialog; import com.fr.design.extra.exe.*; +import com.fr.design.extra.exe.callback.JSCallback; import com.fr.design.gui.ilable.UILabel; import com.fr.general.FRLogger; import com.fr.general.Inter; @@ -147,8 +148,8 @@ public class PluginWebBridge { * @param callback 回调函数 */ public void installPluginOnline(final String pluginInfo, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new InstallOnlineExecutor(pluginInfo)); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.installPluginOnline(pluginInfo,jsCallback); } @@ -159,8 +160,8 @@ public class PluginWebBridge { * @param filePath 插件包的路径 */ public void installPluginFromDisk(final String filePath, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new InstallFromDiskExecutor(filePath)); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.installPluginFromDisk(filePath,jsCallback); } /** @@ -169,8 +170,8 @@ public class PluginWebBridge { * @param pluginInfo 插件信息 */ public void uninstallPlugin(final String pluginInfo, final boolean isForce, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new UninstallExecutor(pluginInfo, isForce)); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.uninstallPlugin(pluginInfo, isForce, jsCallback); } @@ -180,8 +181,8 @@ public class PluginWebBridge { * @param pluginIDs 插件集合 */ public void updatePluginOnline(JSObject pluginIDs, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new UpdateOnlineExecutor(jsObjectToStringArray(pluginIDs))); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.updatePluginOnline(pluginIDs, jsCallback); } /** @@ -190,8 +191,8 @@ public class PluginWebBridge { * @param filePath 插件包的路径 */ public void updatePluginFromDisk(String filePath, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new UpdateFromDiskExecutor(filePath)); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.updatePluginFromDisk(filePath, jsCallback); } /** @@ -200,8 +201,8 @@ public class PluginWebBridge { * @param pluginID 插件ID */ public void setPluginActive(String pluginID, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new ModifyStatusExecutor(pluginID)); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.setPluginActive(pluginID, jsCallback); } /** diff --git a/designer_base/src/com/fr/design/extra/exe/callback/AbstractPluginTaskCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/AbstractPluginTaskCallback.java new file mode 100644 index 000000000..b0d4813cf --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/callback/AbstractPluginTaskCallback.java @@ -0,0 +1,21 @@ +package com.fr.design.extra.exe.callback; + +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.manage.control.ProgressCallback; + +import java.io.File; + +/** + * Created by ibm on 2017/5/26. + */ +public abstract class AbstractPluginTaskCallback implements ProgressCallback{ + + protected PluginMarker pluginMarker; + protected JSCallback jsCallback; + + @Override + public void updateProgress(String description, double aProgress) { + } + + +} diff --git a/designer_base/src/com/fr/design/extra/exe/callback/DownloadCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/DownloadCallback.java new file mode 100644 index 000000000..405a41528 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/callback/DownloadCallback.java @@ -0,0 +1,34 @@ +package com.fr.design.extra.exe.callback; + +import com.fr.design.extra.exe.extratask.ExtraPluginTask; +import com.fr.general.Inter; +import com.fr.plugin.manage.control.PluginTaskResult; +import com.fr.plugin.manage.control.ProgressCallback; + +import javax.swing.*; + +/** + * Created by ibm on 2017/5/26. + */ +public class DownloadCallback extends AbstractPluginTaskCallback { + private ExtraPluginTask extraPluginTask; + + public DownloadCallback(ExtraPluginTask extraPluginTask, JSCallback jsCallback) { + this.extraPluginTask = extraPluginTask; + this.jsCallback = jsCallback; + } + + @Override + public void updateProgress(String description, double aProgress) { + jsCallback.execute(String.valueOf(aProgress)); + } + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + extraPluginTask.doExtraPluginTask(); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } +} diff --git a/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java new file mode 100644 index 000000000..4c64d1426 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java @@ -0,0 +1,52 @@ +package com.fr.design.extra.exe.callback; + +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.control.PluginTaskResult; + +import javax.swing.*; +import java.io.File; + +/** + * Created by ibm on 2017/5/26. + */ +public class InstallFromDiskCallback extends AbstractPluginTaskCallback{ + private File zipFile; + public InstallFromDiskCallback(File zipFile, JSCallback jsCallback){ + this.zipFile = zipFile; + this.jsCallback = jsCallback; + } + + @Override + public void updateProgress(String description, double aProgress) { + jsCallback.execute(String.valueOf(aProgress)); + } + + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Success")); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else if (result.errorCode() == 30) { + int rv = JOptionPane.showOptionDialog( + null, + Inter.getLocText(Inter.getLocText("FR-Designer-Plugin_Install_Success")), + Inter.getLocText("FR-Designer-Plugin_Install_Dependence"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + null, + null + ); + if (rv == JOptionPane.CANCEL_OPTION || rv == JOptionPane.CLOSED_OPTION) { + return; + } + PluginManager.getController().install(zipFile, new InstallFromDiskCallback(zipFile, jsCallback)); +// jsCallback.execute("installDependence"); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } +} diff --git a/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java new file mode 100644 index 000000000..ef96acf72 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java @@ -0,0 +1,53 @@ +package com.fr.design.extra.exe.callback; + +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.control.PluginTaskResult; + +import javax.swing.*; + +/** + * Created by ibm on 2017/5/26. + */ +public class InstallOnlineCallback extends AbstractPluginTaskCallback { + + public InstallOnlineCallback(PluginMarker pluginMarker, JSCallback jsCallback){ + this.pluginMarker = pluginMarker; + this.jsCallback = jsCallback; + } + + @Override + public void updateProgress(String description, double aProgress) { + jsCallback.execute(String.valueOf(aProgress)); + } + + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Success")); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else if (result.errorCode() == 30) { + int rv = JOptionPane.showOptionDialog( + null, + Inter.getLocText(Inter.getLocText("FR-Designer-Plugin_Install_Success")), + Inter.getLocText("FR-Designer-Plugin_Install_Dependence"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + null, + null + ); + if (rv == JOptionPane.CANCEL_OPTION || rv == JOptionPane.CLOSED_OPTION) { + return; + } + //执行JS回调 + PluginManager.getController().install(pluginMarker, new InstallOnlineCallback(pluginMarker, jsCallback)); +// jsCallback.execute("installDependence"); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } +} diff --git a/designer_base/src/com/fr/design/extra/exe/callback/JSCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/JSCallback.java new file mode 100644 index 000000000..5ee99a69c --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/callback/JSCallback.java @@ -0,0 +1,29 @@ +package com.fr.design.extra.exe.callback; + +import javafx.scene.web.WebEngine; +import netscape.javascript.JSObject; + +/** + * Created by ibm on 2017/5/27. + */ +public class JSCallback { + private WebEngine webEngine; + private JSObject callback; + + public JSCallback(final WebEngine webEngine, final JSObject callback) { + this.webEngine = webEngine; + this.callback = callback; + } + + public void execute(String newValue) { + String fun = "(" + callback + ")(\"" + newValue + "\")"; + try { + webEngine.executeScript(fun); + } catch (Exception e) { + webEngine.executeScript("alert(\"" + e.getMessage() + "\")"); + } + } + + +} + diff --git a/designer_base/src/com/fr/design/extra/exe/callback/ModifyStatusCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/ModifyStatusCallback.java new file mode 100644 index 000000000..2a22e0b90 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/callback/ModifyStatusCallback.java @@ -0,0 +1,28 @@ +package com.fr.design.extra.exe.callback; + +import com.fr.general.Inter; +import com.fr.plugin.manage.control.PluginTaskCallback; +import com.fr.plugin.manage.control.PluginTaskResult; + +import javax.swing.*; + +/** + * Created by ibm on 2017/5/27. + */ +public class ModifyStatusCallback implements PluginTaskCallback{ + private boolean isActive; + + public ModifyStatusCallback (boolean isActive){ + this.isActive = isActive; + } + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + String modifyMessage = isActive ? Inter.getLocText("FR-Designer-Plugin_Has_Been_Actived") : Inter.getLocText("FR-Designer-Plugin_Has_Been_Disabled"); + JOptionPane.showMessageDialog(null, modifyMessage); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } + +} diff --git a/designer_base/src/com/fr/design/extra/exe/callback/UnistallPluginCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/UnistallPluginCallback.java new file mode 100644 index 000000000..66282df9d --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/callback/UnistallPluginCallback.java @@ -0,0 +1,26 @@ +package com.fr.design.extra.exe.callback; + +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.plugin.manage.control.PluginTaskCallback; +import com.fr.plugin.manage.control.PluginTaskResult; +import sun.plugin2.main.server.Plugin; + +import javax.swing.*; + +/** + * Created by ibm on 2017/5/27. + */ +public class UnistallPluginCallback implements PluginTaskCallback { + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Delete_Success")); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else { + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Delete_Failed")); + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } +} diff --git a/designer_base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java new file mode 100644 index 000000000..e666c8e81 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java @@ -0,0 +1,53 @@ +package com.fr.design.extra.exe.callback; + +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.general.jsqlparser.expression.StringValue; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.control.PluginTaskResult; + +import javax.swing.*; +import java.io.File; + +/** + * Created by ibm on 2017/5/27. + */ +public class UpdateFromDiskCallback extends AbstractPluginTaskCallback { + private File zipFile; + + public UpdateFromDiskCallback(File zipFile,JSCallback jsCallback) { + this.zipFile = zipFile; + this.jsCallback = jsCallback; + } + + @Override + public void updateProgress(String description, double aProgress) { + jsCallback.execute(String.valueOf(aProgress)); + } + + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Success")); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else if (result.errorCode() == 30) { + int rv = JOptionPane.showOptionDialog( + null, + Inter.getLocText(Inter.getLocText("FR-Designer-Plugin_Install_Success")), + Inter.getLocText("FR-Designer-Plugin_Install_Dependence"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + null, + null + ); + if (rv == JOptionPane.CANCEL_OPTION || rv == JOptionPane.CLOSED_OPTION) { + return; + } + PluginManager.getController().update(zipFile, new UpdateFromDiskCallback(zipFile, jsCallback)); + } else { + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } +} diff --git a/designer_base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java new file mode 100644 index 000000000..7d709e935 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java @@ -0,0 +1,55 @@ +package com.fr.design.extra.exe.callback; + +import com.fr.general.FRLogger; +import com.fr.general.Inter; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.error.PluginErrorCode; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.control.PluginTaskResult; + +import javax.swing.*; + +/** + * Created by ibm on 2017/5/26. + */ +public class UpdateOnlineCallback extends AbstractPluginTaskCallback { + public PluginMarker toPluginMarker; + + + public UpdateOnlineCallback(PluginMarker pluginMarker , PluginMarker toPluginMarker, JSCallback jsCallback) { + this.pluginMarker = pluginMarker; + this.toPluginMarker = toPluginMarker; + this.jsCallback = jsCallback; + } + + @Override + public void updateProgress(String description, double aProgress) { + jsCallback.execute(String.valueOf(aProgress)); + } + + @Override + public void done(PluginTaskResult result) { + if (result.isSuccess()) { + FRLogger.getLogger().info("更新成功"); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); + } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { + int rv = JOptionPane.showOptionDialog( + null, + Inter.getLocText(Inter.getLocText("FR-Designer-Plugin_Install_Success")), + Inter.getLocText("FR-Designer-Plugin_Install_Dependence"), + JOptionPane.YES_NO_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE, + null, + null, + null + ); + if (rv == JOptionPane.CANCEL_OPTION || rv == JOptionPane.CLOSED_OPTION) { + return; + } + PluginManager.getController().update(pluginMarker, toPluginMarker, new UpdateOnlineCallback(pluginMarker, toPluginMarker, jsCallback)); + } else { + FRLogger.getLogger().info("更新失败"); + JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + } + } +} diff --git a/designer_base/src/com/fr/design/extra/exe/extratask/ExtraPluginTask.java b/designer_base/src/com/fr/design/extra/exe/extratask/ExtraPluginTask.java new file mode 100644 index 000000000..834d59e38 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/extratask/ExtraPluginTask.java @@ -0,0 +1,10 @@ +package com.fr.design.extra.exe.extratask; + + +/** + * Created by ibm on 2017/5/27. + */ +public interface ExtraPluginTask { + + void doExtraPluginTask(); +} diff --git a/designer_base/src/com/fr/design/extra/exe/extratask/InstallPluginTask.java b/designer_base/src/com/fr/design/extra/exe/extratask/InstallPluginTask.java new file mode 100644 index 000000000..4ae1fe381 --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/extratask/InstallPluginTask.java @@ -0,0 +1,25 @@ +package com.fr.design.extra.exe.extratask; + + +import com.fr.design.extra.exe.callback.InstallOnlineCallback; +import com.fr.design.extra.exe.callback.JSCallback; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.manage.PluginManager; + +import javax.swing.*; + +/** + * Created by ibm on 2017/5/27. + */ +public class InstallPluginTask implements ExtraPluginTask{ + public PluginMarker pluginMarker; + public JSCallback jsCallback; + public InstallPluginTask(PluginMarker pluginMarker, JSCallback jsCallback){ + this.pluginMarker = pluginMarker; + this.jsCallback = jsCallback; + } + @Override + public void doExtraPluginTask() { + PluginManager.getController().install(pluginMarker, new InstallOnlineCallback(pluginMarker, jsCallback)); + } +} diff --git a/designer_base/src/com/fr/design/extra/exe/extratask/UpdatePluginTask.java b/designer_base/src/com/fr/design/extra/exe/extratask/UpdatePluginTask.java new file mode 100644 index 000000000..c79ea114a --- /dev/null +++ b/designer_base/src/com/fr/design/extra/exe/extratask/UpdatePluginTask.java @@ -0,0 +1,28 @@ +package com.fr.design.extra.exe.extratask; + +import com.fr.design.extra.exe.callback.JSCallback; +import com.fr.design.extra.exe.callback.UpdateOnlineCallback; +import com.fr.form.ui.WaterMark; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.manage.PluginManager; + +/** + * Created by ibm on 2017/5/27. + */ +public class UpdatePluginTask implements ExtraPluginTask { + + public PluginMarker pluginMarker; + public PluginMarker toPluginMarker; + public JSCallback jsCallback; + + public UpdatePluginTask(PluginMarker pluginMarker, PluginMarker toPluginMarker, JSCallback jsCallback){ + this.pluginMarker = pluginMarker; + this.toPluginMarker = toPluginMarker; + this.jsCallback = jsCallback; + } + + @Override + public void doExtraPluginTask() { + PluginManager.getController().update(pluginMarker, toPluginMarker, new UpdateOnlineCallback(pluginMarker, toPluginMarker, jsCallback)); + } +} From 94113f6b0e258a98a749fda50d6a9572f154db6e Mon Sep 17 00:00:00 2001 From: kerry Date: Sat, 27 May 2017 14:31:21 +0800 Subject: [PATCH 4/7] REPORT-235 --- .../fr/design/extra/PluginOperateUtils.java | 81 +++++++++++++++++++ .../com/fr/design/extra/PluginWebBridge.java | 20 ++--- .../callback/AbstractPluginTaskCallback.java | 1 - .../extra/exe/callback/DownloadCallback.java | 1 - .../exe/callback/InstallFromDiskCallback.java | 6 +- .../exe/callback/InstallOnlineCallback.java | 1 - 6 files changed, 94 insertions(+), 16 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/PluginOperateUtils.java b/designer_base/src/com/fr/design/extra/PluginOperateUtils.java index beb84b9c6..00e610eb0 100644 --- a/designer_base/src/com/fr/design/extra/PluginOperateUtils.java +++ b/designer_base/src/com/fr/design/extra/PluginOperateUtils.java @@ -1,11 +1,14 @@ package com.fr.design.extra; import com.fr.base.FRContext; +import com.fr.design.DesignerEnvManager; import com.fr.design.extra.exe.callback.*; import com.fr.design.extra.exe.extratask.InstallPluginTask; import com.fr.design.extra.exe.extratask.UpdatePluginTask; import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.general.SiteCenter; +import com.fr.general.http.HttpClient; import com.fr.json.JSONObject; import com.fr.plugin.context.PluginContext; import com.fr.plugin.context.PluginMarker; @@ -17,6 +20,7 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; import javafx.scene.web.WebEngine; import netscape.javascript.JSObject; +import org.json.JSONArray; import sun.plugin2.main.server.Plugin; import javax.swing.*; @@ -96,6 +100,83 @@ public class PluginOperateUtils { PluginManager.getController().uninstall(pluginMarker, isForce, new UnistallPluginCallback()); } + public static void readUpdateOnline(JSCallback jsCallback){ + try { + String [] plugins = PluginReaderForDesigner.readPluginsForUpdate(); + JSONArray jsonArray = new JSONArray(); + for (String plugin : plugins) { + org.json.JSONObject jsonObject = new org.json.JSONObject(); + jsonObject.put("pluginid", plugin); + jsonArray.put(jsonObject); + } + String result = jsonArray.toString(); + jsCallback.execute(result); + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage()); + } + + } + + public static void searchPlugin(String keyword, JSCallback jsCallback) { + try { + HttpClient httpClient = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("plugin.plist") + "&keyword=" + keyword); + String result = httpClient.getResponseText(); + jsCallback.execute(result); + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage()); + } + } + + public static void getPluginFromStore(String category, String seller, String fee, JSCallback jsCallback){ + String plistUrl = SiteCenter.getInstance().acquireUrlByKind("plugin.plist"); + if (StringUtils.isNotBlank(plistUrl)) { + StringBuilder url = new StringBuilder(); + url.append(plistUrl); + if (StringUtils.isNotBlank(category)) { + url.append("&cid=").append(category.split("-")[1]); + } + if (StringUtils.isNotBlank(seller)) { + url.append("&seller=").append(seller.split("-")[1]); + } + if (StringUtils.isNotBlank(fee)) { + url.append("&fee=").append(fee.split("-")[1]); + } + try { + HttpClient httpClient = new HttpClient(url.toString()); + String result = httpClient.getResponseText(); + jsCallback.execute(result); + } catch (Exception e) { + FRLogger.getLogger().error(e.getMessage()); + } + } else { + String result = PluginConstants.CONNECTION_404; + jsCallback.execute(result); + } + } + + public static void getPluginCategories(JSCallback jsCallback){ + String result; + String url = SiteCenter.getInstance().acquireUrlByKind("plugin.category"); + if (url != null) { + HttpClient httpClient = new HttpClient(url); + result = httpClient.getResponseText(); + } else { + result = PluginConstants.CONNECTION_404; + } + jsCallback.execute(result); + } + + public static void getLoginInfo(JSCallback jsCallback){ + String username = BBSPluginLogin.getInstance().getUserInfo().getUserName(); + String inShowUsername = DesignerEnvManager.getEnvManager().getInShowBBsName(); + if (StringUtils.isEmpty(username) && StringUtils.isEmpty(inShowUsername)) { + return; + }else { + String result = StringUtils.isEmpty(inShowUsername) ? username : inShowUsername; + jsCallback.execute(result); + } + } + private static String[] jsObjectToStringArray(JSObject obj) { if (obj == null) { return ArrayUtils.EMPTY_STRING_ARRAY; diff --git a/designer_base/src/com/fr/design/extra/PluginWebBridge.java b/designer_base/src/com/fr/design/extra/PluginWebBridge.java index 808eabfe1..5f5caac5d 100644 --- a/designer_base/src/com/fr/design/extra/PluginWebBridge.java +++ b/designer_base/src/com/fr/design/extra/PluginWebBridge.java @@ -209,8 +209,8 @@ public class PluginWebBridge { * 已安装插件检查更新 */ public void readUpdateOnline(final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new ReadUpdateOnlineExecutor()); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.readUpdateOnline(jsCallback); } /** @@ -303,8 +303,8 @@ public class PluginWebBridge { * @param keyword 关键字 */ public void searchPlugin(String keyword, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new SearchOnlineExecutor(keyword)); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.searchPlugin(keyword, jsCallback); } /** @@ -316,8 +316,8 @@ public class PluginWebBridge { * @param callback 回调函数 */ public void getPluginFromStore(String category, String seller, String fee, final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new GetPluginFromStoreExecutor(category, seller, fee)); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.getPluginFromStore(category, seller, fee, jsCallback); } /** @@ -326,8 +326,8 @@ public class PluginWebBridge { * @param callback 回调函数 */ public void getPluginCategories(final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new GetPluginCategoriesExecutor()); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.getPluginCategories(jsCallback); } /** @@ -377,8 +377,8 @@ public class PluginWebBridge { * @param callback */ public void getLoginInfo(final JSObject callback) { - Task task = new PluginTask<>(webEngine, callback, new GetLoginInfoExecutor()); - new Thread(task).start(); + JSCallback jsCallback = new JSCallback(webEngine, callback); + PluginOperateUtils.getLoginInfo(jsCallback); } /** diff --git a/designer_base/src/com/fr/design/extra/exe/callback/AbstractPluginTaskCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/AbstractPluginTaskCallback.java index b0d4813cf..c641c622f 100644 --- a/designer_base/src/com/fr/design/extra/exe/callback/AbstractPluginTaskCallback.java +++ b/designer_base/src/com/fr/design/extra/exe/callback/AbstractPluginTaskCallback.java @@ -3,7 +3,6 @@ package com.fr.design.extra.exe.callback; import com.fr.plugin.context.PluginMarker; import com.fr.plugin.manage.control.ProgressCallback; -import java.io.File; /** * Created by ibm on 2017/5/26. diff --git a/designer_base/src/com/fr/design/extra/exe/callback/DownloadCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/DownloadCallback.java index 405a41528..d12f50592 100644 --- a/designer_base/src/com/fr/design/extra/exe/callback/DownloadCallback.java +++ b/designer_base/src/com/fr/design/extra/exe/callback/DownloadCallback.java @@ -3,7 +3,6 @@ package com.fr.design.extra.exe.callback; import com.fr.design.extra.exe.extratask.ExtraPluginTask; import com.fr.general.Inter; import com.fr.plugin.manage.control.PluginTaskResult; -import com.fr.plugin.manage.control.ProgressCallback; import javax.swing.*; diff --git a/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java index 4c64d1426..bd2f3bec1 100644 --- a/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java +++ b/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java @@ -11,9 +11,10 @@ import java.io.File; /** * Created by ibm on 2017/5/26. */ -public class InstallFromDiskCallback extends AbstractPluginTaskCallback{ +public class InstallFromDiskCallback extends AbstractPluginTaskCallback { private File zipFile; - public InstallFromDiskCallback(File zipFile, JSCallback jsCallback){ + + public InstallFromDiskCallback(File zipFile, JSCallback jsCallback) { this.zipFile = zipFile; this.jsCallback = jsCallback; } @@ -44,7 +45,6 @@ public class InstallFromDiskCallback extends AbstractPluginTaskCallback{ return; } PluginManager.getController().install(zipFile, new InstallFromDiskCallback(zipFile, jsCallback)); -// jsCallback.execute("installDependence"); } else { JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } diff --git a/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java index ef96acf72..253ea4005 100644 --- a/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java +++ b/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java @@ -45,7 +45,6 @@ public class InstallOnlineCallback extends AbstractPluginTaskCallback { } //执行JS回调 PluginManager.getController().install(pluginMarker, new InstallOnlineCallback(pluginMarker, jsCallback)); -// jsCallback.execute("installDependence"); } else { JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } From 556dce803ac7bbcb26e162faee5a5093ed36ebe3 Mon Sep 17 00:00:00 2001 From: kerry Date: Sat, 27 May 2017 14:35:18 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E9=81=BF=E5=85=8D=E9=AD=94=E6=9C=AF?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/extra/exe/callback/InstallFromDiskCallback.java | 3 ++- .../fr/design/extra/exe/callback/InstallOnlineCallback.java | 3 ++- .../fr/design/extra/exe/callback/UpdateFromDiskCallback.java | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java index bd2f3bec1..035ebbf32 100644 --- a/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java +++ b/designer_base/src/com/fr/design/extra/exe/callback/InstallFromDiskCallback.java @@ -2,6 +2,7 @@ package com.fr.design.extra.exe.callback; import com.fr.general.FRLogger; import com.fr.general.Inter; +import com.fr.plugin.error.PluginErrorCode; import com.fr.plugin.manage.PluginManager; import com.fr.plugin.manage.control.PluginTaskResult; @@ -30,7 +31,7 @@ public class InstallFromDiskCallback extends AbstractPluginTaskCallback { if (result.isSuccess()) { FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); - } else if (result.errorCode() == 30) { + } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { int rv = JOptionPane.showOptionDialog( null, Inter.getLocText(Inter.getLocText("FR-Designer-Plugin_Install_Success")), diff --git a/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java index 253ea4005..8649b5cd3 100644 --- a/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java +++ b/designer_base/src/com/fr/design/extra/exe/callback/InstallOnlineCallback.java @@ -3,6 +3,7 @@ package com.fr.design.extra.exe.callback; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.error.PluginErrorCode; import com.fr.plugin.manage.PluginManager; import com.fr.plugin.manage.control.PluginTaskResult; @@ -29,7 +30,7 @@ public class InstallOnlineCallback extends AbstractPluginTaskCallback { if (result.isSuccess()) { FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); - } else if (result.errorCode() == 30) { + } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { int rv = JOptionPane.showOptionDialog( null, Inter.getLocText(Inter.getLocText("FR-Designer-Plugin_Install_Success")), diff --git a/designer_base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java index e666c8e81..390598835 100644 --- a/designer_base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java +++ b/designer_base/src/com/fr/design/extra/exe/callback/UpdateFromDiskCallback.java @@ -3,6 +3,7 @@ package com.fr.design.extra.exe.callback; import com.fr.general.FRLogger; import com.fr.general.Inter; import com.fr.general.jsqlparser.expression.StringValue; +import com.fr.plugin.error.PluginErrorCode; import com.fr.plugin.manage.PluginManager; import com.fr.plugin.manage.control.PluginTaskResult; @@ -31,7 +32,7 @@ public class UpdateFromDiskCallback extends AbstractPluginTaskCallback { if (result.isSuccess()) { FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); - } else if (result.errorCode() == 30) { + } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { int rv = JOptionPane.showOptionDialog( null, Inter.getLocText(Inter.getLocText("FR-Designer-Plugin_Install_Success")), From 47138c4840c132eb3228af6f320c4cedd9beb6b7 Mon Sep 17 00:00:00 2001 From: kerry Date: Sat, 27 May 2017 14:39:19 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9PMD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extra/exe/InstallFromDiskExecutor.java | 20 +++++++++---------- .../extra/exe/InstallOnlineExecutor.java | 12 +++++------ .../design/extra/exe/UninstallExecutor.java | 4 ++-- .../extra/exe/UpdateFromDiskExecutor.java | 5 ++--- .../extra/exe/UpdateOnlineExecutor.java | 11 ++++------ .../exe/callback/UpdateOnlineCallback.java | 4 ++-- 6 files changed, 26 insertions(+), 30 deletions(-) diff --git a/designer_base/src/com/fr/design/extra/exe/InstallFromDiskExecutor.java b/designer_base/src/com/fr/design/extra/exe/InstallFromDiskExecutor.java index 5e7f5e2b8..3d5629a3c 100644 --- a/designer_base/src/com/fr/design/extra/exe/InstallFromDiskExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/InstallFromDiskExecutor.java @@ -24,7 +24,7 @@ public class InstallFromDiskExecutor implements Executor { @Override public String getTaskFinishMessage() { - return "已成功安装"; + return Inter.getLocText("FR-Designer-Plugin_Success_Install"); } @Override @@ -33,7 +33,7 @@ public class InstallFromDiskExecutor implements Executor { new Command() { @Override public String getExecuteMessage() { - return "正在解压文件" + filePath; + return Inter.getLocText("FR-Designer-Plugin_Unzipping") + filePath; } @Override @@ -44,7 +44,7 @@ public class InstallFromDiskExecutor implements Executor { new Command() { @Override public String getExecuteMessage() { - return "正在安装"; + return Inter.getLocText("FR-Designer-Plugin_Installing"); } @Override @@ -56,11 +56,11 @@ public class InstallFromDiskExecutor implements Executor { @Override public void done(PluginTaskResult result) { if (result.isSuccess()) { - FRLogger.getLogger().info("插件安装成功"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Success")); } else if(result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()){ int rv = JOptionPane.showOptionDialog( null, - Inter.getLocText("安装依赖"), + Inter.getLocText(Inter.getLocText("FR-Designer-Plugin_Install_Dependence")), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, @@ -71,9 +71,9 @@ public class InstallFromDiskExecutor implements Executor { if (rv == JOptionPane.CANCEL_OPTION || rv == JOptionPane.CLOSED_OPTION) { return; } - installWithDepenndence(); + installWithDependence(); }else{ - FRLogger.getLogger().info("插件安装失败"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Failed")); JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } @@ -83,7 +83,7 @@ public class InstallFromDiskExecutor implements Executor { }; } - public void installWithDepenndence(){ + public void installWithDependence(){ PluginManager.getController().install(new File(filePath), new ProgressCallback() { @Override public void updateProgress(String description, double progress) { @@ -91,10 +91,10 @@ public class InstallFromDiskExecutor implements Executor { @Override public void done(PluginTaskResult result) { if (result.isSuccess()) { - FRLogger.getLogger().info("插件安装成功"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); } else{ - FRLogger.getLogger().info("插件安装失败"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Failed")); JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } diff --git a/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java index 2a95ec29a..fd960d3e8 100644 --- a/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java @@ -36,7 +36,7 @@ public class InstallOnlineExecutor implements Executor { new Command() { @Override public String getExecuteMessage() { - return "正在下载插件:" + pluginInfo.split("_")[0]; + return Inter.getLocText("FR-Designer-Plugin_Downloading") + ":" + pluginInfo.split("_")[0]; } @Override @@ -79,13 +79,13 @@ public class InstallOnlineExecutor implements Executor { @Override public void done(PluginTaskResult result) { if (result.isSuccess()) { - FRLogger.getLogger().info("插件安装成功"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { int rv = JOptionPane.showOptionDialog( null, - Inter.getLocText("安装依赖"), - Inter.getLocText("FR-Designer-Plugin_Warning"), + Inter.getLocText(Inter.getLocText("FR-Designer-Plugin_Install_Success")), + Inter.getLocText("FR-Designer-Plugin_Install_Dependence"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null, @@ -112,10 +112,10 @@ public class InstallOnlineExecutor implements Executor { @Override public void done(PluginTaskResult result) { if (result.isSuccess()) { - FRLogger.getLogger().info("插件安装成功"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); } else { - FRLogger.getLogger().info("插件安装失败"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Install_Failed")); JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } diff --git a/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java b/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java index 9eaa49ac9..79d34bf21 100644 --- a/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/UninstallExecutor.java @@ -47,10 +47,10 @@ public class UninstallExecutor implements Executor { public void done(PluginTaskResult pluginTaskResult) { if (pluginTaskResult.isSuccess()) { result = "done"; - FRLogger.getLogger().info("删除成功"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Delete_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); } else { - FRLogger.getLogger().info("删除失败"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Delete_Failed")); JOptionPane.showMessageDialog(null, pluginTaskResult.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } diff --git a/designer_base/src/com/fr/design/extra/exe/UpdateFromDiskExecutor.java b/designer_base/src/com/fr/design/extra/exe/UpdateFromDiskExecutor.java index c415127f7..8be5a3834 100644 --- a/designer_base/src/com/fr/design/extra/exe/UpdateFromDiskExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/UpdateFromDiskExecutor.java @@ -24,7 +24,7 @@ public class UpdateFromDiskExecutor implements Executor { @Override public String getTaskFinishMessage() { - return "插件更新操作结束"; + return Inter.getLocText("FR-Designer-Plugin_Update_End"); } @Override @@ -47,7 +47,7 @@ public class UpdateFromDiskExecutor implements Executor { @Override public void done(PluginTaskResult result) { if (result.isSuccess()) { - FRLogger.getLogger().info("更新成功"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Update_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { updatePluginWithDependence(); @@ -71,7 +71,6 @@ public class UpdateFromDiskExecutor implements Executor { @Override public void done(PluginTaskResult result) { if (result.isSuccess()) { - FRLogger.getLogger().info("更新成功"); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); } else { JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); diff --git a/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java index 7cb467470..c8f1fc778 100644 --- a/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/UpdateOnlineExecutor.java @@ -10,6 +10,7 @@ import com.fr.json.JSONObject; import com.fr.plugin.context.PluginMarker; import com.fr.plugin.error.PluginErrorCode; import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.bbs.BBSPluginLogin; import com.fr.plugin.manage.control.PluginTaskResult; import com.fr.plugin.manage.control.ProgressCallback; import com.fr.stable.StringUtils; @@ -46,10 +47,10 @@ public class UpdateOnlineExecutor implements Executor { @Override public void run(Process process) { - if (StringUtils.isBlank(DesignerEnvManager.getEnvManager().getBBSName())) { + if (!(BBSPluginLogin.getInstance().hasLogin())){ LoginCheckContext.fireLoginCheckListener(); } - if (StringUtils.isNotBlank(DesignerEnvManager.getEnvManager().getBBSName())) { + if (BBSPluginLogin.getInstance().hasLogin()) { List pluginMarkerList = new ArrayList(); for (int i = 0; i < pluginInfos.length; i++) { pluginMarkerList.add(PluginUtils.createPluginMarker(pluginInfos[i])); @@ -70,10 +71,8 @@ public class UpdateOnlineExecutor implements Executor { @Override public void done(PluginTaskResult result) { if (result.isSuccess()) { - FRLogger.getLogger().info("更新成功"); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); } else { - FRLogger.getLogger().info("更新失败"); JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } @@ -87,7 +86,7 @@ public class UpdateOnlineExecutor implements Executor { //todo check下此插件的最新版本 String latestPluginInfo = PluginUtils.getLatestPluginInfo(pluginMarkerList.get(i).getPluginID()); if (StringUtils.isEmpty(latestPluginInfo) || PluginConstants.CONNECTION_404.equals(latestPluginInfo)) { - JOptionPane.showMessageDialog(null, "插件商城连接失败", Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Connect_Failed"), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); return; } JSONObject resultArr = new JSONObject(latestPluginInfo); @@ -102,12 +101,10 @@ public class UpdateOnlineExecutor implements Executor { @Override public void done(PluginTaskResult result) { if (result.isSuccess()) { - FRLogger.getLogger().info("更新成功"); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { updatePluginWithDependence(pluginMarkerList.get(a), PluginMarker.create(pluginMarkerList.get(a).getPluginID(), latestPluginVersion)); } else { - FRLogger.getLogger().info("更新失败"); JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } diff --git a/designer_base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java b/designer_base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java index 7d709e935..cce4934b6 100644 --- a/designer_base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java +++ b/designer_base/src/com/fr/design/extra/exe/callback/UpdateOnlineCallback.java @@ -30,7 +30,7 @@ public class UpdateOnlineCallback extends AbstractPluginTaskCallback { @Override public void done(PluginTaskResult result) { if (result.isSuccess()) { - FRLogger.getLogger().info("更新成功"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Update_Success")); JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Plugin_Install_Successful")); } else if (result.errorCode() == PluginErrorCode.OperationNotSupport.getCode()) { int rv = JOptionPane.showOptionDialog( @@ -48,7 +48,7 @@ public class UpdateOnlineCallback extends AbstractPluginTaskCallback { } PluginManager.getController().update(pluginMarker, toPluginMarker, new UpdateOnlineCallback(pluginMarker, toPluginMarker, jsCallback)); } else { - FRLogger.getLogger().info("更新失败"); + FRLogger.getLogger().info(Inter.getLocText("FR-Designer-Plugin_Delete_Failed")); JOptionPane.showMessageDialog(null, result.getMessage(), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); } } From 68c33117566ef88ba9ff9c8f1d308c838cb57c1a Mon Sep 17 00:00:00 2001 From: kerry Date: Sat, 27 May 2017 14:42:07 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9PMD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/com/fr/design/extra/exe/InstallOnlineExecutor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java b/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java index fd960d3e8..42f7be72d 100644 --- a/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java +++ b/designer_base/src/com/fr/design/extra/exe/InstallOnlineExecutor.java @@ -50,7 +50,7 @@ public class InstallOnlineExecutor implements Executor { PluginManager.getController().download(pluginMarker, new ProgressCallback() { @Override public void updateProgress(String description, double aProgress) { - process.process(Math.round(aProgress * 100) + "%"); +// process.process(Math.round(aProgress * 100) + "%"); } @Override