Subversion Repositories eFlore/Applications.del

Rev

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

Rev 867 Rev 882
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.VoteDetermination;
7
import org.tela_botanica.del.client.modeles.VoteDetermination;
8
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
8
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
9
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
9
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
10
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
10
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
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.VoteDeterminationServiceConcret;
13
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
14
import org.tela_botanica.del.client.services.rest.async.VoteDeterminationCallBack;
14
import org.tela_botanica.del.client.services.rest.async.VoteDeterminationCallback;
15
 
15
 
16
import com.google.gwt.event.dom.client.ClickEvent;
16
import com.google.gwt.event.dom.client.ClickEvent;
17
import com.google.gwt.event.dom.client.ClickHandler;
17
import com.google.gwt.event.dom.client.ClickHandler;
18
import com.google.gwt.event.dom.client.HasClickHandlers;
18
import com.google.gwt.event.dom.client.HasClickHandlers;
19
import com.google.gwt.user.client.Window;
19
import com.google.gwt.user.client.Window;
20
import com.google.gwt.user.client.ui.HasWidgets;
20
import com.google.gwt.user.client.ui.HasWidgets;
21
import com.google.gwt.user.client.ui.IsWidget;
21
import com.google.gwt.user.client.ui.IsWidget;
22
 
22
 
23
public class BarreRepartitionVotePresenteur {
23
public class BarreRepartitionVotePresenteur {
24
	
24
	
25
	public interface Vue extends IsWidget {
25
	public interface Vue extends IsWidget {
26
		public void afficherVotes(int pourcentage, String NomTaxon);
26
		public void afficherVotes(int pourcentage, String NomTaxon);
27
		public HasClickHandlers getBoutonOui();
27
		public HasClickHandlers getBoutonOui();
28
		public HasClickHandlers getBoutonNon();
28
		public HasClickHandlers getBoutonNon();
29
		public void desactiverBoutons();
29
		public void desactiverBoutons();
30
		public void activerBoutons();
30
		public void activerBoutons();
31
		public void setVoteOuiEffectue();
31
		public void setVoteOuiEffectue();
32
		public void setVoteNonEffectue();
32
		public void setVoteNonEffectue();
33
		public void afficherVotePrisEnCompte(boolean b);
33
		public void afficherVotePrisEnCompte(boolean b);
34
	}
34
	}
35
	
35
	
36
	private Vue vue;
36
	private Vue vue;
37
	private MoyenneVote moyenneVote;
37
	private MoyenneVote moyenneVote;
38
	
38
	
39
	// TODO: classe conteneur qui est passé en paramètre au constructeur
39
	// TODO: classe conteneur qui est passé en paramètre au constructeur
40
	private VoteDeterminationService voteDeterminationService = new VoteDeterminationServiceConcret();
40
	private VoteDeterminationService voteDeterminationService = new VoteDeterminationServiceConcret();
41
	
41
	
42
	public BarreRepartitionVotePresenteur(Vue vue) {
42
	public BarreRepartitionVotePresenteur(Vue vue) {
43
		this.vue = vue;
43
		this.vue = vue;
44
		gererEvenements();
44
		gererEvenements();
45
	}
45
	}
46
	
46
	
47
	public void go(HasWidgets container) {
47
	public void go(HasWidgets container) {
48
		container.add(vue.asWidget());
48
		container.add(vue.asWidget());
49
	}
49
	}
50
 
50
 
51
	public void afficherVotes(MoyenneVote moyenneVote) {
51
	public void afficherVotes(MoyenneVote moyenneVote) {
52
		this.moyenneVote = moyenneVote;
52
		this.moyenneVote = moyenneVote;
53
		int score = moyenneVote.getScore();
53
		int score = moyenneVote.getScore();
54
		String intitule =moyenneVote.getIntituleAssocie();
54
		String intitule =moyenneVote.getIntituleAssocie();
55
		vue.afficherVotes(score, intitule);
55
		vue.afficherVotes(score, intitule);
56
	}
56
	}
57
	
57
	
58
	public Vue getBarreRepartitionVoteVue() {
58
	public Vue getBarreRepartitionVoteVue() {
59
		return vue;
59
		return vue;
60
	}
60
	}
61
	
61
	
62
	public MoyenneVote getMoyenneVote() {
62
	public MoyenneVote getMoyenneVote() {
63
		return moyenneVote;
63
		return moyenneVote;
64
	}
64
	}
65
	
65
	
66
	public void gererEvenements() {
66
	public void gererEvenements() {
67
		
67
				
68
		BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
-
 
69
			@Override
-
 
70
			public void onVoteDetermination(VoteDetermination event) {					
-
 
71
				surVoteDetermination(event);
-
 
72
			}
-
 
73
		});
-
 
74
		
-
 
75
		vue.getBoutonOui().addClickHandler(new ClickHandler() {
68
		vue.getBoutonOui().addClickHandler(new ClickHandler() {
76
			@Override
69
			@Override
77
			public void onClick(ClickEvent event) {
70
			public void onClick(ClickEvent event) {
78
				voter(true);
71
				voter(true);
79
				vue.afficherVotePrisEnCompte(true);
72
				vue.afficherVotePrisEnCompte(true);
80
			}		
73
			}		
81
		});
74
		});
82
		
75
		
83
		vue.getBoutonNon().addClickHandler(new ClickHandler() {
76
		vue.getBoutonNon().addClickHandler(new ClickHandler() {
84
			@Override
77
			@Override
85
			public void onClick(ClickEvent event) {
78
			public void onClick(ClickEvent event) {
86
				voter(false);
79
				voter(false);
87
				vue.afficherVotePrisEnCompte(false);
80
				vue.afficherVotePrisEnCompte(false);
88
			}		
81
			}		
89
		});
82
		});
90
	}
83
	}
