Subversion Repositories eFlore/Applications.cel

Rev

Rev 1293 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1293 Rev 1317
1
package org.tela_botanica.client.modeles.dao;
1
package org.tela_botanica.client.modeles.dao;
2
 
2
 
3
import java.util.Iterator;
3
import java.util.Iterator;
4
 
4
 
5
import org.tela_botanica.client.image.ImageModele;
5
import org.tela_botanica.client.image.ImageModele;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.modeles.objets.Configuration;
7
import org.tela_botanica.client.modeles.objets.Configuration;
8
import org.tela_botanica.client.modeles.objets.ImageCarnet;
8
import org.tela_botanica.client.modeles.objets.ImageCarnet;
9
import org.tela_botanica.client.modeles.objets.ListeImageCarnet;
9
import org.tela_botanica.client.modeles.objets.ListeImageCarnet;
10
import org.tela_botanica.client.modeles.objets.Utilisateur;
10
import org.tela_botanica.client.modeles.objets.Utilisateur;
11
 
11
 
12
import com.google.gwt.http.client.Request;
12
import com.google.gwt.http.client.Request;
13
import com.google.gwt.http.client.RequestBuilder;
13
import com.google.gwt.http.client.RequestBuilder;
14
import com.google.gwt.http.client.RequestCallback;
14
import com.google.gwt.http.client.RequestCallback;
15
import com.google.gwt.http.client.RequestException;
15
import com.google.gwt.http.client.RequestException;
16
import com.google.gwt.http.client.Response;
16
import com.google.gwt.http.client.Response;
17
import com.google.gwt.json.client.JSONArray;
17
import com.google.gwt.json.client.JSONArray;
18
import com.google.gwt.json.client.JSONObject;
18
import com.google.gwt.json.client.JSONObject;
19
import com.google.gwt.json.client.JSONParser;
19
import com.google.gwt.json.client.JSONParser;
20
import com.google.gwt.json.client.JSONValue;
20
import com.google.gwt.json.client.JSONValue;
21
 
21
 
22
/**
22
/**
23
 * Data Object Access communiquant avec le serveur jrest fournissant la liste
23
 * Data Object Access communiquant avec le serveur jrest fournissant la liste
24
 * des images répondant à des critères donné
24
 * des images répondant à des critères donné
25
 * 
25
 * 
26
 * @author aurelien
26
 * @author aurelien
27
 * 
27
 * 
28
 */
28
 */
