Subversion Repositories eFlore/Applications.cel

Rev

Rev 2806 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2806 Rev 2808
1
package org.tela_botanica.client.modeles.dao;
1
package org.tela_botanica.client.modeles.dao;
2
 
2
 
3
/**
3
/**
4
 * Modele DAO, specifique, permettant la validation, l'acces aux donnees distantes et la présentation des donnees en retour
4
 * Modele DAO, specifique, permettant la validation, l'acces aux donnees distantes et la présentation des donnees en retour
5
 * 
5
 * 
6
 */
6
 */
7
 
7
 
8
import org.tela_botanica.client.CarnetEnLigneModele;
8
import org.tela_botanica.client.CarnetEnLigneModele;
9
import org.tela_botanica.client.i18n.Msg;
9
import org.tela_botanica.client.i18n.Msg;
10
import org.tela_botanica.client.interfaces.Rafraichissable;
10
import org.tela_botanica.client.interfaces.Rafraichissable;
11
import org.tela_botanica.client.modeles.objets.Configuration;
11
import org.tela_botanica.client.modeles.objets.Configuration;
12
import org.tela_botanica.client.modeles.objets.Utilisateur;
12
import org.tela_botanica.client.modeles.objets.Utilisateur;
13
 
13
 
14
import com.google.gwt.http.client.Request;
14
import com.google.gwt.http.client.Request;
15
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
15
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
16
import org.tela_botanica.client.util.Util;
16
import org.tela_botanica.client.util.Util;
17
 
17
 
18
import com.google.gwt.http.client.RequestCallback;
18
import com.google.gwt.http.client.RequestCallback;
19
import com.google.gwt.http.client.RequestException;
19
import com.google.gwt.http.client.RequestException;
20
import com.google.gwt.http.client.Response;
20
import com.google.gwt.http.client.Response;
21
import com.google.gwt.http.client.URL;
21
import com.google.gwt.http.client.URL;
22
import com.google.gwt.json.client.JSONObject;
22
import com.google.gwt.json.client.JSONObject;
23
import com.google.gwt.json.client.JSONParser;
23
import com.google.gwt.json.client.JSONParser;
24
import com.google.gwt.json.client.JSONString;
24
import com.google.gwt.json.client.JSONString;
25
import com.google.gwt.json.client.JSONValue;
25
import com.google.gwt.json.client.JSONValue;
26
import com.google.gwt.user.client.Timer;
26
import com.google.gwt.user.client.Timer;
27
import com.google.gwt.user.client.Window;
27
import com.google.gwt.user.client.Window;
28
 
28
 
