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;
157 aurelien 5
import org.tela_botanica.client.observation.ObservationMediateur;
6
import org.tela_botanica.client.observation.ObservationModele;
7
 
2 aperonnet 8
import com.google.gwt.http.client.Request;
9
import com.google.gwt.http.client.RequestBuilder;
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;
16
import com.google.gwt.user.client.Window;
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 {
5 aperonnet 25
 
2 aperonnet 26
	/**
27
	 * Le modele associé au DAO
28
	 */
5 aperonnet 29
	private ImageModele iModele = null;
157 aurelien 30
 
31
	private ObservationModele oModele = null ;
32
 
33
	private String identifiant = "" ;
318 aurelien 34
 
35
	private String mode = "";
5 aperonnet 36
 
37
	public MotsClesAsynchroneDAO(ImageModele im) {
38
		iModele = im;
318 aurelien 39
		mode = "images";
157 aurelien 40
		identifiant = im.getIdentifiant();
2 aperonnet 41
	}
157 aurelien 42
 
43
	public MotsClesAsynchroneDAO(ObservationModele om) {
44
		oModele = om;
318 aurelien 45
		mode = "obs";
157 aurelien 46
		identifiant = om.getIdentifiant();
47
	}
48
 
49
 
5 aperonnet 50
 
2 aperonnet 51
	/**
5 aperonnet 52
	 * Setteur pour le modèle
53
	 *
54
	 * @param im
55
	 *            le modèle à associer
2 aperonnet 56
	 */
5 aperonnet 57
	public void setIModele(ImageModele im) {
58
		iModele = im;
2 aperonnet 59
	}
5 aperonnet 60
 
2 aperonnet 61
	/**
62
	 * Envoie une requete au serveur jrest pour obtenir l'arbre des mots clés
5 aperonnet 63
	 *
64
	 * @param r
65
	 *            le rafraichissable qui demande les données
2 aperonnet 66
	 */
5 aperonnet 67
	public void obtenirListeMotsCles(final Rafraichissable r) {
2 aperonnet 68
		// on demande tous les mots clés associés à l'utilisateur
116 aurelien 69
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
318 aurelien 70
				+ "/InventoryKeyWordList/"+mode+"/"+identifiant+"/");
5 aperonnet 71
 
2 aperonnet 72
		try {
73
			rb.sendRequest(null, new RequestCallback() {
74
 
75
				public void onError(Request request, Throwable exception) {
76
					// TODO Auto-generated method stub
5 aperonnet 77
 
2 aperonnet 78
				}
79
 
5 aperonnet 80
				public void onResponseReceived(Request request,
81
						Response response) {
318 aurelien 82
 
5 aperonnet 83
					final JSONValue responseValue = JSONParser.parse(response
84
							.getText());
318 aurelien 85
 
2 aperonnet 86
					// si la requête est un succès on reçoit un tableau
87
					if (responseValue.isArray() != null) {
5 aperonnet 88
 
2 aperonnet 89
						final JSONArray reponse = responseValue.isArray();
5 aperonnet 90
						// et on met à jour le demandeur des données
91
						r.rafraichir(reponse, true);
92
					}
93
 
2 aperonnet 94
				}
5 aperonnet 95
 
96
			});
2 aperonnet 97
		} catch (RequestException e) {
98
			// TODO Auto-generated catch block
99
			e.printStackTrace();
100
		}
101
	}
5 aperonnet 102
 
2 aperonnet 103
	/**
104
	 * Envoie requete au serveur jrest pour ajouter un mot clé
5 aperonnet 105
	 *
106
	 * @param motcle
107
	 *            le mots clés à ajouter avec son parent et son identifiant
2 aperonnet 108
	 */
5 aperonnet 109
	public void ajouterBaseDeDonnees(String motcle) {
110
		if (!motcle.equals("")) {
318 aurelien 111
			String postData = motcle+"&mode="+mode;
5 aperonnet 112
 
2 aperonnet 113
			// on fait un post asynchrone
116 aurelien 114
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 115
					+ "/InventoryKeyWordList/");
2 aperonnet 116
			try {
117
				rb.sendRequest(postData, new RequestCallback() {
118
 
119
					public void onError(Request request, Throwable exception) {
120
						// TODO Auto-generated method stub
5 aperonnet 121
 
2 aperonnet 122
					}
123
 
124
					public void onResponseReceived(Request request,
125
							Response response) {
5 aperonnet 126
 
127
						// si on reçoit une erreur d'ajout, on affiche un
128
						// message d'erreur
129
						if (response.getText().equals("ERROR")) {
130
							Window
131
									.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application,"
132
											+ "nous vous invitons à recharger la page. ");
2 aperonnet 133
						}
5 aperonnet 134
 
2 aperonnet 135
					}
5 aperonnet 136
 
137
				});
2 aperonnet 138
			} catch (RequestException e) {
139
				// TODO Auto-generated catch block
140
				e.printStackTrace();
141
			}
