New file |
0,0 → 1,79 |
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 scoreVote = 0; |
|
if (votes.size() > 0 && nbVotants > 0) { |
Set<String> cles = votes.keySet(); |
|
for (String cle : cles) { |
String idAuteur = cle; |
boolean voteEstPositif = votes.get(cle).getVote() == 1; |
|
// un votant identifiant compte comme deux votants supplémentaires |
// il a donc un vote 3 fois supérieur |
int valeurVote = estUnAuteurIdentifie(idAuteur) ? 3 : 1; |
scoreVote += voteEstPositif ? valeurVote : -valeurVote; |
} |
} |
|
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; |
} |
} |