Subversion Repositories eFlore/Applications.del

Rev

Rev 1767 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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