From c9f4d2ae97f426434401dea281261fd3628f62dc Mon Sep 17 00:00:00 2001 From: plough Date: Mon, 8 Apr 2019 16:53:47 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-14865=20=E6=9B=B4=E6=96=B0=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=8E=A8=E9=80=81=3D>=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/DesignerEnvManager.java | 42 +++++------ .../design/actions/file/PreferencePane.java | 18 ++--- .../push/DesignerPushUpdateConfigManager.java | 61 ++++++++++++++++ .../push/DesignerPushUpdateManager.java | 39 ++++++++++ .../DesignerPushUpdateConfigManagerTest.java | 72 +++++++++++++++++++ 5 files changed, 198 insertions(+), 34 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/onlineupdate/push/DesignerPushUpdateConfigManager.java create mode 100644 designer-base/src/main/java/com/fr/design/onlineupdate/push/DesignerPushUpdateManager.java create mode 100644 designer-base/src/test/java/com/fr/design/onlineupdate/push/DesignerPushUpdateConfigManagerTest.java diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index f54d0610f..17a101b21 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -14,6 +14,7 @@ import com.fr.design.env.DesignerWorkspaceType; import com.fr.design.env.LocalDesignerWorkspaceInfo; import com.fr.design.env.RemoteDesignerWorkspaceInfo; import com.fr.design.file.HistoryTemplateListPane; +import com.fr.design.onlineupdate.push.DesignerPushUpdateConfigManager; import com.fr.design.style.color.ColorSelectConfigManager; import com.fr.design.utils.DesignUtils; import com.fr.file.FILEFactory; @@ -139,7 +140,6 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { //记录当前激活码的在线激活状态. private int activeKeyStatus = -1; private boolean joinProductImprove = true; - private boolean automaticPushUpdate = true; //最近使用的颜色 private ColorSelectConfigManager configManager = new ColorSelectConfigManager(); /** @@ -147,6 +147,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { */ private AlphaFineConfigManager alphaFineConfigManager = new AlphaFineConfigManager(); + private DesignerPushUpdateConfigManager designerPushUpdateConfigManager = DesignerPushUpdateConfigManager.getInstance(); public static final String CAS_CERTIFICATE_PATH = "certificatePath"; @@ -690,28 +691,12 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { this.joinProductImprove = joinProductImprove; } - /** - * 是否开启自动更新推送 - * - * @return 是否开启自动更新推送 - */ - public boolean isAutomaticPushUpdate() { - return automaticPushUpdate; - } - - /** - * 设置开启/关闭自动更新推送 - */ - public void setAutomaticPushUpdate(boolean automaticPushUpdate) { - this.automaticPushUpdate = automaticPushUpdate; + public boolean isAutoPushUpdateEnabled() { + return designerPushUpdateConfigManager.isAutoPushUpdateEnabled(); } - /** - * @return "自动更新推送"选项是否生效 - */ - public boolean isAutomaticPushUpdateValid() { - // 远程设计和非中文环境,都不生效 - return WorkContext.getCurrent().isLocal() && GeneralContext.isChineseEnv(); + public void setAutoPushUpdateEnabled(boolean autoPushUpdateEnabled) { + designerPushUpdateConfigManager.setAutoPushUpdateEnabled(autoPushUpdateEnabled); } /** @@ -1489,6 +1474,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { readAlphaFineAttr(reader); } else if (name.equals("RecentColors")) { readRecentColor(reader); + } else if (name.equals(DesignerPushUpdateConfigManager.XML_TAG)) { + readDesignerPushUpdateAttr(reader); } else { readLayout(reader, name); } @@ -1559,7 +1546,6 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { this.setOracleSystemSpace(reader.getAttrAsBoolean("useOracleSystemSpace", true)); this.setCachingTemplateLimit(reader.getAttrAsInt("cachingTemplateLimit", CACHINGTEMPLATE_LIMIT)); this.setJoinProductImprove(reader.getAttrAsBoolean("joinProductImprove", true)); - this.setAutomaticPushUpdate(reader.getAttrAsBoolean("automaticPushUpdate", true)); this.setImageCompress(reader.getAttrAsBoolean("imageCompress", true)); this.setAutoBackUp(reader.getAttrAsBoolean("autoBackUp", true)); this.setTemplateTreePaneExpanded(reader.getAttrAsBoolean("templateTreePaneExpanded", false)); @@ -1672,6 +1658,10 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { checkRecentOpenedFileNum(); } + private void readDesignerPushUpdateAttr(XMLableReader reader) { + reader.readXMLObject(designerPushUpdateConfigManager); + } + /** * Write XML.
* The method will be invoked when save data to XML file.
@@ -1694,6 +1684,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { writeHttpsParas(writer); writeAlphaFineAttr(writer); writeRecentColor(writer); + writeDesignerPushUpdateAttr(writer); writer.end(); } @@ -1797,9 +1788,6 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { if (!this.isJoinProductImprove()) { writer.attr("joinProductImprove", this.isJoinProductImprove()); } - if (!this.isAutomaticPushUpdate()) { - writer.attr("automaticPushUpdate", this.isAutomaticPushUpdate()); - } if (!this.isImageCompress()) { writer.attr("imageCompress", this.isImageCompress()); } @@ -1927,4 +1915,8 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { .attr("undoLimit", this.getUndoLimit()) .end(); } + + private void writeDesignerPushUpdateAttr(XMLPrintWriter writer) { + this.designerPushUpdateConfigManager.writeXML(writer); + } } diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index 85d08e5eb..e1c59c93a 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -22,6 +22,7 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.DesignerContext; +import com.fr.design.onlineupdate.push.DesignerPushUpdateManager; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.widget.FRWidgetFactory; import com.fr.general.ComparatorUtils; @@ -116,7 +117,6 @@ public class PreferencePane extends BasicPane { private KeyStroke shortCutKeyStore = null; private UIColorButton gridLineColorTBButton; - private UIColorButton paginationLineColorTBButton; private UICheckBox supportCellEditorDefCheckBox; @@ -131,7 +131,7 @@ public class PreferencePane extends BasicPane { private UICheckBox oracleSpace; private UISpinner cachingTemplateSpinner; private UICheckBox joinProductImprove; - private UICheckBox automaticPushUpdate; + private UICheckBox autoPushUpdate; public PreferencePane() { this.initComponents(); @@ -174,9 +174,9 @@ public class PreferencePane extends BasicPane { joinProductImprove = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Join_Product_Improve")); improvePane.add(joinProductImprove); - if (DesignerEnvManager.getEnvManager().isAutomaticPushUpdateValid()) { - automaticPushUpdate = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Automatic_Push_Update")); - improvePane.add(automaticPushUpdate); + if (DesignerPushUpdateManager.getInstance().isAutoPushUpdateSupported()) { + autoPushUpdate = new UICheckBox(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Automatic_Push_Update")); + improvePane.add(autoPushUpdate); } JPanel spaceUpPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); @@ -558,8 +558,8 @@ public class PreferencePane extends BasicPane { this.cachingTemplateSpinner.setValue(designerEnvManager.getCachingTemplateLimit()); this.joinProductImprove.setSelected(designerEnvManager.isJoinProductImprove()); - if (designerEnvManager.isAutomaticPushUpdateValid()) { - this.automaticPushUpdate.setSelected(designerEnvManager.isAutomaticPushUpdate()); + if (this.autoPushUpdate != null) { + this.autoPushUpdate.setSelected(designerEnvManager.isAutoPushUpdateEnabled()); } } @@ -620,8 +620,8 @@ public class PreferencePane extends BasicPane { designerEnvManager.setOracleSystemSpace(this.oracleSpace.isSelected()); designerEnvManager.setCachingTemplateLimit((int) this.cachingTemplateSpinner.getValue()); designerEnvManager.setJoinProductImprove(this.joinProductImprove.isSelected()); - if (designerEnvManager.isAutomaticPushUpdateValid()) { - designerEnvManager.setAutomaticPushUpdate(this.automaticPushUpdate.isSelected()); + if (this.autoPushUpdate != null) { + designerEnvManager.setAutoPushUpdateEnabled(this.autoPushUpdate.isSelected()); } designerEnvManager.setUndoLimit(maxUndoLimit.getSelectedIndex() * SELECTED_INDEX_5); diff --git a/designer-base/src/main/java/com/fr/design/onlineupdate/push/DesignerPushUpdateConfigManager.java b/designer-base/src/main/java/com/fr/design/onlineupdate/push/DesignerPushUpdateConfigManager.java new file mode 100644 index 000000000..fd1d5fb90 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/onlineupdate/push/DesignerPushUpdateConfigManager.java @@ -0,0 +1,61 @@ +package com.fr.design.onlineupdate.push; + +import com.fr.stable.StringUtils; +import com.fr.stable.xml.XMLPrintWriter; +import com.fr.stable.xml.XMLReadable; +import com.fr.stable.xml.XMLWriter; +import com.fr.stable.xml.XMLableReader; + +/** + * 持久化与设计器自动推送更新相关的配置 + * Created by plough on 2019/4/8. + */ +public class DesignerPushUpdateConfigManager implements XMLReadable, XMLWriter { + public static final String XML_TAG = "DesignerPushUpdateConfigManager"; + private static DesignerPushUpdateConfigManager singleton; + + private boolean autoPushUpdateEnabled = true; // 是否开启自动推送更新 + private String lastIgnoredVersion = StringUtils.EMPTY; // 最近一次跳过的更新版本 + + private DesignerPushUpdateConfigManager() { + } + + public static DesignerPushUpdateConfigManager getInstance() { + if (singleton == null) { + singleton = new DesignerPushUpdateConfigManager(); + } + return singleton; + } + + @Override + public void readXML(XMLableReader reader) { + if (reader.isAttr()) { + this.setAutoPushUpdateEnabled(reader.getAttrAsBoolean("autoPushUpdateEnabled", true)); + this.setLastIgnoredVersion(reader.getAttrAsString("lastIgnoredVersion", StringUtils.EMPTY)); + } + } + + @Override + public void writeXML(XMLPrintWriter writer) { + writer.startTAG(XML_TAG); + writer.attr("autoPushUpdateEnabled", autoPushUpdateEnabled); + writer.attr("lastIgnoredVersion", lastIgnoredVersion); + writer.end(); + } + + public boolean isAutoPushUpdateEnabled() { + return autoPushUpdateEnabled; + } + + public void setAutoPushUpdateEnabled(boolean autoPushUpdateEnabled) { + this.autoPushUpdateEnabled = autoPushUpdateEnabled; + } + + public String getLastIgnoredVersion() { + return lastIgnoredVersion; + } + + public void setLastIgnoredVersion(String lastIgnoredVersion) { + this.lastIgnoredVersion = lastIgnoredVersion; + } +} diff --git a/designer-base/src/main/java/com/fr/design/onlineupdate/push/DesignerPushUpdateManager.java b/designer-base/src/main/java/com/fr/design/onlineupdate/push/DesignerPushUpdateManager.java new file mode 100644 index 000000000..469c0196e --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/onlineupdate/push/DesignerPushUpdateManager.java @@ -0,0 +1,39 @@ +package com.fr.design.onlineupdate.push; + +import com.fr.general.GeneralContext; +import com.fr.workspace.WorkContext; + +/** + * Created by plough on 2019/4/8. + */ +public class DesignerPushUpdateManager { + private static DesignerPushUpdateManager singleton; +// private DesignerUpdateInfo updateInfo; + + private DesignerPushUpdateManager() { + + } + + public static DesignerPushUpdateManager getInstance() { + if (singleton == null) { + singleton = new DesignerPushUpdateManager(); + } + return singleton; + } + + /** + * "自动更新推送"选项是否生效 + */ + public boolean isAutoPushUpdateSupported() { + // 远程设计和非中文环境,都不生效 + return WorkContext.getCurrent().isLocal() && GeneralContext.isChineseEnv(); + } + /** + * 检查更新,如果有合适的更新版本,则弹窗 + */ +// public void checkAndPop() { +// updateInfo. +// } + + +} diff --git a/designer-base/src/test/java/com/fr/design/onlineupdate/push/DesignerPushUpdateConfigManagerTest.java b/designer-base/src/test/java/com/fr/design/onlineupdate/push/DesignerPushUpdateConfigManagerTest.java new file mode 100644 index 000000000..f9de98218 --- /dev/null +++ b/designer-base/src/test/java/com/fr/design/onlineupdate/push/DesignerPushUpdateConfigManagerTest.java @@ -0,0 +1,72 @@ +package com.fr.design.onlineupdate.push; + +import com.fr.stable.StringUtils; +import com.fr.stable.xml.XMLPrintWriter; +import com.fr.stable.xml.XMLableReader; +import com.fr.third.javax.xml.stream.XMLStreamException; +import org.junit.Test; + +import java.io.PrintWriter; +import java.io.StringReader; +import java.io.StringWriter; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + + +/** + * Created by plough on 2019/4/8. + */ +public class DesignerPushUpdateConfigManagerTest { + + @Test + public void testSingleton() { + DesignerPushUpdateConfigManager m1 = DesignerPushUpdateConfigManager.getInstance(); + DesignerPushUpdateConfigManager m2 = DesignerPushUpdateConfigManager.getInstance(); + assertSame(m1, m2); + } + + @Test + public void testDefaultValue() throws XMLStreamException { + DesignerPushUpdateConfigManager configManager = DesignerPushUpdateConfigManager.getInstance(); + XMLableReader xmlReader = XMLableReader.createXMLableReader(new StringReader("")); + xmlReader.readXMLObject(configManager); + + assertEquals(StringUtils.EMPTY, configManager.getLastIgnoredVersion()); + assertTrue(configManager.isAutoPushUpdateEnabled()); + } + + @Test + public void testReadAndWrite() throws XMLStreamException { + final String initLastIngnoredVersion = "1.1.2"; + final boolean initAutoPushEnabled = false; + + DesignerPushUpdateConfigManager configManager = DesignerPushUpdateConfigManager.getInstance(); + + configManager.setLastIgnoredVersion(initLastIngnoredVersion); + configManager.setAutoPushUpdateEnabled(initAutoPushEnabled); + + // 写入 xml + StringWriter sw = new StringWriter(); + XMLPrintWriter writer = XMLPrintWriter.create(new PrintWriter(sw)); + configManager.writeXML(writer); + writer.flush(); + writer.close(); + + String xml_str = sw.getBuffer().toString(); + + // 临时修改配置 + configManager.setAutoPushUpdateEnabled(true); + configManager.setLastIgnoredVersion("0.20.1"); + + // 从 xml 中读取 + StringReader sr = new StringReader(xml_str); + XMLableReader xmlReader = XMLableReader.createXMLableReader(sr); + xmlReader.readXMLObject(configManager); + + // 验证:与写入时的配置一致 + assertEquals(initLastIngnoredVersion, configManager.getLastIgnoredVersion()); + assertEquals(initAutoPushEnabled, configManager.isAutoPushUpdateEnabled()); + } +}