Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 277 Rev 346
1
package org.tela_botanica.client.modeles;
1
package org.tela_botanica.client.modeles;
2
 
2
 
3
import org.tela_botanica.client.RegistreId;
3
import org.tela_botanica.client.RegistreId;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
5
import org.tela_botanica.client.util.UtilDAO;
5
 
6
 
-
 
7
import com.extjs.gxt.ui.client.Registry;
6
import com.extjs.gxt.ui.client.Registry;
8
import com.extjs.gxt.ui.client.widget.Info;
7
import com.google.gwt.core.client.GWT;
9
import com.google.gwt.core.client.GWT;
8
import com.google.gwt.http.client.Request;
10
import com.google.gwt.http.client.Request;
9
import com.google.gwt.http.client.RequestBuilder;
11
import com.google.gwt.http.client.RequestBuilder;
10
import com.google.gwt.http.client.RequestCallback;
12
import com.google.gwt.http.client.RequestCallback;
11
import com.google.gwt.http.client.RequestException;
13
import com.google.gwt.http.client.RequestException;
12
import com.google.gwt.http.client.Response;
14
import com.google.gwt.http.client.Response;
13
import com.google.gwt.json.client.JSONArray;
15
import com.google.gwt.json.client.JSONArray;
14
import com.google.gwt.json.client.JSONBoolean;
16
import com.google.gwt.json.client.JSONBoolean;
15
import com.google.gwt.json.client.JSONParser;
17
import com.google.gwt.json.client.JSONParser;
16
import com.google.gwt.json.client.JSONString;
18
import com.google.gwt.json.client.JSONString;
17
import com.google.gwt.json.client.JSONValue;
19
import com.google.gwt.json.client.JSONValue;
18
 
20
 
19
/**
21
/**
20
 * Modele DAO, specifique, permettant la validation, l'acces aux donnees distantes et la présentation des donnees en retour
22
 * Modele DAO, specifique, permettant la validation, l'acces aux donnees distantes et la présentation des donnees en retour
21
 * 
23
 * 
22
 */
24
 */
23
public class UtilisateurAsyncDao {
25
public class UtilisateurAsyncDao {
24
	private static final String SERVICE_NOM = "CoelUtilisateur";
26
	private static final String SERVICE_NOM = "CoelUtilisateur";
25
	
27
	
26
	private Utilisateur utilisateur = null;
28
	private Utilisateur utilisateur = null;
27
	private String urlServiceBase = null;
29
	private String urlServiceBase = null;
28
	private Rafraichissable rafraichissement = null;
30
	private Rafraichissable rafraichissement = null;
29
	
31
	
30
	/**
32
	/**
31
	 * Constructeur
33
	 * Constructeur
32
	 * @param retour : méthode appellée en retour d'appel. 
34
	 * @param retour : méthode appellée en retour d'appel. 
33
	 */
35
	 */
34
	public UtilisateurAsyncDao(Rafraichissable r) {
36
	public UtilisateurAsyncDao(Rafraichissable r) {
35
		rafraichissement = r;
37
		rafraichissement = r;
36
		urlServiceBase = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
38
		urlServiceBase = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
37
		utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
39
		utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
38
	}
40
	}
39
		
41
		
40
	/**
42
	/**
41
	 * Méthode de classe d'appel du service des gestion d'identification. 
43
	 * Méthode de classe d'appel du service des gestion d'identification. 
42
	 */
44
	 */
43
	public void getEtatUtilisateur() {
45
	public void getEtatUtilisateur() {
44
		// Recherche identifiant utilisateur identifie
46
		// Recherche identifiant utilisateur identifie
45
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlServiceBase+SERVICE_NOM+"/") ;
47
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlServiceBase+SERVICE_NOM+"/") ;
46
		try {
48
		try {
47
			rb.sendRequest(null, new RequestCallback() {
49
			rb.sendRequest(null, new RequestCallback() {
48
 
50
 
49
				public void onError(Request request, Throwable exception) {
51
				public void onError(Request request, Throwable exception) {
50
					// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP
52
					// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP
51
				}
53
				}
52
 
54
 
53
				public void onResponseReceived(Request request, Response response) {
55
				public void onResponseReceived(Request request, Response response) {
54
					JSONValue jsonValue = JSONParser.parse(response.getText());
56
					JSONValue jsonValue = JSONParser.parse(response.getText());
55
					JSONArray jsonArray;
57
					JSONArray jsonArray;
56
					if ((jsonArray = jsonValue.isArray()) != null) {
58
					if ((jsonArray = jsonValue.isArray()) != null) {
57
						// Identifiant utilisateur ou identifiant de session si non identifié
59
						// Identifiant utilisateur ou identifiant de session si non identifié
58
						String login = ((JSONString) jsonArray.get(0)).stringValue();
60
						String login = ((JSONString) jsonArray.get(0)).stringValue();
59
						// Drapeau leve si utilisateur deja identifié
61
						// Drapeau leve si utilisateur deja identifié
60
						boolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue();
62
						boolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue();
61
						utilisateur.setIdentifie(identifie);
63
						utilisateur.setIdentifie(identifie);
62
						utilisateur.setLogin(login);
64
						utilisateur.setLogin(login);
63
						rafraichissement.rafraichir(utilisateur);
65
						rafraichissement.rafraichir(utilisateur);
64
					}			
66
					}			
65
				}			
67
				}			
66
			}) ;
68
			}) ;
67
		} catch (RequestException e) {
69
		} catch (RequestException e) {
68
			e.printStackTrace();
70
			e.printStackTrace();
69
		}
71
		}
70
	}
72
	}
