1 package org.openecomp.sdc.asdctool.migration.resolver;
4 import org.openecomp.sdc.asdctool.migration.core.DBVersion;
5 import org.openecomp.sdc.asdctool.migration.core.task.Migration;
6 import org.openecomp.sdc.asdctool.migration.service.SdcRepoService;
8 import java.util.ArrayList;
9 import java.util.Comparator;
10 import java.util.List;
11 import java.util.stream.Collectors;
13 public class SpringBeansMigrationResolver implements MigrationResolver {
15 private List<Migration> migrations = new ArrayList<>();
17 private SdcRepoService sdcRepoService;
19 public SpringBeansMigrationResolver(List<Migration> migrations, SdcRepoService sdcRepoService) {
20 this.migrations = migrations;
21 this.sdcRepoService = sdcRepoService;
25 public List<Migration> resolveMigrations() {
26 migrations.sort(Comparator.comparing(Migration::getVersion));
27 return resolveNonExecutedMigrations();
30 //package private for testing
31 void setMigrations(List<Migration> migrations) {
32 this.migrations = migrations;
35 private List<Migration> resolveNonExecutedMigrations() {
36 DBVersion latestDBVersion = sdcRepoService.getLatestDBVersion();
37 return migrations.stream()
38 .filter(mig -> isMigrationVersionGreaterThanLatestVersion(latestDBVersion, mig))
39 .collect(Collectors.toList());
42 private boolean isMigrationVersionGreaterThanLatestVersion(DBVersion latestDBVersion, Migration mig) {
43 return mig.getVersion().compareTo(latestDBVersion) > 0;