Subversion Repositories eFlore/Applications.cel

Rev

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