Subversion Repositories eFlore/Applications.cel

Rev

Rev 5 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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