Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
536 gduche 1
package org.tela_botanica.del.client.composants.identification;
2
 
3
import org.tela_botanica.del.client.cache.CacheClient;
4
import org.tela_botanica.del.client.i18n.I18n;
5
import org.tela_botanica.del.client.modeles.Utilisateur;
549 gduche 6
import org.tela_botanica.del.client.services.rest.UtilisateurService;
536 gduche 7
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;
8
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
9
import com.google.gwt.event.dom.client.ClickEvent;
10
import com.google.gwt.event.dom.client.ClickHandler;
11
import com.google.gwt.event.dom.client.HasClickHandlers;
549 gduche 12
import com.google.gwt.user.client.ui.HasText;
536 gduche 13
import com.google.gwt.user.client.ui.HasWidgets;
14
import com.google.gwt.user.client.ui.IsWidget;
15
 
16
public class FormulaireIdentificationPresenteur {
17
 
18
	public abstract interface Vue extends IsWidget {
19
		public void ajouterVue(HasWidgets composite);
20
		public HasClickHandlers getSeConnecter();
21
		public HasClickHandlers getSeDeconnecter();
22
		public void basculerAffichageFormulaire();
23
		public void basculerModeConnecte(Utilisateur utilisateur);
24
		public HasClickHandlers getBoutonOK();
549 gduche 25
		public HasText getLogin();
26
		public HasText getMotdepasse();
536 gduche 27
		public void afficherErreur();
28
		public void masquerErreur();
29
		public void viderFormulaire();
549 gduche 30
		public void setErreur(String idTexte);
31
		public String getErreur();
536 gduche 32
	}
33
 
34
	private Vue vue;
35
	private Utilisateur utilisateur;
549 gduche 36
	private UtilisateurService utilisateurService;
536 gduche 37
 
549 gduche 38
	public FormulaireIdentificationPresenteur(Vue vue, UtilisateurService utilisateurService) {
536 gduche 39
		this.vue = vue;
549 gduche 40
		this.utilisateurService = utilisateurService;
536 gduche 41
		utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
42
			@Override
43
			public void surRetourUtilisateur(Utilisateur utilisateur) {
44
				CacheClient.getInstance().setUtilisateur(utilisateur);
45
				rafraichir();
46
			}
47
		});
48
		gererEvenements();
49
 
50
	}
51
 
52
	public void rafraichir() {
53
		utilisateur = CacheClient.getInstance().getUtilisateur();
54
		vue.basculerModeConnecte(this.utilisateur);
55
	}
56
 
57
	public void gererEvenements() {
58
		vue.getSeConnecter().addClickHandler(new ClickHandler() {
59
 
60
			@Override
61
			public void onClick(ClickEvent event) {
62
				vue.basculerAffichageFormulaire();
63
			}
64
		});
65
 
66
		vue.getBoutonOK().addClickHandler(new ClickHandler() {
67
			@Override
68
			public void onClick(ClickEvent event) {
549 gduche 69
				String login = vue.getLogin().getText();
70
				String motdepasse = vue.getMotdepasse().getText();
536 gduche 71
 
72
				if (login.equals("") || motdepasse.equals("")) {
549 gduche 73
					gererErreur("saisirLogin");
536 gduche 74
				} else {
549 gduche 75
					connecterUtilisateur(login, motdepasse);
536 gduche 76
				}
77
			}
78
		});
79
 
80
		vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
81
			@Override
82
			public void onClick(ClickEvent event) {
83
				Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
549 gduche 84
				deconnecterUtilisateur(utilisateur.getCourriel());
536 gduche 85
 
86
			}
87
		});
88
	}
89
 
549 gduche 90
	public void gererErreur(String erreur) {
91
		vue.setErreur(erreur);
92
		vue.afficherErreur();
93
	}
94
 
95
	public void connecterUtilisateur(String login, String motdepasse) {
96
 
97
		utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
98
			@Override
99
			public void surRetourUtilisateur(Utilisateur utilisateur) {
100
				CacheClient.getInstance().setUtilisateur(utilisateur);
101
				if (utilisateur.isIdentifie()) {
102
					vue.masquerErreur();
103
					rafraichir();
104
					vue.basculerAffichageFormulaire();
105
					vue.viderFormulaire();
106
				} else {
107
					vue.setErreur("identificationRefus");
108
					vue.afficherErreur();
109
				}
110
			}
111
		});
112
	}
113
 
114
	public void deconnecterUtilisateur(String courriel) {
115
		utilisateurService.deconnecterUtilisateur(courriel, new UtilisateurCallback() {
116
			@Override
117
			public void surRetourUtilisateur(Utilisateur utilisateur) {
118
				CacheClient.getInstance().setUtilisateur(utilisateur);
119
				rafraichir();
120
			}
121
		});
122
	}
123
 
536 gduche 124
	public void go(HasWidgets composite) {
125
		vue.ajouterVue(composite);
126
	}
127
}