Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1885 → Rev 1886

/trunk/src/org/tela_botanica/del/client/utils/TBSuggestOracle.java
15,10 → 15,10
public class TBSuggestOracle extends SuggestOracle {
 
// On devrait gérer des objets qui contiennent le nn plutôt que de se baser uniquement sur des Strings
protected ArrayList<String> possibilites;
protected ArrayList<InfosNomPourAutocompletion> possibilites;
 
public TBSuggestOracle() {
this.possibilites = new ArrayList<String>();
this.possibilites = new ArrayList<InfosNomPourAutocompletion>();
}
 
public void clear() {
25,7 → 25,7
this.possibilites.clear();
}
 
public void add(String suggestion) {
public void add(InfosNomPourAutocompletion suggestion) {
this.possibilites.add(suggestion);
}
 
34,10 → 34,14
int limit = request.getLimit();
List<MultiWordSuggestion> retenus = new ArrayList<MultiWordSuggestion>();
 
for (String possibilite : this.possibilites) {
String possibiliteHtml = possibilite;
if (possibilite.toLowerCase().startsWith(query)) {
MultiWordSuggestion muWoSug = new MultiWordSuggestion(possibilite, possibiliteHtml);
for (InfosNomPourAutocompletion possibilite : this.possibilites) {
String possibiliteTexte = possibilite.getNs();
String possibiliteHtml = possibiliteTexte;
if (possibilite.isRetenu()) {
possibiliteHtml = "<strong>" + possibiliteHtml + "</strong>";
}
if (possibiliteTexte.toLowerCase().startsWith(query)) {
MultiWordSuggestion muWoSug = new MultiWordSuggestion(possibiliteTexte, possibiliteHtml);
retenus.add(muWoSug);
}
}
/trunk/src/org/tela_botanica/del/client/utils/InfosNomPourAutocompletion.java
New file
0,0 → 1,48
package org.tela_botanica.del.client.utils;
 
/**
* Juste histoire de pouvoir stocker le nom scientifique, le numéro nomenclatural et
* le statut "retenu" dans un même endroit, pour nourrir ensuite l'autocomplétion
*
* @author mathias
*/
public class InfosNomPourAutocompletion {
 
/** numéro nomenclatural - un int suffit largement */
protected int nn;
/** nom scientifique (complet, avec auteur) */
protected String ns;
/** si true, désigne un nom retenu */
protected boolean retenu;
 
public InfosNomPourAutocompletion(int nn, String ns, boolean retenu) {
this.nn = nn;
this.ns = ns;
this.retenu = retenu;
}
 
// le parseur JSON produit des double, soyons courtois
public InfosNomPourAutocompletion(double nn, String ns, boolean retenu) {
this((int)nn, ns, retenu);
}
 
public int getNn() {
return nn;
}
public String getNs() {
return ns;
}
public boolean isRetenu() {
return retenu;
}
 
public void setNn(int nn) {
this.nn = nn;
}
public void setNs(String ns) {
this.ns = ns;
}
public void setRetenu(boolean retenu) {
this.retenu = retenu;
}
}
/trunk/src/org/tela_botanica/del/client/utils/UtilitairesAutoCompletionService.java
1,13 → 1,15
package org.tela_botanica.del.client.utils;
 
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
 
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
 
public class UtilitairesAutoCompletionService {
31,30 → 33,42
return chaineTraitee;
}
public static Map<String, String> extraireTaxonsNumNomsResultatRetourSimple(Response response) {
public static Map<String, InfosNomPourAutocompletion> extraireTaxonsNumNomsResultatRetourSimple(Response response) {
JSONObject responseValue = JSONParser.parseStrict(response.getText()).isObject();
JSONArray noms = responseValue.get("resultats").isArray();
final int taillemax = noms.size();
Map<String, String> retourTaxons = new HashMap<String, String>(taillemax);
// LinkedHashMap préserve l'ordre
Map<String, InfosNomPourAutocompletion> retourTaxons = new LinkedHashMap<String, InfosNomPourAutocompletion>(taillemax);
for (int i = 0; i < taillemax; i++) {
String nom = (noms.get(i).isArray().get(0).isString().stringValue());
String taxon = (noms.get(i).isArray().get(1).isString().stringValue());
retourTaxons.put(nom, taxon);
// comment rendre compliqué un format fait pour être simple
JSONObject obj = noms.get(i).isObject();
String ns = obj.get("ns").isString().stringValue();
double nn = obj.get("nn").isNumber().doubleValue();
boolean retenu = obj.get("retenu").isBoolean().booleanValue();
// empile, Gérard !
retourTaxons.put(ns, new InfosNomPourAutocompletion(nn, ns, retenu));
}
return retourTaxons;
}
public static String[] parserResultatRetourSimple(Response response) {
public static InfosNomPourAutocompletion[] parserResultatRetourSimple(Response response) {
JSONObject responseValue = JSONParser.parseStrict(response.getText()).isObject();
JSONArray noms = responseValue.get("resultats").isArray();
String[] valeurs = new String[0];
 
final int taillemax = noms.size();
valeurs = new String[taillemax];
InfosNomPourAutocompletion[] valeurs = new InfosNomPourAutocompletion[taillemax];
 
// Eh les gars, si on refaisait le même truc ici que celui qu'on vient de faire en haut ?
for (int i = 0; i < taillemax; i++) {
valeurs[i] = (noms.get(i).isArray().get(0).isString().stringValue());
// comment rendre comp... euh j'ai déjà dit ça il y a 20 lignes, non ?
JSONObject obj = noms.get(i).isObject();
String ns = obj.get("ns").isString().stringValue();
double nn = obj.get("nn").isNumber().doubleValue();
boolean retenu = obj.get("retenu").isBoolean().booleanValue();
// empile, Marcel !
valeurs[i] = new InfosNomPourAutocompletion(nn, ns, retenu);
}
return valeurs;
}