Subversion Repositories eFlore/Applications.cel

Rev

Rev 2568 | 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
/**
2568 aurelien 21
 * DAO la liste des localites.
65 david 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
	}
2568 aurelien 43
 
65 david 44
	public final void obtenirListeEntitesGeographiques(final Rafraichissable r, final String utilisateur) {
1918 aurelien 45
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + "/InventoryLocationList/" + utilisateur);
65 david 46
 
47
		try {
48
 
49
			rb.sendRequest(null, new RequestCallback() {
50
 
1293 aurelien 51
				@Override
65 david 52
				public void onError(final Request request, final Throwable exception) {
2568 aurelien 53
					// TODO Auto-generated method stub
65 david 54
				}
55
 
1293 aurelien 56
				@Override
65 david 57
				public void onResponseReceived(final Request request,
58
						final Response response) {
2568 aurelien 59
 
60
					final ListeEntiteGeographiqueObservation listeEntiteGeographiqueObservation;
61
					final JSONValue responseValue = JSONParser.parse(response.getText());
65 david 62
					JSONArray reponse = null;
63
 
64
					// si c'est un tableau
65
					if ((reponse = responseValue.isArray()) != null) {
66
 
965 aurelien 67
						JSONObject entites;
65 david 68
						final int taillemax = reponse.size();
69
 
70
						listeEntiteGeographiqueObservation = new ListeEntiteGeographiqueObservation(taillemax);
71
 
72
						for (int i = 0; i < taillemax; i++) {
965 aurelien 73
							if ((entites = reponse.get(i).isObject()) != null) {
65 david 74
 
1293 aurelien 75
								String idZoneGeo = Util.convertirChaineZoneGeoVersDepartement(Util.getValeurJsonOuVide(entites, "ce_zone_geo"));
76
								String zoneGeo  = Util.getValeurJsonOuVide(entites, "zone_geo");
77
								String lieuDit  = Util.getValeurJsonOuVide(entites, "lieudit");
78
								String station  = Util.getValeurJsonOuVide(entites, "station");
2568 aurelien 79
								String pays  = Util.getValeurJsonOuVide(entites, "pays");
65 david 80
 
965 aurelien 81
								EntiteGeographiqueObservation ent = new EntiteGeographiqueObservation(idZoneGeo, zoneGeo, lieuDit, station);
2568 aurelien 82
								ent.setPays(pays);
140 aurelien 83
								listeEntiteGeographiqueObservation.put(ent);
65 david 84
							}
85
						}
86
					} else {
87
						listeEntiteGeographiqueObservation = new ListeEntiteGeographiqueObservation(0);
88
					}
89
					// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
90
					// le premier à les recevoir
91
					r.rafraichir(listeEntiteGeographiqueObservation, true);
92
 
93
				}
94
 
95
			});
96
 
97
		} catch (RequestException e) {
98
 
99
			e.printStackTrace();
100
		}
101
 
102
	}
2568 aurelien 103
}