Subversion Repositories eFlore/Applications.cel

Rev

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