Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
208 jp_milcent 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;
7
import com.extjs.gxt.ui.client.widget.Info;
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;
231 jp_milcent 14
import com.google.gwt.http.client.URL;
208 jp_milcent 15
import com.google.gwt.json.client.JSONArray;
16
import com.google.gwt.json.client.JSONParser;
17
import com.google.gwt.json.client.JSONValue;
18
 
19
public class StructureAPersonneAsyncDao {
231 jp_milcent 20
	private static final String SERVICE_NOM = "CoelStructureAPersonne";
21
 
602 jp_milcent 22
	public void selectionner(final Rafraichissable vueARafraichir, String idUtilisateur, final String idStructure, final String idRole) {
208 jp_milcent 23
		// Ajout des paramètres et données à selectionner dans l'URL
24
		final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() +
245 jp_milcent 25
			SERVICE_NOM + "/" +
26
			(idStructure == null ? "*" : idStructure) + "/" +
27
			(idRole == null ? "*" : idRole) + "/" +
208 jp_milcent 28
			"";
264 jp_milcent 29
		GWT.log("StructureAPersonne : "+url, null);
208 jp_milcent 30
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url);
31
		try {
32
			rb.sendRequest(null, new RequestCallback() {
33
 
34
				public void onError(Request request, Throwable exception) {
35
					// Gestion des exceptions déclenchées par l'exécution de la requête
231 jp_milcent 36
					GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selection)", exception);
208 jp_milcent 37
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
38
				}
39
 
40
				public void onErrorHTTP(Request request, Response reponse) {
41
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
42
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
43
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
44
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
45
				}
46
 
47
				public void onResponseReceived(Request request, Response response) {
48
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP
49
					if (response.getStatusCode() != 200) {
50
						onErrorHTTP(request, response);
51
					} else {
609 jp_milcent 52
						Information info = new Information("liste_structure_a_personne");
53
						if (response.getHeader("X-DebugJrest-Data") != null && response.getHeader("X-DebugJrest-Data").length() != 0) {
54
							final JSONValue reponseEnteteDeboguage = JSONParser.parse(response.getHeader("X-DebugJrest-Data"));
55
							if (reponseEnteteDeboguage.isArray() != null) {
56
								info.setDeboguages(reponseEnteteDeboguage.isArray());
57
								GWT.log("DEBOGUAGE:\n"+info.getDeboguages().toString(), null);
58
							}
59
						}
208 jp_milcent 60
						if (response.getText().length() != 0 && response.getText() != null) {
61
							final JSONValue responseValue = JSONParser.parse(response.getText());
62
 
63
							// Si la requête est un succès, reception d'un tableau
64
							if (responseValue.isArray() != null) {
65
								final JSONArray reponse = responseValue.isArray();
66
								// Transformation du tableau JSON réponse en ListeInstitution
67
								StructureAPersonneListe personnel = new StructureAPersonneListe(reponse);
68
								info.setDonnee(0, personnel);
69
								// et on met à jour le demandeur des données
602 jp_milcent 70
								vueARafraichir.rafraichir(info);
208 jp_milcent 71
							} else {
72
								GWT.log(url+"\n\tLa réponse n'est pas un talbeau JSON et vaut : "+responseValue.toString(), null);
73
							}
74
						} else {
75
							if (idStructure == null) {
76
								// Dans le cas, où nous demandons toutes les relations Structure à Personne et qu'il n'y en a pas, nous retournons un message d'information
77
								info.setMessage("Aucun personnel");
602 jp_milcent 78
								vueARafraichir.rafraichir(info);
208 jp_milcent 79
							} else {
80
								GWT.log(url, null);
81
								if (response.getText().length() == 0) {
82
									GWT.log("\tLa réponse a une taille de 0", null);
83
								}
84
								if (response.getText() == null) {
85
									GWT.log("\tLa réponse vaul null", null);
86
								}
87
							}
88
						}
89
					}
90
				}
91
			});
92
		} catch (RequestException e) {
231 jp_milcent 93
			// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?)
94
			GWT.log("Erreur à la création du service "+SERVICE_NOM+" (selection)", e);
95
			Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête.");
208 jp_milcent 96
		}
97
	}
231 jp_milcent 98
 
99
	public void ajouter(final Rafraichissable vue, String utilisateurId, String structureId, StructureAPersonne personnel) {
100
		final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() +
101
		SERVICE_NOM + "/";
102
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url);
103
 
602 jp_milcent 104
		String postDonneesEncodees = construirePost(utilisateurId, structureId, personnel);
231 jp_milcent 105
 
