Subversion Repositories eFlore/Applications.coel

Rev

Rev 241 | Rev 268 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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