Subversion Repositories eFlore/Applications.cel

Rev

Rev 1918 | Details | Compare with Previous | Last modification | View Log | RSS feed

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