Skip to content
Snippets Groups Projects
Commit 45835275 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#663 - show summary after migration

parent 49105c1d
No related branches found
No related tags found
No related merge requests found
Pipeline #6293 passed
...@@ -25,6 +25,7 @@ public class MigrationController extends BaseController ...@@ -25,6 +25,7 @@ public class MigrationController extends BaseController
public static final String ERROR = "error"; public static final String ERROR = "error";
public static final String MIGRATION_SETTINGS = "migrationSettings"; public static final String MIGRATION_SETTINGS = "migrationSettings";
public static final String STATUS = "status"; public static final String STATUS = "status";
public static final String SUMMARY = "summary";
} }
private static class ReturnValues private static class ReturnValues
...@@ -105,6 +106,7 @@ public class MigrationController extends BaseController ...@@ -105,6 +106,7 @@ public class MigrationController extends BaseController
public String getMigrationStatus(Model model) public String getMigrationStatus(Model model)
{ {
model.addAttribute(ModelAttributes.STATUS, migrationService.getMigrationStatus()); model.addAttribute(ModelAttributes.STATUS, migrationService.getMigrationStatus());
model.addAttribute(ModelAttributes.SUMMARY, migrationService.getSummary());
return ReturnValues.STATUS_FRAGMENT; return ReturnValues.STATUS_FRAGMENT;
} }
} }
\ No newline at end of file
...@@ -14,13 +14,19 @@ import org.springframework.stereotype.Service; ...@@ -14,13 +14,19 @@ import org.springframework.stereotype.Service;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service @Service
public class MigrationService public class MigrationService
{ {
public static final String PREVIOUS_DATABASE_FILE_NAME = "budgetmaster.mv.db"; public static final String PREVIOUS_DATABASE_FILE_NAME = "budgetmaster.mv.db";
public static final String PREVIOUS_DATABASE_FILE_NAME_WITHOUT_EXTENSION = "budgetmaster"; 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 SettingsService settingsService;
private final Path applicationSupportFolder; private final Path applicationSupportFolder;
private final AccountRepository accountRepository; private final AccountRepository accountRepository;
...@@ -117,4 +123,25 @@ public class MigrationService ...@@ -117,4 +123,25 @@ public class MigrationService
{ {
return migrationTask.getMigrationStatus(); 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;
}
} }
...@@ -10,10 +10,7 @@ import java.nio.file.Files; ...@@ -10,10 +10,7 @@ import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.StandardCopyOption; import java.nio.file.StandardCopyOption;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList; import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
public class MigrationTask implements Runnable public class MigrationTask implements Runnable
{ {
...@@ -24,6 +21,7 @@ public class MigrationTask implements Runnable ...@@ -24,6 +21,7 @@ public class MigrationTask implements Runnable
private MigrationArguments migrationArguments; private MigrationArguments migrationArguments;
private MigrationStatus migrationStatus; private MigrationStatus migrationStatus;
private List<String> collectedStdout;
public MigrationTask(Path applicationSupportFolder) public MigrationTask(Path applicationSupportFolder)
{ {
...@@ -34,6 +32,7 @@ public class MigrationTask implements Runnable ...@@ -34,6 +32,7 @@ public class MigrationTask implements Runnable
public void setMigrationArguments(MigrationArguments migrationArguments) public void setMigrationArguments(MigrationArguments migrationArguments)
{ {
this.migrationArguments = migrationArguments; this.migrationArguments = migrationArguments;
this.collectedStdout = new ArrayList<>();
} }
@Override @Override
...@@ -88,7 +87,7 @@ public class MigrationTask implements Runnable ...@@ -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(); final String javaCommand = determineJavaCommand();
...@@ -104,7 +103,6 @@ public class MigrationTask implements Runnable ...@@ -104,7 +103,6 @@ public class MigrationTask implements Runnable
final ProcessBuilder processBuilder = new ProcessBuilder(command).redirectErrorStream(true); final ProcessBuilder processBuilder = new ProcessBuilder(command).redirectErrorStream(true);
final Process process = processBuilder.start(); final Process process = processBuilder.start();
final StringBuilder collectedStdout = new StringBuilder();
try(BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()))) try(BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())))
{ {
while(true) while(true)
...@@ -116,14 +114,11 @@ public class MigrationTask implements Runnable ...@@ -116,14 +114,11 @@ public class MigrationTask implements Runnable
} }
LOGGER.debug("[MIGRATOR] {}", line); LOGGER.debug("[MIGRATOR] {}", line);
collectedStdout.add(line);
collectedStdout.append(line);
collectedStdout.append("\n");
} }
} }
LOGGER.debug("Migration process finished"); LOGGER.debug("Migration process finished");
return collectedStdout.toString();
} }
catch(IOException e) catch(IOException e)
{ {
...@@ -152,4 +147,9 @@ public class MigrationTask implements Runnable ...@@ -152,4 +147,9 @@ public class MigrationTask implements Runnable
{ {
this.migrationStatus = migrationStatus; this.migrationStatus = migrationStatus;
} }
public List<String> getCollectedStdout()
{
return collectedStdout;
}
} }
...@@ -8,8 +8,11 @@ ...@@ -8,8 +8,11 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row left-align">
<div class="col s12 m12 l8 offset-l2"> <div class="col s12 m12 l8 offset-l2">
<#list summary as summaryLine>
${summaryLine}<br>
</#list>
</div> </div>
</div> </div>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment