diff --git a/designer_base/src/com/fr/design/extra/PluginOperateUtils.java b/designer_base/src/com/fr/design/extra/PluginOperateUtils.java index a590a6712b..7fe4101d3f 100644 --- a/designer_base/src/com/fr/design/extra/PluginOperateUtils.java +++ b/designer_base/src/com/fr/design/extra/PluginOperateUtils.java @@ -140,7 +140,8 @@ public class PluginOperateUtils { String result = httpClient.getResponseText(); JSONObject jsonObject = new JSONObject(result); JSONArray jsonArray = jsonObject.getJSONArray("result"); - jsCallback.execute(jsonArray.toString()); + JSONArray resultJSONArray = PluginUtils.filterPluginsFromVersion(jsonArray); + jsCallback.execute(resultJSONArray.toString()); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage()); } @@ -171,7 +172,8 @@ public class PluginOperateUtils { String result = httpClient.getResponseText(); JSONObject resultJSONObject = new JSONObject(result); JSONArray resultArr = resultJSONObject.getJSONArray("result"); - jsCallback.execute(resultArr.toString()); + JSONArray resultJSONArray = PluginUtils.filterPluginsFromVersion(resultArr); + jsCallback.execute(resultJSONArray.toString()); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage()); } @@ -190,7 +192,9 @@ public class PluginOperateUtils { try { HttpClient httpClient = new HttpClient(plistUrl.toString()); String result = httpClient.getResponseText(); - jsCallback.execute(result); + JSONArray jsonArray = new JSONArray(result); + JSONArray resultJSONArray = PluginUtils.filterPluginsFromVersion(jsonArray); + jsCallback.execute(resultJSONArray.toString()); } catch (Exception e) { FRLogger.getLogger().error(e.getMessage()); } @@ -300,4 +304,6 @@ public class PluginOperateUtils { return pluginInfo.toString(); } + + } diff --git a/designer_base/src/com/fr/design/extra/PluginUtils.java b/designer_base/src/com/fr/design/extra/PluginUtils.java index 186b466ddd..7ef3eaaad6 100644 --- a/designer_base/src/com/fr/design/extra/PluginUtils.java +++ b/designer_base/src/com/fr/design/extra/PluginUtils.java @@ -7,6 +7,8 @@ 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.basic.version.Version; +import com.fr.plugin.basic.version.VersionIntervalFactory; import com.fr.plugin.context.PluginContext; import com.fr.plugin.context.PluginMarker; @@ -184,4 +186,24 @@ public class PluginUtils { } return null; } + + /** + * 在不同设计器版本下展示不同插件 + * @return 插件 + */ + public static JSONArray filterPluginsFromVersion(JSONArray oriJSONArray) throws Exception{ + JSONArray resultJSONArray = JSONArray.create(); + for(int i = 0; i < oriJSONArray.length(); i++){ + JSONObject jo = oriJSONArray.getJSONObject(i); + String envVersion = jo.optString("env-version"); + if(isCompatibleCurrentEnv(envVersion)){ + resultJSONArray.put(jo); + } + } + return resultJSONArray; + } + + private static boolean isCompatibleCurrentEnv(String envVersion){ + return VersionIntervalFactory.create(envVersion).contain(Version.currentEnvVersion()); + } } 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 28c2c139dd..834f4370d0 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 @@ -77,7 +77,7 @@ public class InstallFromDiskCallback extends AbstractPluginTaskCallback { }else { jsCallback.execute("failed"); FRLogger.getLogger().info(Inter.getLocText("FR-Plugin_Install_Failed")); - JOptionPane.showMessageDialog(null, PluginUtils.getMessageByErrorCode(result.errorCode()), Inter.getLocText("FR-Designer-Plugin_Warning"), JOptionPane.ERROR_MESSAGE); + JOptionPane.showMessageDialog(null, PluginUtils.getMessageByErrorCode(result.errorCode()), Inter.getLocText("FR-Plugin_Install_Failed"), JOptionPane.ERROR_MESSAGE); } } }