Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1060 Rev 1124
1
package org.tela_botanica.del.client.composants.votes.barrerepartition;
1
package org.tela_botanica.del.client.composants.votes.barrerepartition;
2
 
2
 
3
import java.util.Date;
3
import java.util.Date;
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.modeles.MoyenneVote;
6
import org.tela_botanica.del.client.modeles.MoyenneVote;
7
import org.tela_botanica.del.client.modeles.PropositionDetermination;
7
import org.tela_botanica.del.client.modeles.PropositionDetermination;
8
import org.tela_botanica.del.client.modeles.VoteDetermination;
8
import org.tela_botanica.del.client.modeles.VoteDetermination;
9
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
9
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
10
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
10
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
11
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
11
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
12
import org.tela_botanica.del.client.services.rest.VoteDeterminationService;
12
import org.tela_botanica.del.client.services.rest.VoteDeterminationService;
13
import org.tela_botanica.del.client.services.rest.async.AjoutVoteDeterminationCallback;
13
import org.tela_botanica.del.client.services.rest.async.AjoutVoteDeterminationCallback;
14
 
14
 
15
import com.google.gwt.event.dom.client.ClickEvent;
15
import com.google.gwt.event.dom.client.ClickEvent;
16
import com.google.gwt.event.dom.client.ClickHandler;
16
import com.google.gwt.event.dom.client.ClickHandler;
17
import com.google.gwt.event.dom.client.HasClickHandlers;
17
import com.google.gwt.event.dom.client.HasClickHandlers;
18
import com.google.gwt.user.client.Window;
18
import com.google.gwt.user.client.Window;
-
 
19
import com.google.gwt.user.client.ui.HasText;
19
import com.google.gwt.user.client.ui.HasWidgets;
20
import com.google.gwt.user.client.ui.HasWidgets;
20
import com.google.gwt.user.client.ui.IsWidget;
21
import com.google.gwt.user.client.ui.IsWidget;
21
 
22
 