29
public class ListeImageAsynchroneDAO {
29
public class ListeImageAsynchroneDAO {
30
 
30
 
31
	/**
31
	/**
32
	 * Le modèle associé au DAO
32
	 * Le modèle associé au DAO
33
	 */
33
	 */
34
	ImageModele iModele = null;
34
	ImageModele iModele = null;
35
 
35
 
36
	public ListeImageAsynchroneDAO(ImageModele im) {
36
	public ListeImageAsynchroneDAO(ImageModele im) {
37
		iModele = im;
37
		iModele = im;
38
	}
38
	}
39
 
39
 
40
	/**
40
	/**
41
	 * Setteur pour le modèle
41
	 * Setteur pour le modèle
42
	 * 
42
	 * 
43
	 * @param im
43
	 * @param im
44
	 * le modèle à associer
44
	 * le modèle à associer
45
	 */
45
	 */
46
	public void setIModele(ImageModele im) {
46
	public void setIModele(ImageModele im) {
47
		iModele = im;
47
		iModele = im;
48
	}
48
	}
49
 
49
 
50
	/**
50
	/**
51
	 * Envoie une requete au serveur jrest pour obtenir une liste d'images
51
	 * Envoie une requete au serveur jrest pour obtenir une liste d'images
52
	 * correspondant à des critères demandés
52
	 * correspondant à des critères demandés
53
	 * 
53
	 * 
54
	 * @param r
54
	 * @param r
55
	 * le rafraichissable qui a demandé les données
55
	 * le rafraichissable qui a demandé les données
56
	 * @param criteres
56
	 * @param criteres
57
	 * un tableau contenant les critères de selections
57
	 * un tableau contenant les critères de selections
58
	 */
58
	 */
59
	public void ObtenirListeImages(final Rafraichissable r, String[][] criteres) {
59
	public void ObtenirListeImages(final Rafraichissable r, String[][] criteres) {
60
 
60
 
61
		String requete = "";
61
		String requete = "";
62
 
62
 
63
		// on construit les paramètres du get
63
		// on construit les paramètres du get
64
		if (criteres != null) {
64
		if (criteres != null) {
65
			for (int i = 0; i < criteres.length; i++) {
65
			for (int i = 0; i < criteres.length; i++) {
66
 
66
 
67
				if (!criteres[i][1].equals("")) {
67
				if (!criteres[i][1].equals("")) {
68
					if (i != 0) {
68
					if (i != 0) {
69
						requete += "&";
69
						requete += "&";
70
					}
70
					}
71
					requete += criteres[i][0] + "=" + criteres[i][1];
71
					requete += criteres[i][0] + "=" + criteres[i][1];
72
 
72
 
73
				}
73
				}
74
			}
74
			}
75
		}
75
		}
76
 
76
 
77
		// on envoie le get asynchrone
77
		// on envoie le get asynchrone
78
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
78
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
79
				+ "/InventoryImageList/"
79
				+ "/InventoryImageList/"
80
				+ Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()
80
				+ Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()
81
				+ "/?"
81
				+ "/?"
82
				+ requete);
82
				+ requete);
83
		try {
83
		try {
84
			rb.sendRequest(null, new RequestCallback() {
84
			rb.sendRequest(null, new RequestCallback() {
85
 
85
 
86
				@Override
86
				@Override
87
				public void onError(Request request, Throwable exception) {
87
				public void onError(Request request, Throwable exception) {
88
					// TODO Auto-generated method stub
88
					// TODO Auto-generated method stub
89
 
89
 
90
				}
90
				}
91
 
91
 
92
				@Override
92
				@Override
93
				public void onResponseReceived(Request request,
93
				public void onResponseReceived(Request request,
94
						Response response) {
94
						Response response) {
95
 
95
 
96
					final ListeImageCarnet photoData;
96
					final ListeImageCarnet photoData;
97
 
97
 
98
					final JSONValue responseValue = JSONParser.parse(response
98
					final JSONValue responseValue = JSONParser.parse(response
99
							.getText());
99
							.getText());
100
					// si c'est un tableau
100
					// si c'est un tableau
101
					if (responseValue.isArray() != null) {
101
					if (responseValue.isArray() != null) {
102
 
102
 
103
						final JSONArray reponse = responseValue.isArray();
103
						final JSONArray reponse = responseValue.isArray();
104
 
104
 
105
						final int taillemax = reponse.size();
105
						final int taillemax = reponse.size();
106
						photoData = new ListeImageCarnet(taillemax);
106
						photoData = new ListeImageCarnet(taillemax);
107
 
107
 
108
						// on le parcourt
108
						// on le parcourt
109
						for (int j = 0; j < taillemax; j++) {
109
						for (int j = 0; j < taillemax; j++) {
110
 
110
 
111
							JSONObject image = (JSONObject) reponse.get(j);
111
							JSONObject image = (JSONObject) reponse.get(j);
112
 
112
 
113
							ImageCarnet im = new ImageCarnet(image);
113
							ImageCarnet im = new ImageCarnet(image);
114
 
114
 
115
							// et on en extrait les données pour construire la
115
							// et on en extrait les données pour construire la
116
							// liste d'image
116
							// liste d'image
117
							photoData.put(im.getOrdre(), im);
117
							photoData.put(im.getOrdre(), im);
118
 
118
 
119
						}
119
						}
120
					} else {
120
					} else {
121
						// si c'est un objet alors il n'y a qu'une réponse
121
						// si c'est un objet alors il n'y a qu'une réponse
122
						if (responseValue.isObject() != null) {
122
						if (responseValue.isObject() != null) {
123
							photoData = new ListeImageCarnet(1);
123
							photoData = new ListeImageCarnet(1);
124
							ImageCarnet im = new ImageCarnet(responseValue
124
							ImageCarnet im = new ImageCarnet(responseValue
125
									.isObject());
125
									.isObject());
126
							// on crée une liste de 1 élement auquel on ajoute
126
							// on crée une liste de 1 élement auquel on ajoute
127
							// ce qui a été reçu
127
							// ce qui a été reçu
128
							photoData.put(im.getOrdre(), im);
128
							photoData.put(im.getOrdre(), im);
129
						} else {
129
						} else {
130
							// sinon on crée une liste vide
130
							// sinon on crée une liste vide
131
							photoData = new ListeImageCarnet(0);
131
							photoData = new ListeImageCarnet(0);
132
						}
132
						}
133
					}
133
					}
134
 
134
 
135
					// dans tous les cas on transmet la liste crée au
135
					// dans tous les cas on transmet la liste crée au
136
					// rafraichissable en lui demandant de répandre les données
136
					// rafraichissable en lui demandant de répandre les données
137
					// car il est
137
					// car il est
138
					// le premier à les recevoir
138
					// le premier à les recevoir
139
					r.rafraichir(photoData, true);
139
					r.rafraichir(photoData, true);
140
				}
140
				}
141
			});
141
			});
142
 
142
 
143
		} catch (RequestException e) {
143
		} catch (RequestException e) {
144
			// TODO Auto-generated catch block
144
			// TODO Auto-generated catch block
145
			e.printStackTrace();
145
			e.printStackTrace();
146
		}
146
		}
147
	}
147
	}
