View Javadoc
1   package civitas.result;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   import org.springframework.beans.factory.annotation.Autowired;
7   import org.springframework.stereotype.Controller;
8   
9   @Controller
10  public class ComputeWinners {
11  
12  	@Autowired
13  	CompareBeats compareBeats;
14  
15  	List<Integer> apply(final CandidatePair[][] m, final Integer n, final Boolean[] ignore) {
16  		List<Integer> winners = new ArrayList<>();
17  		for (int i = 0; i < n; i++) {
18  			if (!ignore[i] && didWin(m, n, ignore, i)) {
19  				winners.add(i);
20  			}
21  		}
22  
23  		return winners;
24  	}
25  
26  	private Boolean didWin(final CandidatePair[][] m, final Integer n, final Boolean[] ignore, final int i) {
27  		for (int j = 0; j < n; j++) {
28  			if (!ignore[j] && compareBeats.apply(m[j][i], m[i][j]) > 0) {
29  				return false;
30  			}
31  		}
32  		return true;
33  	}
34  }