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());
+ }
+}