Subversion Repositories eFlore/Applications.coel

Rev

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

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