Subversion Repositories eFlore/Applications.cel

Rev

Rev 70 | Go to most recent revision | Details | 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;
16
 
17
/**
18
 * DAO la liste des communes.
19
 * @author David Delon
20
 *
21
 */
22
public class ListeEntiteGeographiqueObservationAsynchroneDAO  {
23
 
24
 
25
 
26
	/**
27
	 * Le modèle associé au DAO.
28
	 */
29
	private ObservationModele observationModele = null;
30
 
31
 
32
	/**
33
	 *  Constructeur.
34
	 * @param obs : Modele
35
	 */
36
 
37
	public ListeEntiteGeographiqueObservationAsynchroneDAO(final ObservationModele obs) {
38
		this.observationModele = obs;
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 critere un string contenant le terme a rechercher
47
	 */
48
 
49
 
50
	public final void obtenirListeEntitesGeographiques(final Rafraichissable r, final String utilisateur) {
51
 
52
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, observationModele.getConfig().getServiceBaseUrl() + "/InventoryLocationList/" + utilisateur);
53
 
54
		try {
55
 
56
			rb.sendRequest(null, new RequestCallback() {
57
 
58
				public void onError(final Request request, final Throwable exception) {
59
					// TODO Auto-generated method stub
60
 
61
				}
62
 
63
				public void onResponseReceived(final Request request,
64
						final Response response) {
65
 
66
					final ListeEntiteGeographiqueObservation listeEntiteGeographiqueObservation;
67
 
68
					final JSONValue responseValue = JSONParser.parse(response.getText());
69
 
70
					JSONArray reponse = null;
71
 
72
 
73
					// si c'est un tableau
74
					if ((reponse = responseValue.isArray()) != null) {
75
 
76
						JSONArray entites;
77
						final int taillemax = reponse.size();
78
 
79
						listeEntiteGeographiqueObservation = new ListeEntiteGeographiqueObservation(taillemax);
80
 
81
						for (int i = 0; i < taillemax; i++) {
82
							if ((entites = reponse.get(i).isArray()) != null) {
83
 
84
								String entite = ((JSONString) entites.get(0)).stringValue();
85
								String parent  = ((JSONString) entites.get(1)).stringValue();
86
 
87
 
88
								EntiteGeographiqueObservation ent = new EntiteGeographiqueObservation(entite, parent);
89
 
90
								listeEntiteGeographiqueObservation.put(ent.getEntite() + ent.getParent(), ent);
91
 
92
							}
93
						}
94
					} else {
95
 
96
						listeEntiteGeographiqueObservation = new ListeEntiteGeographiqueObservation(0);
97
 
98
					}
99
					// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
100
					// le premier à les recevoir
101
 
102
					r.rafraichir(listeEntiteGeographiqueObservation, true);
103
 
104
				}
105
 
106
			});
107
 
108
		} catch (RequestException e) {
109
 
110
			e.printStackTrace();
111
		}
112
 
113
	}
114
}