Subversion Repositories eFlore/Applications.del

Rev

Rev 1124 | Rev 1152 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1124 Rev 1139
1
package org.tela_botanica.del.client.services;
1
package org.tela_botanica.del.client.services;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.Iterator;
4
import java.util.Iterator;
5
import java.util.List;
5
import java.util.List;
6
import java.util.Map;
6
import java.util.Map;
7
import java.util.Set;
7
import java.util.Set;
8
 
8
 
9
import org.tela_botanica.del.client.modeles.MoyenneVote;
9
import org.tela_botanica.del.client.modeles.MoyenneVote;
10
import org.tela_botanica.del.client.modeles.PropositionDetermination;
10
import org.tela_botanica.del.client.modeles.PropositionDetermination;
11
import org.tela_botanica.del.client.modeles.VoteDetermination;
11
import org.tela_botanica.del.client.modeles.VoteDetermination;
12
import com.google.gwt.user.client.Window;
12
import com.google.gwt.user.client.Window;
13
 
13
 
14
 
14
 
15
public class CalculVoteDeterminationService {
15
public class CalculVoteDeterminationService {
16
	
16
	
17
	public static List<MoyenneVote> calculerVoteDeterminationPlusPopulaire(List<PropositionDetermination> propositions) {
17
	public static List<MoyenneVote> calculerVoteDeterminationPlusPopulaire(List<PropositionDetermination> propositions) {
18
		List<MoyenneVote> pairesVotes = new ArrayList<MoyenneVote>();
18
		List<MoyenneVote> pairesVotes = new ArrayList<MoyenneVote>();
19
		
19
		
20
		for (PropositionDetermination proposition : propositions) {
20
		for (PropositionDetermination proposition : propositions) {
21
			pairesVotes.add(calculerVoteDetermination(proposition));
21
			pairesVotes.add(calculerVoteDetermination(proposition));
22
		}
22
		}
23
		
23
		
24
		java.util.Collections.sort(pairesVotes);
24
		java.util.Collections.sort(pairesVotes);
25
		
25
		
26
		return pairesVotes;
26
		return pairesVotes;
27
	}
27
	}
28
	
28
	
29
	public static int getNombreTotalVotants(PropositionDetermination proposition) {
29
	public static int getNombreTotalVotants(PropositionDetermination proposition) {
30
		int nbVotants = 0;
30
		int nbVotants = 0;
31
		List<PropositionDetermination> votes = proposition.getObservation().getPropositionDeterminations();
31
		List<PropositionDetermination> votes = proposition.getObservation().getPropositionDeterminations();
32
		Iterator<PropositionDetermination> itVotes =  votes.iterator();
32
		Iterator<PropositionDetermination> itVotes =  votes.iterator();
33
		while (itVotes.hasNext()) {
33
		while (itVotes.hasNext()) {
34
			PropositionDetermination propositionCourante = itVotes.next();
34
			PropositionDetermination propositionCourante = itVotes.next();
35
			nbVotants += propositionCourante.getVotesDeterminations().size();
35
			nbVotants += propositionCourante.getVotesDeterminations().size();
36
		}
36
		}
37
		return nbVotants;
37
		return nbVotants;
38
	}
38
	}
39
	
39
	
40
	public static MoyenneVote calculerVoteDetermination(PropositionDetermination propositionDetermination) {
-
 
41
		
40
	public static MoyenneVote calculerVoteDetermination(PropositionDetermination propositionDetermination) {	
-
 
41
		int nbVotants = getNombreTotalVotants(propositionDetermination);
-
 
42
		return calculerProportionVote(propositionDetermination, nbVotants);
-
 
43
	}
-
 
44
	
-
 
45
	public static MoyenneVote calculerMoyenneVoteDetermination(PropositionDetermination propositionDetermination, int nbVotants) {	
-
 
46
		return calculerProportionVote(propositionDetermination, nbVotants);
-
 
47
	}
-
 
48
	
42
		int nbVotants = getNombreTotalVotants(propositionDetermination);
49
	private static MoyenneVote calculerProportionVote(PropositionDetermination propositionDetermination, int nbVotants) {
43
		Map<String,VoteDetermination> votes = propositionDetermination.getVotesDeterminations();
50
		Map<String,VoteDetermination> votes = propositionDetermination.getVotesDeterminations();
44
		
51
		
45
		double scoreVoteIdentifie = 0;
52
		double scoreVoteIdentifie = 0;
46
		double scoreVoteAnonyme = 0;
53
		double scoreVoteAnonyme = 0;
47
		
54
		
48
		double scoreVote = 0;
55
		double scoreVote = 0;
49
		
56
		
50
		
57
		
51
		if(votes.size() > 0) {
58
		if(votes.size() > 0) {
52
			Set<String> cles = votes.keySet();
59
			Set<String> cles = votes.keySet();
53
 
60
 
54
			for (String cle : cles) {
61
			for (String cle : cles) {
55
				String  idAuteur = cle;
62
				String  idAuteur = cle;
56
				int valeurVote = votes.get(cle).getVote();
63
				int valeurVote = votes.get(cle).getVote();
57
				if(estUnAuteurIdentifie(idAuteur)) {
64
				if(estUnAuteurIdentifie(idAuteur)) {
58
					// un votant identifiant compte comme deux votants supplémentaires
65
					// un votant identifiant compte comme deux votants supplémentaires
59
					// il a donc un vote 3 fois supérieur
66
					// il a donc un vote 3 fois supérieur
60
					scoreVoteIdentifie += valeurVote;
67
					scoreVoteIdentifie += valeurVote;
61
					//nbVotants += 2;
68
					//nbVotants += 2;
62
				} else {
69
				} else {
63
					scoreVoteAnonyme += valeurVote;
70
					scoreVoteAnonyme += valeurVote;
64
				}
71
				}
65
			}
72
			}
66
			
73
			
67
			scoreVote = ((scoreVoteAnonyme + scoreVoteIdentifie)/(nbVotants))*100;
74
			scoreVote = ((scoreVoteAnonyme + scoreVoteIdentifie)/(nbVotants))*100;
68
		} else {
75
		} else {
69
			scoreVote = -1;
76
			scoreVote = -1;
70
		}
77
		}
71
		
78
		
72
		return new MoyenneVote((new Double(scoreVote)).intValue(), propositionDetermination);
79
		return new MoyenneVote((new Double(scoreVote)).intValue(), propositionDetermination);
73
	}
80
	}
74
	
81
	
75
	private static boolean estUnAuteurIdentifie(String idAuteur) {
82
	private static boolean estUnAuteurIdentifie(String idAuteur) {
76
		boolean estIdentifie = true;
83
		boolean estIdentifie = true;
77
	    try {
84
	    try {
78
	        int intIdAuteur = Integer.parseInt(idAuteur);
85
	        int intIdAuteur = Integer.parseInt(idAuteur);
79
	    } catch (NumberFormatException nfe) {
86
	    } catch (NumberFormatException nfe) {
80
	    	estIdentifie = false;
87
	    	estIdentifie = false;
81
	    }
88
	    }
82
	    return estIdentifie;
89
	    return estIdentifie;
83
	}
90
	}
84
}
91
}