From e7709306726103d442533ee30e23b6b1edbdb5fc Mon Sep 17 00:00:00 2001 From: Bryant Date: Sun, 29 Sep 2019 14:16:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?KERNEL-418=20=E6=9B=B4=E6=96=B0=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../update/ui/dialog/RestoreResultDialog.java | 23 +++++--- .../update/ui/dialog/UpdateMainDialog.java | 54 +++++++++++-------- 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java b/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java index 0e83ff12f..8c1db89ec 100644 --- a/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java +++ b/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java @@ -7,12 +7,12 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.update.domain.UpdateConstants; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; +import com.fr.log.FineLoggerFactory; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; - import javax.swing.AbstractAction; import javax.swing.BorderFactory; import javax.swing.JDialog; @@ -25,6 +25,7 @@ import java.awt.Font; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -92,9 +93,7 @@ public class RestoreResultDialog extends JDialog { jarProgressLabel.setVisible(true); progressLabelPane.add(jarProgressLabel); pane.add(progressLabelPane, BorderLayout.CENTER); - - UpdateMainDialog.deletePreviousPropertyFile(); - + deletePreviousPropertyFile(); putJarBackupFiles(); restartButton.setEnabled(true); restartLaterButton.setEnabled(true); @@ -102,6 +101,18 @@ public class RestoreResultDialog extends JDialog { this.setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_Jar_Restore")); } + public static void deletePreviousPropertyFile() { + //在进行更新升级之前确保move和delete.properties删除 + File moveFile = new File(RestartHelper.MOVE_FILE); + File delFile = new File(RestartHelper.RECORD_FILE); + if ((moveFile.exists()) && (!moveFile.delete())) { + FineLoggerFactory.getLogger().error(RestartHelper.MOVE_FILE + "delete failed!"); + } + if ((delFile.exists()) && (!delFile.delete())) { + FineLoggerFactory.getLogger().error(RestartHelper.RECORD_FILE + "delete failed!"); + } + } + private void initOldVersionRestoreComps() { this.setResizable(false); JPanel pane = new JPanel(); @@ -151,8 +162,8 @@ public class RestoreResultDialog extends JDialog { } private void putJarBackupFiles() { - Map map = new HashMap(); - java.util.List list = new ArrayList(); + Map map = new HashMap<>(); + java.util.List list = new ArrayList<>(); String installHome = StableUtils.getInstallHome(); putJarBackupFilesToInstallLib(installHome, map, list); diff --git a/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java b/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java index 45728505c..2f39f5eb0 100644 --- a/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java +++ b/designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java @@ -25,7 +25,6 @@ import com.fr.design.update.ui.widget.UpdateInfoTableModel; import com.fr.design.update.ui.widget.UpdateInfoTextAreaCellRender; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.*; -import com.fr.general.http.HttpClient; import com.fr.general.http.HttpToolbox; import com.fr.json.JSONArray; import com.fr.json.JSONObject; @@ -36,6 +35,9 @@ import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; +import com.fr.third.org.apache.http.client.methods.CloseableHttpResponse; +import com.fr.third.org.apache.http.client.methods.HttpGet; +import com.fr.third.org.apache.http.impl.client.CloseableHttpClient; import com.fr.workspace.WorkContext; import com.sun.java.swing.plaf.motif.MotifProgressBarUI; @@ -47,6 +49,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; +import java.nio.charset.StandardCharsets; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -55,6 +58,8 @@ import java.util.List; import java.util.Locale; import java.util.concurrent.ExecutionException; +import static java.nio.charset.StandardCharsets.*; + /** * Created by XINZAI on 2018/8/21. */ @@ -380,6 +385,8 @@ public class UpdateMainDialog extends UIDialog { return new SwingWorker() { @Override protected JSONArray doInBackground() { + CloseableHttpClient httpClient; + CloseableHttpResponse response; try { getUpdateInfoSuccess = false; //step1:read from cache file @@ -388,16 +395,15 @@ public class UpdateMainDialog extends UIDialog { if (downloadFileConfig == null) { throw new Exception("network error."); } - HttpClient hc = new HttpClient(SiteCenter.getInstance().acquireUrlByKind("changelog10") + "&start=" + lastUpdateCacheTime + "&end=" + getLatestJARTimeStr()); - hc.asGet(); - hc.setTimeout(UpdateConstants.CONNECTION_TIMEOUT * 2); - String responseText = hc.getResponseText(); + HttpGet get = new HttpGet(CloudCenter.getInstance().acquireUrlByKind("changelog10") + "&start=" + lastUpdateCacheTime + "&end=" + getLatestJARTimeStr()); + httpClient = HttpToolbox.getHttpClient(CloudCenter.getInstance().acquireUrlByKind("changelog10") + "&start=" + lastUpdateCacheTime + "&end=" + getLatestJARTimeStr()); + response = httpClient.execute(get); + String responseText = CommonIOUtils.inputStream2String(response.getEntity().getContent(),EncodeConstants.ENCODING_UTF_8).trim(); JSONArray array = JSONArray.create(); //假如返回"-1",说明socket出错了 if (!ComparatorUtils.equals(responseText, "-1")) { array = new JSONArray(responseText); } - hc.release(); return array; } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage()); @@ -438,7 +444,7 @@ public class UpdateMainDialog extends UIDialog { return; } if (cacheFile.exists()) { - try (InputStreamReader streamReader = new InputStreamReader(new FileInputStream(cacheFile), "UTF-8"); + try (InputStreamReader streamReader = new InputStreamReader(new FileInputStream(cacheFile), StandardCharsets.UTF_8); BufferedReader br = new BufferedReader(streamReader)) { String readStr, updateTimeStr; while ((readStr = br.readLine()) != null) { @@ -483,13 +489,14 @@ public class UpdateMainDialog extends UIDialog { if (endTime.equals(lastUpdateCacheTime) || jsonArray.length() == 0 || ComparatorUtils.compare(endTime, lastUpdateCacheTime) <= 0) { return; } - try (OutputStreamWriter writerStream = new OutputStreamWriter(new FileOutputStream(cacheFile), EncodeConstants.ENCODING_UTF_8); - BufferedWriter bufferWriter = new BufferedWriter(writerStream)) { - for (int i = 0; i < jsonArray.length(); i++) { - JSONObject jo = (JSONObject) jsonArray.get(i); - bufferWriter.write((String) jo.get("update") + '\t' + jo.get("title")); - bufferWriter.newLine(); - bufferWriter.flush(); + try (OutputStreamWriter writerStream = new OutputStreamWriter(new FileOutputStream(cacheFile), UTF_8)) { + try (BufferedWriter bufferWriter = new BufferedWriter(writerStream)) { + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject jo = (JSONObject) jsonArray.get(i); + bufferWriter.write((String) jo.get("update") + '\t' + jo.get("title")); + bufferWriter.newLine(); + bufferWriter.flush(); + } } } lastUpdateCacheState = UPDATE_CACHE_STATE_SUCCESS; @@ -507,6 +514,9 @@ public class UpdateMainDialog extends UIDialog { //形如 Build#release-2018.07.31.03.03.52.80 String currentNO = GeneralUtils.readBuildNO(); Date curJarDate = UPDATE_INFO_TABLE_FORMAT.parse(currentNO, new ParsePosition(currentNO.indexOf("-") + 1)); + if (curJarDate == null) { + curJarDate = updateTime; + } if (!ComparatorUtils.equals(keyword, StringUtils.EMPTY)) { if (!containsKeyword(UPDATE_INFO_TABLE_FORMAT.format(updateTime), keyword) && !containsKeyword(updateTitle, keyword)) { continue; @@ -579,7 +589,7 @@ public class UpdateMainDialog extends UIDialog { @Override public void actionPerformed(ActionEvent e) { backup(); - int a = JOptionPane.showConfirmDialog(getParent(), Toolkit.i18nText("Fine-Design_Update_Info_Information"),Toolkit.i18nText("Fine-Design_Update_Info_Title"),2); + int a = JOptionPane.showConfirmDialog(getParent(), Toolkit.i18nText("Fine-Design_Update_Info_Information"),Toolkit.i18nText("Fine-Design_Update_Info_Title"), JOptionPane.OK_CANCEL_OPTION); if (a == 0) { progressBar.setVisible(true); progressBar.setString(Toolkit.i18nText("Fine-Design_Update_Info_Wait_Message")); @@ -612,13 +622,13 @@ public class UpdateMainDialog extends UIDialog { String installHome = StableUtils.getInstallHome(); //jar包备份文件的目录为"backup/"+jar包当前版本号 String todayBackupDir = StableUtils.pathJoin(installHome, getBackupDirectory(), (GeneralUtils.readBuildNO())); - backupFilesFromInstallEnv(installHome, todayBackupDir, UpdateConstants.JARS_FOR_SERVER_X); - backupFilesFromInstallLib(installHome, todayBackupDir, UpdateConstants.JARS_FOR_DESIGNER_X); + backupFilesFromInstallEnv(installHome, todayBackupDir); + backupFilesFromInstallLib(installHome, todayBackupDir); jarCurrentLabel.setText(downloadFileConfig.optString("buildNO")); } - private void backupFilesFromInstallEnv(String installHome, String todayBackupDir, List files) { - for (String file : files) { + private void backupFilesFromInstallEnv(String installHome, String todayBackupDir) { + for (String file : UpdateConstants.JARS_FOR_SERVER_X) { try { IOUtils.copy( new File(StableUtils.pathJoin(installHome, UpdateConstants.APPS_FOLDER_NAME, ProductConstants.getAppFolderName(), ProjectConstants.WEBINF_NAME, ProjectConstants.LIB_NAME, file)), @@ -629,8 +639,8 @@ public class UpdateMainDialog extends UIDialog { } } - private void backupFilesFromInstallLib(String installHome, String todayBackupDir, List files) { - for (String file : files) { + private void backupFilesFromInstallLib(String installHome, String todayBackupDir) { + for (String file : UpdateConstants.JARS_FOR_DESIGNER_X) { try { IOUtils.copy( new File(StableUtils.pathJoin(installHome, ProjectConstants.LIB_NAME, file)), @@ -692,10 +702,8 @@ public class UpdateMainDialog extends UIDialog { /** * 检查有效性 * - * @throws Exception */ @Override public void checkValid() throws Exception { - } } \ No newline at end of file From 69dc9bf939a0ddea5bcb1596e0386f6dee42234c Mon Sep 17 00:00:00 2001 From: Bryant Date: Sun, 29 Sep 2019 15:35:51 +0800 Subject: [PATCH 2/3] =?UTF-8?q?KERNEL-418=20=E6=9B=B4=E6=96=B0=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../update/ui/dialog/RestoreResultDialog.java | 16 +++++++------ .../ui/dialog/RestoreResultDialogTest.java | 23 +++++++++++++++++++ 2 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 designer-base/src/test/java/com/fr/design/update/ui/dialog/RestoreResultDialogTest.java diff --git a/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java b/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java index 8c1db89ec..a1211e7ff 100644 --- a/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java +++ b/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java @@ -93,7 +93,7 @@ public class RestoreResultDialog extends JDialog { jarProgressLabel.setVisible(true); progressLabelPane.add(jarProgressLabel); pane.add(progressLabelPane, BorderLayout.CENTER); - deletePreviousPropertyFile(); + deletePreviousPropertyFile(RestartHelper.MOVE_FILE,RestartHelper.RECORD_FILE); putJarBackupFiles(); restartButton.setEnabled(true); restartLaterButton.setEnabled(true); @@ -101,16 +101,18 @@ public class RestoreResultDialog extends JDialog { this.setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_Jar_Restore")); } - public static void deletePreviousPropertyFile() { - //在进行更新升级之前确保move和delete.properties删除 - File moveFile = new File(RestartHelper.MOVE_FILE); - File delFile = new File(RestartHelper.RECORD_FILE); + public static boolean deletePreviousPropertyFile(String move, String record) { + File moveFile = new File(move); + File delFile = new File(record); if ((moveFile.exists()) && (!moveFile.delete())) { - FineLoggerFactory.getLogger().error(RestartHelper.MOVE_FILE + "delete failed!"); + FineLoggerFactory.getLogger().error(move + "delete failed!"); + return false; } if ((delFile.exists()) && (!delFile.delete())) { - FineLoggerFactory.getLogger().error(RestartHelper.RECORD_FILE + "delete failed!"); + FineLoggerFactory.getLogger().error(record + "delete failed!"); + return false; } + return true; } private void initOldVersionRestoreComps() { diff --git a/designer-base/src/test/java/com/fr/design/update/ui/dialog/RestoreResultDialogTest.java b/designer-base/src/test/java/com/fr/design/update/ui/dialog/RestoreResultDialogTest.java new file mode 100644 index 000000000..9a30e54fd --- /dev/null +++ b/designer-base/src/test/java/com/fr/design/update/ui/dialog/RestoreResultDialogTest.java @@ -0,0 +1,23 @@ +package com.fr.design.update.ui.dialog; + + +import org.easymock.EasyMock; +import org.easymock.IMocksControl; +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; + +public class RestoreResultDialogTest { + + @Test + public void testDeletePreviousPropertyFile() { + IMocksControl control = EasyMock.createControl(); + File testRecordFile = control.createMock(File.class); + File testMoveFile = control.createMock(File.class); + EasyMock.expect(testRecordFile.getPath()).andReturn("move").anyTimes(); + EasyMock.expect(testMoveFile.getPath()).andReturn("record").anyTimes(); + control.replay(); + Assert.assertTrue(RestoreResultDialog.deletePreviousPropertyFile("move","record")); + } +} From 8a56c817a56c004a9a8065c5d9b083e19f549133 Mon Sep 17 00:00:00 2001 From: Bryant Date: Sun, 29 Sep 2019 15:59:38 +0800 Subject: [PATCH 3/3] =?UTF-8?q?KERNEL-418=20=E6=9B=B4=E6=96=B0=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../update/ui/dialog/RestoreResultDialog.java | 20 ++++++---------- .../ui/dialog/RestoreResultDialogTest.java | 23 +++++++++++-------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java b/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java index a1211e7ff..5f325a1d9 100644 --- a/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java +++ b/designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreResultDialog.java @@ -7,7 +7,6 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.update.domain.UpdateConstants; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; -import com.fr.log.FineLoggerFactory; import com.fr.stable.ProductConstants; import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; @@ -93,7 +92,7 @@ public class RestoreResultDialog extends JDialog { jarProgressLabel.setVisible(true); progressLabelPane.add(jarProgressLabel); pane.add(progressLabelPane, BorderLayout.CENTER); - deletePreviousPropertyFile(RestartHelper.MOVE_FILE,RestartHelper.RECORD_FILE); + deletePreviousPropertyFile(); putJarBackupFiles(); restartButton.setEnabled(true); restartLaterButton.setEnabled(true); @@ -101,18 +100,13 @@ public class RestoreResultDialog extends JDialog { this.setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Updater_Jar_Restore")); } - public static boolean deletePreviousPropertyFile(String move, String record) { - File moveFile = new File(move); - File delFile = new File(record); - if ((moveFile.exists()) && (!moveFile.delete())) { - FineLoggerFactory.getLogger().error(move + "delete failed!"); - return false; + public static boolean deletePreviousPropertyFile() { + File moveFile = new File(RestartHelper.MOVE_FILE); + File delFile = new File(RestartHelper.RECORD_FILE); + if (StableUtils.mkdirs(moveFile) && StableUtils.mkdirs(delFile)) { + return StableUtils.deleteFile(moveFile) && StableUtils.deleteFile(delFile); } - if ((delFile.exists()) && (!delFile.delete())) { - FineLoggerFactory.getLogger().error(record + "delete failed!"); - return false; - } - return true; + return false; } private void initOldVersionRestoreComps() { diff --git a/designer-base/src/test/java/com/fr/design/update/ui/dialog/RestoreResultDialogTest.java b/designer-base/src/test/java/com/fr/design/update/ui/dialog/RestoreResultDialogTest.java index 9a30e54fd..86be0450e 100644 --- a/designer-base/src/test/java/com/fr/design/update/ui/dialog/RestoreResultDialogTest.java +++ b/designer-base/src/test/java/com/fr/design/update/ui/dialog/RestoreResultDialogTest.java @@ -1,23 +1,26 @@ package com.fr.design.update.ui.dialog; - -import org.easymock.EasyMock; -import org.easymock.IMocksControl; +import com.fr.design.RestartHelper; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.StableUtils; import org.junit.Assert; import org.junit.Test; import java.io.File; +import java.io.IOException; public class RestoreResultDialogTest { @Test public void testDeletePreviousPropertyFile() { - IMocksControl control = EasyMock.createControl(); - File testRecordFile = control.createMock(File.class); - File testMoveFile = control.createMock(File.class); - EasyMock.expect(testRecordFile.getPath()).andReturn("move").anyTimes(); - EasyMock.expect(testMoveFile.getPath()).andReturn("record").anyTimes(); - control.replay(); - Assert.assertTrue(RestoreResultDialog.deletePreviousPropertyFile("move","record")); + File moveFile = new File(RestartHelper.MOVE_FILE); + File recordFile = new File(RestartHelper.RECORD_FILE); + try { + StableUtils.makesureFileExist(moveFile); + StableUtils.makesureFileExist(recordFile); + Assert.assertTrue(RestoreResultDialog.deletePreviousPropertyFile()); + } catch (IOException e) { + FineLoggerFactory.getLogger().error(e.getMessage(),e); + } } }