Subversion Repositories eFlore/Applications.coel

Rev

Rev 773 | Rev 1292 | 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
 
1038 gduche 17
	private static HashMap<String, ValeurListe> ontologieCache = new HashMap<String, 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
 
1038 gduche 29
	public void selectionner(String type, Integer cle, String abv, String idValeur) {
30
 
31
		// La cleParent en Integer est insuffisante pour les liste valeurs comme Région qui on plusieurs sections sur leur liste
32
		// (ex : on ne sélectionne que les régions FR.__ puis les régions ES.__ sur la liste 1078 ....
33
		final String cleParent = cle + (abv == null ? "" : abv);
34
 
773 jpm 35
		if (ontologieCache.containsKey(cleParent)) {
1038 gduche 36
			vueARafraichir.rafraichir(ontologieCache.get(cleParent));
570 jp_milcent 37
    	} else {
773 jpm 38
    		String paramAbv = (type.equals("id") ? null : abv);
39
    		String[] parametres = {type, cleParent.toString(), paramAbv, idValeur};
40
    		final JsonRestRequestBuilder rb = UtilDAO.construireRequete(SERVICE_NOM, parametres);
41
    		rb.envoyerRequete(null, new JsonRestRequestCallback() {
42
    			@Override
43
    			public void surReponse(JSONValue responseValue) {
44
    				if (responseValue.isObject() != null) {
45
						final JSONObject reponse = responseValue.isObject();
46
						JSONString listeId = reponse.get("id").isString();
47
						JSONArray listeValeurs = reponse.get("valeurs").isArray();
48
						if (listeId != null)	{
49
							// Transformation du tableau JSON réponse en Liste
50
							ValeurListe liste = new ValeurListe(listeId, listeValeurs);
51
							// Stockage en cache
52
							ontologieCache.put(cleParent, liste);
53
							// et on met à jour le demandeur des données
54
							vueARafraichir.rafraichir(liste);
91 jpm 55
						}
69 jpm 56
					}
773 jpm 57
    			}
58
    		});
570 jp_milcent 59
    	}
69 jpm 60
	}
292 gduche 61
 
773 jpm 62
}