Subversion Repositories eFlore/Applications.del

Rev

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;
        }
}