Subversion Repositories eFlore/Applications.cel

Rev

Rev 971 | Rev 1293 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 971 Rev 989
1
package org.tela_botanica.client.modeles;
1
package org.tela_botanica.client.modeles.dao;
2
 
2
 
3
import org.tela_botanica.client.image.ImageModele;
3
import org.tela_botanica.client.image.ImageModele;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
5
import org.tela_botanica.client.modeles.objets.Configuration;
-
 
6
import org.tela_botanica.client.modeles.objets.ListeObservation;
-
 
7
import org.tela_botanica.client.modeles.objets.Observation;
5
import org.tela_botanica.client.observation.ObservationModele;
8
import org.tela_botanica.client.observation.ObservationModele;
6
import org.tela_botanica.client.util.Util;
9
import org.tela_botanica.client.util.Util;
7
 
10
 
8
import com.google.gwt.core.client.GWT;
11
import com.google.gwt.core.client.GWT;
9
import com.google.gwt.http.client.Request;
12
import com.google.gwt.http.client.Request;
10
import com.google.gwt.http.client.RequestBuilder;
13
import com.google.gwt.http.client.RequestBuilder;
11
import com.google.gwt.http.client.RequestCallback;
14
import com.google.gwt.http.client.RequestCallback;
12
import com.google.gwt.http.client.RequestException;
15
import com.google.gwt.http.client.RequestException;
13
import com.google.gwt.http.client.Response;
16
import com.google.gwt.http.client.Response;
14
import com.google.gwt.http.client.URL;
17
import com.google.gwt.http.client.URL;
15
import com.google.gwt.json.client.JSONArray;
18
import com.google.gwt.json.client.JSONArray;
16
import com.google.gwt.json.client.JSONObject;
19
import com.google.gwt.json.client.JSONObject;
17
import com.google.gwt.json.client.JSONParser;
20
import com.google.gwt.json.client.JSONParser;
18
import com.google.gwt.json.client.JSONString;
21
import com.google.gwt.json.client.JSONString;
19
import com.google.gwt.json.client.JSONValue;
22
import com.google.gwt.json.client.JSONValue;
20
import com.google.gwt.user.client.Window;
23
import com.google.gwt.user.client.Window;
21
 
24
 
22
/**
25
/**
23
 * DAO la liste des observations attachées a un observateur.
26
 * DAO la liste des observations attachées a un observateur.
24
 * @author David Delon
27
 * @author David Delon
25
 * TODO : se servir de ObservationDAO pour la lecture unitaire
28
 * TODO : se servir de ObservationDAO pour la lecture unitaire
26
 *
29
 *
27
 */
30
 */
