Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
2 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;
157 aurelien 5
import org.tela_botanica.client.observation.ObservationMediateur;
6
import org.tela_botanica.client.observation.ObservationModele;
7
 
2 aperonnet 8
import com.google.gwt.http.client.Request;
9
import com.google.gwt.http.client.RequestBuilder;
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.json.client.JSONArray;
14
import com.google.gwt.json.client.JSONParser;
15
import com.google.gwt.json.client.JSONValue;
16
import com.google.gwt.user.client.Window;
17
 
18
/**
19
 * DAO d'accès à l'arbre de mots clés
5 aperonnet 20
 *
2 aperonnet 21
 * @author aurelien
5 aperonnet 22
 *
2 aperonnet 23
 */
24
public class MotsClesAsynchroneDAO {
5 aperonnet 25
 
2 aperonnet 26
	/**
27
	 * Le modele associé au DAO
28
	 */
5 aperonnet 29
	private ImageModele iModele = null;
157 aurelien 30
 
31
	private ObservationModele oModele = null ;
32
 
33
	private String identifiant = "" ;
318 aurelien 34
 
35
	private String mode = "";
5 aperonnet 36
 
37
	public MotsClesAsynchroneDAO(ImageModele im) {
38
		iModele = im;
318 aurelien 39
		mode = "images";
157 aurelien 40
		identifiant = im.getIdentifiant();
2 aperonnet 41
	}
157 aurelien 42
 
43
	public MotsClesAsynchroneDAO(ObservationModele om) {
44
		oModele = om;
318 aurelien 45
		mode = "obs";
157 aurelien 46
		identifiant = om.getIdentifiant();
47
	}
48
 
49
 
5 aperonnet 50
 
2 aperonnet 51
	/**
5 aperonnet 52
	 * Setteur pour le modèle
53
	 *
54
	 * @param im
55
	 *            le modèle à associer
2 aperonnet 56
	 */
5 aperonnet 57
	public void setIModele(ImageModele im) {
58
		iModele = im;
2 aperonnet 59
	}
5 aperonnet 60
 
2 aperonnet 61
	/**
62
	 * Envoie une requete au serveur jrest pour obtenir l'arbre des mots clés
5 aperonnet 63
	 *
64
	 * @param r
65
	 *            le rafraichissable qui demande les données
2 aperonnet 66
	 */
5 aperonnet 67
	public void obtenirListeMotsCles(final Rafraichissable r) {
2 aperonnet 68
		// on demande tous les mots clés associés à l'utilisateur
116 aurelien 69
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
318 aurelien 70
				+ "/InventoryKeyWordList/"+mode+"/"+identifiant+"/");
5 aperonnet 71
 
2 aperonnet 72
		try {
73
			rb.sendRequest(null, new RequestCallback() {
74
 
75
				public void onError(Request request, Throwable exception) {
76
					// TODO Auto-generated method stub
5 aperonnet 77
 
2 aperonnet 78
				}
79
 
5 aperonnet 80
				public void onResponseReceived(Request request,
81
						Response response) {
318 aurelien 82
 
5 aperonnet 83
					final JSONValue responseValue = JSONParser.parse(response
84
							.getText());
318 aurelien 85
 
2 aperonnet 86
					// si la requête est un succès on reçoit un tableau
87
					if (responseValue.isArray() != null) {
5 aperonnet 88
 
2 aperonnet 89
						final JSONArray reponse = responseValue.isArray();
5 aperonnet 90
						// et on met à jour le demandeur des données
91
						r.rafraichir(reponse, true);
341 aurelien 92
					} else  {
93
						JSONArray vide = new JSONArray();
94
						r.rafraichir(vide, true);
5 aperonnet 95
					}
96
 
2 aperonnet 97
				}
5 aperonnet 98
 
99
			});
2 aperonnet 100
		} catch (RequestException e) {
101
			// TODO Auto-generated catch block
102
			e.printStackTrace();
103
		}
104
	}
5 aperonnet 105
 
2 aperonnet 106
	/**
107
	 * Envoie requete au serveur jrest pour ajouter un mot clé
5 aperonnet 108
	 *
109
	 * @param motcle
110
	 *            le mots clés à ajouter avec son parent et son identifiant
2 aperonnet 111
	 */
5 aperonnet 112
	public void ajouterBaseDeDonnees(String motcle) {
113
		if (!motcle.equals("")) {
318 aurelien 114
			String postData = motcle+"&mode="+mode;
5 aperonnet 115
 
2 aperonnet 116
			// on fait un post asynchrone
116 aurelien 117
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 118
					+ "/InventoryKeyWordList/");
2 aperonnet 119
			try {
120
				rb.sendRequest(postData, new RequestCallback() {
121
 
122
					public void onError(Request request, Throwable exception) {
123
						// TODO Auto-generated method stub
5 aperonnet 124
 
2 aperonnet 125
					}
126
 
127
					public void onResponseReceived(Request request,
128
							Response response) {
5 aperonnet 129
 
130
						// si on reçoit une erreur d'ajout, on affiche un
131
						// message d'erreur
132
						if (response.getText().equals("ERROR")) {
133
							Window
134
									.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application,"
135
											+ "nous vous invitons à recharger la page. ");
2 aperonnet 136
						}
5 aperonnet 137
 
2 aperonnet 138
					}
5 aperonnet 139
 
140
				});
2 aperonnet 141
			} catch (RequestException e) {
142
				// TODO Auto-generated catch block
143
				e.printStackTrace();
144
			}
