Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1566 Rev 1573
1
package org.tela_botanica.del.client.composants.votes.moyennevotes;
1
package org.tela_botanica.del.client.composants.votes.moyennevotes;
2
 
2
 
3
import java.util.HashMap;
3
import java.util.HashMap;
4
import java.util.Iterator;
4
import java.util.Iterator;
5
 
5
 
6
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.cache.CacheClient;
7
import org.tela_botanica.del.client.composants.votefleur.VoteFleurPresenteur;
7
import org.tela_botanica.del.client.composants.votefleur.VoteFleurPresenteur;
8
import org.tela_botanica.del.client.composants.votefleur.VoteFleurVue;
8
import org.tela_botanica.del.client.composants.votefleur.VoteFleurVue;
9
import org.tela_botanica.del.client.modeles.Image;
9
import org.tela_botanica.del.client.modeles.Image;
10
import org.tela_botanica.del.client.modeles.Protocole;
10
import org.tela_botanica.del.client.modeles.Protocole;
11
import org.tela_botanica.del.client.modeles.VoteProtocole;
11
import org.tela_botanica.del.client.modeles.VoteProtocole;
12
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
12
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
13
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
13
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
14
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
14
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
15
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
15
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
16
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.GestionnaireEvenementSuppressionCommentaire;
16
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.GestionnaireEvenementSuppressionCommentaire;
17
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
17
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
18
import org.tela_botanica.del.client.services.rest.async.AjoutVoteProtocoleCallback;
18
import org.tela_botanica.del.client.services.rest.async.AjoutVoteProtocoleCallback;
19
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback;
19
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback;
20
 
20
 
21
import com.google.gwt.event.dom.client.ClickEvent;
21
import com.google.gwt.event.dom.client.ClickEvent;
22
import com.google.gwt.event.dom.client.ClickHandler;
22
import com.google.gwt.event.dom.client.ClickHandler;
23
import com.google.gwt.event.dom.client.HasClickHandlers;
23
import com.google.gwt.event.dom.client.HasClickHandlers;
24
import com.google.gwt.event.dom.client.HasMouseMoveHandlers;
24
import com.google.gwt.event.dom.client.HasMouseMoveHandlers;
25
import com.google.gwt.event.dom.client.MouseMoveEvent;
25
import com.google.gwt.event.dom.client.MouseMoveEvent;
26
import com.google.gwt.event.dom.client.MouseMoveHandler;
26
import com.google.gwt.event.dom.client.MouseMoveHandler;
27
import com.google.gwt.user.client.Window;
27
import com.google.gwt.user.client.Window;
28
import com.google.gwt.user.client.ui.HasText;
28
import com.google.gwt.user.client.ui.HasText;
29
import com.google.gwt.user.client.ui.HasWidgets;
29
import com.google.gwt.user.client.ui.HasWidgets;
30
import com.google.gwt.user.client.ui.IsWidget;
30
import com.google.gwt.user.client.ui.IsWidget;
31
 
31
 