22
public class BarreRepartitionVotePresenteur {
23
public class BarreRepartitionVotePresenteur {
23
 
24
 
24
	public interface Vue extends IsWidget {
25
	public interface Vue extends IsWidget {
25
		public void afficherVotes(int pourcentage, String NomTaxon, String auteur, boolean estPropositionInitiale);
26
		public void afficherVotes(int pourcentage, String NomTaxon, String auteur, boolean estPropositionInitiale);
26
		public HasClickHandlers getBoutonOui();
27
		public HasClickHandlers getBoutonOui();
27
		public HasClickHandlers getBoutonNon();
28
		public HasClickHandlers getBoutonNon();
28
		public void desactiverBoutons();
29
		public void desactiverBoutons();
29
		public void activerBoutons();
30
		public void activerBoutons();
30
		public void setVoteOuiEffectue();
31
		public void setVoteOuiEffectue();
31
		public void setVoteNonEffectue();
32
		public void setVoteNonEffectue();
32
		public void afficherVotePrisEnCompte(boolean b);
33
		public void afficherVotePrisEnCompte(boolean b);
33
		public void afficherVoteModifie(boolean b);
34
		public void afficherVoteModifie(boolean b);
34
		public void toggleNomEspece();
35
		public void toggleNomEspece();
35
		public void setPourcentage(int pourcentage);
36
		public HasText getScore();
36
	}
37
	}
37
 
38
 
38
	private Vue vue;
39
	private Vue vue;
39
	private MoyenneVote moyenneVote;
40
	private MoyenneVote moyenneVote;
40
 
41
 
41
	// TODO: classe conteneur qui est passé en paramètre au constructeur
42
	// TODO: classe conteneur qui est passé en paramètre au constructeur
42
	private VoteDeterminationService voteDeterminationService;
43
	private VoteDeterminationService voteDeterminationService;
43
 
44
 
44
	public BarreRepartitionVotePresenteur(Vue vue, VoteDeterminationService voteDeterminationService) {
45
	public BarreRepartitionVotePresenteur(Vue vue, VoteDeterminationService voteDeterminationService) {
45
		this.vue = vue;
46
		this.vue = vue;
46
		this.voteDeterminationService = voteDeterminationService;
47
		this.voteDeterminationService = voteDeterminationService;
47
		gererEvenements();
48
		gererEvenements();
48
	}
49
	}
49
 
50
 
50
	public void go(HasWidgets container) {
51
	public void go(HasWidgets container) {
51
		container.add(vue.asWidget());
52
		container.add(vue.asWidget());
52
	}
53
	}
53
 
54
 
54
	public void afficherVotes(MoyenneVote moyenneVote) {
55
	public void afficherVotes(MoyenneVote moyenneVote) {
55
		this.moyenneVote = moyenneVote;
56
		this.moyenneVote = moyenneVote;
56
		int score = moyenneVote.getScore();
57
		int score = moyenneVote.getScore();
57
		String intitule = moyenneVote.getIntituleAssocie();
58
		String intitule = moyenneVote.getIntituleAssocie();
58
		PropositionDetermination proposition = moyenneVote.getPropositionAssociee();
59
		PropositionDetermination proposition = moyenneVote.getPropositionAssociee();
59
		boolean estPropositionInitiale = false;
60
		boolean estPropositionInitiale = false;
60
		if (proposition != null) {
61
		if (proposition != null) {
61
			estPropositionInitiale = moyenneVote.getPropositionAssociee().estPropositionInitiale();
62
			estPropositionInitiale = moyenneVote.getPropositionAssociee().estPropositionInitiale();
62
		} 
63
		} 
63
		vue.afficherVotes(score, intitule, moyenneVote.getPropositionAssociee().getAuteur(), estPropositionInitiale);
64
		vue.afficherVotes(score, intitule, moyenneVote.getPropositionAssociee().getAuteur(), estPropositionInitiale);
64
		if (score > 0) {
-
 
65
			vue.setPourcentage(score);
-
 
66
		}
-
 
67
		afficherValeurVoteUtilisateur();
65
		afficherValeurVoteUtilisateur();
68
	}
66
	}
69
	
67
	
70
	public void afficherValeurVoteUtilisateur() {
68
	public void afficherValeurVoteUtilisateur() {
71
		String idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
69
		String idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
72
		if(moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(idUtilisateur)) {
70
		if(moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(idUtilisateur)) {
73
			boolean valeurVote = (moyenneVote.getPropositionAssociee().getVotesDeterminations().get(idUtilisateur).getVote() == 1) ? true : false; 
71
			boolean valeurVote = (moyenneVote.getPropositionAssociee().getVotesDeterminations().get(idUtilisateur).getVote() == 1) ? true : false; 
74
			if(valeurVote) {
72
			if(valeurVote) {
75
				vue.setVoteOuiEffectue();
73
				vue.setVoteOuiEffectue();
76
			} else {
74
			} else {
77
				vue.setVoteNonEffectue();
75
				vue.setVoteNonEffectue();
78
			}
76
			}
79
		}
77
		}
80
	}
78
	}
81
 
79
 
82
	public Vue getBarreRepartitionVoteVue() {
80
	public Vue getBarreRepartitionVoteVue() {
83
		return vue;
81
		return vue;
84
	}
82
	}
85
 
83
 
86
	public MoyenneVote getMoyenneVote() {
84
	public MoyenneVote getMoyenneVote() {
87
		return moyenneVote;
85
		return moyenneVote;
88
	}
86
	}
89
 
87
 
90
	public void gererEvenements() {
88
	public void gererEvenements() {
91
 
89
 
92
		vue.getBoutonOui().addClickHandler(new ClickHandler() {
90
		vue.getBoutonOui().addClickHandler(new ClickHandler() {
93
			@Override
91
			@Override
94
			public void onClick(ClickEvent event) {
92
			public void onClick(ClickEvent event) {
95
				voter(true);
93
				voter(true);
96
				
94
				
97
			}
95
			}
98
		});
96
		});
99
 
97
 
100
		vue.getBoutonNon().addClickHandler(new ClickHandler() {
98
		vue.getBoutonNon().addClickHandler(new ClickHandler() {
101
			@Override
99
			@Override
102
			public void onClick(ClickEvent event) {
100
			public void onClick(ClickEvent event) {
103
				voter(false);
101
				voter(false);
104
			
102
			
105
			}
103
			}
106
		});
104
		});
107
	}
105
	}
108
 
106
 
109
	private void surVoteDetermination(final VoteDetermination vd) {
107
	private void surVoteDetermination(final VoteDetermination vd) {
110
		if (vd.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
108
		if (vd.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
111
			AjoutVoteDeterminationCallback vdc = new AjoutVoteDeterminationCallback() {
109
			AjoutVoteDeterminationCallback vdc = new AjoutVoteDeterminationCallback() {
112
 
110
 
113
				@Override
111
				@Override
114
				public void surErreur(String messageErreur) {
112
				public void surErreur(String messageErreur) {
115
					Window.alert(messageErreur);
113
					Window.alert(messageErreur);
116
					vue.activerBoutons();
114
					vue.activerBoutons();
117
				}
115
				}
118
 
116
 
119
				@Override
117
				@Override
120
				public void surRetour(Void objetRetour) {
118
				public void surRetour(Void objetRetour) {
121
					moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd);
119
					moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd);
122
					moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
120
					moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
123
					afficherVotes(moyenneVote);
121
					afficherVotes(moyenneVote);
124
					vue.activerBoutons();
122
					vue.activerBoutons();
125
					boolean valeurVote = (vd.getVote() == 1) ? true : false; 
123
					boolean valeurVote = (vd.getVote() == 1) ? true : false; 
126
					if(valeurVote) {
124
					if(valeurVote) {
127
						vue.setVoteOuiEffectue();
125
						vue.setVoteOuiEffectue();
128
					} else {
126
					} else {
129
						vue.setVoteNonEffectue();
127
						vue.setVoteNonEffectue();
130
					}
128
					}
131
					// l'évènement n'est lancé que si le vote est validé
129
					// l'évènement n'est lancé que si le vote est validé
132
					BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd));
130
					BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd));
133
				}
131
				}
134
			};
132
			};
