Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
126 gduche 1
package org.tela_botanica.client.modeles;
2
 
185 gduche 3
import java.util.HashMap;
4
 
126 gduche 5
import org.tela_botanica.client.RegistreId;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
146 gduche 7
import org.tela_botanica.client.util.UtilDAO;
126 gduche 8
 
9
import com.extjs.gxt.ui.client.Registry;
220 aurelien 10
import com.extjs.gxt.ui.client.widget.Info;
126 gduche 11
import com.google.gwt.core.client.GWT;
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.JSONException;
19
import com.google.gwt.json.client.JSONParser;
20
import com.google.gwt.json.client.JSONValue;
21
import com.google.gwt.user.client.Window;
22
 
23
 
146 gduche 24
public class PersonnesAsyncDao {
241 jp_milcent 25
	private static final String SERVICE_NOM = "CoelPersonneListe";
126 gduche 26
 
27
	private PersonneListe personnes = null;
28
	private Rafraichissable rafraichissement = null;
29
 
146 gduche 30
	public PersonnesAsyncDao(Rafraichissable r) {
126 gduche 31
		rafraichissement = r;
32
	}
33
 
146 gduche 34
	public void obtenirDetailPersonne(String personneId)	{
35
		//RequestBuilder rb = UtilDAO.construireRequete("CoelPersonneListe");
36
		Window.alert("lalal");
37
	}
38
 
126 gduche 39
	public void obtenirListePersonnes()	{
40
 
185 gduche 41
		Integer idProjet = null;
42
 
43
		if (Registry.get(RegistreId.PROJET) != null)	{
44
			idProjet = Integer.parseInt((String) Registry.get(RegistreId.PROJET));
45
		}
46
 
47
		obtenirListePersonnes(idProjet);
48
	}
49
 
50
	public void obtenirListePersonnes(Integer idProjet)	{
241 jp_milcent 51
		// Appel du service JREST pour avoir toutes les personnes
185 gduche 52
 
241 jp_milcent 53
		String[] parametres = null;
54
		if (idProjet != null)	{
55
			parametres = new String[2];
56
			parametres[0] = "*";
57
			parametres[1] = idProjet.toString();
58
		}
59
 
60
		RequestBuilder rb = UtilDAO.construireRequete("CoelPersonneListe", parametres);
126 gduche 61
 
241 jp_milcent 62
		try {
126 gduche 63
			rb.sendRequest(null, new RequestCallback() {
64
 
65
				public void onError(Request request, Throwable exception) {
66
					/*
67
					 * Gestion de l'exception lorsque la requête ne se termine pas correctement
68
					 * */
69
					GWT.log("Erreur à l'exécution du service CoelPersonneListe", exception);
70
					Window.alert("Une erreur s'est produite lors de l'accès aux données");
71
				}
72
 
73
				public void onResponseReceived(Request request, Response response) {
74
 
75
					/*
76
					 * La requête doit renvoyer une chaîne de caratères, parsable avec JSON
77
					 * Si ce n'est pas le cas, on log une erreur
78
					 * */
79
 
80
					if (!response.getText().equals(""))	{
81
 
82
						try	{
83
								final JSONValue responseValue = JSONParser.parse(response.getText());
84
 
85
								// Si la requête est un succès, reception d'un tableau
86
								if (responseValue.isArray() != null)	{
87
 
88
									final JSONArray reponse = responseValue.isArray();
89
 
90
									// Transformation du tableau JSON réponse en ListePersonnes
138 gduche 91
									personnes = new PersonneListe(reponse);
92
 
126 gduche 93
								}
94
 
95
							}
96
						catch (JSONException e)	{
97
 
98
								// Cette exception est levée si la chaîne de caractère n'a pu être parsée par JSON
99
								GWT.log("ERREUR parsing JSON", e);
100
								Window.alert("Une erreur s'est produite lors de la récupération des personnes.");
101
							}
102
						}
103
 
104
						if (personnes == null)	{
105
 
106
							// Si la requete est vide, il faut toutefois retourner une liste, vide.
107
							personnes = new PersonneListe();
108
						}
109
 
110
						// On met à jour le demandeur des données
111
						rafraichissement.rafraichir(personnes);
112
 
113
				}
114
			});
115
 
116
		} catch (RequestException e) {
117
				// Erreur à la création de la requête : url non-valide?
118
				GWT.log("Erreur à la création de la requete pour CoelPersonneListe", e);
119
				Window.alert("Une erreur s'est produite lors de l'accès aux données");
120
		}
241 jp_milcent 121
	}
122
 
123
	public void selectionner(String personneId, String projetId, String nomComplet) {
124
		// Ajout des paramètres et données à selectionner dans l'URL
125
		final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() +
126
			SERVICE_NOM + "/" +
127
			(personneId == null ? "*" : personneId) + "/" +
128
			(projetId == null ? "*" : projetId) + "/" +
129
			(nomComplet == null ? "*" : nomComplet) + "/" +
130
			"";
126 gduche 131
 
241 jp_milcent 132
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url);
133
		try {
134
			rb.sendRequest(null, new RequestCallback() {
135
 
136
				public void onError(Request request, Throwable exception) {
137
					// Gestion des exceptions déclenchées par l'exécution de la requête
138
					GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selection)", exception);
139
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
140
				}
141
 
142
				public void onErrorHTTP(Request request, Response reponse) {
143
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
144
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
145
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
146
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
147
				}
148
 
149
				public void onResponseReceived(Request request, Response response) {
150
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP
151
					if (response.getStatusCode() != 200) {
152
						onErrorHTTP(request, response);
153
					} else {
154
						if (response.getText().length() != 0 && response.getText() != null) {
155
							final JSONValue responseValue = JSONParser.parse(response.getText());
126 gduche 156
 
241 jp_milcent 157
							// Si la requête est un succès, reception d'un tableau
158
							if (responseValue.isArray() != null) {
159
								final JSONArray reponse = responseValue.isArray();
160
								// Transformation du tableau JSON réponse en ListeInstitution
161
								Information info = new Information("liste_personne");
162
								PersonneListe personnes = new PersonneListe(reponse);
163
								info.setDonnee(0, personnes);
164
								// et on met à jour le demandeur des données
165
								rafraichissement.rafraichir(info);
166
							} else {
167
								GWT.log(url+"\n\tLa réponse n'est pas un talbeau JSON et vaut : "+responseValue.toString(), null);
168
							}
169
						} else {
170
							GWT.log(url, null);
171
							if (response.getText().length() == 0) {
172
								GWT.log("\tLa réponse a une taille de 0", null);
173
							}
174
							if (response.getText() == null) {
175
								GWT.log("\tLa réponse vaul null", null);
176
							}
177
						}
178
					}
179
				}
180
			});
181
		} catch (RequestException e) {
182
			// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?)
183
			GWT.log("Erreur à la création du service "+SERVICE_NOM+" (selection)", e);
184
			Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête.");
185
		}
