Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 20 Rev 32
1
package org.tela_botanica.client.modeles;
1
package org.tela_botanica.client.modeles;
2
 
2
 
3
import org.tela_botanica.client.Util;
3
import org.tela_botanica.client.Util;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.observation.ObservationModele;
5
import org.tela_botanica.client.observation.ObservationModele;
-
 
6
 
-
 
7
import com.google.gwt.http.client.Request;
-
 
8
import com.google.gwt.http.client.RequestBuilder;
-
 
9
import com.google.gwt.http.client.RequestCallback;
-
 
10
import com.google.gwt.http.client.RequestException;
6
 
11
import com.google.gwt.http.client.Response;
7
import com.google.gwt.json.client.JSONArray;
12
import com.google.gwt.json.client.JSONArray;
8
import com.google.gwt.json.client.JSONParser;
13
import com.google.gwt.json.client.JSONParser;
9
import com.google.gwt.json.client.JSONString;
14
import com.google.gwt.json.client.JSONString;
10
import com.google.gwt.json.client.JSONValue;
15
import com.google.gwt.json.client.JSONValue;
11
import com.google.gwt.user.client.HTTPRequest;
16
import com.google.gwt.user.client.HTTPRequest;
12
import com.google.gwt.user.client.ResponseTextHandler;
17
import com.google.gwt.user.client.ResponseTextHandler;
13
 
18
 
14
/**
19
/**
15
 * DAO la liste des observations attachées a un observateur
20
 * DAO la liste des observations attachées a un observateur
16
 * @author David Delon
21
 * @author David Delon
17
 * TODO : se servir de ObservationDAO pour la lecture unitaire
22
 * TODO : se servir de ObservationDAO pour la lecture unitaire
18
 *
23
 *
19
 */
24
 */
