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 }