145
		}
5 aperonnet 146
	}
147
 
2 aperonnet 148
	/**
149
	 * Envoie requete au serveur jrest pour supprimer un mot clé
5 aperonnet 150
	 *
151
	 * @param motcle
152
	 *            le mots clés à supprimer
2 aperonnet 153
	 */
5 aperonnet 154
	public void supprimerBaseDeDonnees(String motcle) {
155
		if (!motcle.equals("")) {
156
			String postData = "";
157
			postData += "&action=DELETE";
2 aperonnet 158
 
140 aurelien 159
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 160
					+ "/InventoryKeyWordList/"
341 aurelien 161
					+ mode+"/"
157 aurelien 162
					+ identifiant
5 aperonnet 163
					+ "/"
164
					+ motcle);
165
 
166
			try {
167
				rb.sendRequest(postData, new RequestCallback() {
168
 
169
					public void onError(Request request, Throwable exception) {
170
						// TODO Auto-generated method stub
171
 
172
					}
173
 
174
					public void onResponseReceived(Request request,
175
							Response response) {
176
						if (response.equals("ERROR")) {
177
							Window
178
									.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application,"
179
											+ "nous vous invitons à recharger la page. ");
2 aperonnet 180
						}
5 aperonnet 181
					}
182
				});
2 aperonnet 183
 
5 aperonnet 184
			} catch (RequestException e) {
185
				// TODO Auto-generated catch block
186
				e.printStackTrace();
187
			}
2 aperonnet 188
		}
189
	}
190
 
191
	/**
192
	 * Envoie requete au serveur jrest pour modifier un mot clé
5 aperonnet 193
	 *
194
	 * @param motcle
195
	 *            le mots clés à modifier avec son parent et son identifiant
2 aperonnet 196
	 */
197
	public void modifierBaseDeDonnees(String motcle) {
198
 
5 aperonnet 199
		if (!motcle.equals("")) {
200
 
201
			String postData = "";
318 aurelien 202
			postData += "&action=modification"+motcle;
5 aperonnet 203
 
116 aurelien 204
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
318 aurelien 205
					+ "/InventoryKeyWordList/"+mode+"/"+ identifiant);
2 aperonnet 206
			try {
207
				rb.sendRequest(postData, new RequestCallback() {
5 aperonnet 208
 
2 aperonnet 209
					public void onError(Request request, Throwable exception) {
210
						// TODO Auto-generated method stub
5 aperonnet 211
 
2 aperonnet 212
					}
5 aperonnet 213
 
214
					public void onResponseReceived(Request request,
215
							Response response) {
2 aperonnet 216
						// TODO Auto-generated method stub
5 aperonnet 217
 
2 aperonnet 218
					}
5 aperonnet 219
 
2 aperonnet 220
				});
221
			} catch (RequestException e) {
222
				// TODO Auto-generated catch block
223
				e.printStackTrace();
224
			}
225
		}
226
	}
5 aperonnet 227
 
2 aperonnet 228
	/**
229
	 * Envoie requete au serveur jrest pour modifier un mot clé
5 aperonnet 230
	 *
231
	 * @param motcle
232
	 *            le mots clés à ajouter avec son ancien parent, son nouveau et
233
	 *            son identifiant
2 aperonnet 234
	 */
235
	public void deplacerBaseDeDonnees(String motcle) {
236
 
5 aperonnet 237
		if (!motcle.equals("")) {
238
 
239
			String postData = "";
318 aurelien 240
			postData += "&action=deplacement"+motcle;
5 aperonnet 241
 
116 aurelien 242
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
318 aurelien 243
					+ "/InventoryKeyWordList/"+mode+"/"+identifiant);
2 aperonnet 244
			try {
245
				rb.sendRequest(postData, new RequestCallback() {
5 aperonnet 246
 
2 aperonnet 247
					public void onError(Request request, Throwable exception) {
248
						// TODO Auto-generated method stub
5 aperonnet 249
 
2 aperonnet 250
					}
5 aperonnet 251
 
252
					public void onResponseReceived(Request request,
253
							Response response) {
2 aperonnet 254
						// TODO Auto-generated method stub
5 aperonnet 255
 
2 aperonnet 256
					}
5 aperonnet 257
 
2 aperonnet 258
				});
259
			} catch (RequestException e) {
260
				// TODO Auto-generated catch block
261
				e.printStackTrace();
262
			}
263
		}
264
 
5 aperonnet 265
	}
266
 
2 aperonnet 267
}