Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2211 → Rev 2212

/branches/v1.12-aluminium/src/org/tela_botanica/del/client/services/CalculVoteDeterminationService.java
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;
}
}