You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.1 KiB
73 lines
2.1 KiB
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);
|
|
}
|
|
}
|