Subversion Repositories eFlore/Applications.del

Rev

Rev 549 | Go to most recent revision | 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;
6
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;
7
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
8
import com.google.gwt.event.dom.client.ClickEvent;
9
import com.google.gwt.event.dom.client.ClickHandler;
10
import com.google.gwt.event.dom.client.HasClickHandlers;
11
import com.google.gwt.user.client.ui.HasWidgets;
12
import com.google.gwt.user.client.ui.IsWidget;
13
 
14
public class FormulaireIdentificationPresenteur {
15
 
16
	public abstract interface Vue extends IsWidget {
17
		public void ajouterVue(HasWidgets composite);
18
		public HasClickHandlers getSeConnecter();
19
		public HasClickHandlers getSeDeconnecter();
20
		public void basculerAffichageFormulaire();
21
		public void basculerModeConnecte(Utilisateur utilisateur);
22
		public HasClickHandlers getBoutonOK();
23
		public String getLogin();
24
		public String getMotdepasse();
25
		public void afficherErreur();
26
		public void masquerErreur();
27
		public void viderFormulaire();
28
		public void setErreur(String texte);
29
	}
30
 
31
	private Vue vue;
32
	private Utilisateur utilisateur;
33
	private UtilisateurServiceConcret utilisateurService;
34
 
35
	public FormulaireIdentificationPresenteur(Vue vue) {
36
		this.vue = vue;
37
		utilisateurService = new UtilisateurServiceConcret();
38
		utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
39
			@Override
40
			public void surRetourUtilisateur(Utilisateur utilisateur) {
41
				CacheClient.getInstance().setUtilisateur(utilisateur);
42
				rafraichir();
43
			}
44
		});
45
		gererEvenements();
46
 
47
	}
48
 
49
	public void rafraichir() {
50
		utilisateur = CacheClient.getInstance().getUtilisateur();
51
		vue.basculerModeConnecte(this.utilisateur);
52
	}
53
 
54
	public void gererEvenements() {
55
		vue.getSeConnecter().addClickHandler(new ClickHandler() {
56
 
57
			@Override
58
			public void onClick(ClickEvent event) {
59
				vue.basculerAffichageFormulaire();
60
			}
61
		});
62
 
63
		vue.getBoutonOK().addClickHandler(new ClickHandler() {
64
			@Override
65
			public void onClick(ClickEvent event) {
66
				String login = vue.getLogin();
67
				String motdepasse = vue.getMotdepasse();
68
 
69
				if (login.equals("") || motdepasse.equals("")) {
70
					vue.setErreur(I18n.getMessages().saisirLogin());
71
					vue.afficherErreur();
72
				} else {
73
					utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
74
						@Override
75
						public void surRetourUtilisateur(Utilisateur utilisateur) {
76
							CacheClient.getInstance().setUtilisateur(utilisateur);
77
							if (utilisateur.isIdentifie()) {
78
								vue.masquerErreur();
79
								rafraichir();
80
								vue.basculerAffichageFormulaire();
81
								vue.viderFormulaire();
82
							} else {
83
								vue.setErreur(I18n.getMessages().identificationRefus());
84
								vue.afficherErreur();
85
							}
86
						}
87
					});
88
				}
89
			}
90
		});
91
 
92
		vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
93
			@Override
94
			public void onClick(ClickEvent event) {
95
				Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
96
				utilisateurService.deconnecterUtilisateur(utilisateur.getCourriel(), new UtilisateurCallback() {
97
					@Override
98
					public void surRetourUtilisateur(Utilisateur utilisateur) {
99
						CacheClient.getInstance().setUtilisateur(utilisateur);
100
						rafraichir();
101
					}
102
				});
103
 
104
			}
105
		});
106
	}
107
 
108
	public void go(HasWidgets composite) {
109
		vue.ajouterVue(composite);
110
	}
111
}