View Javadoc
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  }