Subversion Repositories eFlore/Applications.del

Rev

Rev 1314 | Rev 1474 | 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
		Window.alert("Id: " + id + ", prenom: " + prenom + ", nom: " + nom + ", courriel: " + courriel);
88
 
89
		if (id != null && prenom != null && nom != null && courriel != null) {
90
			Window.alert("recréation");
91
			utilisateur = new Utilisateur(id, prenom, nom, courriel);
92
		}
93
 
94
		CacheClient.getInstance().setUtilisateur(utilisateur);
95
		rafraichir();
96
 
97
		/*utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
98
 
536 gduche 99
			@Override
939 benjamin 100
			public void surRetour(Utilisateur objetRetour) {
948 aurelien 101
				utilisateur = objetRetour;
536 gduche 102
				CacheClient.getInstance().setUtilisateur(utilisateur);
103
				rafraichir();
104
			}
1473 mathias 105
		});*/
536 gduche 106
		gererEvenements();
107
	}
939 benjamin 108
 
536 gduche 109
	public void rafraichir() {
939 benjamin 110
		utilisateur = CacheClient.getInstance().getUtilisateur();
536 gduche 111
		vue.basculerModeConnecte(this.utilisateur);
1314 aurelien 112
		BusEvenementiel.getInstance().fireEvent(new EvenementChangementEtatUtilisateur(utilisateur));
536 gduche 113
	}
939 benjamin 114
 
536 gduche 115
	public void gererEvenements() {
116
		vue.getBoutonOK().addClickHandler(new ClickHandler() {
117
			@Override
118
			public void onClick(ClickEvent event) {
597 aurelien 119
				surTentativeLogin();
536 gduche 120
			}
121
		});
939 benjamin 122
 
536 gduche 123
		vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
124
			@Override
125
			public void onClick(ClickEvent event) {
939 benjamin 126
				deconnecterUtilisateur();
536 gduche 127
			}
128
		});
939 benjamin 129
 
597 aurelien 130
		vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
131
		vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
1175 aurelien 132
 
133
		vue.getZonePreferencesClickHandler().addClickHandler(new ClickHandler() {
134
			@Override
135
			public void onClick(ClickEvent event) {
136
				if(utilisateur.estIdentifie()) {
137
					PreferencesPresenteur preferencesPresenteur = new PreferencesPresenteur(new PreferencesVue(), new PreferencesServiceConcret());
138
					fenetreModalePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
139
					fenetreModalePresenteur.ouvrirFenetreModale(preferencesPresenteur);
140
				}
141
			}
142
		});
143
 
144
		BusEvenementiel.getInstance().addHandler(EvenementChangementPreferences.TYPE, new GestionnaireEvenementChangementPreferences() {
145
			@Override
146
			public void onChangementPreferences(EvenementChangementPreferences event) {
147
				if(fenetreModalePresenteur != null && fenetreModalePresenteur.fenetreModaleEstOuverte()) {
148
					fenetreModalePresenteur.fermerFenetreModale();
149
				}
150
			}
151
		});
536 gduche 152
	}
939 benjamin 153
 
597 aurelien 154
	private void surTentativeLogin() {
939 benjamin 155
		String login = vue.getLogin().getText();
597 aurelien 156
		String motdepasse = vue.getMotdepasse().getText();
939 benjamin 157
 
597 aurelien 158
		if (login.equals("") || motdepasse.equals("")) {
159
			gererErreur("saisirLogin");
160
		} else {
161
			connecterUtilisateur(login, motdepasse);
162
		}
163
	}
939 benjamin 164
 
597 aurelien 165
	public KeyPressHandler creerGestionnaireEvenementToucheEntree() {
166
		return new KeyPressHandler() {
167
			public void onKeyPress(KeyPressEvent event) {
168
				if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
169
					surTentativeLogin();
170
				}
171
			}
172
		};
173
	}
939 benjamin 174
 
549 gduche 175
	public void gererErreur(String erreur) {
176
		vue.setErreur(erreur);
177
		vue.afficherErreur();
178
	}
939 benjamin 179
 
1473 mathias 180
	// appelle le 3615 DEL pour s'identifier
549 gduche 181
	public void connecterUtilisateur(String login, String motdepasse) {
182
 
1473 mathias 183
		// demande d'identification
549 gduche 184
		utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
939 benjamin 185
 
186
			public void surErreur(String message) {
187
				vue.setErreur("identificationRefus");
188
				vue.afficherErreur();
189
			}
190
 
549 gduche 191
			@Override
939 benjamin 192
			public void surRetour(Utilisateur objetRetour) {
948 aurelien 193
				utilisateur = objetRetour;
946 benjamin 194
				CacheClient.getInstance().setUtilisateur(utilisateur);
597 aurelien 195
				if (utilisateur.estIdentifie()) {
1473 mathias 196
					// posage de cookies
197
					Date dateExpiration = new Date();
198
					long dureeEnMillisecondes = 1000 * 60 * 60 * 24 * 100; // 100 jours
199
					dateExpiration.setTime(dateExpiration.getTime() + dureeEnMillisecondes);
200
					Cookies.setCookie("del_id", utilisateur.getId(), dateExpiration);
201
					Cookies.setCookie("del_prenom", utilisateur.getPrenom(), dateExpiration);
202
					Cookies.setCookie("del_nom", utilisateur.getNom(), dateExpiration);
203
					Cookies.setCookie("del_courriel", utilisateur.getCourriel(), dateExpiration);
549 gduche 204
					vue.masquerErreur();
205
					rafraichir();
206
					vue.viderFormulaire();
939 benjamin 207
				}
549 gduche 208
			}
209
		});
210
	}
939 benjamin 211
 
1473 mathias 212
	// zigouille les cookies et invalide le cache
804 gduche 213
	public void deconnecterUtilisateur() {
939 benjamin 214
 
1473 mathias 215
		Cookies.removeCookie("del_id");
216
		Cookies.removeCookie("del_prenom");
217
		Cookies.removeCookie("del_nom");
218
		Cookies.removeCookie("del_courriel");
939 benjamin 219
 
1473 mathias 220
		utilisateur = null;
221
		CacheClient.getInstance().setUtilisateur(utilisateur);
222
		rafraichir();
549 gduche 223
	}
939 benjamin 224
 
536 gduche 225
	public void go(HasWidgets composite) {
226
		vue.ajouterVue(composite);
227
	}
228
}