20
public class ListeObservationAsynchroneDAO {
25
public class ListeObservationAsynchroneDAO {
21
 
26
 
22
	
27
	
23
	
28
	
24
	
29
	
25
	/**
30
	/**
26
	 * Le modèle associé au DAO
31
	 * Le modèle associé au DAO
27
	 */
32
	 */
28
	private ObservationModele observationModele = null ;
33
	private ObservationModele observationModele = null ;
29
	
34
	
30
	public ListeObservationAsynchroneDAO(ObservationModele observationModele)
35
	public ListeObservationAsynchroneDAO(ObservationModele observationModele)
31
	{
36
	{
32
	
37
	
33
		this.observationModele=observationModele;
38
		this.observationModele=observationModele;
34
	}
39
	}
35
	
40
	
36
	
41
	
37
	/**
42
	/**
38
	 * Envoie une requete au serveur jrest pour obtenir le nombre d'observation correspondant
43
	 * Envoie une requete au serveur jrest pour obtenir le nombre d'observation correspondant
39
	 * à des critères données en paramètres
44
	 * à des critères données en paramètres
40
	 * @param r le rafraichissable qui demande la mise à jour
45
	 * @param r le rafraichissable qui demande la mise à jour
41
	 * @param criteres un tableau nom/valeur des critères pour les observations
46
	 * @param criteres un tableau nom/valeur des critères pour les observations
42
	 */
47
	 */
43
	public void obtenirListeObservation(final Rafraichissable r, String utilisateur, String[][] criteres)
48
	public void obtenirListeObservation(final Rafraichissable r, String utilisateur, String[][] criteres)
44
	{
49
	{
45
		
50
		
46
		
51
		
47
		String requete = "" ;
52
		String requete = "" ;
48
			
53
			
49
		if(criteres != null)
54
		if(criteres != null)
50
		{
55
		{
51
			// 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...)
52
			// ils contiennent limite et taille page
57
			// ils contiennent limite et taille page
53
			
58
			
54
			for (int i = 0; i < criteres.length; i++) {
59
			for (int i = 0; i < criteres.length; i++) {
55
				
60
				
56
				if(!criteres[i][1].equals(""))
61
				if(!criteres[i][1].equals(""))
57
				{
62
				{
58
					if(i!= 0)
63
					if(i!= 0)
59
					{
64
					{
60
						requete += "&";
65
						requete += "&";
61
					}
66
					}
62
					requete += criteres[i][0]+"="+criteres[i][1] ;
67
					requete += criteres[i][0]+"="+criteres[i][1] ;
63
				}
68
				}
64
			}
69
			}
65
		}
70
		}	
66
		
-
 
67
	
-
 
68
		
71
		
69
		// on envoie le get asynchrone
72
		// on envoie le get asynchrone
70
		HTTPRequest.asyncGet(observationModele.getConfig().getServiceBaseUrl()+"/InventoryObservationList/"+utilisateur+"/"+requete, new ResponseTextHandler() {
-
 
71
			
-
 
72
			
73
		RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,observationModele.getConfig().getServiceBaseUrl()
73
			// si tout se passe bien on reçoit une réponse JSON
-
 
74
			public void onCompletion(String responseText) {
74
				+"/InventoryObservationList/"+utilisateur+"/"+requete) ;
75
				
-
 
76
				final ListeObservation observationData ;
-
 
77
				final JSONValue responseValue = JSONParser.parse(responseText);
75
		
78
							
76
		try {
79
				JSONArray reponse=null;
77
			rb.sendRequest(null, new RequestCallback() {
80
				
78
 
81
				// si c'est un tableau
79
				public void onError(Request request, Throwable exception) {
-
 
80
					// TODO Auto-generated method stub
-
 
81
					
82
				if ((reponse=responseValue.isArray()) != null) {
82
				}
83
					
83
 
84
					JSONArray observation;
84
				public void onResponseReceived(Request request,
-
 
85
						Response response) {
-
 
86
					
-
 
87
					final ListeObservation observationData ;
85
					final int taillemax = reponse.size();
88
					final JSONValue responseValue = JSONParser.parse(response.getText());
-
 
89
								
-
 
90
					JSONArray reponse=null;
86
					
91
					
87
					observationData = new ListeObservation(taillemax);
92
					// si c'est un tableau
88
					
-
 
-
 
93
					if ((reponse=responseValue.isArray()) != null) {
89
					for (int i = 0; i < taillemax; i++) {
94
						
90
						
-
 
91
						if ((observation=reponse.get(i).isArray()) != null) {
-
 
92
							
-
 
93
 
-
 
94
							
-
 
95
							
-
 
96
							String transmis=((JSONString) observation.get(13)).stringValue();
-
 
97
							String identifiantLocalite=((JSONString) observation.get(14)).toString();
-
 
98
							String nomSaisi=Util.toCelString(((JSONString) observation.get(0)).toString());
-
 
99
							String nomRetenu=Util.toCelString(((JSONString) observation.get(2)).toString());
-
 
100
							String numeroNomenclaturalSaisi=((JSONString) observation.get(1)).stringValue();
-
 
101
							String numeroNomenclaturalRetenu=((JSONString) observation.get(3)).stringValue();
-
 
102
							String numeroTaxonomique=((JSONString) observation.get(4)).stringValue();
-
 
103
							String famille=Util.toCelString(((JSONString) observation .get(5)).toString());
-
 
104
							String localite=Util.toCelString(((JSONString) observation .get(6)).toString());
95
						JSONArray observation;
105
							String lieudit=Util.toCelString(((JSONString) observation .get(9)).toString());
-
 
106
							String station=Util.toCelString(((JSONString) observation .get(10)).toString());
96
						final int taillemax = reponse.size();
107
							String milieu=Util.toCelString(((JSONString) observation .get(11)).toString());
97
						
-
 
98
						observationData = new ListeObservation(taillemax);
-
 
99
						
-
 
100
						for (int i = 0; i < taillemax; i++) {
-
 
101
							
-
 
102
							if ((observation=reponse.get(i).isArray()) != null) {								
-
 
103
								
-
 
104
								String transmis=((JSONString) observation.get(13)).stringValue();
-
 
105
								String identifiantLocalite=((JSONString) observation.get(14)).toString();
-
 
106
								String nomSaisi=Util.toCelString(((JSONString) observation.get(0)).toString());
-
 
107
								String nomRetenu=Util.toCelString(((JSONString) observation.get(2)).toString());
-
 
108
								String numeroNomenclaturalSaisi=((JSONString) observation.get(1)).stringValue();
-
 
109
								String numeroNomenclaturalRetenu=((JSONString) observation.get(3)).stringValue();
-
 
110
								String numeroTaxonomique=((JSONString) observation.get(4)).stringValue();
108
							String commentaire=Util.toCelString(((JSONString) observation .get(12)).toString());
111
								String famille=Util.toCelString(((JSONString) observation .get(5)).toString());
-
 
112
								String localite=Util.toCelString(((JSONString) observation .get(6)).toString());
109
							String date=((JSONString) observation .get(8)).stringValue();
113
								String lieudit=Util.toCelString(((JSONString) observation .get(9)).toString());
-
 
114
								String station=Util.toCelString(((JSONString) observation .get(10)).toString());
-
 
115
								String milieu=Util.toCelString(((JSONString) observation .get(11)).toString());
-
 
116
								String commentaire=Util.toCelString(((JSONString) observation .get(12)).toString());
-
 
117
								String date=((JSONString) observation .get(8)).stringValue();
-
 
118
								String numeroOrdre=((JSONString) observation.get(7)).stringValue();
-
 
119
								
-
 
120
								Observation obs=new Observation(transmis, nomSaisi, nomRetenu, numeroNomenclaturalSaisi, numeroNomenclaturalRetenu ,numeroTaxonomique, famille, localite, identifiantLocalite, lieudit, station, milieu, commentaire, date, numeroOrdre);
-
 
121
			
110
							String numeroOrdre=((JSONString) observation.get(7)).stringValue();
122
								observationData.put(obs.getNumeroOrdre(),obs);
111
							
123
							}
112
							Observation obs=new Observation(transmis, nomSaisi, nomRetenu, numeroNomenclaturalSaisi, numeroNomenclaturalRetenu ,numeroTaxonomique, famille, localite, identifiantLocalite, lieudit, station, milieu, commentaire, date, numeroOrdre);
124
				
113
		
125
						}
114
							observationData.put(obs.getNumeroOrdre(),obs);
126
					} else {
115
						}
127
						
116
			
128
						observationData = new ListeObservation(0) ;
-
 
129
					}
-
 
130
										
-
 
131
					// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
-
 
132
					// le premier à les recevoir
117
					}
133
					r.rafraichir(observationData,true);				
118
									
134
				}
119
				// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
135
			}) ;
120
				// le premier à les recevoir
136
 
121
				r.rafraichir(observationData,true);
137
		} catch (RequestException e) {
122
			}
138
			// TODO Auto-generated catch block
123
		  }
139
			e.printStackTrace();
124
		});
140
		}
125
	}
141
	}
126
	
142
	
127
}
143
}