148
 
148
 
149
	/**
149
	/**
150
	 * Met à jour les valeurs d'une liste d'image donnée dans la base de données
150
	 * Met à jour les valeurs d'une liste d'image donnée dans la base de données
151
	 * 
151
	 * 
152
	 * @param li
152
	 * @param li
153
	 *            la liste d'image à synchroniser avec la base
153
	 *            la liste d'image à synchroniser avec la base
154
	 */
154
	 */
155
	public void SynchroniserBaseDeDonnees(ListeImageCarnet li) {
155
	public void SynchroniserBaseDeDonnees(ListeImageCarnet li) {
156
		// on parcourt toute la liste d'image
156
		// on parcourt toute la liste d'image
157
		for (Iterator<String> listIt = li.keySet().iterator(); listIt.hasNext();) {
157
		for (Iterator<String> listIt = li.keySet().iterator(); listIt.hasNext();) {
158
			String postData = "";
158
			String postData = "";
159
 
159
 
160
			ImageCarnet enCours = li.get(listIt.next());
160
			ImageCarnet enCours = li.get(listIt.next());
161
 
-
 
162
			// pour chaque image on extrait les informations
161
 
163
			for (Iterator<String> imgIt = enCours.keySet().iterator(); imgIt
-
 
164
					.hasNext();) {
-
 
165
				// qu'on place dans le poste
-
 
166
				String key = imgIt.next();
162
			String[][] champsModifiables = enCours.obtenirChampsModifiablesImage();
167
				String valeur = enCours.renvoyerValeurCorrecte(key);
-
 
168
				valeur.replaceAll("'", "\'");
163
			for (int i = 0; i < champsModifiables.length; i++) {
169
				postData += "&" + key + "="
-
 
170
						+ enCours.renvoyerValeurCorrecte(key);
-
 
171
 
164
				postData += "&"+champsModifiables[i][0]+"="+champsModifiables[i][1];
172
			}
165
			}
173
 
166
 
174
			// on fait un post asynchrone et on les envoie à jrest
167
			// on fait un post asynchrone et on les envoie à jrest
175
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
168
			RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,
176
					Configuration.getServiceBaseUrl()
169
					Configuration.getServiceBaseUrl()
177
					+ "/inventoryImage/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "/");
170
					+ "/inventoryImage/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "/");
178
 
171
 
179
			try {
172
			try {
180
				rb.sendRequest(postData, new RequestCallback() {
173
				rb.sendRequest(postData, new RequestCallback() {
181
 
174
 
182
					@Override
175
					@Override
183
					public void onError(Request request, Throwable exception) {
176
					public void onError(Request request, Throwable exception) {
184
 
177
 
185
					}
178
					}
186
 
179
 
187
					@Override
180
					@Override
188
					public void onResponseReceived(Request request,
181
					public void onResponseReceived(Request request,
189
							Response response) {
182
							Response response) {
190
 
183
 
191
						if (response.getText().equals("OK")) {
184
						if (response.getText().equals("OK")) {
192
							return;
185
							return;
193
						} else {
186
						} else {
194
							com.google.gwt.user.client.Window
187
							com.google.gwt.user.client.Window
195
									.alert("Problème lors de la mise à jour des données");
188
									.alert("Problème lors de la mise à jour des données");
196
						}
189
						}
197
 
190
 
198
					}
191
					}
199
 
192
 
200
				});
193
				});
201
			} catch (RequestException e) {
194
			} catch (RequestException e) {
202
				// TODO Auto-generated catch block
195
				// TODO Auto-generated catch block
203
				e.printStackTrace();
196
				e.printStackTrace();
204
			}
197
			}
205
		}
198
		}
206
	}
199
	}
