package com.fr.env; import com.fr.design.i18n.Toolkit; import com.fr.log.FineLoggerFactory; import com.fr.stable.AssistUtils; import com.fr.workspace.WorkContext; import com.fr.workspace.connect.WorkspaceConnectionInfo; import com.fr.workspace.engine.channel.http.FunctionalHttpRequest; import javax.swing.Icon; import javax.swing.UIManager; /** * 测试连接的结果。 * 不改变原有逻辑的情况下,加入一层转化。 * 根据这里的转化结果,判断需要提示哪些内容。 *
* created by Harrison on 2018/12/20 **/ public enum TestConnectionResult { /** * 完全成功, 版本匹配,测试连接成功。 */ FULLY_SUCCESS { @Override public Icon getIcon() { return UIManager.getIcon("OptionPane.informationIcon"); } @Override public String getText() { return Toolkit.i18nText("Fine-Design_Basic_Remote_Connect_Successful"); } }, /** * 不完全成功,版本不匹配,但测试连接成功。 */ PARTLY_SUCCESS { @Override public Icon getIcon() { return UIManager.getIcon("OptionPane.warningIcon"); } @Override public String getText() { return Toolkit.i18nText("Fine-Design_Basic_Remote_Design_Version_Inconsistence_Test"); } }, /** * 完全失败,直接没连上 */ FULLY_FAILED { @Override public Icon getIcon() { return UIManager.getIcon("OptionPane.errorIcon"); } @Override public String getText() { return Toolkit.i18nText("Fine-Design_Basic_Remote_Connect_Failed"); } }, /** * 验证 Token 失败 */ AUTH_FAILED { @Override public Icon getIcon() { return UIManager.getIcon("OptionPane.errorIcon"); } @Override public String getText() { return Toolkit.i18nText("Fine-Design_Basic_Remote_Connect_Auth_Failed"); } }; public abstract Icon getIcon(); public abstract String getText(); public static TestConnectionResult parse(Boolean value, WorkspaceConnectionInfo info) { if (value == null) { return AUTH_FAILED; } if (!value) { return FULLY_FAILED; } try { String serverVersion = new FunctionalHttpRequest(info).getServerVersion(); if (AssistUtils.equals(serverVersion, WorkContext.getVersion())) { return FULLY_SUCCESS; } return PARTLY_SUCCESS; } catch (Exception e) { // 发生异常,说明没连接上。返回完全失败。 FineLoggerFactory.getLogger().error(e.getMessage()); return FULLY_FAILED; } } }