Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
989 aurelien 1
package org.tela_botanica.client.modeles.dao;
2 aperonnet 2
 
3
import org.tela_botanica.client.interfaces.Rafraichissable;
989 aurelien 4
import org.tela_botanica.client.modeles.objets.Configuration;
5
import org.tela_botanica.client.modeles.objets.Utilisateur;
157 aurelien 6
 
2 aperonnet 7
import com.google.gwt.http.client.Request;
1918 aurelien 8
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
2 aperonnet 9
import com.google.gwt.http.client.RequestCallback;
10
import com.google.gwt.http.client.RequestException;
11
import com.google.gwt.http.client.Response;
12
import com.google.gwt.json.client.JSONArray;
13
import com.google.gwt.json.client.JSONParser;
14
import com.google.gwt.json.client.JSONValue;
15
 
16
/**
17
 * DAO d'accès à l'arbre de mots clés
5 aperonnet 18
 *
2 aperonnet 19
 * @author aurelien
5 aperonnet 20
 *
2 aperonnet 21
 */
22
public class MotsClesAsynchroneDAO {
157 aurelien 23
 
24
	private String identifiant = "" ;
318 aurelien 25
	private String mode = "";
5 aperonnet 26
 
1009 aurelien 27
	public MotsClesAsynchroneDAO() {
318 aurelien 28
		mode = "images";
937 aurelien 29
		identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
157 aurelien 30
	}
1018 aurelien 31
 
32
	public MotsClesAsynchroneDAO(String mode) {
33
		this.mode = mode;
34
		identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
35
	}
5 aperonnet 36
 
2 aperonnet 37
	/**
38
	 * Envoie une requete au serveur jrest pour obtenir l'arbre des mots clés
5 aperonnet 39
	 *
40
	 * @param r
41
	 *            le rafraichissable qui demande les données
2 aperonnet 42
	 */
5 aperonnet 43
	public void obtenirListeMotsCles(final Rafraichissable r) {
2 aperonnet 44
		// on demande tous les mots clés associés à l'utilisateur
1918 aurelien 45
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()
318 aurelien 46
				+ "/InventoryKeyWordList/"+mode+"/"+identifiant+"/");
5 aperonnet 47
 
2 aperonnet 48
		try {
49
			rb.sendRequest(null, new RequestCallback() {
50
 
1293 aurelien 51
				@Override
2 aperonnet 52
				public void onError(Request request, Throwable exception) {
53
					// TODO Auto-generated method stub
5 aperonnet 54
 
2 aperonnet 55
				}
56
 
1293 aurelien 57
				@Override
5 aperonnet 58
				public void onResponseReceived(Request request,
59
						Response response) {
318 aurelien 60
 
5 aperonnet 61
					final JSONValue responseValue = JSONParser.parse(response
62
							.getText());
318 aurelien 63
 
2 aperonnet 64
					// si la requête est un succès on reçoit un tableau
65
					if (responseValue.isArray() != null) {
5 aperonnet 66
 
2 aperonnet 67
						final JSONArray reponse = responseValue.isArray();
5 aperonnet 68
						// et on met à jour le demandeur des données
69
						r.rafraichir(reponse, true);
341 aurelien 70
					} else  {
71
						JSONArray vide = new JSONArray();
72
						r.rafraichir(vide, true);
5 aperonnet 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("")) {
318 aurelien 92
			String postData = motcle+"&mode="+mode;
5 aperonnet 93
 
2 aperonnet 94
			// on fait un post asynchrone
1918 aurelien 95
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
5 aperonnet 96
					+ "/InventoryKeyWordList/");
2 aperonnet 97
			try {
98
				rb.sendRequest(postData, new RequestCallback() {
99
 
1293 aurelien 100
					@Override
2 aperonnet 101
					public void onError(Request request, Throwable exception) {
102
						// TODO Auto-generated method stub
5 aperonnet 103
 
2 aperonnet 104
					}
105
 
1293 aurelien 106
					@Override
2 aperonnet 107
					public void onResponseReceived(Request request,
108
							Response response) {
1009 aurelien 109
 
110
						// TODO: les messages ne devraient pas être affichés ici
111
						// mais l'architecture par très malléable complique les choses
112
						if (response.getText().equals("OK")) {
113
							com.google.gwt.user.client.Window
114
							.alert("Le mot clé a été ajouté");
115
							return;
116
						} else {
117
							com.google.gwt.user.client.Window
118
									.alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
2 aperonnet 119
						}
120
					}
5 aperonnet 121
 
122
				});
2 aperonnet 123
			} catch (RequestException e) {
124
				// TODO Auto-generated catch block
125
				e.printStackTrace();
126
			}
127
		}
5 aperonnet 128
	}
129
 
2 aperonnet 130
	/**
131
	 * Envoie requete au serveur jrest pour supprimer un mot clé
5 aperonnet 132
	 *
133
	 * @param motcle
134
	 *            le mots clés à supprimer
2 aperonnet 135
	 */
5 aperonnet 136
	public void supprimerBaseDeDonnees(String motcle) {
137
		if (!motcle.equals("")) {
138
			String postData = "";
139
			postData += "&action=DELETE";
2 aperonnet 140
 
1918 aurelien 141
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
5 aperonnet 142
					+ "/InventoryKeyWordList/"
341 aurelien 143
					+ mode+"/"
157 aurelien 144
					+ identifiant
5 aperonnet 145
					+ "/"
146
					+ motcle);
147
 
148
			try {
149
				rb.sendRequest(postData, new RequestCallback() {
150
 
1293 aurelien 151
					@Override
5 aperonnet 152
					public void onError(Request request, Throwable exception) {
153
						// TODO Auto-generated method stub
154
 
155
					}
156
 
1293 aurelien 157
					@Override
5 aperonnet 158
					public void onResponseReceived(Request request,
159
							Response response) {
1009 aurelien 160
						// TODO: les messages ne devraient pas être affichés ici
161
						// mais l'architecture par très malléable complique les choses
162
						if (response.getText().equals("OK")) {
163
							com.google.gwt.user.client.Window
164
							.alert("Le mot clé a été supprimé");
165
							return;
166
						} else {
167
							com.google.gwt.user.client.Window
168
									.alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
2 aperonnet 169
						}
5 aperonnet 170
					}
171
				});
2 aperonnet 172
 
5 aperonnet 173
			} catch (RequestException e) {
174
				// TODO Auto-generated catch block
175
				e.printStackTrace();
176
			}
2 aperonnet 177
		}
178
	}
179
 
180
	/**
181
	 * Envoie requete au serveur jrest pour modifier un mot clé
5 aperonnet 182
	 *
183
	 * @param motcle
184
	 *            le mots clés à modifier avec son parent et son identifiant
2 aperonnet 185
	 */
186
	public void modifierBaseDeDonnees(String motcle) {
187
 
5 aperonnet 188
		if (!motcle.equals("")) {
189
 
190
			String postData = "";
318 aurelien 191
			postData += "&action=modification"+motcle;
5 aperonnet 192
 
1918 aurelien 193
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
318 aurelien 194
					+ "/InventoryKeyWordList/"+mode+"/"+ identifiant);
2 aperonnet 195
			try {
196
				rb.sendRequest(postData, new RequestCallback() {
5 aperonnet 197
 
1293 aurelien 198
					@Override
2 aperonnet 199
					public void onError(Request request, Throwable exception) {
200
						// TODO Auto-generated method stub
5 aperonnet 201
 
2 aperonnet 202
					}
5 aperonnet 203
 
1293 aurelien 204
					@Override
5 aperonnet 205
					public void onResponseReceived(Request request,
206
							Response response) {
1009 aurelien 207
						// TODO: les messages ne devraient pas être affichés ici
208
						// mais l'architecture par très malléable complique les choses
209
						if (response.getText().equals("OK")) {
210
							com.google.gwt.user.client.Window
211
							.alert("Le mot clé a été renommé");
212
							return;
213
						} else {
214
							com.google.gwt.user.client.Window
215
									.alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
216
						}
2 aperonnet 217
					}
5 aperonnet 218
 
2 aperonnet 219
				});
220
			} catch (RequestException e) {
221
				// TODO Auto-generated catch block
222
				e.printStackTrace();
223
			}
224
		}
225
	}
5 aperonnet 226
 
2 aperonnet 227
	/**
228
	 * Envoie requete au serveur jrest pour modifier un mot clé
5 aperonnet 229
	 *
230
	 * @param motcle
231
	 *            le mots clés à ajouter avec son ancien parent, son nouveau et
232
	 *            son identifiant
2 aperonnet 233
	 */
234
	public void deplacerBaseDeDonnees(String motcle) {
235
 
5 aperonnet 236
		if (!motcle.equals("")) {
237
 
238
			String postData = "";
318 aurelien 239
			postData += "&action=deplacement"+motcle;
5 aperonnet 240
 
1918 aurelien 241
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
318 aurelien 242
					+ "/InventoryKeyWordList/"+mode+"/"+identifiant);
2 aperonnet 243
			try {
244
				rb.sendRequest(postData, new RequestCallback() {
5 aperonnet 245
 
1293 aurelien 246
					@Override
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
 
1293 aurelien 252
					@Override
5 aperonnet 253
					public void onResponseReceived(Request request,
254
							Response response) {
2 aperonnet 255
						// TODO Auto-generated method stub
5 aperonnet 256
 
2 aperonnet 257
					}
5 aperonnet 258
 
2 aperonnet 259
				});
260
			} catch (RequestException e) {
261
				// TODO Auto-generated catch block
262
				e.printStackTrace();
263
			}
264
		}
265
 
5 aperonnet 266
	}
267
 
2 aperonnet 268
}