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;
1293 aurelien 6
import org.tela_botanica.client.util.Util;
239 aurelien 7
 
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.JSONObject;
15
import com.google.gwt.json.client.JSONParser;
16
import com.google.gwt.json.client.JSONValue;
17
import com.google.gwt.user.client.Window;
18
 
253 aurelien 19
public class InformationCommuneDAO {
239 aurelien 20
 
21
	private final String NOM_SERVICE = "CoordSearch";
22
	private final String CODE_PAYS = "FR";
253 aurelien 23
 
24
	Rafraichissable r = null;
25
 
26
	public InformationCommuneDAO(Rafraichissable r) {
27
		this.r = r;
239 aurelien 28
	}
29
 
258 aurelien 30
	public void obtenirCommunePlusProche(final Rafraichissable r, final double lng,
31
			final double lat) {
253 aurelien 32
 
33
		String adresseAppel = Configuration.getServiceBaseUrl() + "/"
34
				+ NOM_SERVICE + "/" + URL.encode("" + lat) + "/"
35
				+ URL.encode("" + lng) + "/*/*/";
36
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, adresseAppel);
37
 
239 aurelien 38
		try {
253 aurelien 39
			rb.sendRequest(null, new RequestCallback() {
40
 
1293 aurelien 41
				@Override
253 aurelien 42
				public void onError(Request request, Throwable exception) {
239 aurelien 43
					Window.alert(exception.getMessage());
44
				}
253 aurelien 45
 
1293 aurelien 46
				@Override
253 aurelien 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
 
1293 aurelien 116
				@Override
239 aurelien 117
				public void onError(Request request, Throwable exception) {
253 aurelien 118
					Window.alert(exception.getMessage());
239 aurelien 119
				}
253 aurelien 120
 
1293 aurelien 121
				@Override
253 aurelien 122
				public void onResponseReceived(Request request,
123
						Response response) {
124
 
125
					if (response.getStatusCode() == Response.SC_BAD_REQUEST) {
126
						r.rafraichir("Impossible de géolocaliser cette observation", false);
127
					} else {
646 aurelien 128
 
129
						if(response.getText().equals("")) {
130
							EntiteGeographiqueObservation infos;
131
							String idLocalite = "";
132
							String nomCommune = "";
133
 
134
							infos = new EntiteGeographiqueObservation(idLocalite, nomCommune, null, null);
135
							infos.setLat("");
136
							infos.setLon("");
137
 
138
							r.rafraichir(infos, false);
139
						}
779 aurelien 140
 
253 aurelien 141
						final JSONValue responseValue = JSONParser
142
								.parse(response.getText());
779 aurelien 143
 
253 aurelien 144
						if (responseValue.isObject() != null) {
266 aurelien 145
 
146
							EntiteGeographiqueObservation infos;
147
							Double lng = 0.0;
148
							Double lat = 0.0;
779 aurelien 149
 
150
							JSONObject objectRetour = responseValue.isObject();
266 aurelien 151
 
1293 aurelien 152
							String nomCommune = Util.getValeurJsonOuVide(objectRetour, "nom");
153
							String idLocalite = Util.getValeurJsonOuVide(objectRetour, "code_insee");
154
							lat = Util.jsonNonNull(objectRetour,"lat") ? objectRetour.get("lat").isNumber().doubleValue(): 0.0;
155
							lng = Util.jsonNonNull(objectRetour,"lng") ? objectRetour.get("lng").isNumber().doubleValue(): 0.0;
156
 
266 aurelien 157
							infos = new EntiteGeographiqueObservation(idLocalite, nomCommune, null, null);
158
							infos.setLat(""+lat);
159
							infos.setLon(""+lng);
779 aurelien 160
 
266 aurelien 161
							r.rafraichir(infos, false);
239 aurelien 162
						}
163
					}
253 aurelien 164
				}
239 aurelien 165
			});
253 aurelien 166
		} catch (RequestException e) {
239 aurelien 167
			Window.alert(e.getMessage());
168
		}
169
	}
170
}