28
public class ListeObservationAsynchroneDAO {
31
public class ListeObservationAsynchroneDAO {
29
 
32
 
30
 
33
 
31
/**
34
/**
32
 * Le modèle associé au DAO.
35
 * Le modèle associé au DAO.
33
 */
36
 */
34
 private ObservationModele observationModele = null;
37
 private ObservationModele observationModele = null;
35
 
38
 
36
 private ImageModele imageModele = null;
39
 private ImageModele imageModele = null;
37
 
40
 
38
 public ListeObservationAsynchroneDAO(final ObservationModele obs) {
41
 public ListeObservationAsynchroneDAO(final ObservationModele obs) {
39
  this.observationModele=obs;
42
  this.observationModele=obs;
40
 }
43
 }
41
 
44
 
42
 /**
45
 /**
43
  * Le modèle associé au DAO.
46
  * Le modèle associé au DAO.
44
  */
47
  */
45
 
48
 
46
  public ListeObservationAsynchroneDAO(final ImageModele img) {
49
  public ListeObservationAsynchroneDAO(final ImageModele img) {
47
	  this.imageModele = img;
50
	  this.imageModele = img;
48
  }
51
  }
49
	
52
	
50
	
53
	
51
	/**
54
	/**
52
	 * Envoie une requete au serveur jrest pour obtenir le nombre d'observation correspondant
55
	 * Envoie une requete au serveur jrest pour obtenir le nombre d'observation correspondant
53
	 * à des critères données en paramètres
56
	 * à des critères données en paramètres
54
	 * @param r le rafraichissable qui demande la mise à jour
57
	 * @param r le rafraichissable qui demande la mise à jour
55
	 * @param criteres un tableau nom/valeur des critères pour les observations
58
	 * @param criteres un tableau nom/valeur des critères pour les observations
56
	 */
59
	 */
57
	public final void obtenirListeObservation(final Rafraichissable r, final String utilisateur, final String[][] criteres)
60
	public final void obtenirListeObservation(final Rafraichissable r, final String utilisateur, final String[][] criteres)
58
	{	
61
	{	
59
		String requete = "" ;
62
		String requete = "" ;
60
			
63
			
61
		if(criteres != null)
64
		if(criteres != null)
62
		{
65
		{
63
			// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
66
			// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
64
			// ils contiennent limite et taille page et autres filtres (communes , lieu dit etc ...)S
67
			// ils contiennent limite et taille page et autres filtres (communes , lieu dit etc ...)S
65
			
68
			
66
			for (int i = 0; i < criteres.length; i++) {
69
			for (int i = 0; i < criteres.length; i++) {
67
				
70
				
68
				if(criteres[i][1] != null && !criteres[i][1].equals(""))
71
				if(criteres[i][1] != null && !criteres[i][1].equals(""))
69
				{
72
				{
70
					if(i!= 0)
73
					if(i!= 0)
71
					{
74
					{
72
						requete += "&";
75
						requete += "&";
73
					}
76
					}
74
					requete += criteres[i][0]+"="+URL.encodeComponent(criteres[i][1]) ;
77
					requete += criteres[i][0]+"="+URL.encodeComponent(criteres[i][1]) ;
75
				}
78
				}
76
			}
79
			}
77
		}
80
		}
78
		
81
		
79
		// on envoie le get asynchrone
82
		// on envoie le get asynchrone
80
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,Configuration.getServiceBaseUrl()
83
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,Configuration.getServiceBaseUrl()
81
				+"/InventoryObservationList/"+utilisateur+"/"+requete) ;
84
				+"/InventoryObservationList/"+utilisateur+"/"+requete) ;
82
		
85
		
83
		try {
86
		try {
84
			rb.sendRequest(null, new RequestCallback() {
87
			rb.sendRequest(null, new RequestCallback() {
85
 
88
 
86
				public void onError(final Request request, final Throwable exception) {
89
				public void onError(final Request request, final Throwable exception) {
87
					// TODO Auto-generated method stub
90
					// TODO Auto-generated method stub
88
					
91
					
89
				}
92
				}
90
 
93
 
91
				public void onResponseReceived(final Request request,
94
				public void onResponseReceived(final Request request,
92
						final Response response) {
95
						final Response response) {
93
					
96
					
94
					final ListeObservation observationData ;
97
					final ListeObservation observationData ;
95
					final JSONValue responseValue = JSONParser.parse(response.getText());
98
					final JSONValue responseValue = JSONParser.parse(response.getText());
96
								
99
								
97
					JSONArray reponse=null;
100
					JSONArray reponse=null;
98
					
101
					
99
					// si c'est un tableau
102
					// si c'est un tableau
100
					if ((reponse=responseValue.isArray()) != null) {
103
					if ((reponse=responseValue.isArray()) != null) {
101
						
104
						
102
						JSONObject observation;
105
						JSONObject observation;
103
						final int taillemax = reponse.size();
106
						final int taillemax = reponse.size();
104
						
107
						
105
						observationData = new ListeObservation(taillemax);
108
						observationData = new ListeObservation(taillemax);
106
						
109
						
107
						for (int i = 0; i < taillemax; i++) {
110
						for (int i = 0; i < taillemax; i++) {
108
							
111
							
109
							if ((observation=reponse.get(i).isObject()) != null) {								
112
							if ((observation=reponse.get(i).isObject()) != null) {								
110
								
113
								
111
								Observation obs = new Observation(observation);
114
								Observation obs = new Observation(observation);
112
								observationData.put(obs.getNumeroOrdre(),obs);
115
								observationData.put(obs.getNumeroOrdre(),obs);
113
							}
116
							}
114
						}
117
						}
115
					} else {
118
					} else {
116
						
119
						
117
						observationData = new ListeObservation(0) ;
120
						observationData = new ListeObservation(0) ;
118
					}
121
					}
119
										
122
										
120
					// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
123
					// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
121
					// le premier à les recevoir
124
					// le premier à les recevoir
122
					
125
					
123
					// TODO : ce n'est pas ici qu'on devrait le decider ..
126
					// TODO : ce n'est pas ici qu'on devrait le decider ..
124
					r.rafraichir(observationData,true);	
127
					r.rafraichir(observationData,true);	
125
				}
128
				}
126
			}) ;
129
			}) ;
127
 
130
 
128
		} catch (RequestException e) {
131
		} catch (RequestException e) {
129
			// TODO Auto-generated catch block
132
			// TODO Auto-generated catch block
130
			e.printStackTrace();
133
			e.printStackTrace();
131
		}
134
		}
132
	}
135
	}
