Subversion Repositories eFlore/Applications.del

Rev

Rev 1084 | Rev 1086 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1084 Rev 1085
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.Iterator;
3
import java.util.Iterator;
4
 
4
 
5
import org.tela_botanica.del.client.cache.CacheClient;
5
import org.tela_botanica.del.client.cache.CacheClient;
-
 
6
import org.tela_botanica.del.client.composants.votefleur.VoteFleurPresenteur;
-
 
7
import org.tela_botanica.del.client.composants.votefleur.VoteFleurVue;
6
import org.tela_botanica.del.client.modeles.Image;
8
import org.tela_botanica.del.client.modeles.Image;
7
import org.tela_botanica.del.client.modeles.Protocole;
9
import org.tela_botanica.del.client.modeles.Protocole;
8
import org.tela_botanica.del.client.modeles.VoteProtocole;
10
import org.tela_botanica.del.client.modeles.VoteProtocole;
9
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
11
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
10
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback;
12
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback;
11
 
13
 
12
import com.google.gwt.event.dom.client.ClickEvent;
14
import com.google.gwt.event.dom.client.ClickEvent;
13
import com.google.gwt.event.dom.client.ClickHandler;
15
import com.google.gwt.event.dom.client.ClickHandler;
14
import com.google.gwt.event.dom.client.HasClickHandlers;
16
import com.google.gwt.event.dom.client.HasClickHandlers;
-
 
17
import com.google.gwt.user.client.Window;
15
import com.google.gwt.user.client.ui.HasText;
18
import com.google.gwt.user.client.ui.HasText;
16
import com.google.gwt.user.client.ui.HasWidgets;
19
import com.google.gwt.user.client.ui.HasWidgets;
17
import com.google.gwt.user.client.ui.IsWidget;
20
import com.google.gwt.user.client.ui.IsWidget;
18
 
21
 