106
		try {
602 jp_milcent 107
			rb.sendRequest(postDonneesEncodees, new RequestCallback() {
231 jp_milcent 108
 
109
				public void onError(Request request, Throwable exception) {
110
					// Gestion des exceptions déclenchées par l'exécution de la requête
111
					GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (ajout)", exception);
112
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
113
				}
114
 
115
				public void onErrorHTTP(Request request, Response reponse) {
116
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
117
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
118
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
119
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
120
				}
121
 
122
				public void onResponseReceived(Request request, Response response) {
123
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP
124
					if (response.getStatusCode() != 200) {
125
						onErrorHTTP(request, response);
126
					} else {
609 jp_milcent 127
						Information info = new Information("ajout_structure_a_personne");
128
						if (response.getHeader("X-DebugJrest-Data") != null && response.getHeader("X-DebugJrest-Data").length() != 0) {
129
							final JSONValue reponseEnteteDeboguage = JSONParser.parse(response.getHeader("X-DebugJrest-Data"));
130
							if (reponseEnteteDeboguage.isArray() != null) {
131
								info.setDeboguages(reponseEnteteDeboguage.isArray());
132
								GWT.log("DEBOGUAGE:\n"+info.getDeboguages().toString(), null);
133
							}
134
						}
231 jp_milcent 135
						if (response.getText().length() != 0 && response.getText() != null) {
136
							final JSONValue responseValue = JSONParser.parse(response.getText());
137
 
138
							// Si la requête est un succès, reception d'une chaine
139
							if (responseValue.isString() != null) {
609 jp_milcent 140
								info.setMessage(responseValue.isString().stringValue());
231 jp_milcent 141
								vue.rafraichir(info);
142
							} else {
143
								GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null);
144
							}
145
						} else {
146
							GWT.log(url, null);
147
							if (response.getText().length() == 0) {
148
								GWT.log("\tLa réponse a une taille de 0", null);
149
							}
150
							if (response.getText() == null) {
151
								GWT.log("\tLa réponse vaul null", null);
152
							}
153
						}
154
					}
155
				}
156
 
157
			}) ;
158
		} catch (RequestException e) {
159
			// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?)
160
			GWT.log("Erreur à la création du service "+SERVICE_NOM+" (ajout)", e);
161
			Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête.");
162
		}
163
	}
164
 
609 jp_milcent 165
	public void modifier(final Rafraichissable vueARafraichir, String utilisateurId, StructureAPersonne personnel) {
231 jp_milcent 166
		final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() +
167
		SERVICE_NOM + "/" +
168
		personnel.getIdStructure() + "/" +
169
		personnel.getIdPersonne() + "/" +
170
		personnel.getIdRole()
171
		;
172
 
173
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url);
174
 
602 jp_milcent 175
		String postDonneesEncodees = construirePost(utilisateurId, null, personnel);
231 jp_milcent 176
 
177
		try {
602 jp_milcent 178
			rb.sendRequest(postDonneesEncodees, new RequestCallback() {
231 jp_milcent 179
 
180
				public void onError(Request request, Throwable exception) {
181
					// Gestion des exceptions déclenchées par l'exécution de la requête
182
					GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (modif)", exception);
183
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
184
				}
185
 
186
				public void onErrorHTTP(Request request, Response reponse) {
187
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
188
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
189
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
190
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
191
				}
192
 
193
				public void onResponseReceived(Request request, Response response) {
194
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP
195
					if (response.getStatusCode() != 200) {
196
						onErrorHTTP(request, response);
197
					} else {
609 jp_milcent 198
						Information info = new Information("modif_structure_a_personne");
199
						if (response.getHeader("X-DebugJrest-Data") != null && response.getHeader("X-DebugJrest-Data").length() != 0) {
200
							final JSONValue reponseEnteteDeboguage = JSONParser.parse(response.getHeader("X-DebugJrest-Data"));
201
							if (reponseEnteteDeboguage.isArray() != null) {
202
								info.setDeboguages(reponseEnteteDeboguage.isArray());
203
								GWT.log("DEBOGUAGE:\n"+info.getDeboguages().toString(), null);
204
							}
205
						}
231 jp_milcent 206
						if (response.getText().length() != 0 && response.getText() != null) {
207
							final JSONValue responseValue = JSONParser.parse(response.getText());
208
 
209
							// Si la requête est un succès, reception d'une chaine
210
							if (responseValue.isString() != null) {
609 jp_milcent 211
								info.setMessage(responseValue.isString().stringValue());
212
								vueARafraichir.rafraichir(info);
231 jp_milcent 213
							} else {
214
								GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null);
215
							}
216
						} else {
217
							GWT.log(url, null);
218
							if (response.getText().length() == 0) {
219
								GWT.log("\tLa réponse a une taille de 0", null);
220
							}
221
							if (response.getText() == null) {
222
								GWT.log("\tLa réponse vaul null", null);
223
							}
224
						}
225
					}
226
				}
227
 
228
			}) ;
229
		} catch (RequestException e) {
230
			// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?)
231
			GWT.log("Erreur à la création du service "+SERVICE_NOM+" (modif)", e);
232
			Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête.");
233
		}
