Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
12 david 1
package org.tela_botanica.client.modeles;
2
 
3
import org.tela_botanica.client.Util;
4
import org.tela_botanica.client.interfaces.FournisseurListe;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.observation.ObservationModele;
7
 
32 jpm 8
import com.google.gwt.http.client.Request;
9
import com.google.gwt.http.client.RequestBuilder;
10
import com.google.gwt.http.client.RequestCallback;
11
import com.google.gwt.http.client.RequestException;
12
import com.google.gwt.http.client.Response;
12 david 13
import com.google.gwt.json.client.JSONArray;
14
import com.google.gwt.json.client.JSONParser;
15
import com.google.gwt.json.client.JSONString;
16
import com.google.gwt.json.client.JSONValue;
17
import com.google.gwt.user.client.HTTPRequest;
18
import com.google.gwt.user.client.ResponseTextHandler;
19
 
20
/**
15 david 21
 * DAO la liste des communes
12 david 22
 * @author David Delon
23
 *
24
 */
25
public class ListeReferentielCommuneAsynchroneDAO implements FournisseurListe {
26
 
27
 
28
 
29
 
30
	/**
31
	 * Le modèle associé au DAO
32
	 */
33
	private ObservationModele observationModele = null ;
34
 
35
	public ListeReferentielCommuneAsynchroneDAO(ObservationModele observationModele)
36
	{
37
 
38
		this.observationModele=observationModele;
39
	}
40
 
41
 
42
	/**
43
	 * Envoie une requete au serveur jrest pour obtenir les communes  correspondant
44
	 * à des critères données en paramètres
45
	 * @param r le rafraichissable qui demande la mise à jour
46
	 * @param criteres un string contenant le terme a rechercher
47
	 */
48
 
49
 
50
	public void obtenirListeDonnees(final Rafraichissable r, String critere)
51
	{
32 jpm 52
 
53
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,observationModele.getConfig().getServiceBaseUrl()+"/LocationSearch/"+critere) ;
54
 
55
		try {
56
 
57
			rb.sendRequest(null, new RequestCallback() {
58
 
59
				public void onError(Request request, Throwable exception) {
60
					// TODO Auto-generated method stub
61
 
62
				}
63
 
64
				public void onResponseReceived(Request request,
65
						Response response) {
66
 
67
					final ListeReferentielCommune referentielCommuneData ;
68
 
69
					final JSONValue responseValue = JSONParser.parse(response.getText());
70
 
71
					JSONArray reponse=null;
72
 
73
 
74
					// si c'est un tableau
75
					if ((reponse=responseValue.isArray()) != null) {
76
 
77
						JSONArray communes;
78
						final int taillemax = reponse.size();
79
 
80
						referentielCommuneData = new ListeReferentielCommune(taillemax);
81
 
82
						for (int i = 0; i < taillemax; i++) {
83
							if ((communes=reponse.get(i).isArray()) != null) {
84
 
85
								String commune=((JSONString) communes.get(0)).stringValue();
86
								String departement=((JSONString) communes.get(1)).stringValue();
87
 
88
 
89
								ReferentielCommune com=new ReferentielCommune(commune, departement);
12 david 90
 
32 jpm 91
								referentielCommuneData.put(com.getCommune()+com.getDepartement(),com);
92
 
93
							}
94
						}
95
					} else {
96
 
97
						referentielCommuneData = new ListeReferentielCommune(0) ;
98
 
99
					}
100
					// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
101
					// le premier à les recevoir
102
					r.rafraichir(referentielCommuneData,true);
103
 
104
				}
105
 
106
			}) ;
107
 
108
		} catch (RequestException e) {
109
 
110
			e.printStackTrace() ;
111
		}
12 david 112
 
113
		// on envoie le get asynchrone
114
		HTTPRequest.asyncGet(observationModele.getConfig().getServiceBaseUrl()+"/LocationSearch/"+critere, new ResponseTextHandler() {
115
 
116
 
117
			// si tout se passe bien on reçoit une réponse JSON
118
			public void onCompletion(String responseText) {
119
 
120
 
121
 
122
		    }
123
 
124
 
125
		});
126
	}
127
}