32
public class MoyenneVotePresenteur {
32
public class MoyenneVotePresenteur {
33
 
33
 
34
	public interface Vue extends IsWidget {
34
	public interface Vue extends IsWidget {
35
		public HasClickHandlers getBoutonAnnuler();
35
		public HasClickHandlers getBoutonAnnuler();
36
 
36
 
37
		public HasClickHandlers getVotes();
37
		public HasClickHandlers getVotes();
38
 
38
 
39
		public int getValeurVote();
39
		public int getValeurVote();
40
 
40
 
41
		public void afficherBoutonAnnuler();
41
		public void afficherBoutonAnnuler();
42
 
42
 
43
		public void masquerBoutonAnnuler();
43
		public void masquerBoutonAnnuler();
44
 
44
 
45
		public void afficherNbVotes();
45
		public void afficherNbVotes();
46
 
46
 
47
		public void masquerNbVotes();
47
		public void masquerNbVotes();
48
 
48
 
49
		public void afficherNbPoints();
49
		public void afficherNbPoints();
50
 
50
 
51
		public void masquerNbPoints();
51
		public void masquerNbPoints();
52
 
52
 
53
		public void reinitialiserVotes();
53
		public void reinitialiserVotes();
54
 
54
 
55
		public void rafraichir(int moyenneVote, int nbVotes, int nombrePoints);
55
		public void rafraichir(int moyenneVote, int nbVotes, int nombrePoints);
56
 
56
 
57
		public void ajouterAuParent(HasWidgets composite);
57
		public void ajouterAuParent(HasWidgets composite);
58
 
58
 
59
		public void afficherVotePrisEnCompte();
59
		public void afficherVotePrisEnCompte();
60
 
60
 
61
		public HasWidgets getZoneFleur();
61
		public HasWidgets getZoneFleur();
62
 
62
 
63
		public HasText getZoneProtocole();
63
		public HasText getZoneProtocole();
64
 
64
 
65
		public void setNoteGenerale(int note);
65
		public void setNoteGenerale(int note);
66
 
66
 
67
		public void afficherVoteModifie();
67
		public void afficherVoteModifie();
68
 
68
 
69
		public HasMouseMoveHandlers getZoneVoter();
69
		public HasMouseMoveHandlers getZoneVoter();
70
		public void masquerZoneVoter();
70
		public void masquerZoneVoter();
71
 
71
 
72
		public void setNoteGeneraleToolTip(double valeurVoteTotalPrecise);
72
		public void setNoteGeneraleToolTip(double valeurVoteTotalPrecise);
73
 
73
 
74
		void desactiverInteractionVote();
74
		void desactiverInteractionVote();
75
 
75
 
76
		void activerInteractionVote();
76
		void activerInteractionVote();
77
 
77
 
78
		void afficherVoteSupprime();
78
		void afficherVoteSupprime();
79
	}
79
	}
80
 
80
 
81
	private Vue vue;
81
	private Vue vue;
82
	private Protocole protocole;
82
	private Protocole protocole;
83
	private Image image;
83
	private Image image;
84
 
84
 
85
	private int valeurVoteDefaut = -1;
85
	private int valeurVoteDefaut = -1;
86
	private int valeurVoteUtilisateur = -1;
86
	private int valeurVoteUtilisateur = -1;
87
	private int valeurVoteTotal = 0;
87
	private int valeurVoteTotal = 0;
88
	private int nombrePoints = 0;
88
	private int nombrePoints = 0;
89
	private double valeurVoteTotalPrecise = 0.0;
89
	private double valeurVoteTotalPrecise = 0.0;
90
 
90
 
91
	// TODO: on devrait passer un conteneur qui permet d'accéder à ces services
91
	// TODO: on devrait passer un conteneur qui permet d'accéder à ces services
92
	private VoteProtocoleService voteProtocoleService;
92
	private VoteProtocoleService voteProtocoleService;
93
 
93
 
94
	public MoyenneVotePresenteur(Image image, Protocole protocole, Vue vue,
94
	public MoyenneVotePresenteur(Image image, Protocole protocole, Vue vue,
95
			VoteProtocoleService voteProtocoleService) {
95
			VoteProtocoleService voteProtocoleService) {
96
		this.vue = vue;
96
		this.vue = vue;
97
		this.protocole = protocole;
97
		this.protocole = protocole;
98
		this.image = image;
98
		this.image = image;
99
		this.voteProtocoleService = voteProtocoleService;
99
		this.voteProtocoleService = voteProtocoleService;
100
 
100
 
101
		String nomProtocole = protocole.getNom();
101
		String nomProtocole = protocole.getNom();
102
		nomProtocole = nomProtocole.substring(0, 1).toUpperCase()
102
		nomProtocole = nomProtocole.substring(0, 1).toUpperCase()
103
				+ nomProtocole.substring(1).toLowerCase();
103
				+ nomProtocole.substring(1).toLowerCase();
104
		vue.getZoneProtocole().setText(nomProtocole);
104
		vue.getZoneProtocole().setText(nomProtocole);
105
	}
105
	}
106
 
106
 
107
	public void go(HasWidgets composite) {
107
	public void go(HasWidgets composite) {
108
		vue.ajouterAuParent(composite);
108
		vue.ajouterAuParent(composite);
109
		gererEvenements();
109
		gererEvenements();
110
		rafraichirVue();
110
		rafraichirVue();
111
	}
111
	}
112
 
112
 
113
	public void gererEvenements() {
113
	public void gererEvenements() {
114
		
114
		
115
		vue.getZoneVoter().addMouseMoveHandler(new MouseMoveHandler() {
115
		vue.getZoneVoter().addMouseMoveHandler(new MouseMoveHandler() {
116
			
116
			
117
			@Override
117
			@Override
118
			public void onMouseMove(MouseMoveEvent event) {
118
			public void onMouseMove(MouseMoveEvent event) {
119
				vue.masquerZoneVoter();
119
				vue.masquerZoneVoter();
120
			}
120
			}
121
		});
121
		});
122
		
122
		
123
		vue.getVotes().addClickHandler(new ClickHandler() {
123
		vue.getVotes().addClickHandler(new ClickHandler() {
124
			@Override
124
			@Override
125
			public void onClick(ClickEvent event) {
125
			public void onClick(ClickEvent event) {
126
				valeurVoteUtilisateur = vue.getValeurVote();
126
				valeurVoteUtilisateur = vue.getValeurVote();
127
				enregistrerVote();
127
				enregistrerVote();
128
				vue.afficherBoutonAnnuler();
128
				vue.afficherBoutonAnnuler();
129
				vue.masquerNbVotes();
129
				vue.masquerNbVotes();
130
				vue.masquerNbPoints();
130
				vue.masquerNbPoints();
131
			}
131
			}
132
		});
132
		});
133
 
133
 
134
		vue.getBoutonAnnuler().addClickHandler(new ClickHandler() {
134
		vue.getBoutonAnnuler().addClickHandler(new ClickHandler() {
135
			@Override
135
			@Override
136
			public void onClick(ClickEvent event) {
136
			public void onClick(ClickEvent event) {
137
				valeurVoteUtilisateur = valeurVoteDefaut;
137
				valeurVoteUtilisateur = valeurVoteDefaut;
138
				vue.masquerBoutonAnnuler();
138
				vue.masquerBoutonAnnuler();
139
				supprimerVote();
139
				supprimerVote();
140
				vue.afficherNbVotes();
140
				vue.afficherNbVotes();
141
				vue.afficherNbPoints();
141
				vue.afficherNbPoints();
142
				vue.reinitialiserVotes();
142
				vue.reinitialiserVotes();
143
			}
143
			}
144
		});
144
		});
145
		
145
		
146
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {		
146
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {		
147
			@Override
147
			@Override
148
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
148
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
149
				rafraichirVue();
149
				rafraichirVue();
150
			}
150
			}
151
		});
151
		});
