Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
602 aurelien 1
package org.tela_botanica.del.client.composants.formulaires.identification;
536 gduche 2
 
1473 mathias 3
import java.util.Calendar;
4
import java.util.Date;
5
import java.util.GregorianCalendar;
6
 
536 gduche 7
import org.tela_botanica.del.client.cache.CacheClient;
1175 aurelien 8
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
9
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
10
import org.tela_botanica.del.client.composants.preferences.PreferencesPresenteur;
11
import org.tela_botanica.del.client.composants.preferences.PreferencesVue;
536 gduche 12
import org.tela_botanica.del.client.modeles.Utilisateur;
1175 aurelien 13
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
1314 aurelien 14
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
1175 aurelien 15
import org.tela_botanica.del.client.navigation.evenement.changementPreferences.EvenementChangementPreferences;
16
import org.tela_botanica.del.client.navigation.evenement.changementPreferences.GestionnaireEvenementChangementPreferences;
17
import org.tela_botanica.del.client.services.rest.PreferencesServiceConcret;
549 gduche 18
import org.tela_botanica.del.client.services.rest.UtilisateurService;
536 gduche 19
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
939 benjamin 20
 
536 gduche 21
import com.google.gwt.event.dom.client.ClickEvent;
22
import com.google.gwt.event.dom.client.ClickHandler;
23
import com.google.gwt.event.dom.client.HasClickHandlers;
597 aurelien 24
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
25
import com.google.gwt.event.dom.client.KeyCodes;
26
import com.google.gwt.event.dom.client.KeyPressEvent;
27
import com.google.gwt.event.dom.client.KeyPressHandler;
1473 mathias 28
import com.google.gwt.user.client.Cookies;
29
import com.google.gwt.user.client.Window;
549 gduche 30
import com.google.gwt.user.client.ui.HasText;
536 gduche 31
import com.google.gwt.user.client.ui.HasWidgets;
32
import com.google.gwt.user.client.ui.IsWidget;
33
 
34
public class FormulaireIdentificationPresenteur {
1175 aurelien 35
 
36
	FenetreOverlaySimplePresenteur fenetreModalePresenteur = null;
939 benjamin 37
 
536 gduche 38
	public abstract interface Vue extends IsWidget {
39
		public void ajouterVue(HasWidgets composite);
939 benjamin 40
 
536 gduche 41
		public HasClickHandlers getSeConnecter();
939 benjamin 42
 
536 gduche 43
		public HasClickHandlers getSeDeconnecter();
939 benjamin 44
 
1183 gduche 45
		public void basculerAffichageFormulaire(boolean estConnecte);
939 benjamin 46
 
536 gduche 47
		public void basculerModeConnecte(Utilisateur utilisateur);
939 benjamin 48
 
536 gduche 49
		public HasClickHandlers getBoutonOK();
939 benjamin 50
 
549 gduche 51
		public HasText getLogin();
939 benjamin 52
 
549 gduche 53
		public HasText getMotdepasse();
939 benjamin 54
 
536 gduche 55
		public void afficherErreur();
939 benjamin 56
 
536 gduche 57
		public void masquerErreur();
939 benjamin 58
 
536 gduche 59
		public void viderFormulaire();
939 benjamin 60
 
549 gduche 61
		public void setErreur(String idTexte);
939 benjamin 62
 
549 gduche 63
		public String getErreur();
939 benjamin 64
 
597 aurelien 65
		public HasKeyPressHandlers getLoginHasKeyPressHandler();
939 benjamin 66
 
597 aurelien 67
		public HasKeyPressHandlers getMotdepasseHasKeyPressHandler();
1175 aurelien 68
 
69
		HasClickHandlers getZonePreferencesClickHandler();
536 gduche 70
	}
939 benjamin 71
 
536 gduche 72
	private Vue vue;
73
	private Utilisateur utilisateur;
549 gduche 74
	private UtilisateurService utilisateurService;
939 benjamin 75
 
549 gduche 76
	public FormulaireIdentificationPresenteur(Vue vue, UtilisateurService utilisateurService) {
1473 mathias 77
 
536 gduche 78
		this.vue = vue;
549 gduche 79
		this.utilisateurService = utilisateurService;
939 benjamin 80
 
1473 mathias 81
		// lecture du cookie éventuel
82
		String id = Cookies.getCookie("del_id");
83
		String prenom = Cookies.getCookie("del_prenom");
84
		String nom = Cookies.getCookie("del_nom");
85
		String courriel = Cookies.getCookie("del_courriel");
86
 
87
		if (id != null && prenom != null && nom != null && courriel != null) {
88
			utilisateur = new Utilisateur(id, prenom, nom, courriel);
89
		}
90
 
91
		CacheClient.getInstance().setUtilisateur(utilisateur);
92
		rafraichir();
93
 
94
		/*utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
95
 
536 gduche 96
			@Override
939 benjamin 97
			public void surRetour(Utilisateur objetRetour) {
948 aurelien 98
				utilisateur = objetRetour;
536 gduche 99
				CacheClient.getInstance().setUtilisateur(utilisateur);
100
				rafraichir();
101
			}
1473 mathias 102
		});*/
536 gduche 103
		gererEvenements();
104
	}
939 benjamin 105
 
536 gduche 106
	public void rafraichir() {
939 benjamin 107
		utilisateur = CacheClient.getInstance().getUtilisateur();
536 gduche 108
		vue.basculerModeConnecte(this.utilisateur);
1314 aurelien 109
		BusEvenementiel.getInstance().fireEvent(new EvenementChangementEtatUtilisateur(utilisateur));
536 gduche 110
	}
939 benjamin 111
 
536 gduche 112
	public void gererEvenements() {
113
		vue.getBoutonOK().addClickHandler(new ClickHandler() {
114
			@Override
115
			public void onClick(ClickEvent event) {
597 aurelien 116
				surTentativeLogin();
536 gduche 117
			}
118
		});
939 benjamin 119
 
536 gduche 120
		vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
121
			@Override
122
			public void onClick(ClickEvent event) {
939 benjamin 123
				deconnecterUtilisateur();
536 gduche 124
			}
125
		});
