Subversion Repositories eFlore/Applications.del

Rev

Rev 823 | Rev 959 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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