Subversion Repositories eFlore/Applications.cel

Rev

Rev 65 | 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
 
65 david 55
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, observationModele.getConfig().getServiceBaseUrl() + "/InventoryLocationList/" + utilisateur);
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
 
89
								String entite = ((JSONString) entites.get(0)).stringValue();
90
								String parent  = ((JSONString) entites.get(1)).stringValue();
91
 
92
 
93
								EntiteGeographiqueObservation ent = new EntiteGeographiqueObservation(entite, parent);
94
 
95
								listeEntiteGeographiqueObservation.put(ent.getEntite() + ent.getParent(), ent);
96
 
97
							}
98
						}
99
					} else {
100
 
101
						listeEntiteGeographiqueObservation = new ListeEntiteGeographiqueObservation(0);
102
 
103
					}
104
					// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
105
					// le premier à les recevoir
106
 
107
					r.rafraichir(listeEntiteGeographiqueObservation, true);
108
 
109
				}
110
 
111
			});
112
 
113
		} catch (RequestException e) {
114
 
115
			e.printStackTrace();
116
		}
117
 
118
	}
119
}