71
 
73
 
72
	/**
74
	/**
73
	 * Méthode déconnectant un utilisateur de l'application. 
75
	 * Méthode déconnectant un utilisateur de l'application. 
74
	 * @param identifiant de l'utilisateur à déconnecter.
76
	 * @param identifiant de l'utilisateur à déconnecter.
75
	 */
77
	 */
76
	public void deconnecterUtilisateur() {
78
	public void deconnecterUtilisateur() {
77
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlServiceBase+SERVICE_NOM+"/"+utilisateur.getId()) ;
79
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlServiceBase+SERVICE_NOM+"/"+utilisateur.getId()) ;
78
		try {
80
		try {
79
			rb.sendRequest(null, new RequestCallback() {
81
			rb.sendRequest(null, new RequestCallback() {
80
 
82
 
81
				public void onError(Request request, Throwable exception) {
83
				public void onError(Request request, Throwable exception) {
82
					// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP
84
					// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP
83
				}
85
				}
84
 
86
 
85
				public void onResponseReceived(Request request, Response response) {
87
				public void onResponseReceived(Request request, Response response) {
86
					JSONValue jsonValue = JSONParser.parse(response.getText());
88
					JSONValue jsonValue = JSONParser.parse(response.getText());
87
					JSONArray jsonArray;
89
					JSONArray jsonArray;
88
					if ((jsonArray = jsonValue.isArray()) != null) {
90
					if ((jsonArray = jsonValue.isArray()) != null) {
89
						// Identifiant utilisateur ou identifiant de session si non identifié
91
						// Identifiant utilisateur ou identifiant de session si non identifié
90
						String id = ((JSONString) jsonArray.get(0)).stringValue();
92
						String id = ((JSONString) jsonArray.get(0)).stringValue();
91
						// Drapeau levé si l'utilisateur est déjà identifié
93
						// Drapeau levé si l'utilisateur est déjà identifié
92
						boolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue();
94
						boolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue();
93
						
95
						
94
						// Nous réinitialisons l'utilisateur
96
						// Nous réinitialisons l'utilisateur
95
						utilisateur = new Utilisateur(id, identifie);
97
						utilisateur = new Utilisateur(id, identifie);
96
						
98
						
97
						GWT.log(utilisateur.toString(), null);
99
						GWT.log(utilisateur.toString(), null);
98
						rafraichissement.rafraichir(utilisateur);
100
						rafraichissement.rafraichir(utilisateur);
99
					}				
101
					}				
100
				}			
102
				}			
101
			}) ;
103
			}) ;
102
		} catch (RequestException e) {
104
		} catch (RequestException e) {
103
			e.printStackTrace();
105
			e.printStackTrace();
104
		}
106
		}
105
	}
107
	}
106
	
108
	
107
	/**
109
	/**
108
	 * Méthode déconnectant un utilisateur de l'application. 
110
	 * Méthode déconnectant un utilisateur de l'application. 
109
	 * @param Utilisateur l'utilisateur courant.
111
	 * @param Utilisateur l'utilisateur courant.
110
	 */
112
	 */
