From 458352754b15330a6d29ab8b1844e9f1278f1b6f Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 17 Apr 2022 23:56:42 +0200 Subject: [PATCH] #663 - show summary after migration --- .../migration/MigrationController.java | 2 ++ .../migration/MigrationService.java | 27 +++++++++++++++++++ .../budgetmaster/migration/MigrationTask.java | 20 +++++++------- .../templates/migration/statusFragment.ftl | 5 +++- 4 files changed, 43 insertions(+), 11 deletions(-) diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java index 63dab7369..83f3f92b5 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationController.java @@ -25,6 +25,7 @@ public class MigrationController extends BaseController public static final String ERROR = "error"; public static final String MIGRATION_SETTINGS = "migrationSettings"; public static final String STATUS = "status"; + public static final String SUMMARY = "summary"; } private static class ReturnValues @@ -105,6 +106,7 @@ public class MigrationController extends BaseController public String getMigrationStatus(Model model) { model.addAttribute(ModelAttributes.STATUS, migrationService.getMigrationStatus()); + model.addAttribute(ModelAttributes.SUMMARY, migrationService.getSummary()); return ReturnValues.STATUS_FRAGMENT; } } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationService.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationService.java index c38fe2a68..c2be6deb1 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationService.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationService.java @@ -14,13 +14,19 @@ import org.springframework.stereotype.Service; import java.nio.file.Files; import java.nio.file.Path; +import java.util.ArrayList; import java.util.Date; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; @Service public class MigrationService { public static final String PREVIOUS_DATABASE_FILE_NAME = "budgetmaster.mv.db"; public static final String PREVIOUS_DATABASE_FILE_NAME_WITHOUT_EXTENSION = "budgetmaster"; + private static final Pattern PATTERN_SUMMARY = Pattern.compile(".*(\\[COMPLETED\\] Migrate .*)"); + private final SettingsService settingsService; private final Path applicationSupportFolder; private final AccountRepository accountRepository; @@ -117,4 +123,25 @@ public class MigrationService { return migrationTask.getMigrationStatus(); } + + public List<String> getSummary() + { + final List<String> collectedStdout = migrationTask.getCollectedStdout(); + if(collectedStdout == null) + { + return new ArrayList<>(); + } + + final List<String> summary = new ArrayList<>(); + for(String line : collectedStdout) + { + final Matcher matcher = PATTERN_SUMMARY.matcher(line); + if(matcher.find()) + { + summary.add(matcher.group(1)); + } + } + + return summary; + } } diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationTask.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationTask.java index c7a4de6a9..8f6ca06e8 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationTask.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/migration/MigrationTask.java @@ -10,10 +10,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; public class MigrationTask implements Runnable { @@ -24,6 +21,7 @@ public class MigrationTask implements Runnable private MigrationArguments migrationArguments; private MigrationStatus migrationStatus; + private List<String> collectedStdout; public MigrationTask(Path applicationSupportFolder) { @@ -34,6 +32,7 @@ public class MigrationTask implements Runnable public void setMigrationArguments(MigrationArguments migrationArguments) { this.migrationArguments = migrationArguments; + this.collectedStdout = new ArrayList<>(); } @Override @@ -88,7 +87,7 @@ public class MigrationTask implements Runnable } } - private String runMigrator(Path migratorPath, MigrationArguments migrationArguments) throws MigrationException + private void runMigrator(Path migratorPath, MigrationArguments migrationArguments) throws MigrationException { final String javaCommand = determineJavaCommand(); @@ -104,7 +103,6 @@ public class MigrationTask implements Runnable final ProcessBuilder processBuilder = new ProcessBuilder(command).redirectErrorStream(true); final Process process = processBuilder.start(); - final StringBuilder collectedStdout = new StringBuilder(); try(BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()))) { while(true) @@ -116,14 +114,11 @@ public class MigrationTask implements Runnable } LOGGER.debug("[MIGRATOR] {}", line); - - collectedStdout.append(line); - collectedStdout.append("\n"); + collectedStdout.add(line); } } LOGGER.debug("Migration process finished"); - return collectedStdout.toString(); } catch(IOException e) { @@ -152,4 +147,9 @@ public class MigrationTask implements Runnable { this.migrationStatus = migrationStatus; } + + public List<String> getCollectedStdout() + { + return collectedStdout; + } } diff --git a/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl b/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl index 8a379152a..830cbed60 100644 --- a/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl +++ b/BudgetMasterServer/src/main/resources/templates/migration/statusFragment.ftl @@ -8,8 +8,11 @@ </div> </div> -<div class="row"> +<div class="row left-align"> <div class="col s12 m12 l8 offset-l2"> + <#list summary as summaryLine> + ${summaryLine}<br> + </#list> </div> </div> -- GitLab