Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2391 → Rev 2392

/trunk/src/org/tela_botanica/client/modeles/dao/ListeReferentielChampsEtendusDAO.java
4,6 → 4,7
import java.util.HashMap;
import java.util.Iterator;
 
import org.tela_botanica.client.cel2;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.ListeChampsEtendus;
11,6 → 12,7
import org.tela_botanica.client.modeles.objets.ListeReferentielPerso;
import org.tela_botanica.client.observation.ObservationModele;
 
import com.google.gwt.core.client.Callback;
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
21,15 → 23,17
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 ListeReferentielChampsEtendusDAO {
/**
* Cache
*
*/
private HashMap<String,ListeReferentielPerso> cache = new HashMap();
public static ListeGroupesChampsEtendus cacheGroupes;
public static HashMap<String, String> cacheClesLabels;
public static HashMap<String, String> cacheDescription = new HashMap<String, String>();
public static String prefixePageChampEtendu = "CE";
public ListeReferentielChampsEtendusDAO(ObservationModele obs) {
}
38,12 → 42,10
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() +
"/NomsChampsEtendus/cle"+
"?recherche="+URL.encode(recherche));
"?recherche="+URL.encode(recherche));
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onResponseReceived(final Request request,
final Response response) {
54,10 → 56,8
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
// TODO Auto-generated method stub
}
});
} catch (RequestException e) {
75,7 → 75,6
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onResponseReceived(final Request request,
final Response response) {
97,9 → 96,7
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
}
});
} catch (RequestException e) {
109,25 → 106,143
}
public void obtenirGroupesChampsEtendus(final Rafraichissable r) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() +
"/GroupesChampsEtendus/");
try {
rb.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(final Request request,
final Response response) {
ListeGroupesChampsEtendus valeurs = new ListeGroupesChampsEtendus(response.getText());
r.rafraichir(valeurs, true);
if(cacheGroupes == null) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() +
"/CatalogueChampsEtendus/groupes");
try {
rb.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(final Request request,
final Response response) {
ListeGroupesChampsEtendus valeurs = new ListeGroupesChampsEtendus(response.getText());
cacheGroupes = valeurs;
r.rafraichir(valeurs, true);
}
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
});
} catch (RequestException e) {
e.printStackTrace();
}
} else {
r.rafraichir(cacheGroupes, true);
}
}
public void obtenirCatalogueChampsEtendus(final Rafraichissable r) {
if(cacheClesLabels == null) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() +
"/CatalogueChampsEtendus/champs");
try {
rb.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(final Request request,
final Response response) {
try {
JSONValue champsJson = JSONParser.parseStrict(response.getText());
JSONArray champs = champsJson.isArray();
cacheClesLabels = new HashMap<String, String>(champs.size());
for (int i = 0; i < champs.size(); i++) {
JSONObject champ = champs.get(i).isObject();
String cle = champ.get("cle").isString().stringValue();
String label = champ.get("label").isString().stringValue();
cacheClesLabels.put(cle, label);
 
r.rafraichir(cacheClesLabels, true);
}
} catch (Exception e) {
// TODO: handle exception
}
}
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
});
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
});
} catch (RequestException e) {
e.printStackTrace();
}
} else {
r.rafraichir(cacheClesLabels, true);
}
}
public static void telechargerDescriptionWikini(final String champ, final Callback<String, String> callback) {
String url = Configuration.getWikiDescriptionChampsEtendusRestUrl()+prefixePageChampEtendu+champ+"?";
String options = Configuration.getWikiDescriptionChampsEtendusUrlOptions();
 
if(cacheDescription.containsKey(champ)) {
callback.onSuccess(cacheDescription.get(champ));
}
} catch (RequestException e) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,
url + options);
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onResponseReceived(final Request request,
final Response response) {
final JSONValue responseValue = JSONParser.parse(response.getText());
String description = "";
JSONObject reponse = responseValue.isObject();
if(reponse != null && reponse.get("texte") != null && reponse.get("texte").isString() != null) {
description = reponse.get("texte").isString().stringValue();
}
cacheDescription.put(champ, description);
callback.onSuccess(description);
}
 
@Override
public void onError(Request request, Throwable exception) {
cacheDescription.put(champ, "");
callback.onFailure("");
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
// Pour obliger la page wiki a avoir été créée avant de rediriger, on utilise une requete synchrone
private static native String effectuerRequeteSynchrone(String url, String contenu, String typeRequete)/*-{
// tant pis pour les vieux navigateurs, ie6 etc...
// tous ceux que l'on supporte connaissent XMLHttpRequest
var xhReq = new XMLHttpRequest();
xhReq.open(typeRequete, url, false);
if(typeRequete == "POST") xhReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhReq.send(contenu);
var serverResponse = xhReq.status + xhReq.responseText;
return serverResponse;
}-*/;
public static void creerPageWikini(final String champ) {
String url = Configuration.getWikiDescriptionChampsEtendusRestUrl()+prefixePageChampEtendu+champ+"?";
String options = Configuration.getWikiDescriptionChampsEtendusUrlOptions();
String pageTpl = Configuration.getWikiDescriptionChampsEtendusUrlOptionsPageTpl();
effectuerRequeteSynchrone(url + options + pageTpl, "", "GET");
}
public static String obtenirUrlEditionDescriptionWiki(String cle) {
String url = Configuration.getWikiDescriptionChampsEtendusPageUrl()+prefixePageChampEtendu+cle+"/edit";
return url;
}
}