Subversion Repositories eFlore/Applications.cel

Rev

Rev 971 | Rev 989 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5 aperonnet 1
package org.tela_botanica.client.modeles;
2
 
3
import org.tela_botanica.client.image.ImageModele;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
94 jpm 5
import org.tela_botanica.client.observation.ObservationModele;
730 aurelien 6
import org.tela_botanica.client.util.Util;
5 aperonnet 7
 
596 aurelien 8
import com.google.gwt.core.client.GWT;
5 aperonnet 9
import com.google.gwt.http.client.Request;
10
import com.google.gwt.http.client.RequestBuilder;
11
import com.google.gwt.http.client.RequestCallback;
12
import com.google.gwt.http.client.RequestException;
13
import com.google.gwt.http.client.Response;
94 jpm 14
import com.google.gwt.json.client.JSONArray;
973 aurelien 15
import com.google.gwt.json.client.JSONObject;
94 jpm 16
import com.google.gwt.json.client.JSONParser;
17
import com.google.gwt.json.client.JSONString;
18
import com.google.gwt.json.client.JSONValue;
5 aperonnet 19
import com.google.gwt.user.client.Window;
20
 
21
public class LienImageAsynchroneDAO {
22
 
23
	private ImageModele iModele = null ;
24
 
94 jpm 25
	private ObservationModele oModele = null ;
26
 
27
	private Rafraichissable raf = null ;
28
 
5 aperonnet 29
	public LienImageAsynchroneDAO(ImageModele im) {
30
		iModele = im;
31
	}
94 jpm 32
 
33
	public LienImageAsynchroneDAO(ObservationModele om) {
34
		oModele = om;
35
	}
5 aperonnet 36
 
37
	/**
38
	 * Setteur pour le modèle
39
	 *
40
	 * @param im
41
	 *            le modèle à associer
42
	 */
43
	public void setIModele(ImageModele im) {
44
		iModele = im;
45
	}
46
 
47
	public void obtenirLiaisonsImagesObservations(Rafraichissable r,String id)
48
	{
973 aurelien 49
		String paramGet = "id_image="+id ;
99 jpm 50
 
51
		raf = r ;
52
 
5 aperonnet 53
		// et on envoie ça au serveur
104 jpm 54
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
971 aurelien 55
				+ "/inventoryImageLink/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "/" + paramGet);
62 jpm 56
			try {
57
				rb.sendRequest(null, new RequestCallback() {
58
 
59
					public void onError(Request request, Throwable exception) {
60
						// TODO Auto-generated method stub
61
 
62
					}
63
 
64
					public void onResponseReceived(Request request,
65
							Response response) {
66
 
99 jpm 67
						final ListeObservation observationData ;
68
						final JSONValue responseValue = JSONParser.parse(response.getText());
69
 
70
						JSONArray reponse=null;
71
 
72
						// si c'est un tableau
73
						if ((reponse=responseValue.isArray()) != null) {
74
 
973 aurelien 75
							JSONObject observation;
99 jpm 76
							final int taillemax = reponse.size();
77
 
78
							observationData = new ListeObservation(taillemax);
79
 
80
							for (int i = 0; i < taillemax; i++) {
81
 
973 aurelien 82
								if ((observation = reponse.get(i).isObject()) != null) {
99 jpm 83
 
973 aurelien 84
									Observation obs= new Observation(observation);
107 aurelien 85
									observationData.put(obs.getNumeroOrdre(),obs);
86
								}
99 jpm 87
							}
88
						} else {
89
 
90
							observationData = new ListeObservation(0) ;
91
						}
92
 
93
						// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
94
						// le premier à les recevoir
95
 
96
						// TODO : ce n'est pas ici qu'on devrait le decider ..
97
						raf.rafraichir(observationData,true);
62 jpm 98
					}
99
				});
100
 
101
			} catch (RequestException e) {
102
				// TODO Auto-generated catch block
103
				e.printStackTrace();
104
			}
5 aperonnet 105
	}
106
 
94 jpm 107
	public void obtenirLiaisonsObservationsImages(Rafraichissable r,String idObs, String utilisateur)
108
	{
973 aurelien 109
		String paramGet = "id_observation="+idObs ;
94 jpm 110
		raf = r ;
111
 
112
		// et on envoie ça au serveur
104 jpm 113
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
94 jpm 114
				+ "/inventoryImageLink/" + utilisateur + "/" + paramGet);
115
			try {
116
				rb.sendRequest(null, new RequestCallback() {
117
 
118
					public void onError(Request request, Throwable exception) {
119
						// TODO Auto-generated method stub
120
 
121
					}
122
 
123
					public void onResponseReceived(Request request,
124
							Response response) {
125
 
104 jpm 126
						String baseUrl = Configuration.getImageBaseUrl() ;
94 jpm 127
 
128
						final JSONValue responseValue = JSONParser.parse(response
129
								.getText());
130
						// si c'est un tableau
131
						if (responseValue.isArray() != null) {
132
 
133
							final JSONArray reponse = responseValue.isArray();
134
 
135
							final int taillemax = reponse.size();
136
 
210 aurelien 137
							String imgTab[][] = new String[taillemax][3] ;
94 jpm 138
 
139
							for(int i = 0 ;i<taillemax ;i++)
140
							{
141
 
973 aurelien 142
								final JSONObject reponseInt = reponse.get(i).isObject();
143
								String idImg = ((JSONString)reponseInt.get("id_image")).stringValue() ;
144
								String X = ((JSONString)reponseInt.get("hauteur")).stringValue() ;
145
								String Y = ((JSONString)reponseInt.get("largeur")).stringValue() ;
210 aurelien 146
								imgTab[i][0] = idImg ;
147
								imgTab[i][1] = X ;
148
								imgTab[i][2] = Y ;
94 jpm 149
 
150
							}
151
 
104 jpm 152
							raf.rafraichir(imgTab, false) ;
94 jpm 153
						}
154
						else
155
						{
104 jpm 156
							String imgTab[] = new String[0] ;
157
							raf.rafraichir(imgTab, false) ;
94 jpm 158
						}
159
					}
160
 
161
				});
162
 
163
			} catch (RequestException e) {
164
				// TODO Auto-generated catch block
165
				e.printStackTrace();
166
			}
167
	}
168
 
5 aperonnet 169
	public void lierImageBaseDeDonnees(String idsImages, String idsObs) {
170
 
171
		String postData = "";
172
 
973 aurelien 173
		postData += "id_image="+idsImages ;
971 aurelien 174
		postData += "&id_observation="+idsObs ;
175
		postData += "&ce_utilisateur="+Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() ;
5 aperonnet 176
 
177
		// et on envoie ça au serveur
104 jpm 178
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 179
				+ "/inventoryImageLink/");
210 aurelien 180
		try {
181
			rb.sendRequest(postData, new RequestCallback() {
182
 
183
				public void onError(Request request, Throwable exception) {
184
					// TODO Auto-generated method stub
185
 
186
				}
187
 
188
				public void onResponseReceived(Request request,
189
						Response response) {
190
 
398 aurelien 191
					iModele.requeteTerminee();
210 aurelien 192
 
193
				}
194
			});
195
 
196
		} catch (RequestException e) {
197
			// TODO Auto-generated catch block
198
			e.printStackTrace();
5 aperonnet 199
		}
200
	}
104 jpm 201
 
202
	public void supprimerLienImageObservation(String idImg, String idObs) {
203
 
204
		String postData = "";
205
 
206
		postData += "&action=DELETE" ;
207
		String identifiant = "" ;
208
 
971 aurelien 209
		identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
596 aurelien 210
 
104 jpm 211
		// et on envoie ça au serveur
212
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
213
				+ "/inventoryImageLink/"+identifiant+"/"+idImg+"/"+idObs);
214
 
215
			try {
216
				rb.sendRequest(postData, new RequestCallback() {
217
 
218
					public void onError(Request request, Throwable exception) {
219
						// TODO Auto-generated method stub
220
 
221
					}
222
 
223
					public void onResponseReceived(Request request,
224
							Response response) {
225
 
226
						// quand la requête est éxecutée on le signale au modèle
973 aurelien 227
						// pour qu'il mette à jour les données
104 jpm 228
						// et en notifie le médiateur
411 aurelien 229
						iModele.requeteTerminee();
104 jpm 230
 
231
					}
232
				});
233
 
234
			} catch (RequestException e) {
235
				// TODO Auto-generated catch block
236
				e.printStackTrace();
237
			}
238
	}
5 aperonnet 239
}