Subversion Repositories eFlore/Archives.cel-v2

Rev

Details | Last modification | View Log | RSS feed

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