1 package civitas.result;
2
3 import java.util.List;
4
5 import org.springframework.stereotype.Controller;
6
7 @Controller
8 public class CalculateStrengths {
9 public void apply(final String[] candidates, final List<List<CandidateResult>> winnerList) {
10 int noneOfABove = candidates.length - 1;
11 Double base = null;
12 for (int i = winnerList.size() - 1; i >= 0; i--) {
13 List<CandidateResult> step = winnerList.get(i);
14 if (base != null) {
15 double avg = 0.0;
16 for (CandidateResult result : step) {
17 avg += result.strength;
18 result.strength *= base;
19 }
20 avg /= step.size();
21 base *= avg;
22 } else {
23 for (CandidateResult result : step) {
24 if (result.candidate == noneOfABove) {
25 base = 10.0;
26 }
27 result.strength = 0.0;
28 }
29 }
30 }
31 }
32 }