29
public class UtilisateurAsynchroneDAO {
29
public class UtilisateurAsynchroneDAO {
30
 
30
 
31
	/**
31
	/**
32
	 * Le modèle associé au DAO
32
	 * Le modèle associé au DAO
33
	 */
33
	 */
34
	private CarnetEnLigneModele carnetEnLigneModele = null ;
34
	private CarnetEnLigneModele carnetEnLigneModele = null ;
35
	private Timer rafraichisseurJeton;
35
	private Timer rafraichisseurJeton;
36
	
36
	
37
	/**
37
	/**
38
	 * Constructeur 
38
	 * Constructeur 
39
	 */
39
	 */
40
	
40
	
41
	public UtilisateurAsynchroneDAO(CarnetEnLigneModele carnetEnLigneModele) {		
41
	public UtilisateurAsynchroneDAO(CarnetEnLigneModele carnetEnLigneModele) {		
42
		this.carnetEnLigneModele=carnetEnLigneModele;
42
		this.carnetEnLigneModele=carnetEnLigneModele;
43
	}
43
	}
44
	/**
44
	/**
45
	 * Methode de classe d'appel du service gestion identification 
45
	 * Methode de classe d'appel du service gestion identification 
46
	 * @param baseURL : URL du service
46
	 * @param baseURL : URL du service
47
	 * @param retour : methode appelle en retour d'appel
47
	 * @param retour : methode appelle en retour d'appel
48
	 */
48
	 */
49
	
49
	
50
	public void getEtatUtilisateur(final Rafraichissable r) {		
50
	public void getEtatUtilisateur(final Rafraichissable r) {		
51
		String url = Configuration.getIdentificationBaseUrl()+"/identite/"; 			
51
		String url = Configuration.getIdentificationBaseUrl()+"/identite/"; 			
52
		// Recherche identifiant utilisateur identifie
52
		// Recherche identifiant utilisateur identifie
53
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
53
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url, false) ;
54
		
54
		
55
		try {
55
		try {
56
			
56
			
57
			rb.sendRequest(null, new RequestCallback() {
57
			rb.sendRequest(null, new RequestCallback() {
58
 
58
 
59
				@Override
59
				@Override
60
				public void onError(Request request, Throwable exception) {
60
				public void onError(Request request, Throwable exception) {
61
				
61
				
62
				}
62
				}
63
 
63
 
64
				@Override
64
				@Override
65
				public void onResponseReceived(Request request,
65
				public void onResponseReceived(Request request,
66
						Response response) {
66
						Response response) {
67
					if(response.getText().isEmpty()) {
67
					if(response.getText().isEmpty()) {
68
						Window.alert(Msg.get("erreur-contacter-serveur"));
68
						Window.alert(Msg.get("erreur-contacter-serveur"));
69
					} else {
69
					} else {
70
										
70
										
71
						JSONValue jsonValue = JSONParser.parse(response.getText());
71
						JSONValue jsonValue = JSONParser.parse(response.getText());
72
						JSONObject objetJsonUtilisateur = jsonValue.isObject();
72
						JSONObject objetJsonUtilisateur = jsonValue.isObject();
73
						
73
						
74
						if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
74
						if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
75
							
75
							
76
							// Drapeau leve si utilisateur deja identifie
76
							// Drapeau leve si utilisateur deja identifie
77
							boolean identifie = objetJsonUtilisateur.get("session").isBoolean().booleanValue();
77
							boolean identifie = objetJsonUtilisateur.get("session").isBoolean().booleanValue();
78
							if(identifie) {
78
							if(identifie) {
79
								if(objetJsonUtilisateur.get("token").isString() != null) {
79
								if(objetJsonUtilisateur.get("token").isString() != null) {
80
									String token = ((JSONString) objetJsonUtilisateur.get("token")).stringValue();									
80
									String token = ((JSONString) objetJsonUtilisateur.get("token")).stringValue();									
81
									Utilisateur.setJeton(token);
81
									Utilisateur.setJeton(token);
82
									int dureeJeton = (int)objetJsonUtilisateur.get("duration").isNumber().doubleValue();
82
									int dureeJeton = (int)objetJsonUtilisateur.get("duration").isNumber().doubleValue();
83
									gererTimerRafraichissementJeton(dureeJeton, r);
83
									gererTimerRafraichissementJeton(dureeJeton, r);
84
								}
84
								}
85
							}
85
							}
86
						}
86
						}
87
						// dans tous les cas même si l'on est pas identifié par le sso, ceci permet d'obtenir
87
						// dans tous les cas même si l'on est pas identifié par le sso, ceci permet d'obtenir
88
						// une session temporaire
88
						// une session temporaire
89
						obtenirInfosComplementairesUtilisateur(r);
89
						obtenirInfosComplementairesUtilisateur(r);
90
					}
90
					}
91
				}			
91
				}			
92
			}) ;
92
			}) ;
93
					
93
					
94
		} catch (RequestException e) {
94
		} catch (RequestException e) {
95
					
95
					
96
		}
96
		}
97
	}
97
	}
98
	
98
	
99
	public void obtenirInfosComplementairesUtilisateur(final Rafraichissable r) {
99
	public void obtenirInfosComplementairesUtilisateur(final Rafraichissable r) {
100
		
100
		
101
		String url = Configuration.getServiceBaseUrl()+"/User/"; 	
101
		String url = Configuration.getServiceBaseUrl()+"/User/"; 	
102
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;	
102
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;	
103
		try {	
103
		try {	
104
			rb.sendRequest(null, new RequestCallback() {
104
			rb.sendRequest(null, new RequestCallback() {
105
 
105
 
106
				@Override
106
				@Override
107
				public void onError(Request request, Throwable exception) {
107
				public void onError(Request request, Throwable exception) {
108
				
108
				
109
				}
109
				}
110
 
110
 
111
				@Override
111
				@Override
112
				public void onResponseReceived(Request request,
112
				public void onResponseReceived(Request request,
113
						Response response) {
113
						Response response) {
114
					
114
					
115
					if(response.getText().isEmpty()) {
115
					if(response.getText().isEmpty()) {
116
						Window.alert(Msg.get("erreur-contacter-serveur"));
116
						Window.alert(Msg.get("erreur-contacter-serveur"));
117
					} else {
117
					} else {
118
						
118
						
119
						JSONValue jsonValue = JSONParser.parse(response.getText());
119
						JSONValue jsonValue = JSONParser.parse(response.getText());
120
						JSONObject objetJsonUtilisateur;
120
						JSONObject objetJsonUtilisateur;
121
						
121
						
122
						if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
122
						if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
123
								Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
123
								Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
124
								if(r != null) { 
124
								if(r != null) { 
125
									r.rafraichir(utilisateur,true);
125
									r.rafraichir(utilisateur,true);
126
								}
126
								}
127
						} else {
127
						} else {
128
							
128
							
129
						}
129
						}
130
					}
130
					}
131
				}			
131
				}			
132
			}) ;			
132
			}) ;			
133
		} catch (RequestException e) {
133
		} catch (RequestException e) {
134
					
134
					
135
		}
135
		}
