Subversion Repositories eFlore/Applications.coel

Rev

Go to most recent revision | Details | 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;
12
import com.google.gwt.http.client.Request;
13
import com.google.gwt.http.client.RequestBuilder;
14
import com.google.gwt.http.client.RequestCallback;
15
import com.google.gwt.http.client.RequestException;
16
import com.google.gwt.http.client.Response;
17
import com.google.gwt.json.client.JSONArray;
18
import com.google.gwt.json.client.JSONBoolean;
19
import com.google.gwt.json.client.JSONParser;
20
import com.google.gwt.json.client.JSONString;
21
import com.google.gwt.json.client.JSONValue;
22
 
66 jpm 23
public class UtilisateurAsyncDAO {
64 jpm 24
 
65 jpm 25
	private Utilisateur utilisateur = null;
64 jpm 26
	private String urlServiceBase = null;
27
	private Rafraichissable rafraichissement = null;
28
 
29
	/**
30
	 * Constructeur
31
	 * @param retour : méthode appellée en retour d'appel.
32
	 */
66 jpm 33
	public UtilisateurAsyncDAO(Rafraichissable r) {
64 jpm 34
		rafraichissement = r;
35
		urlServiceBase = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
65 jpm 36
		utilisateur = (Utilisateur) Registry.get(RegistreId.UTILISATEUR);
64 jpm 37
	}
38
 
39
	/**
40
	 * Méthode de classe d'appel du service des gestion d'identification.
41
	 */
42
	public void getEtatUtilisateur() {
43
		// Recherche identifiant utilisateur identifie
44
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlServiceBase+"CoelUtilisateur/") ;
45
		try {
46
			rb.sendRequest(null, new RequestCallback() {
47
 
48
				public void onError(Request request, Throwable exception) {
49
					// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP
50
				}
51
 
52
				public void onResponseReceived(Request request, Response response) {
53
					JSONValue jsonValue = JSONParser.parse(response.getText());
54
					JSONArray jsonArray;
55
					if ((jsonArray = jsonValue.isArray()) != null) {
56
						// Identifiant utilisateur ou identifiant de session si non identifié
66 jpm 57
						String login = ((JSONString) jsonArray.get(0)).stringValue();
64 jpm 58
						// Drapeau leve si utilisateur deja identifié
59
						boolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue();
65 jpm 60
						utilisateur.setIdentifie(identifie);
66 jpm 61
						utilisateur.setLogin(login);
65 jpm 62
						rafraichissement.rafraichir(utilisateur);
64 jpm 63
					}
64
				}
65
			}) ;
66
		} catch (RequestException e) {
67
			e.printStackTrace();
68
		}
69
	}
70
 
71
	/**
72
	 * Méthode déconnectant un utilisateur de l'application.
73
	 * @param identifiant de l'utilisateur à déconnecter.
74
	 */
65 jpm 75
	public void deconnecterUtilisateur() {
66 jpm 76
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlServiceBase+"CoelUtilisateur/"+utilisateur.getLogin()) ;
64 jpm 77
		try {
78
			rb.sendRequest(null, new RequestCallback() {
79
 
80
				public void onError(Request request, Throwable exception) {
81
					// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP
82
				}
83
 
84
				public void onResponseReceived(Request request, Response response) {
85
					JSONValue jsonValue = JSONParser.parse(response.getText());
86
					JSONArray jsonArray;
87
					if ((jsonArray = jsonValue.isArray()) != null) {
88
						// Identifiant utilisateur ou identifiant de session si non identifié
66 jpm 89
						String login = ((JSONString) jsonArray.get(0)).stringValue();
64 jpm 90
						// Drapeau levé si l'utilisateur est déjà identifié
91
						boolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue();
65 jpm 92
						utilisateur.setIdentifie(identifie);
66 jpm 93
						utilisateur.setLogin(login);
65 jpm 94
						rafraichissement.rafraichir(utilisateur);
64 jpm 95
					}
96
				}
97
			}) ;
98
		} catch (RequestException e) {
99
			e.printStackTrace();
100
		}
101
	}
102
 
103
	/**
104
	 * Méthode déconnectant un utilisateur de l'application.
105
	 * @param Utilisateur l'utilisateur courant.
106
	 */
65 jpm 107
	public void connecterUtilisateur () {
64 jpm 108
		String login = utilisateur.getLogin();
109
		String password = utilisateur.getMotDePasse();
65 jpm 110
		String url = urlServiceBase+"CoelUtilisateur/";
111
 
112
		if (login != null & password != null) {
113
			url = url+login+"/"+password;
114
		}
115
 
116
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url);
64 jpm 117
		try {
118
			rb.sendRequest(null, new RequestCallback() {
119
 
120
				public void onError(Request request, Throwable exception) {
121
					// TODO : ajouter un message d'erreur en cas d'erreur de requête HTTP
122
				}
123
 
124
				public void onResponseReceived(Request request, Response response) {
125
					JSONValue jsonValue = JSONParser.parse(response.getText());
126
					JSONArray jsonArray;
127
					if ((jsonArray = jsonValue.isArray()) != null) {
128
						// Identifiant utilisateur ou identifiant de session si non identifié
66 jpm 129
						String login = ((JSONString) jsonArray.get(0)).stringValue();
64 jpm 130
						// Drapeau levé si l'utilisateur est déjà identifié
131
						boolean identifie = ((JSONBoolean) jsonArray.get(1)).booleanValue();
65 jpm 132
						utilisateur.setIdentifie(identifie);
66 jpm 133
						utilisateur.setLogin(login);
65 jpm 134
						rafraichissement.rafraichir(utilisateur);
64 jpm 135
					}
136
				}
137
			}) ;
138
		} catch (RequestException e) {
139
			e.printStackTrace();
140
		}
141
	}
142
}