Subversion Repositories eFlore/Applications.coel

Rev

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