939 benjamin 126
 
597 aurelien 127
		vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
128
		vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
1175 aurelien 129
 
130
		vue.getZonePreferencesClickHandler().addClickHandler(new ClickHandler() {
131
			@Override
132
			public void onClick(ClickEvent event) {
133
				if(utilisateur.estIdentifie()) {
134
					PreferencesPresenteur preferencesPresenteur = new PreferencesPresenteur(new PreferencesVue(), new PreferencesServiceConcret());
135
					fenetreModalePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
136
					fenetreModalePresenteur.ouvrirFenetreModale(preferencesPresenteur);
137
				}
138
			}
139
		});
140
 
141
		BusEvenementiel.getInstance().addHandler(EvenementChangementPreferences.TYPE, new GestionnaireEvenementChangementPreferences() {
142
			@Override
143
			public void onChangementPreferences(EvenementChangementPreferences event) {
144
				if(fenetreModalePresenteur != null && fenetreModalePresenteur.fenetreModaleEstOuverte()) {
145
					fenetreModalePresenteur.fermerFenetreModale();
146
				}
147
			}
148
		});
536 gduche 149
	}
939 benjamin 150
 
597 aurelien 151
	private void surTentativeLogin() {
939 benjamin 152
		String login = vue.getLogin().getText();
597 aurelien 153
		String motdepasse = vue.getMotdepasse().getText();
939 benjamin 154
 
597 aurelien 155
		if (login.equals("") || motdepasse.equals("")) {
156
			gererErreur("saisirLogin");
157
		} else {
158
			connecterUtilisateur(login, motdepasse);
159
		}
160
	}
939 benjamin 161
 
597 aurelien 162
	public KeyPressHandler creerGestionnaireEvenementToucheEntree() {
163
		return new KeyPressHandler() {
164
			public void onKeyPress(KeyPressEvent event) {
165
				if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
166
					surTentativeLogin();
167
				}
168
			}
169
		};
170
	}
939 benjamin 171
 
549 gduche 172
	public void gererErreur(String erreur) {
173
		vue.setErreur(erreur);
174
		vue.afficherErreur();
175
	}
939 benjamin 176
 
1473 mathias 177
	// appelle le 3615 DEL pour s'identifier
549 gduche 178
	public void connecterUtilisateur(String login, String motdepasse) {
179
 
1473 mathias 180
		// demande d'identification
549 gduche 181
		utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
939 benjamin 182
 
183
			public void surErreur(String message) {
184
				vue.setErreur("identificationRefus");
185
				vue.afficherErreur();
186
			}
187
 
549 gduche 188
			@Override
939 benjamin 189
			public void surRetour(Utilisateur objetRetour) {
948 aurelien 190
				utilisateur = objetRetour;
946 benjamin 191
				CacheClient.getInstance().setUtilisateur(utilisateur);
597 aurelien 192
				if (utilisateur.estIdentifie()) {
1473 mathias 193
					// posage de cookies
194
					Date dateExpiration = new Date();
195
					long dureeEnMillisecondes = 1000 * 60 * 60 * 24 * 100; // 100 jours
196
					dateExpiration.setTime(dateExpiration.getTime() + dureeEnMillisecondes);
197
					Cookies.setCookie("del_id", utilisateur.getId(), dateExpiration);
198
					Cookies.setCookie("del_prenom", utilisateur.getPrenom(), dateExpiration);
199
					Cookies.setCookie("del_nom", utilisateur.getNom(), dateExpiration);
200
					Cookies.setCookie("del_courriel", utilisateur.getCourriel(), dateExpiration);
549 gduche 201
					vue.masquerErreur();
202
					rafraichir();
203
					vue.viderFormulaire();
939 benjamin 204
				}
549 gduche 205
			}
206
		});
207
	}
939 benjamin 208
 
1473 mathias 209
	// zigouille les cookies et invalide le cache
804 gduche 210
	public void deconnecterUtilisateur() {
939 benjamin 211
 
1473 mathias 212
		Cookies.removeCookie("del_id");
213
		Cookies.removeCookie("del_prenom");
214
		Cookies.removeCookie("del_nom");
215
		Cookies.removeCookie("del_courriel");
939 benjamin 216
 
1473 mathias 217
		utilisateur = null;
218
		CacheClient.getInstance().setUtilisateur(utilisateur);
219
		rafraichir();
549 gduche 220
	}
939 benjamin 221
 
536 gduche 222
	public void go(HasWidgets composite) {
223
		vue.ajouterVue(composite);
224
	}
225
}