135
 
133
 
136
			if (moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(vd.getContributeur())) {
134
			if (moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(vd.getContributeur())) {
137
				
135
				
138
				voteDeterminationService.modifierVote(vd, vdc);
136
				voteDeterminationService.modifierVote(vd, vdc);
139
				vue.afficherVoteModifie(vd.getVote()==1);
137
				vue.afficherVoteModifie(vd.getVote()==1);
140
			} else {
138
			} else {
141
				
139
				
142
				voteDeterminationService.ajouterVote(vd, vdc);
140
				voteDeterminationService.ajouterVote(vd, vdc);
143
				vue.afficherVotePrisEnCompte(vd.getVote()==1);
141
				vue.afficherVotePrisEnCompte(vd.getVote()==1);
144
			}
142
			}
145
		}
143
		}
146
	}
144
	}
147
	
145
	
148
	public void toggleNomEspece() {
146
	public void toggleNomEspece() {
149
		vue.toggleNomEspece();
147
		vue.toggleNomEspece();
150
	}
148
	}
151
 
149
 
152
	public void voter(boolean oui) {
150
	public void voter(boolean oui) {
153
 
151
 
154
		VoteDetermination vd = new VoteDetermination();
152
		VoteDetermination vd = new VoteDetermination();
155
		vd.setPropositionDetermination(moyenneVote.getPropositionAssociee());
153
		vd.setPropositionDetermination(moyenneVote.getPropositionAssociee());
156
		vd.setContributeur(CacheClient.getInstance().getUtilisateur().getId());
154
		vd.setContributeur(CacheClient.getInstance().getUtilisateur().getId());
157
		vd.setDate(new Date());
155
		vd.setDate(new Date());
158
 
156
 
159
		int valeurVote = oui ? 1 : 0;
157
		int valeurVote = oui ? 1 : 0;
160
		vd.setVote(valeurVote);
158
		vd.setVote(valeurVote);
161
		vd.setId(CacheClient.getInstance().getUtilisateur().getId());
159
		vd.setId(CacheClient.getInstance().getUtilisateur().getId());
162
 
160
 
163
		if (oui) {
161
		if (oui) {
164
			vue.setVoteOuiEffectue();
162
			vue.setVoteOuiEffectue();
165
		} else {
163
		} else {
166
			vue.setVoteNonEffectue();
164
			vue.setVoteNonEffectue();
167
		}
165
		}
168
		vue.desactiverBoutons();
166
		vue.desactiverBoutons();
169
		surVoteDetermination(vd);
167
		surVoteDetermination(vd);
170
	}
168
	}
171
}
169
}