Subversion Repositories eFlore/Applications.cel

Rev

Rev 1918 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
989 aurelien 1
package org.tela_botanica.client.modeles.dao;
12 david 2
 
411 aurelien 3
import org.tela_botanica.client.image.ImageModele;
12 david 4
import org.tela_botanica.client.interfaces.Rafraichissable;
989 aurelien 5
import org.tela_botanica.client.modeles.objets.Configuration;
12 david 6
import org.tela_botanica.client.observation.ObservationModele;
7
 
32 jpm 8
import com.google.gwt.http.client.Request;
1918 aurelien 9
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
32 jpm 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
 
18
/**
19
 * DAO qui renvoie le nombre d'image associées à différents critères donnés (utile pour la pagination)
20
 * @author aurelien
21
 *
22
 */
23
public class NombreObservationAsynchroneDAO {
24
 
25
 
26
 
27
	/**
28
	 * Le modèle associé au DAO
29
	 */
30
	private ObservationModele observationModele = null ;
31
 
411 aurelien 32
	private ImageModele imageModele = null;
33
 
12 david 34
	public NombreObservationAsynchroneDAO(ObservationModele observationModele)
35
	{
36
		this.observationModele=observationModele;
37
	}
411 aurelien 38
 
39
	public NombreObservationAsynchroneDAO(final ImageModele imageModele) {
40
		this.imageModele = imageModele;
41
	}
12 david 42
 
43
 
44
	/**
45
	 * Envoie une requete au serveur jrest pour obtenir le nombre d'observation correspondant
46
	 * à des critères données en paramètres
47
	 * @param r le rafraichissable qui demande la mise à jour
48
	 * @param criteres un tableau nom/valeur des critères pour les images
49
	 */
50
	public void obtenirNombreObservation(final Rafraichissable r, String utilisateur, String[][] criteres)
51
	{
52
		String requete = "" ;
53
 
54
		if(criteres != null)
55
		{
56
			// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
57
			for (int i = 0; i < criteres.length; i++) {
318 aurelien 58
 
59
				if(criteres[i][1] != null && !criteres[i][1].equals(""))
12 david 60
				{
61
					if(i!= 0)
62
					{
63
						requete += "&";
64
					}
204 david 65
					requete += criteres[i][0]+"="+URL.encodeComponent(criteres[i][1]) ;
12 david 66
				}
67
			}
68
		}
69
 
1918 aurelien 70
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl()+"/InventoryObservationCount/"+utilisateur+"/?"+requete) ;
32 jpm 71
 
72
		try {
12 david 73
 
32 jpm 74
			rb.sendRequest(null, new RequestCallback() {
75
 
1293 aurelien 76
				@Override
32 jpm 77
				public void onError(Request request, Throwable exception) {
78
					// TODO Auto-generated method stub
79
 
80
				}
81
 
1293 aurelien 82
				@Override
32 jpm 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
}