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
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
 
5 aperonnet 136
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele
137
					.getConfig().getServiceBaseUrl()
138
					+ "/InventoryKeyWordList/"
139
					+ iModele.getIdentifiant()
140
					+ "/"
141
					+ motcle);
142
 
143
			try {
144
				rb.sendRequest(postData, new RequestCallback() {
145
 
146
					public void onError(Request request, Throwable exception) {
147
						// TODO Auto-generated method stub
148
 
149
					}
150
 
151
					public void onResponseReceived(Request request,
152
							Response response) {
153
						if (response.equals("ERROR")) {
154
							Window
155
									.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application,"
156
											+ "nous vous invitons à recharger la page. ");
2 aperonnet 157
						}
5 aperonnet 158
					}
159
				});
2 aperonnet 160
 
5 aperonnet 161
			} catch (RequestException e) {
162
				// TODO Auto-generated catch block
163
				e.printStackTrace();
164
			}
2 aperonnet 165
		}
166
	}
167
 
168
	/**
169
	 * Envoie requete au serveur jrest pour modifier un mot clé
5 aperonnet 170
	 *
171
	 * @param motcle
172
	 *            le mots clés à modifier avec son parent et son identifiant
2 aperonnet 173
	 */
174
	public void modifierBaseDeDonnees(String motcle) {
175
 
5 aperonnet 176
		if (!motcle.equals("")) {
177
 
178
			String postData = "";
179
			postData += "&action=modification" + motcle;
180
 
116 aurelien 181
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 182
					+ "/InventoryKeyWordList/" + iModele.getIdentifiant());
2 aperonnet 183
			try {
184
				rb.sendRequest(postData, new RequestCallback() {
5 aperonnet 185
 
2 aperonnet 186
					public void onError(Request request, Throwable exception) {
187
						// TODO Auto-generated method stub
5 aperonnet 188
 
2 aperonnet 189
					}
5 aperonnet 190
 
191
					public void onResponseReceived(Request request,
192
							Response response) {
2 aperonnet 193
						// TODO Auto-generated method stub
5 aperonnet 194
 
2 aperonnet 195
					}
5 aperonnet 196
 
2 aperonnet 197
				});
198
			} catch (RequestException e) {
199
				// TODO Auto-generated catch block
200
				e.printStackTrace();
201
			}
202
		}
203
	}
5 aperonnet 204
 
2 aperonnet 205
	/**
206
	 * Envoie requete au serveur jrest pour modifier un mot clé
5 aperonnet 207
	 *
208
	 * @param motcle
209
	 *            le mots clés à ajouter avec son ancien parent, son nouveau et
210
	 *            son identifiant
2 aperonnet 211
	 */
212
	public void deplacerBaseDeDonnees(String motcle) {
213
 
5 aperonnet 214
		if (!motcle.equals("")) {
215
 
216
			String postData = "";
217
			postData += "&action=deplacement" + motcle;
218
 
116 aurelien 219
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 220
					+ "/InventoryKeyWordList/" + iModele.getIdentifiant());
2 aperonnet 221
			try {
222
				rb.sendRequest(postData, new RequestCallback() {
5 aperonnet 223
 
2 aperonnet 224
					public void onError(Request request, Throwable exception) {
225
						// TODO Auto-generated method stub
5 aperonnet 226
 
2 aperonnet 227
					}
5 aperonnet 228
 
229
					public void onResponseReceived(Request request,
230
							Response response) {
2 aperonnet 231
						// TODO Auto-generated method stub
5 aperonnet 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
	}
243
 
2 aperonnet 244
}