234
	}
235
 
236
	public void supprimer(final Rafraichissable vue, String utilisateurId, String idStrAPer) {
237
		// Ajout des paramètres et données à supprimer dans l'URL
238
		final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() +
239
			SERVICE_NOM + "/" +
240
			utilisateurId + "/" +
241
			idStrAPer +
242
			"";
243
 
244
		// DELETE n'étant pas disponible comme méthode HTTP, nous utilisons POST avec le paramètre action=DELETE
245
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url);
246
		String postDonnees = "action=DELETE";
247
 
248
		try {
249
			rb.sendRequest(postDonnees, new RequestCallback() {
250
 
251
				public void onError(Request request, Throwable exception) {
252
					// Gestion des exceptions déclenchées par l'exécution de la requête
253
					GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (suppression)", exception);
254
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
255
				}
256
 
257
				public void onErrorHTTP(Request request, Response reponse) {
258
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
259
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
260
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
261
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
262
				}
263
 
264
				public void onResponseReceived(Request request, Response response) {
265
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP
266
					if (response.getStatusCode() != 200) {
267
						onErrorHTTP(request, response);
268
					} else {
609 jp_milcent 269
						Information info = new Information("suppression_structure_a_personne");
270
						if (response.getHeader("X-DebugJrest-Data") != null && response.getHeader("X-DebugJrest-Data").length() != 0) {
271
							final JSONValue reponseEnteteDeboguage = JSONParser.parse(response.getHeader("X-DebugJrest-Data"));
272
							if (reponseEnteteDeboguage.isArray() != null) {
273
								info.setDeboguages(reponseEnteteDeboguage.isArray());
274
								GWT.log("DEBOGUAGE:\n"+info.getDeboguages().toString(), null);
275
							}
276
						}
231 jp_milcent 277
						if (response.getText().length() != 0 && response.getText() != null) {
278
							final JSONValue responseValue = JSONParser.parse(response.getText());
279
 
280
							// Si la requête est un succès, reception d'une chaine
281
							if (responseValue.isString() != null) {
609 jp_milcent 282
								info.setMessage(responseValue.isString().stringValue());
231 jp_milcent 283
								vue.rafraichir(info);
284
							} else {
285
								GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null);
286
							}
287
						} else {
288
							GWT.log(url, null);
289
							if (response.getText().length() == 0) {
290
								GWT.log("\tLa réponse a une taille de 0", null);
291
							}
292
							if (response.getText() == null) {
293
								GWT.log("\tLa réponse vaul null", null);
294
							}
295
						}
296
					}
297
				}
298
 
299
			}) ;
300
		} catch (RequestException e) {
301
			// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?)
302
			GWT.log("Erreur à la création du service "+SERVICE_NOM+" (suppression)", e);
303
			Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête.");
304
		}
305
 
306
	}
602 jp_milcent 307
 
308
	private String construirePost(String utilisateurId, String structureId, StructureAPersonne personnel) {
309
		String postDonnees = "cmhl_ce_modifier_par=" + URL.encodeComponent(utilisateurId);
310
		if (structureId != null) {
311
			postDonnees += "&csap_id_structure=" + structureId;
312
		}
609 jp_milcent 313
		if (!personnel.getIdPersonne().equals("")) {
314
			postDonnees += "&csap_id_personne=" + URL.encodeComponent(personnel.getIdPersonne()) +
315
				"&cp_id_personne=" + URL.encodeComponent(personnel.getIdPersonne());
316
		}
317
		postDonnees += "&csap_id_role=" + URL.encodeComponent(personnel.getIdRole()) +
602 jp_milcent 318
			"&csap_ce_truk_fonction=" + URL.encodeComponent(personnel.getFonction()) +
319
			"&csap_service=" + URL.encodeComponent(personnel.getService()) +
320
			"&csap_ce_truk_statut=" + URL.encodeComponent(personnel.getStatut()) +
321
			"&csap_mark_contact=" + URL.encodeComponent(personnel.getContact()) +
322
			"&csap_bota_travail_hebdo_tps=" + URL.encodeComponent(personnel.getBotaTravailHebdoTps()) +
609 jp_milcent 323
			"&cp_ce_projet=" + URL.encodeComponent(personnel.getIdProjetPersonne()) +
602 jp_milcent 324
			"&cp_prenom=" + URL.encodeComponent(personnel.getPrenom()) +
325
			"&cp_nom=" + URL.encodeComponent(personnel.getNom()) +
326
			"&cp_truk_telephone=" + URL.encodeComponent(personnel.getTelephone()) +
327
			"&cp_truk_courriel=" + URL.encodeComponent(personnel.getCourriel()) +
328
			"&cp_ce_truk_specialite=" + URL.encodeComponent(personnel.getSpecialite()) +
329
			"";
330
		return postDonnees;
331
	}
208 jp_milcent 332
}