Execute updates in order

This commit is contained in:
René Pfeuffer
2019-05-14 14:45:12 +02:00
parent 4e2ac426a0
commit bafc8ea668
3 changed files with 64 additions and 2 deletions

View File

@@ -1,17 +1,29 @@
package sonia.scm;
import sonia.scm.migration.UpdateStep;
import sonia.scm.version.Version;
import javax.inject.Inject;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import static java.util.stream.Collectors.toList;
public class UpdateEngine {
private final Set<UpdateStep> steps;
private final List<UpdateStep> steps;
@Inject
public UpdateEngine(Set<UpdateStep> steps) {
this.steps = steps;
this.steps = sortSteps(steps);
}
private List<UpdateStep> sortSteps(Set<UpdateStep> steps) {
Comparator<UpdateStep> compareByVersion = Comparator.comparing(step -> Version.parse(step.getTargetVersion()));
return steps.stream()
.sorted(compareByVersion.reversed())
.collect(toList());
}
public void update() {