Subversion Repositories eFlore/Applications.del

Rev

Rev 1256 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.del.client.utils;

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 {
        
        public static String effectuerPreTraitementChaineRequeteGenreEspeceSlash(String requete) {
                String chaineTraitee = requete;
                String[] parties = requete.split(" ", 2);
                
                if(parties.length == 2) {
                        if(parties[1].trim().isEmpty()) {
                                parties[1] = "*";
                        }
                        chaineTraitee = parties[0]+"/"+parties[1];
                }
                
                return chaineTraitee;
        }
        
        public static String effectuerPreTraitementChaineRequeteGenreEspeceEflore(String requete) {
                
                String chaineTraitee = "?recherche=etendue&ns.structure=au&retour.format=oss&masque="+requete;
                return chaineTraitee;
        }
        
        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();
                // LinkedHashMap préserve l'ordre
                Map<String, InfosNomPourAutocompletion> retourTaxons = new LinkedHashMap<String, InfosNomPourAutocompletion>(taillemax);
                        
                for (int i = 0; i < taillemax; i++) {
                        // 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 InfosNomPourAutocompletion[] parserResultatRetourSimple(Response response) {
                JSONObject responseValue = JSONParser.parseStrict(response.getText()).isObject();
                JSONArray noms = responseValue.get("resultats").isArray();

                final int taillemax = noms.size();      
                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++) {
                        // 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;
        }
        
        public static String[] parserRetourSimple(Response response) {
                final JSONValue responseValue = JSONParser.parseStrict(response.getText());
                JSONArray noms;
                String[] valeurs = new String[0];
        
                if ((noms=responseValue.isArray()) != null) {
                                
                        final int taillemax = noms.size();      
                        valeurs = new String[taillemax];
                        for (int i = 0; i < taillemax; i++) {
                                valeurs[i] = (noms.get(i).isArray().get(0).isString().stringValue());
                        }
                }
                return valeurs;
        }
        
        public static String[] parserRetourOss(Response response) {
                JSONValue retourJson = JSONParser.parseStrict(response.getText());
                JSONArray tableauResultat = retourJson.isArray().get(1).isArray();
                
                String[] suggestions = new String[tableauResultat.size()];
                for (int i = 0; i < tableauResultat.size(); i++) {
                        suggestions[i] = tableauResultat.get(i).isString().stringValue();
                }
                
                return suggestions;
        }
}