Subversion Repositories eFlore/Applications.cel

Rev

Rev 411 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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