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