Subversion Repositories eFlore/Applications.cel

Rev

Rev 798 | Go to most recent revision | 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) {
1008 aurelien 129
 
130
						// TODO: les messages ne devraient pas être affichés ici
131
						// mais l'architecture par très malléable complique les choses
132
						if (response.getText().equals("OK")) {
133
							com.google.gwt.user.client.Window
134
							.alert("Le mot clé a été ajouté");
135
							return;
136
						} else {
137
							com.google.gwt.user.client.Window
138
									.alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
2 aperonnet 139
						}
140
					}
5 aperonnet 141
 
142
				});
2 aperonnet 143
			} catch (RequestException e) {
144
				// TODO Auto-generated catch block
145
				e.printStackTrace();
146
			}
147
		}
5 aperonnet 148
	}
149
 
2 aperonnet 150
	/**
151
	 * Envoie requete au serveur jrest pour supprimer un mot clé
5 aperonnet 152
	 *
153
	 * @param motcle
154
	 *            le mots clés à supprimer
2 aperonnet 155
	 */
5 aperonnet 156
	public void supprimerBaseDeDonnees(String motcle) {
157
		if (!motcle.equals("")) {
158
			String postData = "";
159
			postData += "&action=DELETE";
2 aperonnet 160
 
140 aurelien 161
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 162
					+ "/InventoryKeyWordList/"
341 aurelien 163
					+ mode+"/"
157 aurelien 164
					+ identifiant
5 aperonnet 165
					+ "/"
166
					+ motcle);
167
 
168
			try {
169
				rb.sendRequest(postData, new RequestCallback() {
170
 
171
					public void onError(Request request, Throwable exception) {
172
						// TODO Auto-generated method stub
173
 
174
					}
175
 
176
					public void onResponseReceived(Request request,
177
							Response response) {
1008 aurelien 178
						// TODO: les messages ne devraient pas être affichés ici
179
						// mais l'architecture par très malléable complique les choses
180
						if (response.getText().equals("OK")) {
181
							com.google.gwt.user.client.Window
182
							.alert("Le mot clé a été supprimé");
183
							return;
184
						} else {
185
							com.google.gwt.user.client.Window
186
									.alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
2 aperonnet 187
						}
5 aperonnet 188
					}
189
				});
2 aperonnet 190
 
5 aperonnet 191
			} catch (RequestException e) {
192
				// TODO Auto-generated catch block
193
				e.printStackTrace();
194
			}
2 aperonnet 195
		}
196
	}
197
 
198
	/**
199
	 * Envoie requete au serveur jrest pour modifier un mot clé
5 aperonnet 200
	 *
201
	 * @param motcle
202
	 *            le mots clés à modifier avec son parent et son identifiant
2 aperonnet 203
	 */
204
	public void modifierBaseDeDonnees(String motcle) {
205
 
5 aperonnet 206
		if (!motcle.equals("")) {
207
 
208
			String postData = "";
318 aurelien 209
			postData += "&action=modification"+motcle;
5 aperonnet 210
 
116 aurelien 211
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
318 aurelien 212
					+ "/InventoryKeyWordList/"+mode+"/"+ identifiant);
2 aperonnet 213
			try {
214
				rb.sendRequest(postData, new RequestCallback() {
5 aperonnet 215
 
2 aperonnet 216
					public void onError(Request request, Throwable exception) {
217
						// TODO Auto-generated method stub
5 aperonnet 218
 
2 aperonnet 219
					}
5 aperonnet 220
 
221
					public void onResponseReceived(Request request,
222
							Response response) {
1008 aurelien 223
						// TODO: les messages ne devraient pas être affichés ici
224
						// mais l'architecture par très malléable complique les choses
225
						if (response.getText().equals("OK")) {
226
							com.google.gwt.user.client.Window
227
							.alert("Le mot clé a été renommé");
228
							return;
229
						} else {
230
							com.google.gwt.user.client.Window
231
									.alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
232
						}
2 aperonnet 233
					}
5 aperonnet 234
 
2 aperonnet 235
				});
236
			} catch (RequestException e) {
237
				// TODO Auto-generated catch block
238
				e.printStackTrace();
239
			}
240
		}
241
	}
5 aperonnet 242
 
2 aperonnet 243
	/**
244
	 * Envoie requete au serveur jrest pour modifier un mot clé
5 aperonnet 245
	 *
246
	 * @param motcle
247
	 *            le mots clés à ajouter avec son ancien parent, son nouveau et
248
	 *            son identifiant
2 aperonnet 249
	 */
250
	public void deplacerBaseDeDonnees(String motcle) {
251
 
5 aperonnet 252
		if (!motcle.equals("")) {
253
 
254
			String postData = "";
318 aurelien 255
			postData += "&action=deplacement"+motcle;
5 aperonnet 256
 
116 aurelien 257
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
318 aurelien 258
					+ "/InventoryKeyWordList/"+mode+"/"+identifiant);
2 aperonnet 259
			try {
260
				rb.sendRequest(postData, new RequestCallback() {
5 aperonnet 261
 
2 aperonnet 262
					public void onError(Request request, Throwable exception) {
263
						// TODO Auto-generated method stub
5 aperonnet 264
 
2 aperonnet 265
					}
5 aperonnet 266
 
267
					public void onResponseReceived(Request request,
268
							Response response) {
2 aperonnet 269
						// TODO Auto-generated method stub
5 aperonnet 270
 
2 aperonnet 271
					}
5 aperonnet 272
 
2 aperonnet 273
				});
274
			} catch (RequestException e) {
275
				// TODO Auto-generated catch block
276
				e.printStackTrace();
277
			}
278
		}
279
 
5 aperonnet 280
	}
281
 
2 aperonnet 282
}