19
public class MoyenneVotePresenteur {
22
public class MoyenneVotePresenteur {
20
 
23
 
21
	public interface Vue extends IsWidget {
24
	public interface Vue extends IsWidget {
22
		public HasClickHandlers getBoutonVoter();
25
		public HasClickHandlers getBoutonVoter();
23
 
26
 
24
		public HasClickHandlers getBoutonAnnuler();
27
		public HasClickHandlers getBoutonAnnuler();
25
 
28
 
26
		public HasText getNbVotes();
29
		public HasText getNbVotes();
27
 
30
 
28
		public HasClickHandlers getVotes();
31
		public HasClickHandlers getVotes();
29
 
32
 
30
		public int getValeurVote();
33
		public int getValeurVote();
31
 
34
 
32
		public void afficherBoutonVoter();
35
		public void afficherBoutonVoter();
33
 
36
 
34
		public void afficherBoutonAnnuler();
37
		public void afficherBoutonAnnuler();
35
 
38
 
36
		public void masquerBoutonVoter();
39
		public void masquerBoutonVoter();
37
 
40
 
38
		public void masquerBoutonAnnuler();
41
		public void masquerBoutonAnnuler();
39
 
42
 
40
		public void afficherNbVotes();
43
		public void afficherNbVotes();
41
 
44
 
42
		public void masquerNbVotes();
45
		public void masquerNbVotes();
43
 
46
 
44
		public void reinitialiserVotes();
47
		public void reinitialiserVotes();
45
 
48
 
46
		public void rafraichir(int moyenneVote, int nbVotes);
49
		public void rafraichir(int moyenneVote, int nbVotes);
47
 
50
 
48
		public void ajouterAuParent(HasWidgets composite);
51
		public void ajouterAuParent(HasWidgets composite);
49
		
52
		
50
		public void afficherVotePrisEnCompte();
53
		public void afficherVotePrisEnCompte();
-
 
54
		
-
 
55
		public HasWidgets getZoneFleur();
51
	}
56
	}
52
 
57
 
53
	private Vue vue;
58
	private Vue vue;
54
	private Protocole protocole;
59
	private Protocole protocole;
55
	private Image image;
60
	private Image image;
56
 
61
 
57
	private int valeurVoteDefaut = -1;
62
	private int valeurVoteDefaut = -1;
58
	private int valeurVoteUtilisateur = -1;
63
	private int valeurVoteUtilisateur = -1;
59
	private int valeurVoteTotal = 0;
64
	private int valeurVoteTotal = 0;
-
 
65
	
60
 
66
 
61
	// TODO: on devrait passer un conteneur qui permet d'accéder à ces services
67
	// TODO: on devrait passer un conteneur qui permet d'accéder à ces services
62
	private VoteProtocoleService voteProtocoleService;
68
	private VoteProtocoleService voteProtocoleService;
63
 
69
 
64
	public MoyenneVotePresenteur(Image image, Protocole protocole, Vue vue, VoteProtocoleService voteProtocoleService) {
70
	public MoyenneVotePresenteur(Image image, Protocole protocole, Vue vue, VoteProtocoleService voteProtocoleService) {
65
		this.vue = vue;
71
		this.vue = vue;
66
		this.protocole = protocole;
72
		this.protocole = protocole;
67
		this.image = image;
73
		this.image = image;
68
		this.voteProtocoleService = voteProtocoleService;
74
		this.voteProtocoleService = voteProtocoleService;
69
	}
75
	}
70
 
76
 
71
	public void go(HasWidgets composite) {
77
	public void go(HasWidgets composite) {
72
		vue.ajouterAuParent(composite);
78
		vue.ajouterAuParent(composite);
73
		gererEvenements();
79
		gererEvenements();
74
		rafraichirVue();
80
		rafraichirVue();
75
	}
81
	}
76
 
82
 
77
	public void gererEvenements() {
83
	public void gererEvenements() {
78
		vue.getVotes().addClickHandler(new ClickHandler() {
84
		vue.getVotes().addClickHandler(new ClickHandler() {
79
			@Override
85
			@Override
80
			public void onClick(ClickEvent event) {
86
			public void onClick(ClickEvent event) {
81
				valeurVoteUtilisateur = vue.getValeurVote();
87
				valeurVoteUtilisateur = vue.getValeurVote();
82
				vue.afficherBoutonVoter();
88
				vue.afficherBoutonVoter();
83
				vue.afficherBoutonAnnuler();
89
				vue.afficherBoutonAnnuler();
84
				vue.masquerNbVotes();
90
				vue.masquerNbVotes();
85
			}
91
			}
86
		});
92
		});
87
 
93
 
88
		vue.getBoutonAnnuler().addClickHandler(new ClickHandler() {
94
		vue.getBoutonAnnuler().addClickHandler(new ClickHandler() {
89
			@Override
95
			@Override
90
			public void onClick(ClickEvent event) {
96
			public void onClick(ClickEvent event) {
91
				valeurVoteUtilisateur = valeurVoteDefaut;
97
				valeurVoteUtilisateur = valeurVoteDefaut;
92
				vue.masquerBoutonVoter();
98
				vue.masquerBoutonVoter();
93
				vue.masquerBoutonAnnuler();
99
				vue.masquerBoutonAnnuler();
94
				vue.afficherNbVotes();
100
				vue.afficherNbVotes();
95
				vue.reinitialiserVotes();
101
				vue.reinitialiserVotes();
96
			}
102
			}
97
		});
103
		});
98
 
104
 
99
		vue.getBoutonVoter().addClickHandler(new ClickHandler() {
105
		vue.getBoutonVoter().addClickHandler(new ClickHandler() {
100
			@Override
106
			@Override
101
			public void onClick(ClickEvent event) {
107
			public void onClick(ClickEvent event) {
102
				enregistrerVote();
108
				enregistrerVote();
103
				vue.masquerBoutonVoter();
109
				vue.masquerBoutonVoter();
104
				vue.masquerBoutonAnnuler();
110
				vue.masquerBoutonAnnuler();
105
				vue.afficherNbVotes();
111
				vue.afficherNbVotes();
106
				vue.reinitialiserVotes();
112
				vue.reinitialiserVotes();
107
				vue.afficherVotePrisEnCompte();
113
				vue.afficherVotePrisEnCompte();
108
			}
114
			}
109
		});
115
		});
110
	}
116
	}
111
 
117
 
112
	public void setValeurVoteUtilisateur(int valeurVoteUtilisateur) {
118
	public void setValeurVoteUtilisateur(int valeurVoteUtilisateur) {
113
		this.valeurVoteUtilisateur = valeurVoteUtilisateur;
119
		this.valeurVoteUtilisateur = valeurVoteUtilisateur;
114
	}
120
	}
115
 
121
 
116
	public void enregistrerVote() {
122
	public void enregistrerVote() {
117
		final VoteProtocole voteProtocole = new VoteProtocole();
123
		final VoteProtocole voteProtocole = new VoteProtocole();
118
		voteProtocole.setProtocole(this.protocole);
124
		voteProtocole.setProtocole(this.protocole);
119
		voteProtocole.setVote(valeurVoteUtilisateur);
125
		voteProtocole.setVote(valeurVoteUtilisateur);
120
		String idContributeur = CacheClient.getInstance().getUtilisateur().getId();
126
		String idContributeur = CacheClient.getInstance().getUtilisateur().getId();
121
		voteProtocole.setContributeur(idContributeur);
127
		voteProtocole.setContributeur(idContributeur);
122
		// TODO: Mettre un message de chargement pendant l'envoi du vote ?
128
		// TODO: Mettre un message de chargement pendant l'envoi du vote ?
123
		// C'est très rapide mais bon
129
		// C'est très rapide mais bon
124
		VoteProtocoleCallback vpc = new VoteProtocoleCallback() {
130
		VoteProtocoleCallback vpc = new VoteProtocoleCallback() {
125
 
131
 
126
			@Override
132
			@Override
127
			public void surRetour(Void objetRetour) {
133
			public void surRetour(Void objetRetour) {
128
				// TODO: voir si l'on affiche un message en cas de succès ?
134
				// TODO: voir si l'on affiche un message en cas de succès ?
129
				image.ajouterVoteProtocole(voteProtocole);
135
				image.ajouterVoteProtocole(voteProtocole);
130
				rafraichirVue();
136
				rafraichirVue();
131
			}
137
			}
132
 
138
 
133
		};
139
		};
134
 
140
 
135
		if (image.utilisateurAVotePourProtocole(this.protocole.getId() + "", idContributeur)) {
141
		if (image.utilisateurAVotePourProtocole(this.protocole.getId() + "", idContributeur)) {
136
			voteProtocoleService.modifierVote(image.getIdImage(), voteProtocole, vpc);
142
			voteProtocoleService.modifierVote(image.getIdImage(), voteProtocole, vpc);
137
		} else {
143
		} else {
138
			voteProtocoleService.ajouterVote(image.getIdImage(), voteProtocole, vpc);
144
			voteProtocoleService.ajouterVote(image.getIdImage(), voteProtocole, vpc);
139
		}
145
		}
140
	}
146
	}
141
 
147
 
142
	public int getValeurVoteTotal() {
148
	public int getValeurVoteTotal() {
143
		return valeurVoteTotal;
149
		return valeurVoteTotal;
144
	}
150
	}
145
 
151
 
146
	public IsWidget getVue() {
152
	public IsWidget getVue() {
147
		return vue;
153
		return vue;
148
	}
154
	}
149
 
155
 
150
	private void rafraichirVue() {
156
	private void rafraichirVue() {
151
		valeurVoteTotal = calculerMoyenneVotes();
157
		valeurVoteTotal = calculerMoyenneVotes();
-
 
158
		VoteFleurPresenteur presenteurFleur = new VoteFleurPresenteur(new VoteFleurVue());
-
 
159
		presenteurFleur.setNote(valeurVoteTotal);
-
 
160
		presenteurFleur.go(vue.getZoneFleur());
152
		vue.rafraichir(valeurVoteTotal, image.getVotesProtocoles(protocole.getId()).size());
161
		vue.rafraichir(valeurVoteTotal, image.getVotesProtocoles(protocole.getId()).size());
153
	}
162
	}
154
 
163
 
155
	public int calculerMoyenneVotes() {
164
	public int calculerMoyenneVotes() {
156
		double valeurVote = 0;
165
		double valeurVote = 0;
157
		int nbVote = 0;
166
		int nbVote = 0;
158
		for (Iterator<String> iterator = image.getVotesProtocoles(protocole.getId()).keySet().iterator(); iterator.hasNext();) {
167
		for (Iterator<String> iterator = image.getVotesProtocoles(protocole.getId()).keySet().iterator(); iterator.hasNext();) {
159
			VoteProtocole imageCelValidationData = image.getVotesProtocoles(protocole.getId()).get(iterator.next());
168
			VoteProtocole imageCelValidationData = image.getVotesProtocoles(protocole.getId()).get(iterator.next());
160
			valeurVote += (double) imageCelValidationData.getVote() / 5;
169
			valeurVote += (double) imageCelValidationData.getVote() / 5;
161
			nbVote++;
170
			nbVote++;
162
		}
171
		}
163
 
172
 
164
		if (nbVote > 0) {
173
		if (nbVote > 0) {
165
			valeurVote /= nbVote;
174
			valeurVote /= nbVote;
166
			valeurVote *= 5;
175
			valeurVote *= 5;
167
		}
176
		}
168
 
177
 
169
		return (int) Math.round(valeurVote);
178
		return (int) Math.round(valeurVote);
170
	}
179
	}
171
}
180
}