1,5 → 1,7 |
package org.tela_botanica.client.modeles; |
|
import java.util.HashMap; |
|
import org.tela_botanica.client.interfaces.FournisseurListe; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.observation.ObservationModele; |
15,7 → 17,7 |
import com.google.gwt.json.client.JSONValue; |
|
/** |
* DAO la liste des communes. |
* DAO la liste des communes. Utilisation d'un cache pour eviter les requetes inutiles |
* @author David Delon |
* |
*/ |
31,6 → 33,15 |
|
|
/** |
* Cache |
* |
*/ |
|
private HashMap<String,ListeReferentielCommune> cache = new HashMap(); |
|
|
|
/** |
* Constructeur. |
* @param obs : Modele |
*/ |
50,6 → 61,20 |
|
public final void obtenirListeDonnees(final Rafraichissable r, final String critere) { |
|
|
ListeReferentielCommune referentielCommuneDataFromCache=null; |
|
|
// En cache ? |
if ((referentielCommuneDataFromCache=getFromCache(critere))!=null) { |
r.rafraichir(referentielCommuneDataFromCache,true); |
} |
|
else { |
|
|
|
|
RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, observationModele.getConfig().getServiceBaseUrl() + "/LocationSearch/" + critere); |
|
try { |
100,6 → 125,7 |
// dans tous les cas on transmet la liste crée au rafraichissable en lui demandant de répandre les données car il est |
// le premier à les recevoir |
|
addToCache(critere, referentielCommuneData); |
r.rafraichir(referentielCommuneData, true); |
|
} |
111,5 → 137,18 |
e.printStackTrace(); |
} |
|
} // Fin else si pas de cache |
|
} |
|
private void addToCache(String query, ListeReferentielCommune result) { |
cache.put(query.toLowerCase(),result); |
} |
|
private ListeReferentielCommune getFromCache (String query) { |
return (ListeReferentielCommune) cache.get(query.toLowerCase()); |
} |
|
|
|
} |