Subversion Repositories eFlore/Applications.del

Rev

Rev 1474 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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