152
	}
152
	}
153
 
153
 
154
	public void setValeurVoteUtilisateur(int valeurVoteUtilisateur) {
154
	public void setValeurVoteUtilisateur(int valeurVoteUtilisateur) {
155
		this.valeurVoteUtilisateur = valeurVoteUtilisateur;
155
		this.valeurVoteUtilisateur = valeurVoteUtilisateur;
156
	}
156
	}
157
 
157
 
158
	public void enregistrerVote() {
158
	public void enregistrerVote() {
159
		vue.desactiverInteractionVote();
159
		vue.desactiverInteractionVote();
160
		final VoteProtocole voteProtocole = new VoteProtocole();
160
		final VoteProtocole voteProtocole = new VoteProtocole();
161
		voteProtocole.setProtocole(this.protocole);
161
		voteProtocole.setProtocole(this.protocole);
162
		voteProtocole.setVote(valeurVoteUtilisateur);
162
		voteProtocole.setVote(valeurVoteUtilisateur);
163
		String idContributeur = CacheClient.getInstance().getUtilisateur()
163
		String idContributeur = CacheClient.getInstance().getUtilisateur()
164
				.getId();
164
				.getId();
165
		voteProtocole.setContributeur(idContributeur);
165
		voteProtocole.setContributeur(idContributeur);
166
		
166
		
167
		//TODO: ceci devrait pouvoir être factorisé
167
		//TODO: ceci devrait pouvoir être factorisé
168
		if (image.utilisateurAVotePourProtocole(this.protocole.getId() + "",
168
		if (image.utilisateurAVotePourProtocole(this.protocole.getId() + "",
169
				idContributeur)) {
169
				idContributeur)) {
170
			voteProtocole.setId(image.getVotesProtocoles(this.protocole.getId()+"").get(idContributeur).getId());
170
			voteProtocole.setId(image.getVotesProtocoles(this.protocole.getId()+"").get(idContributeur).getId());
171
			VoteProtocoleCallback vpc = new VoteProtocoleCallback() {
171
			VoteProtocoleCallback vpc = new VoteProtocoleCallback() {
172
				@Override
172
				@Override
173
				public void surRetour(Void objetRetour) {
173
				public void surRetour(Void objetRetour) {
174
					image.ajouterVoteProtocole(voteProtocole);
174
					image.ajouterVoteProtocole(voteProtocole);
175
					rafraichirVue();
175
					rafraichirVue();
176
					vue.afficherVoteModifie();
176
					vue.afficherVoteModifie();
177
					vue.activerInteractionVote();
177
					vue.activerInteractionVote();
178
				}
178
				}
179
			};
179
			};
180
			voteProtocoleService.modifierVote(image.getIdImage(),
180
			voteProtocoleService.modifierVote(image.getIdImage(),
181
					voteProtocole, vpc);
181
					voteProtocole, vpc);
182
		} else {
182
		} else {
183
			AjoutVoteProtocoleCallback vpc = new AjoutVoteProtocoleCallback() {
183
			AjoutVoteProtocoleCallback vpc = new AjoutVoteProtocoleCallback() {
184
				@Override
184
				@Override
185
				public void surRetour(String idVote) {
185
				public void surRetour(String idVote) {
186
					voteProtocole.setId(idVote);
186
					voteProtocole.setId(idVote);
187
					image.ajouterVoteProtocole(voteProtocole);
187
					image.ajouterVoteProtocole(voteProtocole);
188
					rafraichirVue();
188
					rafraichirVue();
189
					vue.afficherVotePrisEnCompte();
189
					vue.afficherVotePrisEnCompte();
190
					vue.activerInteractionVote();
190
					vue.activerInteractionVote();
191
				}
191
				}
192
			};
192
			};
193
			voteProtocoleService.ajouterVote(image.getIdImage(), voteProtocole,
193
			voteProtocoleService.ajouterVote(image.getIdImage(), voteProtocole,
194
					vpc);
194
					vpc);
195
		}
195
		}
196
	}
196
	}
