1 package org.openecomp.sdc.asdctool.migration.resolver;
4 import org.openecomp.sdc.asdctool.migration.core.task.IMigrationStage;
5 import org.openecomp.sdc.asdctool.migration.core.task.IMigrationStage;
6 import org.openecomp.sdc.asdctool.migration.core.task.PostMigration;
7 import org.openecomp.sdc.asdctool.migration.core.task.PostMigration;
8 import java.util.ArrayList;
9 import java.util.Comparator;
10 import java.util.List;
11 import java.util.stream.Collectors;
13 import org.openecomp.sdc.asdctool.migration.core.DBVersion;
14 import org.openecomp.sdc.asdctool.migration.core.task.IMigrationStage;
15 import org.openecomp.sdc.asdctool.migration.core.task.Migration;
16 import org.openecomp.sdc.asdctool.migration.core.task.PostMigration;
17 import org.openecomp.sdc.asdctool.migration.service.SdcRepoService;
19 public class SpringBeansMigrationResolver implements MigrationResolver {
21 private List<Migration> migrations = new ArrayList<>();
22 private List<PostMigration> postMigrations = new ArrayList<>();
24 private SdcRepoService sdcRepoService;
26 public SpringBeansMigrationResolver(List<Migration> migrations, List<PostMigration> postMigrations, SdcRepoService sdcRepoService) {
27 this.migrations = migrations;
28 this.postMigrations = postMigrations;
29 this.sdcRepoService = sdcRepoService;
33 public List<IMigrationStage> resolveMigrations() {
34 migrations.sort(Comparator.comparing(Migration::getVersion));
35 List<IMigrationStage> allTasks = resolveNonExecutedMigrations();
36 allTasks.addAll(postMigrations);
40 //package private for testing
41 void setMigrations(List<Migration> migrations) {
42 this.migrations = migrations;
45 //package private for testing
46 void setPostMigrations(List<PostMigration> postMigrations) {
47 this.postMigrations = postMigrations;
50 private List<IMigrationStage> resolveNonExecutedMigrations() {
51 DBVersion latestDBVersion = sdcRepoService.getLatestDBVersion();
52 return migrations.stream()
53 .filter(mig -> isMigrationVersionGreaterThanLatestVersion(latestDBVersion, mig))
54 .collect(Collectors.toList());
57 private boolean isMigrationVersionGreaterThanLatestVersion(DBVersion latestDBVersion, Migration mig) {
58 return mig.getVersion().compareTo(latestDBVersion) > 0;