Subversion Repositories eFlore/Applications.cel

Rev

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