Subversion Repositories eFlore/Applications.cel

Rev

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

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