Rev 966 | 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.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;
import com.google.gwt.user.client.Window;
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 MoyenneVote calculerVoteDetermination(PropositionDetermination propositionDetermination) {
Map<String,VoteDetermination> votes = propositionDetermination.getVotesDeterminations();
int nbVotes = votes.size();
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érieur
scoreVoteIdentifie += 3*valeurVote;
nbVotes += 2;
} else {
scoreVoteAnonyme += valeurVote;
}
}
scoreVote = ((scoreVoteAnonyme + scoreVoteIdentifie)/(nbVotes))*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;
}
}