Subversion Repositories eFlore/Applications.del

Rev

Rev 833 | Rev 867 | 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;
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();
29
		public void setVoteOuiEffectue();
30
		public void setVoteNonEffectue();
672 gduche 31
		public void afficherVotePrisEnCompte(boolean b);
276 aurelien 32
	}
186 aurelien 33
 
276 aurelien 34
	private Vue vue;
186 aurelien 35
	private MoyenneVote moyenneVote;
36
 
833 aurelien 37
	// TODO: classe conteneur qui est passé en paramètre au constructeur
38
	private VoteDeterminationService voteDeterminationService = new VoteDeterminationServiceConcret();
39
 
276 aurelien 40
	public BarreRepartitionVotePresenteur(Vue vue) {
41
		this.vue = vue;
227 aurelien 42
		gererEvenements();
140 aurelien 43
	}
276 aurelien 44
 
45
	public void go(HasWidgets container) {
46
		container.add(vue.asWidget());
47
	}
140 aurelien 48
 
186 aurelien 49
	public void afficherVotes(MoyenneVote moyenneVote) {
50
		this.moyenneVote = moyenneVote;
611 gduche 51
		int score = moyenneVote.getScore();
52
		String intitule =moyenneVote.getIntituleAssocie();
53
		vue.afficherVotes(score, intitule);
140 aurelien 54
	}
55
 
276 aurelien 56
	public Vue getBarreRepartitionVoteVue() {
140 aurelien 57
		return vue;
58
	}
172 aurelien 59
 
276 aurelien 60
	public MoyenneVote getMoyenneVote() {
61
		return moyenneVote;
62
	}
63
 
186 aurelien 64
	public void gererEvenements() {
65
 
248 aurelien 66
		BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
186 aurelien 67
			@Override
629 aurelien 68
			public void onVoteDetermination(VoteDetermination event) {
833 aurelien 69
				surVoteDetermination(event);
186 aurelien 70
			}
71
		});
72
 
248 aurelien 73
		vue.getBoutonOui().addClickHandler(new ClickHandler() {
74
			@Override
75
			public void onClick(ClickEvent event) {
76
				voter(true);
672 gduche 77
				vue.afficherVotePrisEnCompte(true);
248 aurelien 78
			}
79
		});
80
 
186 aurelien 81
		vue.getBoutonNon().addClickHandler(new ClickHandler() {
82
			@Override
83
			public void onClick(ClickEvent event) {
248 aurelien 84
				voter(false);
276 aurelien 85
				vue.setVoteNonEffectue();
672 gduche 86
				vue.afficherVotePrisEnCompte(false);
186 aurelien 87
			}
88
		});
89
	}
248 aurelien 90
 
833 aurelien 91
	private void surVoteDetermination(final VoteDetermination event) {
92
		if(event.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
93
			VoteDeterminationCallBack vdc = new VoteDeterminationCallBack() {
94
 
95
				@Override
96
				public void surRetour(String messageRetour) {
97
					moyenneVote.getPropositionAssociee().ajouterVoteDetermination(event);
98
					moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
99
					afficherVotes(moyenneVote);
100
				}
101
 
102
				@Override
103
				public void surErreur(String messageErreur) {
104
					Window.alert(messageErreur);
105
				}
106
			};
107
 
108
			if(moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(event.getContributeur())) {
842 aurelien 109
				voteDeterminationService.modifierVote(event, vdc);
110
			} else {
833 aurelien 111
				voteDeterminationService.ajouterVote(event, vdc);
112
			}
113
		}
114
	}
115
 
248 aurelien 116
	public void voter(boolean oui) {
117
 
118
		VoteDetermination vd = new VoteDetermination();
119
		vd.setPropositionDetermination(moyenneVote.getPropositionAssociee());
565 aurelien 120
		vd.setContributeur(CacheClient.getInstance().getUtilisateur().getId());
248 aurelien 121
		vd.setDate(new Date());
122
 
123
		int valeurVote = oui ? 1 : 0;
124
		vd.setVote(valeurVote);
565 aurelien 125
		vd.setId(CacheClient.getInstance().getUtilisateur().getId());
248 aurelien 126
 
611 gduche 127
		if(oui) {
128
			vue.setVoteOuiEffectue();
129
		} else {
130
			vue.setVoteNonEffectue();
131
		}
132
 
620 aurelien 133
		moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd);
248 aurelien 134
		BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd));
135
	}
140 aurelien 136
}