Browse Source

REPORT-40472 设计器内还原到历史版本后备份的文件夹没有删除

feature/big-screen
bryant 4 years ago
parent
commit
9e8009e319
  1. 50
      designer-base/src/main/java/com/fr/design/update/factory/UpdateFileFactory.java
  2. 2
      designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreDialog.java
  3. 2
      designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java
  4. 33
      designer-base/src/main/java/com/fr/design/update/utils/UpdateFileUtils.java
  5. 28
      designer-base/src/test/java/com/fr/design/update/factory/UpdateFileFactoryTest.java
  6. 10
      designer-base/src/test/java/com/fr/design/update/utils/UpdateFileUtilsTest.java

50
designer-base/src/main/java/com/fr/design/update/factory/UpdateFileFactory.java

@ -0,0 +1,50 @@
package com.fr.design.update.factory;
import com.fr.decision.update.data.UpdateConstants;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.StableUtils;
import java.io.File;;
/**
* @author Bryant
* @version 10.0
* Created by Bryant on 2020-09-29
*/
public class UpdateFileFactory {
private UpdateFileFactory() {
}
public static File[] getBackupVersions() {
File[] versions = null;
try {
File backupDir = new File(StableUtils.pathJoin(StableUtils.getInstallHome(), UpdateConstants.DESIGNER_BACKUP_DIR));
StableUtils.mkdirs(backupDir);
versions = backupDir.listFiles();
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
return versions;
}
public static boolean isBackupVersionsValid(String version) {
boolean designerValid = false;
boolean envValid = false;
try {
File designerLib = new File(StableUtils.pathJoin(version, UpdateConstants.DESIGNERBACKUPPATH));
File[] jars = designerLib.listFiles();
if (jars != null && jars.length > 0) {
designerValid = true;
}
File envLib = new File(StableUtils.pathJoin(version, UpdateConstants.BACKUPPATH));
jars = envLib.listFiles();
if (jars != null && jars.length > 0) {
envValid = true;
}
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
return designerValid && envValid;
}
}

2
designer-base/src/main/java/com/fr/design/update/ui/dialog/RestoreDialog.java

@ -86,7 +86,7 @@ public class RestoreDialog extends JDialog {
JPanel jarListPane = new JPanel(); JPanel jarListPane = new JPanel();
jarListPane.setLayout(new BoxLayout(jarListPane, BoxLayout.Y_AXIS)); jarListPane.setLayout(new BoxLayout(jarListPane, BoxLayout.Y_AXIS));
String[] jarBackupFiles = UpdateFileUtils.listFilteredFiles(StableUtils.getInstallHome(), UpdateConstants.DESIGNER_BACKUP_DIR); String[] jarBackupFiles = UpdateFileUtils.listBackupVersions();
ArrayUtils.reverse(jarBackupFiles); ArrayUtils.reverse(jarBackupFiles);
String[] jarFilesList = ((jarBackupFiles.length < NUMOFCELL_LEAST) ? Arrays.copyOf(jarBackupFiles, NUMOFCELL_LEAST) : jarBackupFiles); String[] jarFilesList = ((jarBackupFiles.length < NUMOFCELL_LEAST) ? Arrays.copyOf(jarBackupFiles, NUMOFCELL_LEAST) : jarBackupFiles);

2
designer-base/src/main/java/com/fr/design/update/ui/dialog/UpdateMainDialog.java

@ -320,7 +320,7 @@ public class UpdateMainDialog extends UIDialog {
} }
}); });
//choose RestoreLabel to show //choose RestoreLabel to show
boolean isNeedRestore = ArrayUtils.isNotEmpty(UpdateFileUtils.listFilteredFiles(StableUtils.getInstallHome(), getBackupDirectory())); boolean isNeedRestore = ArrayUtils.isNotEmpty(UpdateFileUtils.listBackupVersions());
jarRestoreLabel = isNeedRestore ? jarRestorePreviousRevision : noJarPreviousRevision; jarRestoreLabel = isNeedRestore ? jarRestorePreviousRevision : noJarPreviousRevision;
} }

33
designer-base/src/main/java/com/fr/design/update/utils/UpdateFileUtils.java

