Subversion Repositories eFlore/Applications.cel

Rev

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