Subversion Repositories eFlore/Applications.cel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
989 aurelien 1
package org.tela_botanica.client.modeles.dao;
2 aperonnet 2
 
2621 aurelien 3
import org.tela_botanica.client.i18n.Msg;
2 aperonnet 4
import org.tela_botanica.client.interfaces.Rafraichissable;
989 aurelien 5
import org.tela_botanica.client.modeles.objets.Configuration;
6
import org.tela_botanica.client.modeles.objets.Utilisateur;
157 aurelien 7
 
2 aperonnet 8
import com.google.gwt.http.client.Request;
1918 aurelien 9
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
2 aperonnet 10
import com.google.gwt.http.client.RequestCallback;
11
import com.google.gwt.http.client.RequestException;
12
import com.google.gwt.http.client.Response;
13
import com.google.gwt.json.client.JSONArray;
14
import com.google.gwt.json.client.JSONParser;
15
import com.google.gwt.json.client.JSONValue;
2042 aurelien 16
import com.google.gwt.user.client.Window;
2 aperonnet 17
 
18
/**
19
 * DAO d'accès à l'arbre de mots clés
5 aperonnet 20
 *
2 aperonnet 21
 * @author aurelien
5 aperonnet 22
 *
2 aperonnet 23
 */
24
public class MotsClesAsynchroneDAO {
157 aurelien 25
 
26
	private String identifiant = "" ;
318 aurelien 27
	private String mode = "";
2042 aurelien 28
	private String nomService = "InventoryKeywordTree";
29
	//private String nomService = "InventoryKeyWordList";
5 aperonnet 30
 
1009 aurelien 31
	public MotsClesAsynchroneDAO() {
318 aurelien 32
		mode = "images";
937 aurelien 33
		identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
157 aurelien 34
	}
1018 aurelien 35
 
36
	public MotsClesAsynchroneDAO(String mode) {
37
		this.mode = mode;
38
		identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
39
	}
5 aperonnet 40
 
2 aperonnet 41
	/**
42
	 * Envoie une requete au serveur jrest pour obtenir l'arbre des mots clés
5 aperonnet 43
	 *
44
	 * @param r
45
	 *            le rafraichissable qui demande les données
2 aperonnet 46
	 */
5 aperonnet 47
	public void obtenirListeMotsCles(final Rafraichissable r) {
2 aperonnet 48
		// on demande tous les mots clés associés à l'utilisateur
1918 aurelien 49
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()
2042 aurelien 50
				+ "/"+nomService+"/"+mode+"/"+identifiant+"/");
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
						// TODO: les messages ne devraient pas être affichés ici
2062 aurelien 114
						// mais l'architecture pas très malléable complique les choses
2042 aurelien 115
						try {
116
							Integer idMotcle = Integer.parseInt(response.getText());
117
							r.rafraichir(idMotcle, false);
118
						} catch (Exception e) {
1009 aurelien 119
							com.google.gwt.user.client.Window
2621 aurelien 120
							.alert(Msg.get("probleme-mise-a-jour-donnees")+", "+Msg.get("serveur-a-repondu")+response.getText());
2 aperonnet 121
						}
122
					}
5 aperonnet 123
 
124
				});
2 aperonnet 125
			} catch (RequestException e) {
126
				// TODO Auto-generated catch block
127
				e.printStackTrace();
128
			}
129
		}
5 aperonnet 130
	}
131
 
2 aperonnet 132
	/**
133
	 * Envoie requete au serveur jrest pour supprimer un mot clé
5 aperonnet 134
	 *
135
	 * @param motcle
136
	 *            le mots clés à supprimer
2 aperonnet 137
	 */
2062 aurelien 138
	public void supprimerBaseDeDonnees(String motcle, final Rafraichissable r) {
5 aperonnet 139
		if (!motcle.equals("")) {
140
			String postData = "";
141
			postData += "&action=DELETE";
2 aperonnet 142
 
1918 aurelien 143
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
2042 aurelien 144
					+ "/"+nomService+"/"
341 aurelien 145
					+ mode+"/"
157 aurelien 146
					+ identifiant
5 aperonnet 147
					+ "/"
148
					+ motcle);
149
 
150
			try {
151
				rb.sendRequest(postData, new RequestCallback() {
152
 
1293 aurelien 153
					@Override
5 aperonnet 154
					public void onError(Request request, Throwable exception) {
155
						// TODO Auto-generated method stub
156
 
157
					}
158
 
1293 aurelien 159
					@Override
5 aperonnet 160
					public void onResponseReceived(Request request,
161
							Response response) {
1009 aurelien 162
						// TODO: les messages ne devraient pas être affichés ici
163
						// mais l'architecture par très malléable complique les choses
2621 aurelien 164
						// Attention OK n'est pas un terme à traduire ici
1009 aurelien 165
						if (response.getText().equals("OK")) {
2621 aurelien 166
							com.google.gwt.user.client.Window.alert(Msg.get("mot-cle-supprime"));
2062 aurelien 167
							r.rafraichir(null, false);
1009 aurelien 168
							return;
169
						} else {
170
							com.google.gwt.user.client.Window
2621 aurelien 171
									.alert(Msg.get("probleme-mise-a-jour-donnees")+", "+Msg.get("serveur-a-repondu")+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")) {
2621 aurelien 214
							com.google.gwt.user.client.Window.alert(Msg.get("mot-cle-renomme"));
2062 aurelien 215
							r.rafraichir(null, false);
1009 aurelien 216
							return;
217
						} else {
218
							com.google.gwt.user.client.Window
2621 aurelien 219
									.alert(Msg.get("probleme-mise-a-jour-donnees")+", "+Msg.get("serveur-a-repondu")+response.getText());
1009 aurelien 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
}