133
	
136
	
134
	public void modifierEnMasse(final Rafraichissable r, String identifiant,
137
	public void modifierEnMasse(final Rafraichissable r, String identifiant,
135
			final Observation obs) {
138
			final Observation obs) {
136
 
139
 
137
				RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,Configuration.getServiceBaseUrl()+ "/InventoryObservationList/" + identifiant + "/" + obs.getNumeroOrdre()+ "/") ;
140
				RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,Configuration.getServiceBaseUrl()+ "/InventoryObservationList/" + identifiant + "/" + obs.getNumeroOrdre()+ "/") ;
138
				
141
				
139
				String postData = "ce_utilisateur="
142
				String postData = "ce_utilisateur="
140
					+ identifiant ;
143
					+ identifiant ;
141
				if(obs.getNomSaisi() != null) {
144
				if(obs.getNomSaisi() != null) {
142
					postData += "&nom_sel=" + URL.encodeComponent(obs.getNomSaisi());
145
					postData += "&nom_sel=" + URL.encodeComponent(obs.getNomSaisi());
143
				}
146
				}
144
				if(obs.getNumeroNomenclaturalSaisi() != null) {
147
				if(obs.getNumeroNomenclaturalSaisi() != null) {
145
					postData += "&nom_sel_nn=" + obs.getNumeroNomenclaturalSaisi();
148
					postData += "&nom_sel_nn=" + obs.getNumeroNomenclaturalSaisi();
146
				}
149
				}
147
				
150
				
148
				if(obs.getIdentifiantLocalite() != null) {
151
				if(obs.getIdentifiantLocalite() != null) {
149
					postData += "&ce_zone_geo=" + obs.getIdentifiantLocalite();
152
					postData += "&ce_zone_geo=" + obs.getIdentifiantLocalite();
150
				}
153
				}
151
				
154
				
152
				if(obs.getLocalite() != null) {
155
				if(obs.getLocalite() != null) {
153
					postData += "&zone_geo=" + URL.encodeComponent(obs.getLocalite()); 
156
					postData += "&zone_geo=" + URL.encodeComponent(obs.getLocalite()); 
154
				}
157
				}
155
				
158
				
156
				if(obs.getDate() != null) {
159
				if(obs.getDate() != null) {
157
					postData += "&date_observation=" +  obs.getDate();
160
					postData += "&date_observation=" +  obs.getDate();
158
				}
161
				}
159
				
162
				
160
				if(obs.getLieudit() != null) {
163
				if(obs.getLieudit() != null) {
161
					postData += "&lieudit="+ URL.encodeComponent(obs.getLieudit()); 
164
					postData += "&lieudit="+ URL.encodeComponent(obs.getLieudit()); 
162
				}
165
				}
163
				
166
				
164
				if(obs.getStation() != null) {
167
				if(obs.getStation() != null) {
165
					postData += "&station="+ URL.encodeComponent(obs.getStation());
168
					postData += "&station="+ URL.encodeComponent(obs.getStation());
166
				}
169
				}
167
				
170
				
168
				if(obs.getMilieu() != null) {
171
				if(obs.getMilieu() != null) {
169
					postData += "&milieu="+ URL.encodeComponent(obs.getMilieu());
172
					postData += "&milieu="+ URL.encodeComponent(obs.getMilieu());
170
				}
173
				}
171
				
174
				
172
				if(obs.getCommentaire() != null) {
175
				if(obs.getCommentaire() != null) {
173
					postData += "&commentaire="+obs.getCommentaire();
176
					postData += "&commentaire="+obs.getCommentaire();
174
				}
177
				}
175
				
178
				
176
				if(obs.getLatitude() != null ) {
179
				if(obs.getLatitude() != null ) {
177
					postData += "&latitude="+URL.encodeComponent(""+obs.getLatitude());
180
					postData += "&latitude="+URL.encodeComponent(""+obs.getLatitude());
178
				}
181
				}
179
				
182
				
