parent
18550f3958
commit
7ae56b56cc
@ -0,0 +1,72 @@
|
||||
package fr.mieuxvoter.mj;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
||||
public class CollectedTally implements TallyInterface {
|
||||
|
||||
Integer amountOfProposals = 0;
|
||||
Integer amountOfGrades = 0;
|
||||
|
||||
ProposalTally[] proposalsTallies;
|
||||
|
||||
public CollectedTally(Integer amountOfProposals, Integer amountOfGrades) {
|
||||
setAmountOfProposals(amountOfProposals);
|
||||
setAmountOfGrades(amountOfGrades);
|
||||
|
||||
proposalsTallies = new ProposalTally[amountOfProposals];
|
||||
for (int i = 0; i < amountOfProposals; i++) {
|
||||
ProposalTally proposalTally = new ProposalTally();
|
||||
Integer[] tally = new Integer[amountOfGrades];
|
||||
for (int j = 0; j < amountOfGrades; j++) {
|
||||
tally[j] = 0;
|
||||
}
|
||||
proposalTally.setTally(tally);
|
||||
proposalsTallies[i] = proposalTally;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProposalTallyInterface[] getProposalsTallies() {
|
||||
return proposalsTallies;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigInteger getAmountOfJudges() {
|
||||
return guessAmountOfJudges();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer getAmountOfProposals() {
|
||||
return this.amountOfProposals;
|
||||
}
|
||||
|
||||
public void setAmountOfProposals(Integer amountOfProposals) {
|
||||
this.amountOfProposals = amountOfProposals;
|
||||
}
|
||||
|
||||
public Integer getAmountOfGrades() {
|
||||
return amountOfGrades;
|
||||
}
|
||||
|
||||
public void setAmountOfGrades(Integer amountOfGrades) {
|
||||
this.amountOfGrades = amountOfGrades;
|
||||
}
|
||||
|
||||
protected BigInteger guessAmountOfJudges() {
|
||||
BigInteger amountOfJudges = BigInteger.ZERO;
|
||||
for (ProposalTallyInterface proposalTally : getProposalsTallies()) {
|
||||
amountOfJudges = proposalTally.getAmountOfJudgments().max(amountOfJudges);
|
||||
}
|
||||
return amountOfJudges;
|
||||
}
|
||||
|
||||
public void collect(Integer proposal, Integer grade) {
|
||||
assert(0 <= proposal);
|
||||
assert(amountOfProposals > proposal);
|
||||
assert(0 <= grade);
|
||||
assert(amountOfGrades > grade);
|
||||
|
||||
BigInteger[] tally = proposalsTallies[proposal].getTally();
|
||||
tally[grade] = tally[grade].add(BigInteger.ONE);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue