Subversion Repositories eFlore/Applications.cel

Rev

Rev 1918 | Details | Compare with Previous | Last modification | View Log | RSS feed

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