Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
989 aurelien 1
package org.tela_botanica.client.modeles.dao;
239 aurelien 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;
239 aurelien 6
 
779 aurelien 7
import com.google.gwt.core.client.GWT;
239 aurelien 8
import com.google.gwt.http.client.Request;
9
import com.google.gwt.http.client.RequestBuilder;
10
import com.google.gwt.http.client.RequestCallback;
11
import com.google.gwt.http.client.RequestException;
12
import com.google.gwt.http.client.Response;
13
import com.google.gwt.http.client.URL;
14
import com.google.gwt.json.client.JSONArray;
15
import com.google.gwt.json.client.JSONObject;
16
import com.google.gwt.json.client.JSONParser;
17
import com.google.gwt.json.client.JSONValue;
18
import com.google.gwt.maps.client.geom.LatLng;
19
import com.google.gwt.user.client.Window;
20
 
253 aurelien 21
public class InformationCommuneDAO {
239 aurelien 22
 
23
	private final String NOM_SERVICE = "CoordSearch";
24
	private final String CODE_PAYS = "FR";
253 aurelien 25
 
26
	Rafraichissable r = null;
27
 
28
	public InformationCommuneDAO(Rafraichissable r) {
29
		this.r = r;
239 aurelien 30
	}
31
 
258 aurelien 32
	public void obtenirCommunePlusProche(final Rafraichissable r, final double lng,
33
			final double lat) {
253 aurelien 34
 
35
		String adresseAppel = Configuration.getServiceBaseUrl() + "/"
36
				+ NOM_SERVICE + "/" + URL.encode("" + lat) + "/"
37
				+ URL.encode("" + lng) + "/*/*/";
38
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, adresseAppel);
39
 
239 aurelien 40
		try {
253 aurelien 41
			rb.sendRequest(null, new RequestCallback() {
42
 
43
				public void onError(Request request, Throwable exception) {
239 aurelien 44
					Window.alert(exception.getMessage());
45
				}
253 aurelien 46
 
47
				public void onResponseReceived(Request request,
48
						Response response) {
751 aurelien 49
 
50
					EntiteGeographiqueObservation infos;
51
					String idLocalite = "";
52
					String nomCommune = "";
253 aurelien 53
 
54
					if (response.getStatusCode() == Response.SC_BAD_REQUEST) {
239 aurelien 55
						Window.alert("Requete mal formée");
253 aurelien 56
					} else {
646 aurelien 57
 
58
						if(response.getText().equals("")) {
59
 
60
							infos = new EntiteGeographiqueObservation(idLocalite, nomCommune, null, null);
61
							infos.setLat(""+lat);
62
							infos.setLon(""+lng);
63
 
64
							r.rafraichir(infos, false);
65
						}
66
 
253 aurelien 67
						final JSONValue responseValue = JSONParser
68
								.parse(response.getText());
69
 
70
						if (responseValue.isObject() != null) {
266 aurelien 71
 
751 aurelien 72
							JSONObject objectRetour = responseValue.isObject();
73
 
74
							if(objectRetour.get("nom").isString() != null) {
75
								nomCommune = objectRetour.get("nom").isString().stringValue();
253 aurelien 76
							}
77
 
751 aurelien 78
							if(objectRetour.get("code_insee").isString() != null) {
79
								idLocalite = objectRetour.get("code_insee").isString().stringValue().substring(0, 2);
80
							}
239 aurelien 81
						}
82
					}
751 aurelien 83
 
84
					infos = new EntiteGeographiqueObservation(idLocalite, nomCommune, null, null);
85
					infos.setLat(""+lat);
86
					infos.setLon(""+lng);
87
 
88
					r.rafraichir(infos, false);
253 aurelien 89
				}
239 aurelien 90
			});
253 aurelien 91
		} catch (RequestException e) {
239 aurelien 92
			Window.alert(e.getMessage());
93
		}
94
	}
95
 
253 aurelien 96
	public void obtenirInfosCommune(final Rafraichissable r,
97
			String valeurCommune, String codePostal) {
98
 
99
		codePostal = codePostal.replaceAll("000null", "*");
100
		codePostal = codePostal.replaceAll("\"", "");
258 aurelien 101
 
102
		valeurCommune = valeurCommune.split(" \\([0-9][0-9]\\)")[0];
253 aurelien 103
		valeurCommune = valeurCommune.replaceAll("000null", "*");
104
		valeurCommune = valeurCommune.replaceAll("\"", "");
105
 
106
 
107
		String adresseAppel = Configuration.getServiceBaseUrl() + "/"
108
				+ NOM_SERVICE + "/*/*/" + URL.encode(valeurCommune) + "/"
109
				+ URL.encode(codePostal) + "/"
110
				+ URL.encode(CODE_PAYS);
111
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, adresseAppel);
239 aurelien 112
 
113
		try {
114
			rb.sendRequest(null, new RequestCallback() {
253 aurelien 115
 
239 aurelien 116
				public void onError(Request request, Throwable exception) {
253 aurelien 117
					Window.alert(exception.getMessage());
239 aurelien 118
				}
253 aurelien 119
 
120
				public void onResponseReceived(Request request,
121
						Response response) {
122
 
123
					if (response.getStatusCode() == Response.SC_BAD_REQUEST) {
124
						r.rafraichir("Impossible de géolocaliser cette observation", false);
125
					} else {
646 aurelien 126
 
127
						if(response.getText().equals("")) {
128
							EntiteGeographiqueObservation infos;
129
							String idLocalite = "";
130
							String nomCommune = "";
131
 
132
							infos = new EntiteGeographiqueObservation(idLocalite, nomCommune, null, null);
133
							infos.setLat("");
134
							infos.setLon("");
135
 
136
							r.rafraichir(infos, false);
137
						}
779 aurelien 138
 
253 aurelien 139
						final JSONValue responseValue = JSONParser
140
								.parse(response.getText());
779 aurelien 141
 
253 aurelien 142
						if (responseValue.isObject() != null) {
266 aurelien 143
 
144
							EntiteGeographiqueObservation infos;
145
							String idLocalite = "";
146
							String nomCommune = "";
147
							Double lng = 0.0;
148
							Double lat = 0.0;
779 aurelien 149
 
150
							JSONObject objectRetour = responseValue.isObject();
266 aurelien 151
 
779 aurelien 152
							if(objectRetour.get("nom").isString() != null) {
153
								nomCommune = objectRetour.get("nom").isString().stringValue();
239 aurelien 154
							}
266 aurelien 155
 
779 aurelien 156
							if(objectRetour.get("code_insee").isString() != null) {
157
								idLocalite = objectRetour.get("code_insee").isString().stringValue().substring(0, 2);
158
							}
159
 
160
							if(objectRetour.get("lat").isNumber() != null) {
161
								lat = objectRetour.get("lat").isNumber().doubleValue();
162
							}
163
 
164
							if(objectRetour.get("lng").isNumber() != null) {
165
								lng = objectRetour.get("lng").isNumber().doubleValue();
166
							}
167
 
168
 
266 aurelien 169
							infos = new EntiteGeographiqueObservation(idLocalite, nomCommune, null, null);
170
							infos.setLat(""+lat);
171
							infos.setLon(""+lng);
779 aurelien 172
 
266 aurelien 173
							r.rafraichir(infos, false);
239 aurelien 174
						}
175
					}
253 aurelien 176
				}
239 aurelien 177
			});
253 aurelien 178
		} catch (RequestException e) {
239 aurelien 179
			Window.alert(e.getMessage());
180
		}
181
	}
182
}