Subversion Repositories eFlore/Applications.cel

Rev

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;
1918 aurelien 9
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
239 aurelien 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) + "/*/*/";
1918 aurelien 36
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, adresseAppel);
253 aurelien 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);
1918 aurelien 111
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.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);
1317 aurelien 127
					} else {
253 aurelien 128
						final JSONValue responseValue = JSONParser
129
								.parse(response.getText());
779 aurelien 130
 
253 aurelien 131
						if (responseValue.isObject() != null) {
266 aurelien 132
 
133
							EntiteGeographiqueObservation infos;
134
							Double lng = 0.0;
135
							Double lat = 0.0;
779 aurelien 136
 
137
							JSONObject objectRetour = responseValue.isObject();
266 aurelien 138
 
1293 aurelien 139
							String nomCommune = Util.getValeurJsonOuVide(objectRetour, "nom");
140
							String idLocalite = Util.getValeurJsonOuVide(objectRetour, "code_insee");
141
							lat = Util.jsonNonNull(objectRetour,"lat") ? objectRetour.get("lat").isNumber().doubleValue(): 0.0;
142
							lng = Util.jsonNonNull(objectRetour,"lng") ? objectRetour.get("lng").isNumber().doubleValue(): 0.0;
143
 
266 aurelien 144
							infos = new EntiteGeographiqueObservation(idLocalite, nomCommune, null, null);
145
							infos.setLat(""+lat);
146
							infos.setLon(""+lng);
779 aurelien 147
 
266 aurelien 148
							r.rafraichir(infos, false);
1317 aurelien 149
						} else {
150
							EntiteGeographiqueObservation infos;
151
							String idLocalite = "";
152
							String nomCommune = "";
153
 
154
							infos = new EntiteGeographiqueObservation(idLocalite, nomCommune, null, null);
155
							infos.setLat("");
156
							infos.setLon("");
157
 
158
							r.rafraichir(infos, false);
239 aurelien 159
						}
160
					}
253 aurelien 161
				}
239 aurelien 162
			});
253 aurelien 163
		} catch (RequestException e) {
239 aurelien 164
			Window.alert(e.getMessage());
165
		}
166
	}
167
}