Author: tchemit Date: 2012-07-31 12:54:49 +0200 (Tue, 31 Jul 2012) New Revision: 3573 Url: http://chorem.org/repositories/revision/pollen/3573 Log: refs #590: Refactor votecounting module (javadoc + some improvments) Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/VoteForPoll.java trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/ChoiceIdAble.java trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/ChoiceScore.java trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/GroupOfVoter.java trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/SimpleVoter.java trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/Voter.java trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/strategy/VoteCountingStrategy.java trunk/pollen-votecounting-api/src/test/java/org/chorem/pollen/votecounting/strategy/VoteCountingStrategyProviderTest.java trunk/pollen-votecounting-strategy-borda/src/main/java/org/chorem/pollen/votecounting/strategy/BordaStrategy.java trunk/pollen-votecounting-strategy-condorcet/src/main/java/org/chorem/pollen/votecounting/strategy/CondorcetStrategy.java trunk/pollen-votecounting-strategy-coombs/src/main/java/org/chorem/pollen/votecounting/strategy/CoombsStrategy.java trunk/pollen-votecounting-strategy-instant-runoff/src/main/java/org/chorem/pollen/votecounting/strategy/InstantRunoffStrategy.java trunk/pollen-votecounting-strategy-normal/src/main/java/org/chorem/pollen/votecounting/strategy/NormalStrategy.java trunk/pollen-votecounting-strategy-number/src/main/java/org/chorem/pollen/votecounting/strategy/NumberStrategy.java trunk/pollen-votecounting-strategy-percentage/src/main/java/org/chorem/pollen/votecounting/strategy/PercentageStrategy.java Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/AbstractVoteAction.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -439,7 +439,7 @@ public String getChoiceFragment() { VoteCountingStrategy strategy = getVoteCountingStrategy(poll); String result = - "displayVote_" + strategy.getRenderType().name() + ".jsp"; + "displayVote_" + strategy.getVoteValueEditorType().name() + ".jsp"; return result; } Modified: trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/VoteForPoll.java =================================================================== --- trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/VoteForPoll.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-ui-struts2/src/main/java/org/chorem/pollen/ui/actions/poll/VoteForPoll.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -102,7 +102,7 @@ int nbVotes = 0; int totalValues = 0; - VoteCountingStrategy voteCountingStrategy = + VoteCountingStrategy strategy = getVoteCountingStrategy(getPoll()); boolean voteValid = true; @@ -111,7 +111,7 @@ Integer value = voteToChoice.getVoteValue(); // check if vote is null ? - boolean voteNull = voteCountingStrategy.isVoteValueNull(value); + boolean voteNull = strategy.isVoteValueNull(value); if (voteNull) { // null vote, can skip his validation @@ -119,7 +119,7 @@ } // check if vote value is valid ? - boolean valid = voteCountingStrategy.isVoteValueValid(value); + boolean valid = strategy.isVoteValueValid(value); if (valid) { @@ -130,31 +130,11 @@ // not a valid vote value, mark it and skip other fields validation String validMessage = - voteCountingStrategy.getVoteValueNotValidMessage(); - addFieldError("vote.choices", _(validMessage)); + strategy.getVoteValueNotValidMessage(getLocale()); + addFieldError("vote.choices", validMessage); voteValid = false; break; } - -// // XXX-fdesbois-2012-04-11 : for a VoteCountingType#NUMBER the difference between 0 and null value could be important -// if (isCondorcetVoteCounting()) { -// if (value > 0) { -// -// // for condorcet vote, must be strictly greater than 0 -// // see http://chorem.org/issues/574 -// // see http://chorem.org/issues/576 -// nbVotes++; -// totalValues += value; -// } else { -// -// addFieldError("vote.choices", -// _("pollen.error.vote.invalidCondorcetVoteValue")); -// } -// // for other vote type, value must be > 0 -// } else if (value != 0) { -// nbVotes++; -// totalValues += value; -// } } if (voteValid) { @@ -166,20 +146,15 @@ } // check that total vote value is ok - if (!voteCountingStrategy.isTotalVoteValueValid(totalValues)) { + if (!strategy.isTotalVoteValueValid(totalValues)) { // not valid - String errorMessage = voteCountingStrategy.getTotalVoteValueNotValidMessage(); - addFieldError("vote.choices", _(errorMessage)); + String errorMessage = strategy.getTotalVoteValueNotValidMessage(getLocale()); + addFieldError("vote.choices", errorMessage); } } -// // check for percentage that the sum of all values equals 100 -// if (isPercentageVoteCounting() && totalValues != 100) { -// addFieldError("vote.choices", _("pollen.error.vote.percentage")); -// } } - // @InputConfig(methodName = PREPARE_VOTE_PAGE) @Override public String execute() throws Exception { Modified: trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/ChoiceIdAble.java =================================================================== --- trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/ChoiceIdAble.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/ChoiceIdAble.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -25,7 +25,7 @@ import com.google.common.base.Function; /** - * To mark any object with identify a choice via the {@link #getChoiceId()} + * To mark any object that identify a choice via the {@link #getChoiceId()} * method. * * @author tchemit <chemit@codelutin.com> Modified: trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/ChoiceScore.java =================================================================== --- trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/ChoiceScore.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/ChoiceScore.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -59,13 +59,14 @@ } public void addScoreValue(double scoreToAdd) { + BigDecimal newScoreValue; if (scoreValue == null) { - setScoreValue(BigDecimal.valueOf(scoreToAdd)); + newScoreValue = BigDecimal.valueOf(scoreToAdd); } else { - setScoreValue(scoreValue.add(BigDecimal.valueOf(scoreToAdd))); + newScoreValue = scoreValue.add(BigDecimal.valueOf(scoreToAdd)); } - + setScoreValue(newScoreValue); } public void setScoreValue(BigDecimal scoreValue) { @@ -74,15 +75,18 @@ @Override public int compareTo(ChoiceScore o) { - BigDecimal v1 = scoreValue; - BigDecimal v2 = o.scoreValue; - if (v1 == null) { - v1 = new BigDecimal(-1); - } - if (v2 == null) { - v2 = new BigDecimal(-1); - } - int i = v1.subtract(v2).intValue(); - return i; + int i1 = scoreValue == null ? -1 : scoreValue.intValue(); + int i2 = o.scoreValue == null ? -1 : o.scoreValue.intValue(); + return i1 - i2; +// BigDecimal v1 = scoreValue; +// BigDecimal v2 = o.scoreValue; +// if (v1 == null) { +// v1 = new BigDecimal(-1); +// } +// if (v2 == null) { +// v2 = new BigDecimal(-1); +// } +// int i = v1.subtract(v2).intValue(); +// return i; } } Modified: trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/GroupOfVoter.java =================================================================== --- trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/GroupOfVoter.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/GroupOfVoter.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -56,7 +56,11 @@ GroupOfVoter result = new GroupOfVoter(); result.setVoterId(voterId); result.setWeight(weight); - result.setVoteForChoices(voteForChoices); + if (voters != null) { + for (VoteForChoice voteForChoice : voteForChoices) { + result.addVoteForChoice(voteForChoice); + } + } result.setVoters(voters); return result; } @@ -102,11 +106,6 @@ getVoteForChoices().add(voteForChoice); } - @Override - public void setVoteForChoices(Set<VoteForChoice> voteForChoices) { - this.voteForChoices = voteForChoices; - } - public void setVoters(Set<Voter> voters) { this.voters = voters; } Modified: trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/SimpleVoter.java =================================================================== --- trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/SimpleVoter.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/SimpleVoter.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -49,7 +49,11 @@ SimpleVoter result = new SimpleVoter(); result.setVoterId(voterId); result.setWeight(weight); - result.setVoteForChoices(voteForChoices); + if (voteForChoices != null) { + for (VoteForChoice voteForChoice : voteForChoices) { + result.addVoteForChoice(voteForChoice); + } + } return result; } @@ -86,9 +90,4 @@ this.weight = weight; } - @Override - public void setVoteForChoices(Set<VoteForChoice> voteForChoices) { - this.voteForChoices = voteForChoices; - } - } Modified: trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/Voter.java =================================================================== --- trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/Voter.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/model/Voter.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -25,25 +25,52 @@ import java.util.Set; /** - * A voter (says a physical person which votes on a poll). + * A voter (can be a physical voter or a group of voters). * * @author tchemit <chemit@codelutin.com> * @since 1.5 */ public interface Voter { + /** + * Gets the voter unique id. + * + * @return the unique id of the voter. + */ String getVoterId(); + /** + * Gets the weight of the voter. + * + * @return the weight to apply for this voter. + */ double getWeight(); + /** + * Gets all the vote for choices registred for this voter. + * + * @return all the vote values registred for this voter + */ + Set<VoteForChoice> getVoteForChoices(); + + /** + * Register a new vote value for this voter. + * + * @param voteForChoice new vote value to register for this voter + */ void addVoteForChoice(VoteForChoice voteForChoice); - Set<VoteForChoice> getVoteForChoices(); - + /** + * Sets the voter id. + * + * @param voterId the new voter id to set + */ void setVoterId(String voterId); + /** + * Sets the voter weight. + * + * @param weight the new weight to set + */ void setWeight(double weight); - - void setVoteForChoices(Set<VoteForChoice> voteForChoices); - } Modified: trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/strategy/VoteCountingStrategy.java =================================================================== --- trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/strategy/VoteCountingStrategy.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-api/src/main/java/org/chorem/pollen/votecounting/strategy/VoteCountingStrategy.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -66,25 +66,94 @@ */ VoteCountingResult votecount(Set<Voter> voter); + /** + * Get the value to display for a given vote value in the vote page. + * + * @param voteValue the vote value to display + * @return the string representation of a vote value + */ String getDisplayVoteValue(Integer voteValue); + /** + * Test if the given value is a vote value (says users has filled it). + * + * @param voteValue the vote value to test + * @return {@code true} if the given value is persisted. + */ boolean isChoiceInVote(Integer voteValue); + /** + * Get the vote counting strategy name to display in UI. + * + * @param locale the locale used to render the strategy name + * @return the localized vote counting strategy name + */ String getStrategyName(Locale locale); + /** + * Get the vote counting strategy help to display in UI. + * + * @param locale the locale used to render the strategy name + * @return the localized vote counting strategy help + */ String getStrategyHelp(Locale locale); + /** + * Tests if the given vote value is valid. + * + * @param voteValue the vote value to test + * @return {@code true} if the given vote value is valid, {@code false} + * otherwise. + */ boolean isVoteValueValid(Integer voteValue); - String getVoteValueNotValidMessage(); + /** + * If a vote value is not valid, gets the localized message of the error. + * + * @param locale the locale used to render the error message + * @return the localized validation message + */ + String getVoteValueNotValidMessage(Locale locale); + /** + * Tests if the total values of a vote is valid. + * + * @param totalValues the given total values + * @return {@code true} if the total values of a vote is valid, + * {@code false} otherwhise. + */ boolean isTotalVoteValueValid(int totalValues); - String getTotalVoteValueNotValidMessage(); + /** + * If the total values of a vote is not valid, gets the localized error + * message. + * + * @param locale the locale used to render the error message + * @return the localized validation message + */ + String getTotalVoteValueNotValidMessage(Locale locale); + /** + * Tests if a given vote value is null or not. + * + * @param value the vote value to test + * @return {@code true} if the given vote value is null (or considered as + * null), {@code false} otherwise. + */ boolean isVoteValueNull(Integer value); - ChoiceToVoteRenderType getRenderType(); + /** + * Gets the type of editor used to render a vote value. + * + * @return the type of editor used to render a vote value. + * @see ChoiceToVoteRenderType + */ + ChoiceToVoteRenderType getVoteValueEditorType(); + /** + * @return {@code true} if display results by choice. + * @deprecated since 1.5 (result will be offered by the strategy it-self). + */ + @Deprecated boolean isDisplayResultsByChoice(); } Modified: trunk/pollen-votecounting-api/src/test/java/org/chorem/pollen/votecounting/strategy/VoteCountingStrategyProviderTest.java =================================================================== --- trunk/pollen-votecounting-api/src/test/java/org/chorem/pollen/votecounting/strategy/VoteCountingStrategyProviderTest.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-api/src/test/java/org/chorem/pollen/votecounting/strategy/VoteCountingStrategyProviderTest.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -36,7 +36,6 @@ protected static VoteCountingStrategyProvider provider; - @BeforeClass public static void beforeClass() throws Exception { provider = new VoteCountingStrategyProvider(); Modified: trunk/pollen-votecounting-strategy-borda/src/main/java/org/chorem/pollen/votecounting/strategy/BordaStrategy.java =================================================================== --- trunk/pollen-votecounting-strategy-borda/src/main/java/org/chorem/pollen/votecounting/strategy/BordaStrategy.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-strategy-borda/src/main/java/org/chorem/pollen/votecounting/strategy/BordaStrategy.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -30,9 +30,11 @@ import org.chorem.pollen.votecounting.model.Voter; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; +import static org.nuiton.i18n.I18n.l_; import static org.nuiton.i18n.I18n.n_; /** @@ -64,14 +66,14 @@ } @Override - public String getTotalVoteValueNotValidMessage() { + public String getTotalVoteValueNotValidMessage(Locale locale) { // no validation on total value, so no message return null; } @Override - public String getVoteValueNotValidMessage() { - return n_("pollen.error.vote.invalidBordaVoteValue"); + public String getVoteValueNotValidMessage(Locale locale) { + return l_(locale, "pollen.error.vote.invalidBordaVoteValue"); } @Override @@ -80,7 +82,7 @@ } @Override - public ChoiceToVoteRenderType getRenderType() { + public ChoiceToVoteRenderType getVoteValueEditorType() { return ChoiceToVoteRenderType.TEXTFIELD; } Modified: trunk/pollen-votecounting-strategy-condorcet/src/main/java/org/chorem/pollen/votecounting/strategy/CondorcetStrategy.java =================================================================== --- trunk/pollen-votecounting-strategy-condorcet/src/main/java/org/chorem/pollen/votecounting/strategy/CondorcetStrategy.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-strategy-condorcet/src/main/java/org/chorem/pollen/votecounting/strategy/CondorcetStrategy.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -37,9 +37,11 @@ import java.math.BigDecimal; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; +import static org.nuiton.i18n.I18n.l_; import static org.nuiton.i18n.I18n.n_; /** @@ -71,14 +73,14 @@ } @Override - public String getTotalVoteValueNotValidMessage() { + public String getTotalVoteValueNotValidMessage(Locale locale) { // no validation on total value, so no message return null; } @Override - public String getVoteValueNotValidMessage() { - return n_("pollen.error.vote.invalidCondorcetVoteValue"); + public String getVoteValueNotValidMessage(Locale locale) { + return l_(locale, "pollen.error.vote.invalidCondorcetVoteValue"); } @Override @@ -87,7 +89,7 @@ } @Override - public ChoiceToVoteRenderType getRenderType() { + public ChoiceToVoteRenderType getVoteValueEditorType() { return ChoiceToVoteRenderType.TEXTFIELD; } Modified: trunk/pollen-votecounting-strategy-coombs/src/main/java/org/chorem/pollen/votecounting/strategy/CoombsStrategy.java =================================================================== --- trunk/pollen-votecounting-strategy-coombs/src/main/java/org/chorem/pollen/votecounting/strategy/CoombsStrategy.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-strategy-coombs/src/main/java/org/chorem/pollen/votecounting/strategy/CoombsStrategy.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -36,10 +36,12 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.SortedMap; +import static org.nuiton.i18n.I18n.l_; import static org.nuiton.i18n.I18n.n_; /** @@ -71,14 +73,14 @@ } @Override - public String getTotalVoteValueNotValidMessage() { + public String getTotalVoteValueNotValidMessage(Locale locale) { // no validation on total value, so no message return null; } @Override - public String getVoteValueNotValidMessage() { - return n_("pollen.error.vote.invalidCoombsVoteValue"); + public String getVoteValueNotValidMessage(Locale locale) { + return l_(locale, "pollen.error.vote.invalidCoombsVoteValue"); } @Override @@ -87,7 +89,7 @@ } @Override - public ChoiceToVoteRenderType getRenderType() { + public ChoiceToVoteRenderType getVoteValueEditorType() { return ChoiceToVoteRenderType.TEXTFIELD; } Modified: trunk/pollen-votecounting-strategy-instant-runoff/src/main/java/org/chorem/pollen/votecounting/strategy/InstantRunoffStrategy.java =================================================================== --- trunk/pollen-votecounting-strategy-instant-runoff/src/main/java/org/chorem/pollen/votecounting/strategy/InstantRunoffStrategy.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-strategy-instant-runoff/src/main/java/org/chorem/pollen/votecounting/strategy/InstantRunoffStrategy.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -35,10 +35,12 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.SortedMap; +import static org.nuiton.i18n.I18n.l_; import static org.nuiton.i18n.I18n.n_; /** @@ -72,14 +74,14 @@ } @Override - public String getTotalVoteValueNotValidMessage() { + public String getTotalVoteValueNotValidMessage(Locale locale) { // no validation on total value, so no message return null; } @Override - public String getVoteValueNotValidMessage() { - return n_("pollen.error.vote.invalidInstantRunoffVoteValue"); + public String getVoteValueNotValidMessage(Locale locale) { + return l_(locale, "pollen.error.vote.invalidInstantRunoffVoteValue"); } @Override @@ -88,7 +90,7 @@ } @Override - public ChoiceToVoteRenderType getRenderType() { + public ChoiceToVoteRenderType getVoteValueEditorType() { return ChoiceToVoteRenderType.TEXTFIELD; } Modified: trunk/pollen-votecounting-strategy-normal/src/main/java/org/chorem/pollen/votecounting/strategy/NormalStrategy.java =================================================================== --- trunk/pollen-votecounting-strategy-normal/src/main/java/org/chorem/pollen/votecounting/strategy/NormalStrategy.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-strategy-normal/src/main/java/org/chorem/pollen/votecounting/strategy/NormalStrategy.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -28,6 +28,7 @@ import org.chorem.pollen.votecounting.model.VoteForChoice; import org.chorem.pollen.votecounting.model.Voter; +import java.util.Locale; import java.util.Map; import java.util.Set; @@ -89,7 +90,7 @@ } @Override - public ChoiceToVoteRenderType getRenderType() { + public ChoiceToVoteRenderType getVoteValueEditorType() { return ChoiceToVoteRenderType.CHECKBOX; } @@ -111,13 +112,13 @@ } @Override - public String getVoteValueNotValidMessage() { + public String getVoteValueNotValidMessage(Locale locale) { // no validation on not null vote value, so no message return null; } @Override - public String getTotalVoteValueNotValidMessage() { + public String getTotalVoteValueNotValidMessage(Locale locale) { // no validation on total values, so no message return null; } Modified: trunk/pollen-votecounting-strategy-number/src/main/java/org/chorem/pollen/votecounting/strategy/NumberStrategy.java =================================================================== --- trunk/pollen-votecounting-strategy-number/src/main/java/org/chorem/pollen/votecounting/strategy/NumberStrategy.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-strategy-number/src/main/java/org/chorem/pollen/votecounting/strategy/NumberStrategy.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -28,6 +28,7 @@ import org.chorem.pollen.votecounting.model.VoteForChoice; import org.chorem.pollen.votecounting.model.Voter; +import java.util.Locale; import java.util.Map; import java.util.Set; @@ -89,7 +90,7 @@ } @Override - public ChoiceToVoteRenderType getRenderType() { + public ChoiceToVoteRenderType getVoteValueEditorType() { return ChoiceToVoteRenderType.TEXTFIELD; } @@ -111,13 +112,13 @@ } @Override - public String getTotalVoteValueNotValidMessage() { + public String getTotalVoteValueNotValidMessage(Locale locale) { // no validation on total values, so no message return null; } @Override - public String getVoteValueNotValidMessage() { + public String getVoteValueNotValidMessage(Locale locale) { // no validation on not null vote value, so no message return null; } Modified: trunk/pollen-votecounting-strategy-percentage/src/main/java/org/chorem/pollen/votecounting/strategy/PercentageStrategy.java =================================================================== --- trunk/pollen-votecounting-strategy-percentage/src/main/java/org/chorem/pollen/votecounting/strategy/PercentageStrategy.java 2012-07-31 07:16:34 UTC (rev 3572) +++ trunk/pollen-votecounting-strategy-percentage/src/main/java/org/chorem/pollen/votecounting/strategy/PercentageStrategy.java 2012-07-31 10:54:49 UTC (rev 3573) @@ -28,9 +28,11 @@ import org.chorem.pollen.votecounting.model.VoteForChoice; import org.chorem.pollen.votecounting.model.Voter; +import java.util.Locale; import java.util.Map; import java.util.Set; +import static org.nuiton.i18n.I18n.l_; import static org.nuiton.i18n.I18n.n_; /** @@ -89,7 +91,7 @@ } @Override - public ChoiceToVoteRenderType getRenderType() { + public ChoiceToVoteRenderType getVoteValueEditorType() { return ChoiceToVoteRenderType.TEXTFIELD; } @@ -110,14 +112,14 @@ } @Override - public String getVoteValueNotValidMessage() { + public String getVoteValueNotValidMessage(Locale locale) { // no validation on not null vote value, so no message return null; } @Override - public String getTotalVoteValueNotValidMessage() { - return n_("pollen.error.vote.percentage"); + public String getTotalVoteValueNotValidMessage(Locale locale) { + return l_(locale, "pollen.error.vote.percentage"); } public void addVoterChoices(Voter voter,