Subversion Repositories eFlore/Applications.cel

Rev

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