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