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.IMigrationStage;
6 import org.openecomp.sdc.asdctool.migration.core.task.Migration;
7 import org.openecomp.sdc.asdctool.migration.core.task.PostMigration;
8 import org.openecomp.sdc.asdctool.migration.service.SdcRepoService;
10 import java.util.ArrayList;
11 import java.util.Comparator;
12 import java.util.List;
13 import java.util.stream.Collectors;
15 public class SpringBeansMigrationResolver implements MigrationResolver {
17 private List<Migration> migrations = new ArrayList<>();
18 private List<PostMigration> postMigrations = new ArrayList<>();
20 private SdcRepoService sdcRepoService;
22 public SpringBeansMigrationResolver(List<Migration> migrations, List<PostMigration> postMigrations, SdcRepoService sdcRepoService) {
23 this.migrations = migrations;
24 this.postMigrations = postMigrations;
25 this.sdcRepoService = sdcRepoService;
29 public List<IMigrationStage> resolveMigrations() {
30 migrations.sort(Comparator.comparing(Migration::getVersion));
31 List<IMigrationStage> allTasks = resolveNonExecutedMigrations();
32 allTasks.addAll(postMigrations);
36 //package private for testing
37 void setMigrations(List<Migration> migrations) {
38 this.migrations = migrations;
41 //package private for testing
42 void setPostMigrations(List<PostMigration> postMigrations) {
43 this.postMigrations = postMigrations;
46 private List<IMigrationStage> resolveNonExecutedMigrations() {
47 DBVersion latestDBVersion = sdcRepoService.getLatestDBVersion();
48 return migrations.stream()
49 .filter(mig -> isMigrationVersionGreaterThanLatestVersion(latestDBVersion, mig))
50 .collect(Collectors.toList());
53 private boolean isMigrationVersionGreaterThanLatestVersion(DBVersion latestDBVersion, Migration mig) {
54 return mig.getVersion().compareTo(latestDBVersion) > 0;