Subversion Repositories eFlore/Applications.cel

Rev

Rev 2 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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