Coverage Report - liquibase.changelog.ChangeLogIterator
 
Classes in this File Line Coverage Branch Coverage Complexity
ChangeLogIterator
64%
18/28
68%
11/16
3
ChangeLogIterator$1
0%
0/2
N/A
3
 
 1  
 package liquibase.changelog;
 2  
 
 3  
 import java.util.ArrayList;
 4  
 import java.util.Arrays;
 5  
 import java.util.Collections;
 6  
 import java.util.List;
 7  
 
 8  
 import liquibase.changelog.filter.ChangeSetFilter;
 9  
 import liquibase.changelog.visitor.ChangeSetVisitor;
 10  
 import liquibase.database.Database;
 11  
 import liquibase.exception.LiquibaseException;
 12  
 
 13  
 public class ChangeLogIterator {
 14  
     private DatabaseChangeLog databaseChangeLog;
 15  
     private List<ChangeSetFilter> changeSetFilters;
 16  
 
 17  6
     public ChangeLogIterator(DatabaseChangeLog databaseChangeLog, ChangeSetFilter... changeSetFilters) {
 18  6
         this.databaseChangeLog = databaseChangeLog;
 19  6
         this.changeSetFilters = Arrays.asList(changeSetFilters);
 20  6
     }
 21  
 
 22  
     public ChangeLogIterator(List<RanChangeSet> changeSetList, DatabaseChangeLog changeLog,
 23  0
             ChangeSetFilter... changeSetFilters) {
 24  0
         final List<ChangeSet> changeSets = new ArrayList<ChangeSet>();
 25  0
         for (RanChangeSet ranChangeSet : changeSetList) {
 26  0
             ChangeSet changeSet = changeLog.getChangeSet(ranChangeSet);
 27  0
             if (changeSet != null) {
 28  0
                 changeSets.add(changeSet);
 29  
             }
 30  0
         }
 31  0
         this.databaseChangeLog = (new DatabaseChangeLog() {
 32  
             @Override
 33  
             public List<ChangeSet> getChangeSets() {
 34  0
                 return changeSets;
 35  
             }
 36  
         });
 37  
 
 38  0
         this.changeSetFilters = Arrays.asList(changeSetFilters);
 39  0
     }
 40  
 
 41  
     public void run(ChangeSetVisitor visitor, Database database) throws LiquibaseException {
 42  6
         List<ChangeSet> changeSetList = databaseChangeLog.getChangeSets();
 43  6
         if (visitor.getDirection().equals(ChangeSetVisitor.Direction.REVERSE)) {
 44  1
             Collections.reverse(changeSetList);
 45  
         }
 46  
 
 47  6
         for (ChangeSet changeSet : changeSetList) {
 48  26
             boolean shouldVisit = true;
 49  26
             if (changeSetFilters != null) {
 50  26
                 for (ChangeSetFilter filter : changeSetFilters) {
 51  30
                     if (!filter.accepts(changeSet)) {
 52  8
                         shouldVisit = false;
 53  8
                         break;
 54  
                     }
 55  
                 }
 56  
             }
 57  
 
 58  26
             if (shouldVisit) {
 59  18
                 visitor.visit(changeSet, databaseChangeLog, database);
 60  
             }
 61  26
         }
 62  6
     }
 63  
 }