Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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