111
	public void connecterUtilisateur () {
113
	public void connecterUtilisateur () {
112
		String login = utilisateur.getLogin();
114
		String[] parametres = new String[2];
113
		String password = utilisateur.getMotDePasse();
115
		parametres[0] = utilisateur.getLogin();
114
		String url = urlServiceBase+SERVICE_NOM+"/";
116
		parametres[1] = utilisateur.getMotDePasse();
115
		
-
 
116
		if (login != null & password != null) {
-
 
117
			url = url+login+"/"+password;
-
 
118
		}
-
 
119
		
117
		
120
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url);
118
		RequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
121
		try {
119
		try {
122
			rb.sendRequest(null, new RequestCallback() {
120
			rb.sendRequest(null, new RequestCallback() {
123
 
121
 
124
				public void onError(Request request, Throwable exception) {
122
				public void onError(Request request, Throwable exception) {
-
 
123
					GWT.log("Erreur à l'exécution du service " + SERVICE_NOM + " (selection)", exception);
125
					// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP
124
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
126
				}
125
				}
127
 
126
 
128
				public void onResponseReceived(Request request, Response response) {
127
				public void onResponseReceived(Request request, Response response) {
129
					JSONValue jsonValue = JSONParser.parse(response.getText());
128
					JSONValue jsonValue = JSONParser.parse(response.getText());
130
					JSONArray jsonArray;
129
					JSONArray jsonArray;
131
					if ((jsonArray = jsonValue.isArray()) != null) {
130
					if ((jsonArray = jsonValue.isArray()) != null) {
132
						// Identifiant de l'utilisateur ou identifiant de session si non identifié
-
 
133
						utilisateur.setId(((JSONString) jsonArray.get(0)).stringValue());
-
 
134
						
-
 
135
						// Drapeau levé si l'utilisateur est déjà identifié
-
 
-
 
131
						
-
 
132
						
-
 
133
						
-
 
134
						if (jsonArray.size() > 0)	{
-
 
135
							
-
 
136
							// Identifiant de l'utilisateur ou identifiant de session si non identifié
-
 
137
							utilisateur.setId(((JSONString) jsonArray.get(0)).stringValue());
-
 
138
						
-
 
139
							// Drapeau levé si l'utilisateur est déjà identifié
136
						utilisateur.setIdentifie(((JSONBoolean) jsonArray.get(1)).booleanValue());
140
							utilisateur.setIdentifie(((JSONBoolean) jsonArray.get(1)).booleanValue());
137
						
141
						
138
						// Plus de deux valeurs, l'utilisateur est identifié nous récupérons des données supplémentaires
142
							// Plus de deux valeurs, l'utilisateur est identifié nous récupérons des données supplémentaires
139
						if (jsonArray.size() > 2) {
143
							if (jsonArray.size() > 2) {
140
							// Nom complet de l'utilisateur
144
								// Nom complet de l'utilisateur
141
							if (jsonArray.get(2).isString() != null) {
145
								if (jsonArray.get(2).isString() != null) {
142
								utilisateur.setNomComplet(((JSONString) jsonArray.get(2)).stringValue());
146
									utilisateur.setNomComplet(((JSONString) jsonArray.get(2)).stringValue());
143
							}
147
								}
144
							// Prénom de l'utilisateur
148
								// Prénom de l'utilisateur
145
							if (jsonArray.get(3).isString() != null) {
149
								if (jsonArray.get(3).isString() != null) {
146
								utilisateur.setPrenom(((JSONString) jsonArray.get(3)).stringValue());
150
									utilisateur.setPrenom(((JSONString) jsonArray.get(3)).stringValue());
147
							}
151
								}
148
							// Nom de l'utilisateur
152
								// Nom de l'utilisateur
-
 
153
								if (jsonArray.get(4).isString() != null) {
-
 
154
									utilisateur.setNom(((JSONString) jsonArray.get(4)).stringValue());
149
							if (jsonArray.get(4).isString() != null) {
155
								}
150
								utilisateur.setNom(((JSONString) jsonArray.get(4)).stringValue());
156
								GWT.log(utilisateur.toString(), null);
-
 
157
							}
-
 
158
							rafraichissement.rafraichir(utilisateur);
151
							}
159
						}	else	{
152
							GWT.log(utilisateur.toString(), null);
-
 
153
						}
160
							Info.display("Erreur d'identification", "L'identification a échouée");							
154
						rafraichissement.rafraichir(utilisateur);
161
						}
155
					}				
162
					}				
156
				}
163
				}
157
			}) ;
164
			}) ;
158
		} catch (RequestException e) {
165
		} catch (RequestException e) {
159
			e.printStackTrace();
166
			e.printStackTrace();
160
		}
167
		}
161
	}
168
	}
162
}
169
}