197
	
197
	
198
	public void supprimerVote() {
198
	public void supprimerVote() {
199
		vue.desactiverInteractionVote();
199
		vue.desactiverInteractionVote();
200
		final String idContributeur = CacheClient.getInstance().getUtilisateur()
200
		final String idContributeur = CacheClient.getInstance().getUtilisateur()
201
				.getId();
201
				.getId();
202
		final VoteProtocole voteProtocole = image.getVotesProtocoles(protocole.getId()).get(idContributeur);
202
		final VoteProtocole voteProtocole = image.getVotesProtocoles(protocole.getId()).get(idContributeur);
203
		VoteProtocoleCallback vpc = new VoteProtocoleCallback() {
203
		VoteProtocoleCallback vpc = new VoteProtocoleCallback() {
204
			@Override
204
			@Override
205
			public void surRetour(Void objetRetour) {
205
			public void surRetour(Void objetRetour) {
206
				// TODO: voir si l'on affiche un message en cas de succès ?
206
				// TODO: voir si l'on affiche un message en cas de succès ?
207
				image.supprimerVoteProtocole(protocole.getId() + "", idContributeur);
207
				image.supprimerVoteProtocole(protocole.getId() + "", idContributeur);
208
				rafraichirVue();
208
				rafraichirVue();
209
				vue.afficherVoteSupprime();
209
				vue.afficherVoteSupprime();
210
				vue.activerInteractionVote();
210
				vue.activerInteractionVote();
211
			}
211
			}
212
 
212
 
213
		};
213
		};
214
		voteProtocoleService.supprimerVote(image.getIdImage(), voteProtocole, vpc);
214
		voteProtocoleService.supprimerVote(image.getIdImage(), voteProtocole, vpc);
215
	}
215
	}
216
 
216
 
