[SDC] rebase 1710 code
[sdc.git] / asdctool / src / main / java / org / openecomp / sdc / asdctool / migration / resolver / SpringBeansMigrationResolver.java
1 package org.openecomp.sdc.asdctool.migration.resolver;
2
3
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;
7
8 import java.util.ArrayList;
9 import java.util.Comparator;
10 import java.util.List;
11 import java.util.stream.Collectors;
12
13 public class SpringBeansMigrationResolver implements MigrationResolver {
14
15     private List<Migration> migrations = new ArrayList<>();
16
17     private SdcRepoService sdcRepoService;
18
19     public SpringBeansMigrationResolver(List<Migration> migrations, SdcRepoService sdcRepoService) {
20         this.migrations = migrations;
21         this.sdcRepoService = sdcRepoService;
22     }
23
24     @Override
25     public List<Migration> resolveMigrations() {
26         migrations.sort(Comparator.comparing(Migration::getVersion));
27         return resolveNonExecutedMigrations();
28     }
29
30     //package private for testing
31     void setMigrations(List<Migration> migrations) {
32         this.migrations = migrations;
33     }
34
35     private List<Migration> resolveNonExecutedMigrations() {
36         DBVersion latestDBVersion = sdcRepoService.getLatestDBVersion();
37         return migrations.stream()
38                 .filter(mig -> isMigrationVersionGreaterThanLatestVersion(latestDBVersion, mig))
39                 .collect(Collectors.toList());
40     }
41
42     private boolean isMigrationVersionGreaterThanLatestVersion(DBVersion latestDBVersion, Migration mig) {
43         return mig.getVersion().compareTo(latestDBVersion) > 0;
44     }
45 }