Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
728 aurelien 1
package org.tela_botanica.client.modeles;
2
 
3
import java.util.HashMap;
4
 
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.modeles.ListeReferentielPerso.TypesReferentiels;
7
import org.tela_botanica.client.observation.ObservationModele;
8
 
9
import com.google.gwt.http.client.Request;
10
import com.google.gwt.http.client.RequestBuilder;
11
import com.google.gwt.http.client.RequestCallback;
12
import com.google.gwt.http.client.RequestException;
13
import com.google.gwt.http.client.Response;
14
import com.google.gwt.http.client.URL;
15
import com.google.gwt.json.client.JSONArray;
16
import com.google.gwt.json.client.JSONParser;
17
import com.google.gwt.json.client.JSONString;
18
import com.google.gwt.json.client.JSONValue;
19
 
20
public class ListeReferentielPersoAsynchroneDAO {
21
 
22
	/**
23
	 * Cache
24
	 *
25
	 */
26
	private HashMap<String,ListeReferentielPerso> cache = new HashMap();
27
 
28
	private TypesReferentiels refDemande = null;
29
 
30
	public ListeReferentielPersoAsynchroneDAO(ObservationModele obs) {
31
 
32
	}
33
 
34
	public void setRefDemande(TypesReferentiels refDemande) {
35
		this.refDemande = refDemande;
36
	}
37
 
38
	public void obtenirListeDonnees(final Rafraichissable r, String utilisateur,  final String critere) {
39
		switch (refDemande) {
40
 
41
			case REFERENTIEL_STATION:
42
 
43
			break;
44
 
45
			default:
46
			break;
47
		}
48
 
49
		ListeReferentielPerso referentielPersoDataFromCache=null;
50
 
51
 
52
			RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl() +
53
													"/SelfRefList/"+
54
													utilisateur+"/"+
55
													refDemande.toString()+
56
													"?start=0&limit=50&recherche="+URL.encode(critere));
57
 
58
			try {
59
 
60
				rb.sendRequest(null, new RequestCallback() {
61
 
62
					public void onError(final Request request, final Throwable exception) {
63
						// TODO Auto-generated method stub
64
 
65
					}
66
 
67
					public void onResponseReceived(final Request request,
68
							final Response response) {
69
 
70
						final ListeReferentielPerso referentielData;
71
 
72
						final JSONValue responseValue = JSONParser.parse(response.getText());
73
 
74
						JSONArray reponse = null;
75
 
76
 
77
						// si c'est un tableau
78
						if ((reponse = responseValue.isArray()) != null) {
79
 
80
							JSONString elementsRef;
81
							final int taillemax = reponse.size();
82
 
83
							referentielData = new ListeReferentielPerso(taillemax, refDemande);
84
 
85
							for (int i = 0; i < taillemax; i++) {
86
								if ((elementsRef = reponse.get(i).isString()) != null) {
87
 
88
									String valeur = elementsRef.stringValue();
89
									referentielData.put(i+"", valeur);
90
 
91
								}
92
							}
93
						} else {
94
 
95
							referentielData = new ListeReferentielPerso(0, refDemande);
96
 
97
						}
98
						// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est
99
						// le premier à les recevoir
100
						r.rafraichir(referentielData, true);
101
 
102
					}
103
 
104
				});
105
 
106
			} catch (RequestException e) {
107
 
108
				e.printStackTrace();
109
			}
110
 
111
	}
112
}