Rev 1139 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.services;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import org.tela_botanica.del.client.modeles.MoyenneVote;import org.tela_botanica.del.client.modeles.PropositionDetermination;import org.tela_botanica.del.client.modeles.VoteDetermination;public class CalculVoteDeterminationService {public static List<MoyenneVote> calculerVoteDeterminationPlusPopulaire(List<PropositionDetermination> propositions) {List<MoyenneVote> pairesVotes = new ArrayList<MoyenneVote>();for (PropositionDetermination proposition : propositions) {pairesVotes.add(calculerVoteDetermination(proposition));}java.util.Collections.sort(pairesVotes);return pairesVotes;}public static int getNombreTotalVotants(PropositionDetermination proposition) {int nbVotants = 0;List<PropositionDetermination> votes = proposition.getObservation().getPropositionDeterminations();Iterator<PropositionDetermination> itVotes = votes.iterator();while (itVotes.hasNext()) {PropositionDetermination propositionCourante = itVotes.next();nbVotants += propositionCourante.getVotesDeterminations().size();}return nbVotants;}public static MoyenneVote calculerVoteDetermination(PropositionDetermination propositionDetermination) {int nbVotants = getNombreTotalVotants(propositionDetermination);return calculerProportionVote(propositionDetermination, nbVotants);}public static MoyenneVote calculerMoyenneVoteDetermination(PropositionDetermination propositionDetermination, int nbVotants) {return calculerProportionVote(propositionDetermination, nbVotants);}private static MoyenneVote calculerProportionVote(PropositionDetermination propositionDetermination, int nbVotants) {Map<String,VoteDetermination> votes = propositionDetermination.getVotesDeterminations();double scoreVoteIdentifie = 0;double scoreVoteAnonyme = 0;double scoreVote = 0;if(votes.size() > 0) {Set<String> cles = votes.keySet();for (String cle : cles) {String idAuteur = cle;int valeurVote = votes.get(cle).getVote();if(estUnAuteurIdentifie(idAuteur)) {// un votant identifiant compte comme deux votants supplémentaires// il a donc un vote 3 fois supérieurscoreVoteIdentifie += valeurVote;//nbVotants += 2;} else {scoreVoteAnonyme += valeurVote;}}scoreVote = ((scoreVoteAnonyme + scoreVoteIdentifie)/(nbVotants))*100;} else {scoreVote = -1;}return new MoyenneVote((new Double(scoreVote)).intValue(), propositionDetermination);}private static boolean estUnAuteurIdentifie(String idAuteur) {boolean estIdentifie = true;try {int intIdAuteur = Integer.parseInt(idAuteur);} catch (NumberFormatException nfe) {estIdentifie = false;}return estIdentifie;}}