Subversion Repositories eFlore/Applications.coel

Rev

Rev 682 | Rev 1038 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
69 jpm 1
package org.tela_botanica.client.modeles;
2
 
570 jp_milcent 3
import java.util.HashMap;
4
 
773 jpm 5
import org.tela_botanica.client.http.JsonRestRequestBuilder;
6
import org.tela_botanica.client.http.JsonRestRequestCallback;
69 jpm 7
import org.tela_botanica.client.interfaces.Rafraichissable;
299 gduche 8
import org.tela_botanica.client.util.UtilDAO;
69 jpm 9
 
10
import com.google.gwt.json.client.JSONArray;
91 jpm 11
import com.google.gwt.json.client.JSONObject;
12
import com.google.gwt.json.client.JSONString;
69 jpm 13
import com.google.gwt.json.client.JSONValue;
14
 
15
public class ValeurListeAsyncDao {
570 jp_milcent 16
 
17
	private static HashMap<Integer, ValeurListe> ontologieCache = new HashMap<Integer, ValeurListe>();
268 jp_milcent 18
	private static final String SERVICE_NOM = "CoelValeurListe";
570 jp_milcent 19
	private Rafraichissable vueARafraichir = null;
69 jpm 20
 
570 jp_milcent 21
	public ValeurListeAsyncDao(Rafraichissable vueCourante) {
22
		vueARafraichir = vueCourante;
268 jp_milcent 23
	}
24
 
299 gduche 25
	public void obtenirListe(Integer cle)	{
773 jpm 26
		selectionner("id", cle, null, null);
292 gduche 27
	}
28
 
570 jp_milcent 29
	public void selectionner(String type, final Integer cleParent, String abv, String idValeur) {
773 jpm 30
		if (ontologieCache.containsKey(cleParent)) {
682 jp_milcent 31
    		vueARafraichir.rafraichir(ontologieCache.get(cleParent));
570 jp_milcent 32
    	} else {
773 jpm 33
    		String paramAbv = (type.equals("id") ? null : abv);
34
    		String[] parametres = {type, cleParent.toString(), paramAbv, idValeur};
35
    		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
36
    		rb.envoyerRequete(null, new JsonRestRequestCallback() {
37
    			@Override
38
    			public void surReponse(JSONValue responseValue) {
39
    				if (responseValue.isObject() != null) {
40
						final JSONObject reponse = responseValue.isObject();
41
						JSONString listeId = reponse.get("id").isString();
42
						JSONArray listeValeurs = reponse.get("valeurs").isArray();
43
						if (listeId != null)	{
44
							// Transformation du tableau JSON réponse en Liste
45
							ValeurListe liste = new ValeurListe(listeId, listeValeurs);
46
							// Stockage en cache
47
							ontologieCache.put(cleParent, liste);
48
							// et on met à jour le demandeur des données
49
							vueARafraichir.rafraichir(liste);
91 jpm 50
						}
69 jpm 51
					}
773 jpm 52
    			}
53
    		});
570 jp_milcent 54
    	}
69 jpm 55
	}
292 gduche 56
 
773 jpm 57
}