91
	
84
	
92
	private void surVoteDetermination(final VoteDetermination event) {
85
	private void surVoteDetermination(final VoteDetermination vd) {
93
		if(event.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
86
		if(vd.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
94
			VoteDeterminationCallBack vdc = new VoteDeterminationCallBack() {
87
			VoteDeterminationCallback vdc = new VoteDeterminationCallback() {
95
 
88
 
96
				@Override
89
				@Override
97
				public void surRetour(String messageRetour) {
90
				public void surRetour(String messageRetour) {
98
					moyenneVote.getPropositionAssociee().ajouterVoteDetermination(event);
91
					moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd);
99
					moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
92
					moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
100
					afficherVotes(moyenneVote);
93
					afficherVotes(moyenneVote);
101
					vue.activerBoutons();
94
					vue.activerBoutons();
-
 
95
					// l'évènement n'est lancé que si le vote est validé
-
 
96
					BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd));
102
				}
97
				}
103
 
98
 
104
				@Override
99
				@Override
105
				public void surErreur(String messageErreur) {
100
				public void surErreur(String messageErreur) {
106
					Window.alert(messageErreur);
101
					Window.alert(messageErreur);
107
					vue.activerBoutons();
102
					vue.activerBoutons();
108
				}
103
				}
109
			};
104
			};
110
			
105
			
111
			if(moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(event.getContributeur())) {
106
			if(moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(vd.getContributeur())) {
112
				voteDeterminationService.modifierVote(event, vdc);
107
				voteDeterminationService.modifierVote(vd, vdc);
113
			} else {
108
			} else {
114
				voteDeterminationService.ajouterVote(event, vdc);
109
				voteDeterminationService.ajouterVote(vd, vdc);
115
			}
110
			}
116
		}	
111
		}	
117
	}
112
	}
118
	
113
	
119
	public void voter(boolean oui) {
114
	public void voter(boolean oui) {
120
		
115
		
121
		VoteDetermination vd = new VoteDetermination();
116
		VoteDetermination vd = new VoteDetermination();
122
		vd.setPropositionDetermination(moyenneVote.getPropositionAssociee());
117
		vd.setPropositionDetermination(moyenneVote.getPropositionAssociee());
123
		vd.setContributeur(CacheClient.getInstance().getUtilisateur().getId());
118
		vd.setContributeur(CacheClient.getInstance().getUtilisateur().getId());
124
		vd.setDate(new Date());
119
		vd.setDate(new Date());
125
		
120
		
126
		int valeurVote = oui ? 1 : 0;
121
		int valeurVote = oui ? 1 : 0;
127
		vd.setVote(valeurVote);
122
		vd.setVote(valeurVote);
128
		vd.setId(CacheClient.getInstance().getUtilisateur().getId());
123
		vd.setId(CacheClient.getInstance().getUtilisateur().getId());
129
		
124
		
130
		if(oui) {
125
		if(oui) {
131
			vue.setVoteOuiEffectue();
126
			vue.setVoteOuiEffectue();
132
		} else {
127
		} else {
133
			vue.setVoteNonEffectue();
128
			vue.setVoteNonEffectue();
134
		}
129
		}
135
		vue.desactiverBoutons();
130
		vue.desactiverBoutons();
136
		// Attention, il ne faut pas ajouter le vote à la proposition maintenant, 
-
 
137
		// mais après le retour du web service
131
		surVoteDetermination(vd);
138
		BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd));
-
 
139
	}
132
	}
140
}
133
}