136
	}
136
	}
137
 
137
 
138
	public void deconnecterUtilisateur(final Rafraichissable r, String user) {
138
	public void deconnecterUtilisateur(final Rafraichissable r, String user) {
139
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getIdentificationBaseUrl()+ "/deconnexion/") ;
139
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getIdentificationBaseUrl()+ "/deconnexion/") ;
140
		
140
		
141
		try {
141
		try {
142
			
142
			
143
			rb.sendRequest(null, new RequestCallback() {
143
			rb.sendRequest(null, new RequestCallback() {
144
 
144
 
145
				@Override
145
				@Override
146
				public void onError(Request request, Throwable exception) {
146
				public void onError(Request request, Throwable exception) {
147
					// TODO Auto-generated method stub
147
					// TODO Auto-generated method stub
148
					
148
					
149
				}
149
				}
150
 
150
 
151
				@Override
151
				@Override
152
				public void onResponseReceived(Request request,
152
				public void onResponseReceived(Request request,
153
						Response response) {	
153
						Response response) {
154
					Utilisateur.setJeton("");
154
					Utilisateur.setJeton("");
155
					gererTimerRafraichissementJeton(0, r);
155
					gererTimerRafraichissementJeton(0, r);
156
					obtenirInfosComplementairesUtilisateur(r);
156
					obtenirInfosComplementairesUtilisateur(r);
157
				}			
157
				}			
158
			}) ;
158
			}) ;
159
			
159
			
160
		} catch (RequestException e) {
160
		} catch (RequestException e) {
161
					
161
					
162
		}
162
		}
163
	}
163
	}
164
 
164
 
165
	public void connecterUtilisateur (final Rafraichissable r, String login, String password) {
165
	public void connecterUtilisateur (final Rafraichissable r, String login, String password) {
166
 
166
 
167
		//connexion?login=aurelien@tela-botanica.org&password=Canard123$
167
		//connexion?login=aurelien@tela-botanica.org&password=Canard123$
168
		if(!login.isEmpty() && !password.isEmpty()) {
168
		if(!login.isEmpty() && !password.isEmpty()) {
169
			String url = Configuration.getIdentificationBaseUrl() + "/connexion?login=" + URL.encodeComponent(login) + "&password=" + URL.encodeComponent(password);
169
			String url = Configuration.getIdentificationBaseUrl() + "/connexion?login=" + URL.encodeComponent(login) + "&password=" + URL.encodeComponent(password);
170
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
170
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
171
			
171
			
172
			try {
172
			try {
173
				
173
				
174
				rb.sendRequest(null, new RequestCallback() {
174
				rb.sendRequest(null, new RequestCallback() {
175
	
175
	
176
					@Override
176
					@Override
177
					public void onError(Request request, Throwable exception) {
177
					public void onError(Request request, Throwable exception) {
178
						// TODO Auto-generated method stub
178
						// TODO Auto-generated method stub
179
						
179
						
180
					}
180
					}
181
	
181
	
182
					@Override
182
					@Override
183
					public void onResponseReceived(Request request,
183
					public void onResponseReceived(Request request,
184
							Response response) {
184
							Response response) {
185
												
185
												
186
						JSONValue jsonValue = JSONParser.parse(response.getText());
186
						JSONValue jsonValue = JSONParser.parse(response.getText());
187
						JSONObject objetJsonUtilisateur = jsonValue.isObject();
187
						JSONObject objetJsonUtilisateur = jsonValue.isObject();
188
						
188
						
189
						if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
189
						if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
190
							if(objetJsonUtilisateur.get("token").isString() != null) {
190
							if(objetJsonUtilisateur.get("token").isString() != null) {
191
								String token = ((JSONString) objetJsonUtilisateur.get("token")).stringValue();									
191
								String token = ((JSONString) objetJsonUtilisateur.get("token")).stringValue();									
192
								Utilisateur.setJeton(token);
192
								Utilisateur.setJeton(token);
193
								int dureeJeton = (int)objetJsonUtilisateur.get("duration").isNumber().doubleValue();
193
								int dureeJeton = (int)objetJsonUtilisateur.get("duration").isNumber().doubleValue();
194
								gererTimerRafraichissementJeton(dureeJeton, r);
194
								gererTimerRafraichissementJeton(dureeJeton, r);
195
							}
195
							}
196
							obtenirInfosComplementairesUtilisateur(r);
196
							obtenirInfosComplementairesUtilisateur(r);
197
						}		
197
						}		
198
					}	
198
					}	
199
				}) ;
199
				}) ;
200
				
200
				
201
			} catch (RequestException e) {
201
			} catch (RequestException e) {
202
				
202
				
203
				e.printStackTrace() ;
203
				e.printStackTrace() ;
204
			}
204
			}
205
		}
205
		}
