29,7 → 29,6 |
|
|
//TODO : limiter taille du cache ? (si pb performance) |
|
/** |
* Le modèle associé au DAO |
*/ |
45,17 → 44,9 |
|
public ListeReferentielNomAsynchroneDAO(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 |
*/ |
@Override |
public void obtenirListeDonnees(final Rafraichissable r,final String referentiel, final String critere) |
{ |
70,77 → 61,67 |
r.rafraichir(referentielNomDataFromCache,true); |
} |
|
else { |
|
// On vérifie si un genre et une espèce sont demandées |
// et ajoute le / manuellement car sinon il devient urlencode |
String[] criteres =critere.split("/"); |
String urlParams = "/NameSearch/"+referentiel+"/"; |
if(criteres.length > 1) { |
String critere1 = criteres[0]; |
String critere2 = criteres[1]; |
|
urlParams += URL.encode(critere1)+"/"+URL.encode(critere2); |
} else { |
urlParams += URL.encode(critere); |
} |
|
this.referentiel = referentiel; |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()+urlParams); |
|
try { |
else { |
// On vérifie si un genre et une espèce sont demandées |
// et ajoute le / manuellement car sinon il devient urlencodé |
String[] criteres =critere.split("/"); |
String urlParams = "/NameSearch/"+referentiel+"/"; |
if(criteres.length > 1) { |
String critere1 = criteres[0]; |
String critere2 = criteres[1]; |
urlParams += URL.encode(critere1)+"/"+URL.encode(critere2); |
} else { |
urlParams += URL.encode(critere); |
} |
|
this.referentiel = referentiel; |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()+urlParams); |
|
rb.sendRequest(null, new RequestCallback() { |
|
@Override |
public void onError(Request request, Throwable exception) { |
// TODO Auto-generated method stub |
|
} |
|
@Override |
public void onResponseReceived(Request request, |
Response response) { |
|
final ListeReferentielNom referentielNomData ; |
|
final JSONValue responseValue = JSONParser.parse(response.getText()); |
|
JSONArray reponse=null; |
|
|
// si c'est un tableau |
if ((reponse=responseValue.isArray()) != null) { |
try { |
rb.sendRequest(null, new RequestCallback() { |
|
@Override |
public void onError(Request request, Throwable exception) { |
// TODO Auto-generated method stub |
} |
|
@Override |
public void onResponseReceived(Request request, |
Response response) { |
|
JSONArray noms; |
final int taillemax = reponse.size(); |
|
referentielNomData = new ListeReferentielNom(taillemax); |
for (int i = 0; i < taillemax; i++) { |
if ((noms=reponse.get(i).isArray()) != null) { |
String nom = ((JSONString) noms.get(0)).stringValue(); |
String numeroNom = ((JSONString) noms.get(1)).stringValue(); |
String statut= ((JSONString) noms.get(2)).stringValue(); |
ReferentielNom nomScientifique = new ReferentielNom(nom, numeroNom, statut); |
// FIXME : et si le numero de nom n'est pas unique ? (cas de multirefrentiel....) |
referentielNomData.put(nomScientifique.getNumeroNom(),nomScientifique); |
final ListeReferentielNom referentielNomData ; |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
JSONArray reponse=null; |
|
// si c'est un tableau |
if ((reponse=responseValue.isArray()) != null) { |
|
JSONArray noms; |
final int taillemax = reponse.size(); |
|
referentielNomData = new ListeReferentielNom(taillemax); |
for (int i = 0; i < taillemax; i++) { |
if ((noms=reponse.get(i).isArray()) != null) { |
String nom = ((JSONString) noms.get(0)).stringValue(); |
String numeroNom = ((JSONString) noms.get(1)).stringValue(); |
String statut= ((JSONString) noms.get(2)).stringValue(); |
ReferentielNom nomScientifique = new ReferentielNom(nom, numeroNom, statut); |
// FIXME : et si le numero de nom n'est pas unique ? (cas de multirefrentiel....) |
referentielNomData.put(nomScientifique.getNumeroNom(),nomScientifique); |
} |
} |
} else { |
referentielNomData = new ListeReferentielNom(0) ; |
} |
} else { |
|
referentielNomData = new ListeReferentielNom(0) ; |
addToCache(critere, referentielNomData); |
r.rafraichir(referentielNomData,true); |
} |
addToCache(critere, referentielNomData); |
r.rafraichir(referentielNomData,true); |
} |
}) ; |
|
} catch(RequestException e) { |
|
} |
|
} // fin else si pas de cache |
|
}) ; |
|
} catch(RequestException e) { |
|
} |
} // fin else si pas de cache |
} |
|
@Override |
155,4 → 136,4 |
private ListeReferentielNom getFromCache (String query) { |
return cache.get(query.toLowerCase()); |
} |
} |
} |