Subversion Repositories eFlore/Applications.del

Rev

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

Rev 966 Rev 1098
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.List;
4
import java.util.List;
5
import java.util.Map;
5
import java.util.Map;
6
import java.util.Set;
6
import java.util.Set;
7
 
7
 
8
import org.tela_botanica.del.client.modeles.MoyenneVote;
8
import org.tela_botanica.del.client.modeles.MoyenneVote;
9
import org.tela_botanica.del.client.modeles.PropositionDetermination;
9
import org.tela_botanica.del.client.modeles.PropositionDetermination;
10
import org.tela_botanica.del.client.modeles.VoteDetermination;
10
import org.tela_botanica.del.client.modeles.VoteDetermination;
11
import com.google.gwt.user.client.Window;
11
import com.google.gwt.user.client.Window;
12
 
12
 
13
 
13
 
14
public class CalculVoteDeterminationService {
14
public class CalculVoteDeterminationService {
15
	
15
	
16
	public static List<MoyenneVote> calculerVoteDeterminationPlusPopulaire(List<PropositionDetermination> propositions) {
16
	public static List<MoyenneVote> calculerVoteDeterminationPlusPopulaire(List<PropositionDetermination> propositions) {
17
		List<MoyenneVote> pairesVotes = new ArrayList<MoyenneVote>();
17
		List<MoyenneVote> pairesVotes = new ArrayList<MoyenneVote>();
18
		
18
		
19
		for (PropositionDetermination proposition : propositions) {
19
		for (PropositionDetermination proposition : propositions) {
20
			pairesVotes.add(calculerVoteDetermination(proposition));
20
			pairesVotes.add(calculerVoteDetermination(proposition));
21
		}
21
		}
22
		
22
		
23
		java.util.Collections.sort(pairesVotes);
23
		java.util.Collections.sort(pairesVotes);
24
		
24
		
25
		return pairesVotes;
25
		return pairesVotes;
26
	}
26
	}
27
	
27
	
28
	public static MoyenneVote calculerVoteDetermination(PropositionDetermination propositionDetermination) {
28
	public static MoyenneVote calculerVoteDetermination(PropositionDetermination propositionDetermination) {
29
		
29
		
30
		Map<String,VoteDetermination> votes = propositionDetermination.getVotesDeterminations();
30
		Map<String,VoteDetermination> votes = propositionDetermination.getVotesDeterminations();
-
 
31
		int nbVotes = votes.size();
-
 
32
		double scoreVoteIdentifie = 0;
-
 
33
		double scoreVoteAnonyme = 0;
-
 
34
		
31
		int scoreVote = 0;
35
		double scoreVote = 0;
32
		
36
		
33
		if(votes.size() > 0) {
37
		if(votes.size() > 0) {
34
			Set<String> cles = votes.keySet();
38
			Set<String> cles = votes.keySet();
-
 
39
 
35
			for (String cle : cles) {
40
			for (String cle : cles) {
-
 
41
				String  idAuteur = cle;
36
				scoreVote += votes.get(cle).getVote();
42
				int valeurVote = votes.get(cle).getVote();
-
 
43
				if(estUnAuteurIdentifie(idAuteur)) {
-
 
44
					// un votant identifiant compte comme deux votants supplémentaires
-
 
45
					// il a donc un vote 3 fois supérieur
-
 
46
					scoreVoteIdentifie += 3*valeurVote;
-
 
47
					nbVotes += 2;
-
 
48
				} else {
-
 
49
					scoreVoteAnonyme += valeurVote;
-
 
50
				}
37
			}
51
			}
38
			
52
			
39
			scoreVote = (scoreVote*100)/votes.size();
53
			scoreVote = ((scoreVoteAnonyme + scoreVoteIdentifie)/(nbVotes))*100;
40
		} else {
54
		} else {
41
			scoreVote = -1;
55
			scoreVote = -1;
42
		}
56
		}
43
		
57
		
-
 
58
		return new MoyenneVote((new Double(scoreVote)).intValue(), propositionDetermination);
-
 
59
	}
-
 
60
	
-
 
61
	private static boolean estUnAuteurIdentifie(String idAuteur) {
-
 
62
		boolean estIdentifie = true;
-
 
63
	    try {
-
 
64
	        int intIdAuteur = Integer.parseInt(idAuteur);
-
 
65
	    } catch (NumberFormatException nfe) {
-
 
66
	    	estIdentifie = false;
-
 
67
	    }
44
		return new MoyenneVote(scoreVote, propositionDetermination);
68
	    return estIdentifie;
45
	}
69
	}
46
}
70
}