Subversion Repositories eFlore/Applications.del

Rev

Rev 867 | Rev 939 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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