@ -1,5 +1,6 @@
package com.fr.design.update.utils; package com.fr.design.update.utils;
import com.fr.design.update.factory.UpdateFileFactory;
import com.fr.stable.StableUtils; import com.fr.stable.StableUtils;
import java.io.File; import java.io.File;
@ -12,41 +13,19 @@ import java.util.List;
* Created by Bryant on 2020-09-25 * Created by Bryant on 2020-09-25
*/ */
public class UpdateFileUtils { public class UpdateFileUtils {
/** /**
* 列出过滤后的文件 * 列出过滤后的文件
* *
* @param installHome 安装目录
* @param backupdir 备份目录
* @return String数组 * @return String数组
*/ */
public static String[] listFilteredFiles(String installHome, String backupdir) { public static String[] listBackupVersions() {
File backupDir = new File(StableUtils.pathJoin(installHome, backupdir)); File[] versionBackup = UpdateFileFactory.getBackupVersions();
StableUtils.mkdirs(backupDir);
File[] versionBackup = backupDir.listFiles();
List<String> versions = new ArrayList<>(); List<String> versions = new ArrayList<>();
if (versionBackup != null) { if (versionBackup != null) {
for (File file : versionBackup) { for (File file : versionBackup) {
boolean canBackup = true; if (UpdateFileFactory.isBackupVersionsValid(file.getAbsolutePath())) {
if (file.isDirectory()) { versions.add(file.getName());
File[] libs = file.listFiles(); } else {
if (libs == null || libs.length == 0) {
canBackup = false;
} else {
for (File lib : libs) {
if (lib.isDirectory()) {
File[] jars = lib.listFiles();
if (jars == null || jars.length == 0) {
canBackup = false;
}
}
}
}
if (canBackup) {
versions.add(file.getName());
}
}
if (!canBackup) {
StableUtils.deleteFile(file); StableUtils.deleteFile(file);
} }
} }

28
designer-base/src/test/java/com/fr/design/update/factory/UpdateFileFactoryTest.java

@ -0,0 +1,28 @@
package com.fr.design.update.factory;
import com.fr.decision.update.data.UpdateConstants;
import com.fr.stable.StableUtils;
import org.junit.Assert;
import org.junit.Test;
import java.io.File;
public class UpdateFileFactoryTest {
@Test
public void testGetBackupVersions() {
Assert.assertEquals(0, UpdateFileFactory.getBackupVersions().length);
File backupDir = new File(StableUtils.pathJoin(StableUtils.getInstallHome(), UpdateConstants.DESIGNER_BACKUP_DIR));
StableUtils.deleteFile(backupDir);
}
@Test
public void testIsBackupVersionsValid() {
File des = new File(StableUtils.pathJoin(StableUtils.getInstallHome(), UpdateConstants.DESIGNER_BACKUP_DIR, "test", UpdateConstants.BACKUPPATH, "test"));
File env = new File(StableUtils.pathJoin(StableUtils.getInstallHome(), UpdateConstants.DESIGNER_BACKUP_DIR, "test", UpdateConstants.DESIGNERBACKUPPATH, "test"));
StableUtils.mkdirs(des);
StableUtils.mkdirs(env);
Assert.assertTrue(UpdateFileFactory.isBackupVersionsValid(StableUtils.pathJoin(StableUtils.getInstallHome(), UpdateConstants.DESIGNER_BACKUP_DIR, "test")));
StableUtils.deleteFile(new File(StableUtils.pathJoin(StableUtils.getInstallHome(), UpdateConstants.DESIGNER_BACKUP_DIR)));
}
}

10
designer-base/src/test/java/com/fr/design/update/utils/UpdateFileUtilsTest.java

@ -1,5 +1,6 @@
package com.fr.design.update.utils; package com.fr.design.update.utils;
import com.fr.decision.update.data.UpdateConstants;
import com.fr.stable.StableUtils; import com.fr.stable.StableUtils;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
@ -15,9 +16,12 @@ public class UpdateFileUtilsTest {
@Test @Test
public void testListFilteredFiles() { public void testListFilteredFiles() {
StableUtils.mkdirs(new File("home/backup/version/lib/jars")); File des = new File(StableUtils.pathJoin(StableUtils.getInstallHome(), UpdateConstants.DESIGNER_BACKUP_DIR, "test", UpdateConstants.BACKUPPATH, "test"));
String[] result = UpdateFileUtils.listFilteredFiles("home", "backup"); File env = new File(StableUtils.pathJoin(StableUtils.getInstallHome(), UpdateConstants.DESIGNER_BACKUP_DIR, "test", UpdateConstants.DESIGNERBACKUPPATH, "test"));
StableUtils.mkdirs(des);
StableUtils.mkdirs(env);
String[] result = UpdateFileUtils.listBackupVersions();
Assert.assertEquals(1, result.length); Assert.assertEquals(1, result.length);
StableUtils.deleteFile(new File("home")); StableUtils.deleteFile(new File(StableUtils.pathJoin(StableUtils.getInstallHome(), UpdateConstants.DESIGNER_BACKUP_DIR)));
} }
} }

Loading…
Cancel
Save