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 63dab73690dff78f0926abc6b0977231e23a6636..83f3f92b5578ffacf824213195b49411f13003bd 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 c38fe2a6875adf1df654ac3aadf259c1f72591b8..c2be6deb12f3d0a120a93a03fc8ec4cd61b07209 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 c7a4de6a90ffc2645c9f830daf1f4e8f219f8e6a..8f6ca06e894c00fb6761daa58d8f093777cc1f4a 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 8a379152ad46eb4e4350fa9a84598308970d8e6c..830cbed609a8825a0388d6fa2a7e6f111a616836 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>