206
	}
206
	}
207
	
207
	
208
	private void gererTimerRafraichissementJeton(int duree, final Rafraichissable r) {
208
	private void gererTimerRafraichissementJeton(int duree, final Rafraichissable r) {
209
		// Rafraîchissement automatique du jeton - s'annule lorsque le jeton devient nul
209
		// Rafraîchissement automatique du jeton - s'annule lorsque le jeton devient nul
210
		if (!Utilisateur.getJeton().isEmpty() && duree > 0) {
210
		if (!Utilisateur.getJeton().isEmpty() && duree > 0) {
211
			
211
			
212
			if (rafraichisseurJeton == null) { // on sait jamais
212
			if (rafraichisseurJeton == null) { // on sait jamais
213
				// 3/4 de la durée de vie du jeton, en millisecondes (ça laisse de la marge)
213
				// 3/4 de la durée de vie du jeton, en millisecondes (ça laisse de la marge)
214
				int delaiRepetition = (duree * 1000) * 3 / 4;
214
				int delaiRepetition = (duree * 1000) * 3 / 4;
215
				rafraichisseurJeton = new Timer() {
215
				rafraichisseurJeton = new Timer() {
216
					@Override
216
					@Override
217
					public void run() {
217
					public void run() {
218
						// Appel de l'annuaire pour rafraîchir le jeton (cb nul pour l'instant)
218
						// Appel de l'annuaire pour rafraîchir le jeton (cb nul pour l'instant)
219
						// @TODO gérer le possible changement de profil / coordonnées de l'utilisateur
219
						// @TODO gérer le possible changement de profil / coordonnées de l'utilisateur
220
						// en cours de connexion
220
						// en cours de connexion
221
						getEtatUtilisateur(null);
221
						getEtatUtilisateur(r);
222
					}
222
					}
223
				};
223
				};
224
				rafraichisseurJeton.scheduleRepeating(delaiRepetition);
224
				rafraichisseurJeton.scheduleRepeating(delaiRepetition);
225
			}
225
			}
226
		} else {
226
		} else {
227
			if (rafraichisseurJeton != null) { // on sait jamais non plus
227
			if (rafraichisseurJeton != null) { // on sait jamais non plus
228
				rafraichisseurJeton.cancel();
228
				rafraichisseurJeton.cancel();
229
				rafraichisseurJeton = null;
229
				rafraichisseurJeton = null;
230
			}
230
			}
231
		}
231
		}
232
	}
232
	}
233
 
233
 
234
	public void accepterLicence(String identifiantUtilisateur) {
234
	public void accepterLicence(String identifiantUtilisateur) {
235
		
235
		
236
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl() + "/LicenceUtilisateur/"+identifiantUtilisateur) ;
236
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl() + "/LicenceUtilisateur/"+identifiantUtilisateur) ;
237
		
237
		
238
		try {
238
		try {
239
			
239
			
240
			String postData = "licence=1";
240
			String postData = "licence=1";
241
			
241
			
242
			rb.sendRequest(postData, new RequestCallback() {
242
			rb.sendRequest(postData, new RequestCallback() {
243
 
243
 
244
				@Override
244
				@Override
245
				public void onError(Request request, Throwable exception) {
245
				public void onError(Request request, Throwable exception) {
246
					// TODO Auto-generated method stub
246
					// TODO Auto-generated method stub
247
					
247
					
248
				}
248
				}
249
 
249
 
250
				@Override
250
				@Override
251
				public void onResponseReceived(Request request,
251
				public void onResponseReceived(Request request,
252
						Response response) {
252
						Response response) {
253
			
253
			
254
				}	
254
				}	
255
			}) ;
255
			}) ;
256
			
256
			
257
		} catch (RequestException e) {
257
		} catch (RequestException e) {
258
			
258
			
259
			e.printStackTrace() ;
259
			e.printStackTrace() ;
260
		}		
260
		}		
261
	}
261
	}
262
}
262
}