207
 
200
 
208
	/**
201
	/**
209
	 * Supprime des image sur le serveur par rapport à leur identifant
202
	 * Supprime des image sur le serveur par rapport à leur identifant
210
	 * 
203
	 * 
211
	 * @param ids
204
	 * @param ids
212
	 *            un tableau d'identifiants d'images à supprimer
205
	 *            un tableau d'identifiants d'images à supprimer
213
	 */
206
	 */
214
	public void supprimerBaseDeDonnees(String[] ids) {
207
	public void supprimerBaseDeDonnees(String[] ids) {
215
		String postData = "";
208
		String postData = "";
216
		// on fait un delete dans le post (jrest ne gère pas delete comme une
209
		// on fait un delete dans le post (jrest ne gère pas delete comme une
217
		// action à part entière)
210
		// action à part entière)
218
		postData += "&action=DELETE";
211
		postData += "&action=DELETE";
219
 
212
 
220
		String uid = "";
213
		String uid = "";
221
 
214
 
222
		// on concatène les ids
215
		// on concatène les ids
223
		for (int i = 0; i < ids.length; i++) {
216
		for (int i = 0; i < ids.length; i++) {
224
 
217
 
225
			uid += ids[i] + ",";
218
			uid += ids[i] + ",";
226
		}
219
		}
227
 
220
 
228
		// et on envoie ça au serveur
221
		// et on envoie ça au serveur
229
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
222
		RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
230
				+ "/inventoryImageList/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "/" + uid);
223
				+ "/inventoryImageList/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "/" + uid);
231
		try {
224
		try {
232
			rb.sendRequest(postData, new RequestCallback() {
225
			rb.sendRequest(postData, new RequestCallback() {
233
 
226
 
234
				@Override
227
				@Override
235
				public void onError(Request request, Throwable exception) {
228
				public void onError(Request request, Throwable exception) {
236
					// TODO Auto-generated method stub
229
					// TODO Auto-generated method stub
237
 
230
 
238
				}
231
				}
239
 
232
 
240
				@Override
233
				@Override
241
				public void onResponseReceived(Request request,
234
				public void onResponseReceived(Request request,
242
						Response response) {
235
						Response response) {
243
 
236
 
244
					// quand la requête est éxecutée on le signale au modèle
237
					// quand la requête est éxecutée on le signale au modèle
245
					// poru qu'il mette à jour les données
238
					// poru qu'il mette à jour les données
246
					// et en notifie le médiateur
239
					// et en notifie le médiateur
247
					iModele.requeteTerminee();
240
					iModele.requeteTerminee();
248
 
241
 
249
				}
242
				}
250
			});
243
			});
251
 
244
 
252
		} catch (RequestException e) {
245
		} catch (RequestException e) {
253
			// TODO Auto-generated catch block
246
			// TODO Auto-generated catch block
254
			e.printStackTrace();
247
			e.printStackTrace();
255
		}
248
		}
256
	}
249
	}
257
 
250
 
258
}
251
}