186
 
126 gduche 187
	}
241 jp_milcent 188
 
220 aurelien 189
	public void supprimer(final Rafraichissable r, String utilisateurId,
190
			String idStr) {
191
		// Ajout des paramètres et données à supprimer dans l'URL
192
		final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() +
193
			"CoelPersonneListe/" +
194
			utilisateurId + "/" +
195
			idStr +
196
			"";
197
 
198
		// DELETE n'étant pas disponible comme méthode HTTP, nous utilisons POST avec le paramètre action=DELETE
199
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url);
200
		String postDonnees = "action=DELETE";
201
 
202
		try {
203
			rb.sendRequest(postDonnees, new RequestCallback() {
204
 
205
				public void onError(Request request, Throwable exception) {
206
					// Gestion des exceptions déclenchées par l'exécution de la requête
207
					GWT.log("Erreur à l'exécution du service CoelPersonneListe (suppression)", exception);
208
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
209
				}
210
 
211
				public void onErrorHTTP(Request request, Response reponse) {
212
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
213
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
214
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
215
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
216
				}
217
 
218
				public void onResponseReceived(Request request, Response response) {
219
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanisme d'erreur HTTP
220
					if (response.getStatusCode() != 200) {
221
						onErrorHTTP(request, response);
222
					} else {
223
						if (response.getText().length() != 0 && response.getText() != null) {
224
							final JSONValue responseValue = JSONParser.parse(response.getText());
225
 
226
							// Si la requête est un succès, reception d'une chaine
227
							if (responseValue.isString() != null) {
228
								Information info = new Information("suppression_personne", responseValue.isString().stringValue());
229
								r.rafraichir(info);
230
							} else {
231
								GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null);
232
							}
233
						} else {
234
							GWT.log(url, null);
235
							if (response.getText().length() == 0) {
236
								GWT.log("\tLa réponse a une taille de 0", null);
237
							}
238
							if (response.getText() == null) {
239
								GWT.log("\tLa réponse vaul null", null);
240
							}
241
						}
242
					}
243
				}
244
 
245
			}) ;
246
		} catch (RequestException e) {
247
			// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?)
248
			GWT.log("Erreur à la création du service CoelPersonneListe", e);
249
			Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête.");
250
		}
251
	}
241 jp_milcent 252
 
253
 
126 gduche 254
 
255
}