142
		}
5 aperonnet 143
	}
144
 
2 aperonnet 145
	/**
146
	 * Envoie requete au serveur jrest pour supprimer un mot clé
5 aperonnet 147
	 *
148
	 * @param motcle
149
	 *            le mots clés à supprimer
2 aperonnet 150
	 */
5 aperonnet 151
	public void supprimerBaseDeDonnees(String motcle) {
152
		if (!motcle.equals("")) {
153
			String postData = "";
154
			postData += "&action=DELETE";
2 aperonnet 155
 
140 aurelien 156
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
5 aperonnet 157
					+ "/InventoryKeyWordList/"
318 aurelien 158
					+ mode
157 aurelien 159
					+ identifiant
5 aperonnet 160
					+ "/"
161
					+ motcle);
162
 
163
			try {
164
				rb.sendRequest(postData, new RequestCallback() {
165
 
166
					public void onError(Request request, Throwable exception) {
167
						// TODO Auto-generated method stub
168
 
169
					}
170
 
171
					public void onResponseReceived(Request request,
172
							Response response) {
173
						if (response.equals("ERROR")) {
174
							Window
175
									.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application,"
176
											+ "nous vous invitons à recharger la page. ");
2 aperonnet 177
						}
5 aperonnet 178
					}
179
				});
2 aperonnet 180
 
5 aperonnet 181
			} catch (RequestException e) {
182
				// TODO Auto-generated catch block
183
				e.printStackTrace();
184
			}
2 aperonnet 185
		}
186
	}
187
 
188
	/**
189
	 * Envoie requete au serveur jrest pour modifier un mot clé
5 aperonnet 190
	 *
191
	 * @param motcle
192
	 *            le mots clés à modifier avec son parent et son identifiant
2 aperonnet 193
	 */
194
	public void modifierBaseDeDonnees(String motcle) {
195
 
5 aperonnet 196
		if (!motcle.equals("")) {
197
 
198
			String postData = "";
318 aurelien 199
			postData += "&action=modification"+motcle;
5 aperonnet 200
 
116 aurelien 201
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
318 aurelien 202
					+ "/InventoryKeyWordList/"+mode+"/"+ identifiant);
2 aperonnet 203
			try {
204
				rb.sendRequest(postData, new RequestCallback() {
5 aperonnet 205
 
2 aperonnet 206
					public void onError(Request request, Throwable exception) {
207
						// TODO Auto-generated method stub
5 aperonnet 208
 
2 aperonnet 209
					}
5 aperonnet 210
 
211
					public void onResponseReceived(Request request,
212
							Response response) {
2 aperonnet 213
						// TODO Auto-generated method stub
5 aperonnet 214
 
2 aperonnet 215
					}
5 aperonnet 216
 
2 aperonnet 217
				});
218
			} catch (RequestException e) {
219
				// TODO Auto-generated catch block
220
				e.printStackTrace();
221
			}
222
		}
223
	}
5 aperonnet 224
 
2 aperonnet 225
	/**
226
	 * Envoie requete au serveur jrest pour modifier un mot clé
5 aperonnet 227
	 *
228
	 * @param motcle
229
	 *            le mots clés à ajouter avec son ancien parent, son nouveau et
230
	 *            son identifiant
2 aperonnet 231
	 */
232
	public void deplacerBaseDeDonnees(String motcle) {
233
 
5 aperonnet 234
		if (!motcle.equals("")) {
235
 
236
			String postData = "";
318 aurelien 237
			postData += "&action=deplacement"+motcle;
5 aperonnet 238
 
116 aurelien 239
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
318 aurelien 240
					+ "/InventoryKeyWordList/"+mode+"/"+identifiant);
2 aperonnet 241
			try {
242
				rb.sendRequest(postData, new RequestCallback() {
5 aperonnet 243
 
2 aperonnet 244
					public void onError(Request request, Throwable exception) {
245
						// TODO Auto-generated method stub
5 aperonnet 246
 
2 aperonnet 247
					}
5 aperonnet 248
 
249
					public void onResponseReceived(Request request,
250
							Response response) {
2 aperonnet 251
						// TODO Auto-generated method stub
5 aperonnet 252
 
2 aperonnet 253
					}
5 aperonnet 254
 
2 aperonnet 255
				});
256
			} catch (RequestException e) {
257
				// TODO Auto-generated catch block
258
				e.printStackTrace();
259
			}
260
		}
261
 
5 aperonnet 262
	}
263
 
2 aperonnet 264
}