Subversion Repositories eFlore/Applications.coel

Rev

Rev 298 | Rev 351 | 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;
317 gduche 2
import org.tela_botanica.client.Mediateur;
126 gduche 3
import org.tela_botanica.client.RegistreId;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
146 gduche 5
import org.tela_botanica.client.util.UtilDAO;
126 gduche 6
 
7
import com.extjs.gxt.ui.client.Registry;
220 aurelien 8
import com.extjs.gxt.ui.client.widget.Info;
126 gduche 9
import com.google.gwt.core.client.GWT;
10
import com.google.gwt.http.client.Request;
11
import com.google.gwt.http.client.RequestBuilder;
12
import com.google.gwt.http.client.RequestCallback;
13
import com.google.gwt.http.client.RequestException;
14
import com.google.gwt.http.client.Response;
268 jp_milcent 15
import com.google.gwt.http.client.URL;
126 gduche 16
import com.google.gwt.json.client.JSONArray;
17
import com.google.gwt.json.client.JSONParser;
18
import com.google.gwt.json.client.JSONValue;
19
 
20
 
268 jp_milcent 21
public class PersonneAsyncDao {
22
	private static final String SERVICE_NOM = "CoelPersonne";
126 gduche 23
 
277 jp_milcent 24
	private Rafraichissable vueARafraichir = null;
126 gduche 25
 
277 jp_milcent 26
	public PersonneAsyncDao(Rafraichissable vue) {
27
		vueARafraichir = vue;
126 gduche 28
	}
268 jp_milcent 29
 
241 jp_milcent 30
	public void selectionner(String personneId, String projetId, String nomComplet) {
31
		// Ajout des paramètres et données à selectionner dans l'URL
277 jp_milcent 32
		String[] parametres = new String[3];
33
		parametres[0] = (personneId == null ? "*" : personneId);
34
		parametres[1] = (projetId == null ? "*" : projetId);
298 gduche 35
		parametres[2] = (nomComplet == null ? "*" : nomComplet);
277 jp_milcent 36
		final RequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
241 jp_milcent 37
		try {
38
			rb.sendRequest(null, new RequestCallback() {
39
 
40
				public void onError(Request request, Throwable exception) {
41
					// Gestion des exceptions déclenchées par l'exécution de la requête
42
					GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (selection)", exception);
43
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
44
				}
45
 
46
				public void onErrorHTTP(Request request, Response reponse) {
47
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
48
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
49
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
50
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
51
				}
52
 
53
				public void onResponseReceived(Request request, Response response) {
54
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanise d'erreur HTTP
55
					if (response.getStatusCode() != 200) {
56
						onErrorHTTP(request, response);
57
					} else {
58
						if (response.getText().length() != 0 && response.getText() != null) {
59
							final JSONValue responseValue = JSONParser.parse(response.getText());
126 gduche 60
 
241 jp_milcent 61
							// Si la requête est un succès, reception d'un tableau
62
							if (responseValue.isArray() != null) {
63
								final JSONArray reponse = responseValue.isArray();
64
								// Transformation du tableau JSON réponse en ListeInstitution
65
								Information info = new Information("liste_personne");
66
								PersonneListe personnes = new PersonneListe(reponse);
67
								info.setDonnee(0, personnes);
68
								// et on met à jour le demandeur des données
277 jp_milcent 69
								vueARafraichir.rafraichir(info);
241 jp_milcent 70
							} else {
277 jp_milcent 71
								GWT.log(rb.getUrl()+"\n\tLa réponse n'est pas un talbeau JSON et vaut : "+responseValue.toString(), null);
241 jp_milcent 72
							}
73
						} else {
74
							if (response.getText().length() == 0) {
75
								GWT.log("\tLa réponse a une taille de 0", null);
76
							}
77
							if (response.getText() == null) {
78
								GWT.log("\tLa réponse vaul null", null);
79
							}
80
						}
81
					}
82
				}
83
			});
84
		} catch (RequestException e) {
85
			// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?)
86
			GWT.log("Erreur à la création du service "+SERVICE_NOM+" (selection)", e);
87
			Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête.");
88
		}
89
 
126 gduche 90
	}
241 jp_milcent 91
 
317 gduche 92
	public void supprimer(final Rafraichissable r, String structureId) {
93
 
94
		String utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
95
 
220 aurelien 96
		// Ajout des paramètres et données à supprimer dans l'URL
97
		final String url = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl() +
268 jp_milcent 98
			SERVICE_NOM + "/" +
220 aurelien 99
			utilisateurId + "/" +
268 jp_milcent 100
			structureId +
220 aurelien 101
			"";
102
 
103
		// DELETE n'étant pas disponible comme méthode HTTP, nous utilisons POST avec le paramètre action=DELETE
104
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, url);
105
		String postDonnees = "action=DELETE";
106
 
107
		try {
108
			rb.sendRequest(postDonnees, new RequestCallback() {
109
 
110
				public void onError(Request request, Throwable exception) {
111
					// Gestion des exceptions déclenchées par l'exécution de la requête
268 jp_milcent 112
					GWT.log("Erreur à l'exécution du service "+SERVICE_NOM+" (suppression)", exception);
220 aurelien 113
					Info.display("Erreur de Requête", "Une erreur s'est produite lors de l'exécution de la requête.");
114
				}
115
 
116
				public void onErrorHTTP(Request request, Response reponse) {
117
					// Gestion des erreurs HTTP renvoyé par Apache ou JRest
118
					Information info = new Information("erreur_jrest", JSONParser.parse(reponse.getText()).isArray());
119
					GWT.log("Erreur JREST - Code "+reponse.getStatusCode()+"\n"+info.getMessages().toString(), null);
120
					Info.display("Erreur JREST - Code "+reponse.getStatusCode(), info.toString());
121
				}
122
 
123
				public void onResponseReceived(Request request, Response response) {
124
					// Si le code de réponse HTTP ne vaut pas 200 OK, on lance le mécanisme d'erreur HTTP
125
					if (response.getStatusCode() != 200) {
126
						onErrorHTTP(request, response);
127
					} else {
128
						if (response.getText().length() != 0 && response.getText() != null) {
129
							final JSONValue responseValue = JSONParser.parse(response.getText());
130
 
131
							// Si la requête est un succès, reception d'une chaine
132
							if (responseValue.isString() != null) {
133
								Information info = new Information("suppression_personne", responseValue.isString().stringValue());
134
								r.rafraichir(info);
135
							} else {
136
								GWT.log(url+"\n\tLa réponse n'est pas une chaine JSON.", null);
137
							}
138
						} else {
139
							GWT.log(url, null);
140
							if (response.getText().length() == 0) {
141
								GWT.log("\tLa réponse a une taille de 0", null);
142
							}
143
							if (response.getText() == null) {
144
								GWT.log("\tLa réponse vaul null", null);
145
							}
146
						}
147
					}
148
				}
149
 
150
			}) ;
151
		} catch (RequestException e) {
152
			// Gestion des exceptions déclenchées par la création de la requête (url non-valide ?)
268 jp_milcent 153
			GWT.log("Erreur à la création du service "+SERVICE_NOM+" (suppression)", e);
220 aurelien 154
			Info.display("Erreur de Requête", "Une erreur s'est produite lors de la création de la requête.");
155
		}
156
	}
241 jp_milcent 157
 
158
 
126 gduche 159
 
160
}