180
				if(obs.getLongitude() != null) {
183
				if(obs.getLongitude() != null) {
181
					postData += "&longitude="+URL.encodeComponent(""+obs.getLongitude());
184
					postData += "&longitude="+URL.encodeComponent(""+obs.getLongitude());
182
				}
185
				}
183
 
186
 
184
				try {
187
				try {
185
					
188
					
186
					rb.sendRequest(postData, new RequestCallback() {
189
					rb.sendRequest(postData, new RequestCallback() {
187
 
190
 
188
						public void onError(Request request, Throwable exception) {
191
						public void onError(Request request, Throwable exception) {
189
							// TODO Auto-generated method stub
192
							// TODO Auto-generated method stub
190
							
193
							
191
						}
194
						}
192
 
195
 
193
						public void onResponseReceived(Request request,
196
						public void onResponseReceived(Request request,
194
								Response response) {
197
								Response response) {
195
							if(observationModele != null) {
198
							if(observationModele != null) {
196
								observationModele.obtenirListeObservation(r);
199
								observationModele.obtenirListeObservation(r);
197
							}
200
							}
198
						}
201
						}
199
						
202
						
200
						
203
						
201
					}) ;
204
					}) ;
202
					
205
					
203
				} catch (RequestException e) {
206
				} catch (RequestException e) {
204
					
207
					
205
			}
208
			}
206
		
209
		
207
	}
210
	}
208
 
211
 
209
	/**
212
	/**
210
	 * Supprime les observations possédant les identifiants données
213
	 * Supprime les observations possédant les identifiants données
211
	 * @param r le rafraichissable à avertir de la mise à jour
214
	 * @param r le rafraichissable à avertir de la mise à jour
212
	 * @param identifiant l'identifiant utilisateur
215
	 * @param identifiant l'identifiant utilisateur
213
	 * @param numerosOrdre les numéros d'ordre des observations séparés par des virgules
216
	 * @param numerosOrdre les numéros d'ordre des observations séparés par des virgules
214
	 */
217
	 */
215
	public void supprimerListeObservation(Rafraichissable r, String identifiant, String numerosOrdre) {
218
	public void supprimerListeObservation(Rafraichissable r, String identifiant, String numerosOrdre) {
216
		
219
		
217
		String postData = "";
220
		String postData = "";
218
		postData += "&action=DELETE";
221
		postData += "&action=DELETE";
219
 
222
 
220
		// on envoie un post avec l'id de l'image à supprimer
223
		// on envoie un post avec l'id de l'image à supprimer
221
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, 
224
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, 
222
				Configuration.getServiceBaseUrl()
225
				Configuration.getServiceBaseUrl()
223
				+ "/inventoryObservationList/"
226
				+ "/inventoryObservationList/"
224
				+ identifiant
227
				+ identifiant
225
				+ "/"
228
				+ "/"
226
				+ numerosOrdre);
229
				+ numerosOrdre);
227
 
230
 
228
		try {
231
		try {
229
			rb.sendRequest(postData, new RequestCallback() {
232
			rb.sendRequest(postData, new RequestCallback() {
230
 
233
 
231
				public void onError(Request request, Throwable exception) {
234
				public void onError(Request request, Throwable exception) {
232
					// TODO Auto-generated method stub
235
					// TODO Auto-generated method stub
233
 
236
 
234
				}
237
				}
235
 
238
 
236
				public void onResponseReceived(Request request,
239
				public void onResponseReceived(Request request,
237
						Response response) {
240
						Response response) {
238
 
241
 
239
					if (response.getText().equals("OK")) {
242
					if (response.getText().equals("OK")) {
240
						
243
						
241
 
244
 
242
					} else {
245
					} else {
243
						com.google.gwt.user.client.Window
246
						com.google.gwt.user.client.Window
244
								.alert("Problème lors de la mise à jour des données");
247
								.alert("Problème lors de la mise à jour des données");
245
						return ;
248
						return ;
246
					}
249
					}
247
				}
250
				}
248
 
251
 
249
			});
252
			});
250
			
253
			
251
			r.rafraichir("OK", true) ;
254
			r.rafraichir("OK", true) ;
252
 
255
 
253
		} catch (RequestException e) {
256
		} catch (RequestException e) {
254
			// TODO Auto-generated catch block
257
			// TODO Auto-generated catch block
255
			e.printStackTrace();
258
			e.printStackTrace();
256
		}
259
		}
257
		
260
		
258
	}
261
	}
259
	
262
	
260
}
263
}