217
	public int getValeurVoteTotal() {
217
	public int getValeurVoteTotal() {
218
		return valeurVoteTotal;
218
		return valeurVoteTotal;
219
	}
219
	}
220
 
220
 
221
	public IsWidget getVue() {
221
	public IsWidget getVue() {
222
		return vue;
222
		return vue;
223
	}
223
	}
224
 
224
 
225
	private void rafraichirVue() {
225
	private void rafraichirVue() {
226
		valeurVoteTotal = calculerMoyenneVotesArrondie();
226
		valeurVoteTotal = calculerMoyenneVotesArrondie();
227
		//valeurVoteTotalPrecise = calculerMoyenneVotes();
227
		//valeurVoteTotalPrecise = calculerMoyenneVotes();
228
		valeurVoteTotalPrecise = calculerMoyennePondereeVotes();
228
		valeurVoteTotalPrecise = calculerMoyennePondereeVotes();
229
		nombrePoints = calculerNombrePointsEchelleArbitraire();
229
		nombrePoints = calculerNombrePointsEchelleArbitraire();
230
		VoteProtocole voteProtocole = image.getVotesProtocoles(
230
		VoteProtocole voteProtocole = image.getVotesProtocoles(
231
				protocole.getId()).get(
231
				protocole.getId()).get(
232
				CacheClient.getInstance().getUtilisateur().getId());
232
				CacheClient.getInstance().getUtilisateur().getId());
233
		int voteUtilisateur = 0;
233
		int voteUtilisateur = 0;
234
		if (voteProtocole != null) {
234
		if (voteProtocole != null) {
235
			voteUtilisateur = voteProtocole.getVote();
235
			voteUtilisateur = voteProtocole.getVote();
236
			vue.masquerZoneVoter();
236
			vue.masquerZoneVoter();
237
		}
237
		}
238
		
238
		
239
		if(image.utilisateurAVotePourProtocole(protocole.getId()+"", CacheClient.getInstance().getUtilisateur().getId())) {
239
		if(image.utilisateurAVotePourProtocole(protocole.getId()+"", CacheClient.getInstance().getUtilisateur().getId())) {
240
			vue.afficherBoutonAnnuler();
240
			vue.afficherBoutonAnnuler();
241
		}
241
		}
242
 
242
 
243
		VoteFleurPresenteur presenteurFleur = new VoteFleurPresenteur(
243
		VoteFleurPresenteur presenteurFleur = new VoteFleurPresenteur(
244
				new VoteFleurVue());
244
				new VoteFleurVue());
245
		presenteurFleur.setNote(valeurVoteTotal);
245
		presenteurFleur.setNote(valeurVoteTotal);
246
		vue.setNoteGenerale(valeurVoteTotal);
246
		vue.setNoteGenerale(valeurVoteTotal);
247
		vue.setNoteGeneraleToolTip(valeurVoteTotalPrecise);
247
		vue.setNoteGeneraleToolTip(valeurVoteTotalPrecise);
248
		presenteurFleur.go(vue.getZoneFleur());
248
		presenteurFleur.go(vue.getZoneFleur());
249
		vue.rafraichir(voteUtilisateur,
249
		vue.rafraichir(voteUtilisateur,
250
				image.getVotesProtocoles(protocole.getId()).size(), nombrePoints);
250
				image.getVotesProtocoles(protocole.getId()).size(), nombrePoints);
251
	}
251
	}
252
 
252
 
253
	// Calcule une moyenne, où chaque note est pondérée par son nombre d'occurrences au carré.
253
	// Calcule une moyenne, où chaque note est pondérée par son nombre d'occurrences au carré.
254
	// voir http://www.tela-botanica.org/wikini/DevInformatiques/wakka.php?wiki=AppliDelCalculVotes
254
	// voir http://www.tela-botanica.org/wikini/DevInformatiques/wakka.php?wiki=AppliDelCalculVotes
