Subversion Repositories eFlore/Applications.coel

Rev

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