Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
239 aurelien 1
package org.tela_botanica.client.modeles;
2
 
3
import org.tela_botanica.client.interfaces.Rafraichissable;
4
 
5
import com.google.gwt.http.client.Request;
6
import com.google.gwt.http.client.RequestBuilder;
7
import com.google.gwt.http.client.RequestCallback;
8
import com.google.gwt.http.client.RequestException;
9
import com.google.gwt.http.client.Response;
10
import com.google.gwt.http.client.URL;
11
import com.google.gwt.json.client.JSONArray;
12
import com.google.gwt.json.client.JSONObject;
13
import com.google.gwt.json.client.JSONParser;
14
import com.google.gwt.json.client.JSONValue;
15
import com.google.gwt.maps.client.geom.LatLng;
16
import com.google.gwt.user.client.Window;
17
 
253 aurelien 18
public class InformationCommuneDAO {
239 aurelien 19
 
20
	private final String NOM_SERVICE = "CoordSearch";
21
	private final String CODE_PAYS = "FR";
253 aurelien 22
 
23
	Rafraichissable r = null;
24
 
25
	public InformationCommuneDAO(Rafraichissable r) {
26
		this.r = r;
239 aurelien 27
	}
28
 
253 aurelien 29
	public void obtenirCommunePlusProche(final Rafraichissable r, double lng,
30
			double lat) {
31
 
32
		String adresseAppel = Configuration.getServiceBaseUrl() + "/"
33
				+ NOM_SERVICE + "/" + URL.encode("" + lat) + "/"
34
				+ URL.encode("" + lng) + "/*/*/";
35
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, adresseAppel);
36
 
239 aurelien 37
		try {
253 aurelien 38
			rb.sendRequest(null, new RequestCallback() {
39
 
40
				public void onError(Request request, Throwable exception) {
239 aurelien 41
					Window.alert(exception.getMessage());
42
				}
253 aurelien 43
 
44
				public void onResponseReceived(Request request,
45
						Response response) {
46
 
47
					if (response.getStatusCode() == Response.SC_BAD_REQUEST) {
239 aurelien 48
						Window.alert("Requete mal formée");
253 aurelien 49
					} else {
50
						final JSONValue responseValue = JSONParser
51
								.parse(response.getText());
52
 
53
						if (responseValue.isObject() != null) {
54
							JSONObject resultat = responseValue.isObject();
55
							JSONArray tableauCommune = resultat.get("geonames")
56
									.isArray();
57
							JSONObject objetCommune = tableauCommune.get(0)
58
									.isObject();
59
 
60
							/*String valeurCommune = objetCommune.get("name")
61
									.isString().stringValue();
62
							r.rafraichir(valeurCommune, false);*/
239 aurelien 63
 
253 aurelien 64
							String pays = objetCommune.get("countryName").isString()
65
							.stringValue();
66
 
67
							if(!pays.equals("France")){
68
								r.rafraichir("Aucune commune française n'a été trouvée à cet emplacement", false);
69
								return;
70
							}
71
 
72
							Double lng = objetCommune.get("lng").isNumber()
73
							.doubleValue();
74
							Double lat = objetCommune.get("lat").isNumber()
75
									.doubleValue();
76
							String nomCommune = objetCommune.get(
77
									"name").isString().stringValue();
78
 
79
							String idLocalite = objetCommune.get(
80
							"adminCode2").isString().stringValue();
81
 
82
							Object[] infos = { lat, lng, idLocalite, nomCommune};
83
 
84
							r.rafraichir(infos, false);
239 aurelien 85
						}
86
					}
253 aurelien 87
				}
239 aurelien 88
			});
253 aurelien 89
		} catch (RequestException e) {
239 aurelien 90
			Window.alert(e.getMessage());
91
		}
92
	}
93
 
253 aurelien 94
	public void obtenirInfosCommune(final Rafraichissable r,
95
			String valeurCommune, String codePostal) {
96
 
97
		codePostal = codePostal.replaceAll("000null", "*");
98
		codePostal = codePostal.replaceAll("\"", "");
99
		valeurCommune = valeurCommune.replaceAll("000null", "*");
100
		valeurCommune = valeurCommune.replaceAll("\"", "");
101
 
102
 
103
		String adresseAppel = Configuration.getServiceBaseUrl() + "/"
104
				+ NOM_SERVICE + "/*/*/" + URL.encode(valeurCommune) + "/"
105
				+ URL.encode(codePostal) + "/"
106
				+ URL.encode(CODE_PAYS);
107
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, adresseAppel);
239 aurelien 108
 
109
		try {
110
			rb.sendRequest(null, new RequestCallback() {
253 aurelien 111
 
239 aurelien 112
				public void onError(Request request, Throwable exception) {
253 aurelien 113
					Window.alert(exception.getMessage());
239 aurelien 114
				}
253 aurelien 115
 
116
				public void onResponseReceived(Request request,
117
						Response response) {
118
 
119
					if (response.getStatusCode() == Response.SC_BAD_REQUEST) {
120
						r.rafraichir("Impossible de géolocaliser cette observation", false);
121
					} else {
122
						final JSONValue responseValue = JSONParser
123
								.parse(response.getText());
124
 
125
						if (responseValue.isObject() != null) {
126
 
127
							JSONObject resultat = responseValue.isObject();
128
							JSONArray tableauCommune = resultat.get(
129
									"postalCodes").isArray();
130
 
131
							if (tableauCommune.get(0) != null) {
132
								JSONObject objetCommune = tableauCommune.get(0)
133
										.isObject();
134
 
135
								Double lng = objetCommune.get("lng").isNumber()
136
										.doubleValue();
137
								Double lat = objetCommune.get("lat").isNumber()
138
										.doubleValue();
139
								String nomCommune = objetCommune.get(
140
										"placeName").isString().stringValue();
239 aurelien 141
 
253 aurelien 142
								String idLocalite = objetCommune.get(
143
								"adminCode2").isString().stringValue();
144
 
145
								Object[] infos = { lat, lng, idLocalite, nomCommune};
146
 
147
 
148
								r.rafraichir(infos, false);
239 aurelien 149
							}
150
						}
151
					}
253 aurelien 152
				}
239 aurelien 153
			});
253 aurelien 154
		} catch (RequestException e) {
239 aurelien 155
			Window.alert(e.getMessage());
156
		}
157
	}
158
}