Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | 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;
5
import com.google.gwt.http.client.Request;
6
import com.google.gwt.http.client.RequestBuilder;
7
import com.google.gwt.http.client.RequestCallback;
8
import com.google.gwt.http.client.RequestException;
9
import com.google.gwt.http.client.Response;
10
import com.google.gwt.json.client.JSONParser;
11
import com.google.gwt.json.client.JSONString;
12
import com.google.gwt.json.client.JSONValue;
13
 
14
/**
15
 * DAO qui renvoie le nombre d'image associées à différents critères donnés (utile pour la pagination)
16
 * @author aurelien
17
 *
18
 */
19
public class NombreImageAsynchroneDAO {
20
 
21
	/**
22
	 * Le modèle associé au DAO
23
	 */
24
	private ImageModele iModele = null ;
25
 
26
	public NombreImageAsynchroneDAO(ImageModele im)
27
	{
28
		iModele = im ;
29
	}
30
 
31
	/**
32
	 * Setteur pour le modèle
33
	 * @param im le modèlme à associer
34
	 */
35
	public void setIModele(ImageModele im)
36
	{
37
		iModele = im ;
38
	}
39
 
40
	/**
41
	 * Envoie une requete au serveur jrest pour obtenir le nombre d'images correspondant
42
	 * à des critères données en paramètres
43
	 * @param r le rafraichissable qui demande la mise à jour
44
	 * @param criteres un tableau nom/valeur des critères pour les images
45
	 */
46
	public void obtenirNombreImages(final Rafraichissable r, String[][] criteres)
47
	{
48
		String requete = "" ;
49
 
50
		if(criteres != null)
51
		{
52
			// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
53
			for (int i = 0; i < criteres.length; i++) {
54
 
55
				if(!criteres[i][1].equals(""))
56
				{
57
					if(i!= 0)
58
					{
59
						requete += "&";
60
					}
61
					requete += criteres[i][0]+"="+criteres[i][1] ;
62
				}
63
			}
64
		}
65
 
66
		// on fait un get asynchrone
67
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, iModele.getConfig().getServiceBaseUrl()+"/InventoryImageCount/"+iModele.getIdentifiant()+"/"+requete) ;
68
		try {
69
			rb.sendRequest(null, new RequestCallback() {
70
 
71
				public void onError(Request request, Throwable exception) {
72
					// TODO Auto-generated method stub
73
 
74
				}
75
 
76
				public void onResponseReceived(Request request, Response response) {
77
 
78
					final JSONValue responseValue = JSONParser.parse(response.getText());
79
 
80
					// si la requete se passe bien on reçoit un tableau JSON
81
					if(responseValue.isArray() != null)
82
					{
83
						// qui contient une valeur : le nombre d'images correspondant au critères
84
						JSONValue res = responseValue.isArray().get(0) ;
85
							JSONString reponseNombre = res.isString() ;
86
							int maxImages = Integer.parseInt(reponseNombre.stringValue()) ;
87
							int[] nbImages = {maxImages} ;
88
							// on le met dans un tableau d'entiers qu'on transmet au demandeur de la mise à jour
89
							r.rafraichir(nbImages, true) ;
90
					}
91
 
92
				}
93
 
94
			}) ;
95
		} catch (RequestException e) {
96
			// TODO Auto-generated catch block
97
			e.printStackTrace();
98
		}
99
 
100
	}
101
 
102
}