255
	public double calculerMoyennePondereeVotes() {
255
	public double calculerMoyennePondereeVotes() {
256
 
256
 
257
		double score = 0;
257
		double score = 0;
258
		double diviseur = 0;
258
		double diviseur = 0;
259
		int nbOccurrences;
259
		int nbOccurrences;
260
		HashMap<Integer,Integer> occurrencesParNote = new HashMap<Integer,Integer>();
260
		HashMap<Integer,Integer> occurrencesParNote = new HashMap<Integer,Integer>();
261
 
261
 
262
		// rangement par note => occurrences
262
		// rangement par note => occurrences
263
		for (String clef : image.getVotesProtocoles(protocole.getId()).keySet()) {
263
		for (String clef : image.getVotesProtocoles(protocole.getId()).keySet()) {
264
			VoteProtocole imageCelValidationData = image.getVotesProtocoles(protocole.getId()).get(clef);
264
			VoteProtocole imageCelValidationData = image.getVotesProtocoles(protocole.getId()).get(clef);
265
			nbOccurrences = 1;
265
			nbOccurrences = 1;
266
			if (occurrencesParNote.containsKey(imageCelValidationData.getVote())) {
266
			if (occurrencesParNote.containsKey(imageCelValidationData.getVote())) {
267
				nbOccurrences = occurrencesParNote.get(imageCelValidationData.getVote()) + 1;
267
				nbOccurrences = occurrencesParNote.get(imageCelValidationData.getVote()) + 1;
268
			}
268
			}
269
			occurrencesParNote.put(imageCelValidationData.getVote(), nbOccurrences);
269
			occurrencesParNote.put(imageCelValidationData.getVote(), nbOccurrences);
270
		}
270
		}
271
 
271
 
272
		// calcul pondéré
272
		// calcul pondéré
273
		for (Integer clef : occurrencesParNote.keySet()) {
273
		for (Integer clef : occurrencesParNote.keySet()) {
274
			score += clef * occurrencesParNote.get(clef) * occurrencesParNote.get(clef);
274
			score += clef * occurrencesParNote.get(clef) * occurrencesParNote.get(clef);
275
			diviseur += occurrencesParNote.get(clef) * occurrencesParNote.get(clef);
275
			diviseur += occurrencesParNote.get(clef) * occurrencesParNote.get(clef);
276
		}
276
		}
277
 
277
 
278
		if (diviseur > 0) {
278
		if (diviseur > 0) {
279
			score /= diviseur;
279
			score /= diviseur;
280
		}
280
		}
281
 
281
 
282
		return score;
282
		return score;
283
	}
283
	}
284
 
284
 
285
	// remplace chaque note par un nombre de points noté dans "echelle" afin de favoriser
285
	// remplace chaque note par un nombre de points noté dans "echelle" afin de favoriser
286
	// les note fortes (5 et 4), pour le défi photo notamment
286
	// les note fortes (5 et 4), pour le défi photo notamment
287
	public int calculerNombrePointsEchelleArbitraire() {
287
	public int calculerNombrePointsEchelleArbitraire() {
288
		int points = 0;
288
		int points = 0;
289
		int[] echelle = {-1,0,1,4,20};
289
		int[] echelle = {-1,0,1,4,20};
290
 
290
 
291
		for (String clef : image.getVotesProtocoles(protocole.getId()).keySet()) {
291
		for (String clef : image.getVotesProtocoles(protocole.getId()).keySet()) {
292
			VoteProtocole imageCelValidationData = image.getVotesProtocoles(protocole.getId()).get(clef);
292
			VoteProtocole imageCelValidationData = image.getVotesProtocoles(protocole.getId()).get(clef);
293
			points += echelle[imageCelValidationData.getVote() - 1];
293
			points += echelle[imageCelValidationData.getVote() - 1];
294
		}
294
		}
295
 
-
 
296
		// @TODO ramener les votes négatifs à 0 pour ne pas insulter les contributeurs ?
295
 
297
		return points;
296
		return points;
298
	}
297
	}
299
 
298
 
300
	public int calculerMoyenneVotesArrondie() {
299
	public int calculerMoyenneVotesArrondie() {
301
		//double valeurVote = calculerMoyenneVotes();
300
		//double valeurVote = calculerMoyenneVotes();
302
		double valeurVote = calculerMoyennePondereeVotes();
301
		double valeurVote = calculerMoyennePondereeVotes();
303
		return (int) Math.round(valeurVote);
302
		return (int) Math.round(valeurVote);
304
	}
303
	}
305
}
304
}