Subversion Repositories eFlore/Applications.cel

Rev

Rev 989 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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