/trunk/src/org/tela_botanica/client/modeles/dao/ListeReferentielPersoAsynchroneDAO.java |
---|
5,6 → 5,7 |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.objets.Configuration; |
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso; |
import org.tela_botanica.client.modeles.objets.Utilisateur; |
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso.TypesReferentiels; |
import org.tela_botanica.client.observation.ObservationModele; |
20,87 → 21,7 |
import com.google.gwt.json.client.JSONValue; |
public class ListeReferentielPersoAsynchroneDAO { |
/** |
* Cache |
* |
*/ |
private HashMap<String,ListeReferentielPerso> cache = new HashMap(); |
private TypesReferentiels refDemande = null; |
public ListeReferentielPersoAsynchroneDAO(ObservationModele obs) { |
} |
public void setRefDemande(TypesReferentiels refDemande) { |
this.refDemande = refDemande; |
} |
public void obtenirListeDonnees(final Rafraichissable r, String utilisateur, final String critere) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + |
"/SelfRefList/"+ |
utilisateur+"/"+ |
refDemande.toString()+ |
"?start=0&limit=50&recherche="+URL.encode(critere)); |
try { |
rb.sendRequest(null, new RequestCallback() { |
@Override |
public void onError(final Request request, final Throwable exception) { |
// TODO Auto-generated method stub |
} |
@Override |
public void onResponseReceived(final Request request, |
final Response response) { |
final ListeReferentielPerso referentielData; |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
JSONArray reponse = null; |
// si c'est un tableau |
if ((reponse = responseValue.isArray()) != null) { |
JSONString elementsRef; |
final int taillemax = reponse.size(); |
referentielData = new ListeReferentielPerso(taillemax, refDemande); |
for (int i = 0; i < taillemax; i++) { |
if ((elementsRef = reponse.get(i).isString()) != null) { |
String valeur = elementsRef.stringValue(); |
referentielData.put(i+"", valeur); |
} |
} |
} else { |
referentielData = new ListeReferentielPerso(0, refDemande); |
} |
// 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(referentielData, true); |
} |
}); |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} |
public static String getUrlReferentielPerso(TypesReferentiels refDemande) { |
return Configuration.getServiceBaseUrl() + |
"/SelfRefList/"+ |
108,4 → 29,8 |
refDemande.toString()+ |
"?start=0&limit=50&recherche="; |
} |
public static String formaterUrlRequeteAutoCompletionPerso(String urlRequete, String valeur) { |
return urlRequete.replace("{utilisateur}", Utilisateur.getInstance().getIdentifiantUtilisateurConsulte())+URL.encodeQueryString(valeur); |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/dao/ListeReferentielNomAsynchroneDAO.java |
---|
5,7 → 5,6 |
import org.tela_botanica.client.interfaces.FournisseurListe; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.objets.Configuration; |
import org.tela_botanica.client.modeles.objets.ListeReferentielNom; |
import org.tela_botanica.client.modeles.objets.ReferentielNom; |
import org.tela_botanica.client.observation.ObservationModele; |
25,115 → 24,27 |
* @author David Delon |
* |
*/ |
public class ListeReferentielNomAsynchroneDAO implements FournisseurListe { |
public class ListeReferentielNomAsynchroneDAO { |
//TODO : limiter taille du cache ? (si pb performance) |
/** |
* Le modèle associé au DAO |
*/ |
private ObservationModele observationModele = null ; |
private String referentiel = null; |
/** |
* Cache |
* |
*/ |
private HashMap <String,ListeReferentielNom> cache = new HashMap(); |
public ListeReferentielNomAsynchroneDAO(ObservationModele observationModele) |
{ |
this.observationModele=observationModele; |
public static String getBaseUrlReferentielNom() { |
return Configuration.getServiceBaseUrl()+"/NameSearch/{referentiel}/"; |
} |
@Override |
public void obtenirListeDonnees(final Rafraichissable r,final String referentiel, final String critere) |
{ |
ListeReferentielNom referentielNomDataFromCache=null; |
public static String formaterUrlAutoCompletionReferentielNom(String urlRequete, String referentiel, String critere) { |
// 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("/"); |
urlRequete = urlRequete.replace("{referentiel}", referentiel); |
if(this.referentiel != referentiel) { |
cache.clear(); |
} |
// En cache ? |
if ((referentielNomDataFromCache=getFromCache(critere))!=null) { |
r.rafraichir(referentielNomDataFromCache,true); |
String params = ""; |
if(criteres.length > 1) { |
String critere1 = criteres[0]; |
String critere2 = criteres[1]; |
params += URL.encode(critere1)+"/"+URL.encode(critere2); |
} else { |
params += URL.encode(critere); |
} |
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); |
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) { |
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) ; |
} |
addToCache(critere, referentielNomData); |
r.rafraichir(referentielNomData,true); |
} |
}) ; |
} catch(RequestException e) { |
} |
} // fin else si pas de cache |
return urlRequete+params; |
} |
@Override |
public void obtenirListeDonnees(Rafraichissable r, String critere) { |
obtenirListeDonnees(r, "bdtfx", critere); |
} |
private void addToCache(String query, ListeReferentielNom result) { |
cache.put(query.toLowerCase(),result); |
} |
private ListeReferentielNom getFromCache (String query) { |
return cache.get(query.toLowerCase()); |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/dao/ListeReferentielLocaliteAsynchroneDAO.java |
---|
5,7 → 5,6 |
import org.tela_botanica.client.interfaces.FournisseurListe; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.objets.Configuration; |
import org.tela_botanica.client.modeles.objets.ListeReferentielLocalite; |
import org.tela_botanica.client.modeles.objets.ReferentielLocalite; |
import org.tela_botanica.client.observation.ObservationModele; |
25,122 → 24,9 |
* @author David Delon |
* |
*/ |
public class ListeReferentielLocaliteAsynchroneDAO implements FournisseurListe { |
public class ListeReferentielLocaliteAsynchroneDAO { |
/** |
* Le modèle associé au DAO. |
*/ |
private ObservationModele observationModele = null; |
/** |
* Cache |
* |
*/ |
private HashMap<String,ListeReferentielLocalite> cache = new HashMap(); |
/** |
* Constructeur. |
* @param obs : Modele |
*/ |
public ListeReferentielLocaliteAsynchroneDAO(final ObservationModele obs) { |
this.observationModele = obs; |
public static String getUrlReferentielLocalites() { |
return Configuration.getServiceBaseUrl()+"/LocationSearch/"; |
} |
/** |
* Envoie une requete au serveur jrest pour obtenir les localites correspondant |
* à des critères données en paramètres. |
* @param r le rafraichissable qui demande la mise à jour |
* @param critere un string contenant le terme a rechercher |
*/ |
@Override |
public final void obtenirListeDonnees(final Rafraichissable r, final String critere) { |
ListeReferentielLocalite referentielLocaliteDataFromCache=null; |
// En cache ? |
if ((referentielLocaliteDataFromCache=getFromCache(critere))!=null) { |
r.rafraichir(referentielLocaliteDataFromCache,true); |
} |
else { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + "/LocationSearch/" + URL.encodeComponent(critere)); |
try { |
rb.sendRequest(null, new RequestCallback() { |
@Override |
public void onError(final Request request, final Throwable exception) { |
// TODO Auto-generated method stub |
} |
@Override |
public void onResponseReceived(final Request request, |
final Response response) { |
final ListeReferentielLocalite referentielLocaliteData; |
final JSONValue responseValue = JSONParser.parse(response.getText()); |
JSONArray reponse = null; |
// si c'est un tableau |
if ((reponse = responseValue.isArray()) != null) { |
JSONArray localites; |
final int taillemax = reponse.size(); |
referentielLocaliteData = new ListeReferentielLocalite(taillemax); |
for (int i = 0; i < taillemax; i++) { |
if ((localites = reponse.get(i).isArray()) != null) { |
String localite = ((JSONString) localites.get(0)).stringValue(); |
String departement = ((JSONString) localites.get(1)).stringValue(); |
ReferentielLocalite com = new ReferentielLocalite(localite, departement); |
referentielLocaliteData.put(com.getLocalite() + com.getCodeLocalite(), com); |
} |
} |
} else { |
referentielLocaliteData = new ListeReferentielLocalite(0); |
} |
addToCache(critere, referentielLocaliteData); |
r.rafraichir(referentielLocaliteData, true); |
} |
}); |
} catch (RequestException e) { |
e.printStackTrace(); |
} |
} // Fin else si pas de cache |
} |
/** |
* Fonction à implémenter dans le futur, lors de l'utilisation de plusieurs |
* référentiels de localité |
*/ |
@Override |
public void obtenirListeDonnees(Rafraichissable r, String referentiel, String critere) { |
// TODO Auto-generated method stub |
} |
private void addToCache(String query, ListeReferentielLocalite result) { |
cache.put(query.toLowerCase(),result); |
} |
private ListeReferentielLocalite getFromCache (String query) { |
return cache.get(query.toLowerCase()); |
} |
} |