Rev 12 | Blame | Last modification | View Log | RSS feed
package org.tela_botanica.client.modeles;
import org.tela_botanica.client.Util;
import org.tela_botanica.client.interfaces.FournisseurListe;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.observation.ObservationModele;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.HTTPRequest;
import com.google.gwt.user.client.ResponseTextHandler;
/**
* DAO la liste des communes
* @author David Delon
*
*/
public class ListeReferentielCommuneAsynchroneDAO implements FournisseurListe {
/**
* Le modèle associé au DAO
*/
private ObservationModele observationModele = null ;
public ListeReferentielCommuneAsynchroneDAO(ObservationModele observationModele)
{
this.observationModele=observationModele;
}
/**
* Envoie une requete au serveur jrest pour obtenir les communes correspondant
* à des critères données en paramètres
* @param r le rafraichissable qui demande la mise à jour
* @param criteres un string contenant le terme a rechercher
*/
public void obtenirListeDonnees(final Rafraichissable r, String critere)
{
// on envoie le get asynchrone
HTTPRequest.asyncGet(observationModele.getConfig().getServiceBaseUrl()+"/LocationSearch/"+critere, new ResponseTextHandler() {
// si tout se passe bien on reçoit une réponse JSON
public void onCompletion(String responseText) {
final ListeReferentielCommune referentielCommuneData ;
final JSONValue responseValue = JSONParser.parse(responseText);
JSONArray reponse=null;
// si c'est un tableau
if ((reponse=responseValue.isArray()) != null) {
JSONArray communes;
final int taillemax = reponse.size();
referentielCommuneData = new ListeReferentielCommune(taillemax);
for (int i = 0; i < taillemax; i++) {
if ((communes=reponse.get(i).isArray()) != null) {
String commune=((JSONString) communes.get(0)).stringValue();
String departement=((JSONString) communes.get(1)).stringValue();
ReferentielCommune com=new ReferentielCommune(commune, departement);
referentielCommuneData.put(com.getCommune()+com.getDepartement(),com);
}
}
// 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
r.rafraichir(referentielCommuneData,true);
}
}
});
}
}