package org.drools.workbench.services.verifier.core.checks.base;
import java.util.List;
import org.drools.workbench.services.verifier.api.client.configuration.CheckConfiguration;
import org.drools.workbench.services.verifier.api.client.reporting.Issue;
/**
* Wraps more than one check into one.
* Each check will look for failure in the given order.
* Once failure is found the rest of the checks are ignored.
* <br>
* <br>
* This is used for example by the conflict-subsubsumption-redundancy chain.
* Where conflict, when found, blocks subsumption.
*/
public class PriorityListCheck
implements Check {
private final List<Check> filteredSet;
private Check checkWithIssues;
public PriorityListCheck( final List<Check> filteredSet ) {
this.filteredSet = filteredSet;
}
@Override
public Issue getIssue() {
return checkWithIssues.getIssue();
}
@Override
public boolean hasIssues() {
return checkWithIssues != null;
}
@Override
public boolean isActive( final CheckConfiguration checkConfiguration ) {
return !filteredSet.isEmpty();
}
@Override
public boolean check() {
checkWithIssues = filteredSet.stream().filter( Check::check ).findFirst().orElse( null );
return checkWithIssues != null;
}
}