Subversion Repositories eFlore/Applications.cel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 2910 → Rev 2911

/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/DateObservation.java
New file
0,0 → 1,33
package org.tela_botanica.client.modeles.objets;
 
public class DateObservation {
private String annee=null;
private String mois=null;
private String jour=null;
public DateObservation(String date) {
String dateTab[] = date.split(" ") ;
String dateSpl[] = dateTab[0].split("-") ;
annee= dateSpl[0];
mois= dateSpl[1];
jour= dateSpl[2];
}
 
public String getAnnee() {
return annee;
}
 
 
public String getMois() {
return mois;
}
 
 
public String getJour() {
return jour;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/Observation.java
New file
0,0 → 1,402
package org.tela_botanica.client.modeles.objets;
 
import java.util.Map;
 
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.json.client.JSONObject;
 
 
public class Observation {
 
private String id=null;
private String transmis=null;
private String nomSaisi=null;
private String nomRetenu=null;
private String numeroNomenclaturalSaisi=null;
private String numeroNomenclaturalRetenu=null;
private String numeroTaxonomique=null;
private String famille=null;
private String localite=null;
private String identifiantLocalite=null;
private String lieudit=null;
private String station=null;
private String milieu=null;
private String commentaire=null;
private String date=null;
private String numeroOrdre=null;
private String motsCles=null;
private String latitude=null;
private String longitude=null;
private String referentielGeo=null;
private String referentielTaxo=null;
private String abondance=null;
private String certitude=null;
private String phenologie=null;
private String altitude=null;
private String pays=null;
private Map<String, ChampEtendu> champsEtendus=null;
 
public Observation() {
}
 
/**
* Une observation telle que stockee dans la base de donnee
*
* @param transmis
* @param nomSaisi
* @param nomRetenu
* @param numeroNomenclaturalSaisi
* @param numeroNomenclaturalRetenu
* @param numeroTaxonomique
* @param famille
* @param localite
* @param IdentifiantLocalite
* @param lieudit
* @param station
* @param milieu
* @param commentaire
* @param date
* @param numeroOrdre
*/
public Observation(String transmis, String nomSaisi, String nomRetenu, String numeroNomenclaturalSaisi, String numeroNomenclaturalRetenu, String numeroTaxonomique, String famille, String localite, String identifiantLocalite, String lieudit, String station, String milieu, String commentaire, String date, String numeroOrdre, String pays) {
this.transmis = transmis;
this.nomSaisi = nomSaisi;
this.nomRetenu = nomRetenu;
this.numeroNomenclaturalSaisi = numeroNomenclaturalSaisi;
this.numeroNomenclaturalRetenu = numeroNomenclaturalRetenu;
this.numeroTaxonomique = numeroTaxonomique;
this.famille = famille;
this.identifiantLocalite = identifiantLocalite;
this.lieudit = lieudit;
this.station = station;
this.milieu = milieu;
this.commentaire = commentaire;
this.date = date;
this.numeroOrdre = numeroOrdre;
// Suppresion indication departementale (on pourrait faire mieux !!)
if(localite != null) {
int pos=localite.indexOf(" (" );
if (pos>=0) {
this.localite=localite.substring(0,pos);
}
else {
this.localite=localite;
}
}
this.motsCles = "";
}
public Observation(JSONObject observation) {
this.transmis = Util.getValeurJsonOuVide(observation, "transmission");
this.pays = Util.getValeurJsonOuVide(observation, "pays");
this.identifiantLocalite = Util.getValeurJsonOuVide(observation, "ce_zone_geo");
this.nomSaisi = Util.getValeurJsonOuVide(observation, "nom_sel");
this.nomRetenu = (Util.getValeurJsonOuVide(observation,"nom_ret"));
this.numeroNomenclaturalSaisi = Util.getValeurJsonOuVide(observation,"nom_sel_nn");
this.numeroNomenclaturalRetenu = Util.getValeurJsonOuVide(observation,"nom_ret_nn");
this.numeroTaxonomique= Util.getValeurJsonOuVide(observation,"nt");
this.famille = Util.getValeurJsonOuVide(observation,"famille");
this.localite = Util.getValeurJsonOuVide(observation,"zone_geo");
this.lieudit = Util.getValeurJsonOuVide(observation,"lieudit");
this.station= Util.getValeurJsonOuVide(observation,"station");
this.milieu = Util.getValeurJsonOuVide(observation,"milieu");
this.commentaire = Util.getValeurJsonOuVide(observation,"commentaire");
this.date = Util.getValeurJsonOuVide(observation,"date_observation");
this.numeroOrdre = Util.getValeurJsonOuVide(observation,"ordre");
this.id = Util.getValeurJsonOuVide(observation,"id_observation");
this.latitude = Util.getValeurJsonOuVide(observation,"latitude");
this.longitude = Util.getValeurJsonOuVide(observation,"longitude");
this.altitude = Util.getValeurJsonOuVide(observation,"altitude");
this.motsCles = Util.getValeurJsonOuVide(observation,"mots_cles");
this.abondance = Util.getValeurJsonOuVide(observation,"abondance");
this.certitude = Util.getValeurJsonOuVide(observation,"certitude");
this.phenologie = Util.getValeurJsonOuVide(observation,"phenologie");
this.setReferentielTaxo(Util.getValeurJsonOuVide(observation,"nom_referentiel"));
this.setChampsEtendus(Util.getMapValeursOuVide(observation, "obs_etendue"));
}
/**
* Une observation saisie ou modifiee
*
* @param nomSaisi
* @param numeroNomenclaturalSaisi
* @param localite
* @param IdentifiantLocalite
* @param lieudit
* @param station
* @param milieu
* @param commentaire
* @param date
*
*/
public Observation(String nomSaisi, String numeroNomenclaturalSaisi, String localite, String identifiantLocalite, String lieudit, String station, String milieu, String commentaire, String date) {
this.nomSaisi = nomSaisi;
this.numeroNomenclaturalSaisi = numeroNomenclaturalSaisi;
this.identifiantLocalite = identifiantLocalite;
this.lieudit = lieudit;
this.station = station;
this.milieu = milieu;
this.commentaire = commentaire;
this.date = date;
// Suppresion indication departementale (on pourrait faire mieux !!)
if(localite != null) {
int pos=localite.indexOf(" (" );
if (pos>=0) {
this.localite=localite.substring(0,pos);
}
else {
this.localite=localite;
}
}
this.motsCles = "" ;
}
 
 
public String getNomSaisi() {
return nomSaisi;
}
 
 
public String getNumeroOrdre() {
return numeroOrdre;
}
 
 
public String getCommentaire() {
return commentaire;
}
 
 
public String getDate() {
return date;
}
 
 
public String getFamille() {
return famille;
}
 
 
public String getLieudit() {
return lieudit;
}
 
 
public String getLocalite() {
return localite;
}
 
 
public String getIdentifiantLocalite() {
if(identifiantLocalite != null) {
identifiantLocalite = identifiantLocalite.replaceAll("\"", "");
}
return identifiantLocalite;
}
public String getPays() {
return pays;
}
public void setPays(String pays) {
this.pays = pays;
}
 
public String getMilieu() {
return milieu;
}
 
 
public String getNomRetenu() {
return nomRetenu;
}
 
 
public String getNumeroNomenclaturalSaisi() {
return numeroNomenclaturalSaisi;
}
 
 
public String getNumeroNomenclaturalRetenu() {
return numeroNomenclaturalRetenu;
}
 
 
public String getNumeroTaxonomique() {
return numeroTaxonomique;
}
 
public void setNomRetenu(String nomRetenu) {
this.nomRetenu = nomRetenu;
}
 
public void setNumeroNomenclaturalSaisi(String numeroNomenclaturalSaisi) {
this.numeroNomenclaturalSaisi = numeroNomenclaturalSaisi;
}
 
public void setNumeroNomenclaturalRetenu(String numeroNomenclaturalRetenu) {
this.numeroNomenclaturalRetenu = numeroNomenclaturalRetenu;
}
 
public void setNumeroTaxonomique(String numeroTaxonomique) {
this.numeroTaxonomique = numeroTaxonomique;
}
 
public String getStation() {
return station;
}
 
 
public String getTransmis() {
return transmis;
}
public String getMotsCles() {
return motsCles;
}
public String getLatitude() {
return this.latitude ;
}
public String getLongitude() {
return this.longitude ;
}
public String getReferentielGeo() {
return this.referentielGeo ;
}
public String getId() {
return this.id;
}
public String getAbondance() {
return this.abondance;
}
public String getCertitude() {
return this.certitude;
}
public void setMotsCles(String motsCles) {
this.motsCles = motsCles;
}
public void setNumeroOrdre(String numeroOrdre) {
this.numeroOrdre = numeroOrdre;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public void setReferentielGeo(String refGeo) {
this.referentielGeo = refGeo;
}
 
public void setId(String id) {
this.id = id;
}
public void setAbondance(String abondance) {
this.abondance = abondance;
}
public void setCertitude(String certitude) {
this.certitude = certitude;
}
 
public String getReferentielTaxo() {
return referentielTaxo;
}
 
public String getCodeCourtReferentielTaxo() {
String codeRef = "";
if(!getReferentielTaxo().equals("") && getReferentielTaxo().length() >= 3) {
int positionDeuxPoints = referentielTaxo.indexOf(':');
if (positionDeuxPoints == -1) {
codeRef = referentielTaxo;
} else {
codeRef = referentielTaxo.substring(0, positionDeuxPoints);
}
}
return codeRef;
}
 
public void setReferentielTaxo(String referentielTaxo) {
this.referentielTaxo = referentielTaxo;
}
public String getPhenologie() {
return phenologie;
}
public void setPhenologie(String phenologie) {
this.phenologie = phenologie;
}
 
public String getAltitude() {
return altitude;
}
 
 
public void setAltitude(String altitude) {
this.altitude = altitude;
}
 
 
public void setValeurChampEtendu(String cle, String valeur, String label) {
ChampEtendu champ = new ChampEtendu(cle, label, valeur);
champsEtendus.put(cle, champ);
}
public ChampEtendu getChampEtendu(String cle) {
ChampEtendu champ = null;
if(champsEtendus.containsKey(cle)) {
champ = champsEtendus.get(cle);
}
return champ;
}
public String getLabelChampEtendu(String cle) {
String valeur = "";
if(champsEtendus.containsKey(cle)) {
valeur = champsEtendus.get(cle).getLabel();
}
return valeur;
}
 
public String getValeurChampEtendu(String cle) {
String valeur = "";
if(champsEtendus.containsKey(cle)) {
valeur = champsEtendus.get(cle).getValeur();
}
return valeur;
}
public Map<String, ChampEtendu> getChampsEtendus() {
return champsEtendus;
}
 
public void setChampsEtendus(Map<String, ChampEtendu> champsEtendus) {
this.champsEtendus = champsEtendus;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ListeObservation.java
New file
0,0 → 1,60
package org.tela_botanica.client.modeles.objets;
 
import java.util.LinkedHashMap;
 
/**
* table de hachage composée d'observation, renvoyé par les objets de type DAO
* pour les images. La clé est l'identifiant de l'observation dans la base de
* données, et la valeur un objet de type Observation
*
* L'uitilisation de LinkedHashMap permet de conserver l'ordre d'insertion des
* elements à la lecture
*
* @author david delon
*
*/
public class ListeObservation extends LinkedHashMap<String, Observation> {
/**
*
*/
private static final long serialVersionUID = 2715320270773281540L;
 
/*
* Constructeur sans paramètres
*/
public ListeObservation() {
super();
}
 
/**
* Constructeur avec paramètre
*
* @param taille
* la taille de la table de hachage
*/
public ListeObservation(int taille) {
super(taille);
}
 
/**
* Constructeur avec paramètre
*
* @param ic
* un tableau d'ImageCarnet
*/
public ListeObservation(Observation[] obs) {
super();
for (int i = 0; i < obs.length; i++) {
if (obs[i] != null && obs[i] instanceof Observation) {
this.put(obs[i].getNumeroOrdre(), obs[i]);
}
}
}
 
public void ajouterObservation(Observation obs) {
if (obs != null) {
this.put(obs.getNumeroOrdre(), obs);
}
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ChampEtendu.java
New file
0,0 → 1,42
package org.tela_botanica.client.modeles.objets;
 
public class ChampEtendu {
 
private String cle;
private String label;
private String valeur;
public ChampEtendu() {
}
public ChampEtendu(String cle, String label, String valeur) {
this.setCle(cle);
this.setLabel(label);
this.setValeur(valeur);
}
 
public String getCle() {
return cle;
}
 
public void setCle(String cle) {
this.cle = cle;
}
 
public String getLabel() {
return label;
}
 
public void setLabel(String label) {
this.label = label;
}
 
public String getValeur() {
return valeur;
}
 
public void setValeur(String valeur) {
this.valeur = valeur;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ListeChampsEtendus.java
New file
0,0 → 1,30
package org.tela_botanica.client.modeles.objets;
 
import java.util.HashMap;
import java.util.Iterator;
 
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 ListeChampsEtendus extends HashMap<String, String> {
public ListeChampsEtendus(String listeChampsEtendusJson) {
super();
final JSONValue responseValue = JSONParser.parse(listeChampsEtendusJson);
JSONObject reponse = null;
// si c'est un objet
if ((reponse = responseValue.isObject()) != null) {
Iterator<String> it = reponse.keySet().iterator();
while(it.hasNext()) {
String cle = it.next();
String valeur = reponse.get(cle).isString().stringValue();
this.put(cle, valeur);
}
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/EntiteGeographiqueObservation.java
New file
0,0 → 1,89
package org.tela_botanica.client.modeles.objets;
 
/**
*
* Classe representant une idZoneGeo geographique (localite, zoneGeo, lieu dit) presente dans la liste des observations
*
*/
 
public class EntiteGeographiqueObservation {
 
private String idZoneGeo=null;
private String zoneGeo=null;
private String lieuDit=null;
private String station=null;
private String lat=null;
private String lon=null;
private String pays=null;
private int zoom = 0; // si zoom <= 0, on l'ignore lors du rafraîchissement
 
public EntiteGeographiqueObservation() {
}
 
/**
* @param zoneGeo
* @param departement
*/
 
public EntiteGeographiqueObservation(String idZoneGeo, String zoneGeo, String lieuDit, String station, int zoom) {
this(idZoneGeo, zoneGeo, lieuDit, station);
this.zoom = zoom;
}
 
public EntiteGeographiqueObservation(String idZoneGeo, String zoneGeo, String lieuDit, String station) {
this.idZoneGeo = idZoneGeo;
this.zoneGeo = zoneGeo;
this.lieuDit = lieuDit;
this.station = station;
}
public void setPays(String pays) {
this.pays = pays;
}
public String getPays() {
return pays;
}
 
public void setLat(String la) {
lat = la;
}
 
public void setLon(String lo) {
lon = lo;
}
 
public void setZoom(int zoom) {
this.zoom = zoom;
}
 
public String getLat() {
return lat;
}
public String getLon() {
return lon;
}
 
public String getIdZoneGeo() {
return idZoneGeo;
}
 
 
public String getZoneGeo() {
return zoneGeo;
}
 
 
public String getLieuDit() {
return lieuDit;
}
public String getStation() {
return station;
}
 
public int getZoom() {
return zoom;
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ListeEntiteGeographiqueObservation.java
New file
0,0 → 1,54
package org.tela_botanica.client.modeles.objets;
 
 
import java.util.LinkedHashMap;
 
/**
* table de hachage composée d'entite geographique, renvoyé par les objets de type DAO
* La clé est le nom de l'entite + le nom de l'entite parente
*
* @author david delon
*
*/
public class ListeEntiteGeographiqueObservation extends LinkedHashMap<String, EntiteGeographiqueObservation> {
private static final long serialVersionUID = 2717710270773281540L;
/**
* Constructeur sans paramètres
*/
public ListeEntiteGeographiqueObservation()
{
super();
}
/**
* Constructeur avec paramètre
* @param taille la taille de la table de hachage
*/
public ListeEntiteGeographiqueObservation(int taille)
{
super(taille);
}
/**
* Constructeur avec paramètre
* @param ic un tableau d'ImageCarnet
*/
public ListeEntiteGeographiqueObservation(EntiteGeographiqueObservation[] ent)
{
super() ;
for (int i = 0; i < ent.length; i++)
{
if(ent[i] != null && ent[i] instanceof EntiteGeographiqueObservation)
{
this.put(ent[i].hashCode()+"",ent[i]);
}
}
}
public void put(EntiteGeographiqueObservation value) {
this.put(value.hashCode()+"",value);
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/Configuration.java
New file
0,0 → 1,340
package org.tela_botanica.client.modeles.objets;
 
import java.util.ArrayList;
import java.util.List;
 
import com.google.gwt.i18n.client.Dictionary;
import com.google.gwt.user.client.Window.Location;
 
/**
* Classe chargeant certains paramètres de configuration à partir d'un fichier
* javascript (config.js)
*
* @author aurelien
*
*/
public class Configuration {
 
/**
* L'url de base du serveur jrest
*/
private static String identificationBaseUrl;
private static String serviceBaseUrl;
 
private static String imageBaseUrl;
private static String suiviBugUrl ;
private static String aideBaseUrl ;
 
private static String remarquesBaseUrl ;
private static String serviceContact;
private static String referentielGeo ;
private static String cleGoogleMaps ;
 
private static String lienEfloreBaseUrl;
private static String licence ="";
private static String formatOriginal = "";
private static String formatZoom = "";
private static String formatGalerie = "";
private static String formatListe = "";
 
private static String utiliseRedirectionImage;
 
private static String imageRedirectUrl;
private static String tailleMaxUpload;
private static List<InfosReferentielNom> referentielsDispos;
private static String activerSaisieChampsEtendus = "0";
private static String wikiDescriptionChampsEtendusPageUrl = "";
private static String wikiDescriptionChampsEtendusRestUrl = "";
private static String wikiDescriptionChampsEtendusRestUrlOptions = "";
private static String wikiDescriptionChampsEtendusUrlOptionsPageTpl = "";
private static String langueDefaut = "";
private static String languesDisponibles = "";
private static String chorologieAvertissementCourriel = "";
 
private static boolean prod = false;
 
/**
* Constructeur sans argument
*/
public Configuration() {
// on utilise le dictionnaire d'internationalisation pour lire les
// variables du fichier javascript
//if(GWT.isScript()) {
identificationBaseUrl = Dictionary.getDictionary("configuration").get(
"identificationBaseUrl");
serviceBaseUrl = Dictionary.getDictionary("configuration").get(
"serviceBaseUrl");
serviceContact = Dictionary.getDictionary("configuration").get(
"serviceContact");
suiviBugUrl = Dictionary.getDictionary("configuration").get(
"suiviBugUrl");
imageBaseUrl = Dictionary.getDictionary("configuration").get(
"imageBaseUrl");
aideBaseUrl = Dictionary.getDictionary("configuration").get(
"aideBaseUrl");
remarquesBaseUrl = Dictionary.getDictionary("configuration").get(
"remarquesBaseUrl");
referentielGeo = Dictionary.getDictionary("configuration").get(
"referentielGeo");
cleGoogleMaps = Dictionary.getDictionary("configuration").get(
"cleGoogleMaps");
lienEfloreBaseUrl = Dictionary.getDictionary("configuration").get(
"lienEfloreBaseUrl");
formatOriginal = Dictionary.getDictionary("configuration").get(
"formatOriginal");
formatZoom = Dictionary.getDictionary("configuration").get(
"formatZoom");
formatGalerie = Dictionary.getDictionary("configuration").get(
"formatGalerie");
formatListe = Dictionary.getDictionary("configuration").get(
"formatListe");
utiliseRedirectionImage = Dictionary.getDictionary("configuration").get(
"utiliseRedirectionImage");
imageRedirectUrl = Dictionary.getDictionary("configuration").get(
"imageRedirectUrl");
tailleMaxUpload = Dictionary.getDictionary("configuration").get(
"tailleMaxUpload");
referentielsDispos = parserReferentielsDispos(Dictionary.getDictionary("configuration").get(
"referentielsDispos"));
activerSaisieChampsEtendus = Dictionary.getDictionary("configuration").get(
"activerSaisieChampsEtendus");
wikiDescriptionChampsEtendusPageUrl = Dictionary.getDictionary("configuration").get(
"wikiDescriptionChampsEtendusPageUrl");
wikiDescriptionChampsEtendusRestUrl = Dictionary.getDictionary("configuration").get(
"wikiDescriptionChampsEtendusRestUrl");
wikiDescriptionChampsEtendusRestUrlOptions = Dictionary.getDictionary("configuration").get(
"wikiDescriptionChampsEtendusRestUrlOptions");
wikiDescriptionChampsEtendusUrlOptionsPageTpl = Dictionary.getDictionary("configuration").get(
"wikiDescriptionChampsEtendusUrlOptionsPageTpl");
langueDefaut = Dictionary.getDictionary("configuration").get("langueDefaut");
languesDisponibles = Dictionary.getDictionary("configuration").get("languesDisponibles");
chorologieAvertissementCourriel = Dictionary.getDictionary("configuration").get("chorologieAvertissementCourriel");
prod = Boolean.parseBoolean(Dictionary.getDictionary("configuration").get("prod"));
// Pour test, l'activation de l'ajout des champs étendus est activable ou désactivable par
// l'url
if(Location.getParameter("activerSaisieChampsEtendus") != null) {
if(Location.getParameter("activerSaisieChampsEtendus").equals("1")) {
activerSaisieChampsEtendus = "1";
} else if(Location.getParameter("activerSaisieChampsEtendus").equals("0")) {
activerSaisieChampsEtendus = "0";
}
}
}
private List<InfosReferentielNom> parserReferentielsDispos(String chaineListeReferentiels) {
String[] tabReferentiels = chaineListeReferentiels.split(";");
List<InfosReferentielNom> referentiels = new ArrayList<InfosReferentielNom>(tabReferentiels.length);
for (int i = 0; i < tabReferentiels.length; i++) {
InfosReferentielNom infoRef = new InfosReferentielNom(tabReferentiels[i]);
referentiels.add(infoRef);
}
return referentiels;
}
/**
* Accesseur pour l'url de base d'identification
*
* @return une url de la forme http://emplacement_serveur/annuaire/Auth
*/
public static String getIdentificationBaseUrl() {
return identificationBaseUrl;
}
 
/**
* Accesseur pour l'url de base du serveur jrest
*
* @return une url de la forme http://emplacement_serveur/jrest
*/
public static String getServiceBaseUrl() {
return serviceBaseUrl;
}
/**
* Accesseur pour l'url de base du suivi de bug
*
* @return une url pointant vers le suivi des bugs
*/
public static String getSuiviBugUrl() {
return suiviBugUrl;
}
/**
* Accesseur pour l'url de base des images
*
* @return une url pointant vers la racine du dossier contenant les images
*/
public static String getImageBaseUrl() {
return imageBaseUrl ;
}
/**
* Accesseur pour l'url de base de l'aide
*
* @return une url pointant vers la racine de l'aide
*/
public static String getAideBaseUrl() {
return aideBaseUrl ;
}
/**
* Accesseur pour l'url de base du widget de remarques
*
* @return une url pointant vers la racine du widget (sans paramètres)
*/
public static String getRemarquesBaseUrl() {
return remarquesBaseUrl;
}
/**
* Accesseur pour le service de contact du carnet en ligne
*
* @return une chaine contenant le service de contact
*/
public static String getServiceContact() {
return serviceContact;
}
/**
* Accesseur pour le référentiel geo
*
* @return le référentiel geo
*/
public static String getReferentielGeo() {
return referentielGeo ;
}
/**
* Accesseur pour la clé google maps
*
* @return la clé google maps
*/
public static String getCleGoogleMaps() {
return cleGoogleMaps ;
}
 
public static String getLienEfloreBaseUrl() {
return lienEfloreBaseUrl;
}
public static String getLicence() {
return licence;
}
public static String getFormatOriginal() {
return formatOriginal;
}
public static String getFormatZoom() {
return formatZoom;
}
public static String getFormatGalerie() {
return formatGalerie;
}
public static String getFormatListe() {
return formatListe;
}
 
public static boolean utiliseRedirectionImages() {
return utiliseRedirectionImage.equals("1");
}
 
public static String getImageRedirectUrl() {
return imageRedirectUrl;
}
public static String getTailleMaxUpload() {
return tailleMaxUpload;
}
public static List<InfosReferentielNom> getReferentielsDispos() {
return referentielsDispos;
}
public static boolean saisieChampsEtendusActivee() {
return activerSaisieChampsEtendus.equals("1");
}
public static String getWikiDescriptionChampsEtendusPageUrl() {
return wikiDescriptionChampsEtendusPageUrl;
}
public static String getWikiDescriptionChampsEtendusRestUrl() {
return wikiDescriptionChampsEtendusRestUrl;
}
public static String getWikiDescriptionChampsEtendusUrlOptions() {
return wikiDescriptionChampsEtendusRestUrlOptions;
}
public static String getWikiDescriptionChampsEtendusUrlOptionsPageTpl() {
return wikiDescriptionChampsEtendusUrlOptionsPageTpl;
}
public static String getLangueDefaut() {
return langueDefaut;
}
public static String getLanguesDisponibles() {
return languesDisponibles;
}
public static String getChorologieAvertissementCourriel() {
return chorologieAvertissementCourriel;
}
 
public static boolean isProd() {
return prod;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ListeGroupesChampsEtendus.java
New file
0,0 → 1,59
package org.tela_botanica.client.modeles.objets;
 
import java.util.HashMap;
import java.util.Iterator;
 
import org.tela_botanica.client.cel2;
 
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;
 
public class ListeGroupesChampsEtendus extends HashMap<String,HashMap<String, String>> {
public HashMap<String, String> correspondancesClesLabels ;
public HashMap<String, String> correspondancesCorrespondancesIdsNomsGroupes;
public ListeGroupesChampsEtendus(String groupeChampsEtendusJson) {
super();
try {
correspondancesClesLabels = new HashMap<String, String>();
correspondancesCorrespondancesIdsNomsGroupes = new HashMap<String, String>();
JSONValue groupesJson = JSONParser.parseStrict(groupeChampsEtendusJson);
JSONArray groupes = groupesJson.isArray();
for (int i = 0; i < groupes.size(); i++) {
JSONObject groupe = groupes.get(i).isObject();
String cleGroupe = groupe.get("cle").isString().stringValue();
String nomGroupe = groupe.get("nom").isString().stringValue();
JSONArray listeClesLabels = groupe.get("champs").isArray();
correspondancesCorrespondancesIdsNomsGroupes.put(cleGroupe, nomGroupe);
HashMap<String, String> groupesClesLabel = new HashMap<String, String>();
for (int j = 0; j < listeClesLabels.size(); j++) {
JSONObject champ = listeClesLabels.get(j).isObject();
String cle = champ.get("cle").isString().stringValue();
String label = champ.get("label").isString().stringValue();
groupesClesLabel.put(cle, label);
correspondancesClesLabels.put(cle, label);
}
this.put(nomGroupe, groupesClesLabel);
}
} catch (Exception e) {
// TODO: handle exception
}
}
public HashMap<String, String> getCorrespondancesClesLabel() {
return correspondancesClesLabels;
}
public HashMap<String, String> getCorrespondancesCorrespondancesIdsNomsGroupes() {
return correspondancesCorrespondancesIdsNomsGroupes;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/Utilisateur.java
New file
0,0 → 1,140
package org.tela_botanica.client.modeles.objets;
 
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
 
public class Utilisateur {
 
private String loginUtilisateurConnecte = null;
private String loginUtilisateurConsulte = null;
private String identifiantUtilisateurConnecte = null;
private String identifiantUtilisateurConsulte = null;
private boolean identifie = false;
private boolean isAdmin = false;
private boolean licenceAcceptee = false;
private static Utilisateur thisUtilisateur = null;
// Jeton encodé en base64 passé de manière automatique aux services dans un header
private static String jeton = "";
public static Utilisateur InitialiserInstance(JSONObject objetJsonUtilisateur) {
thisUtilisateur = new Utilisateur(objetJsonUtilisateur);
return thisUtilisateur;
}
public static Utilisateur getInstance() {
return thisUtilisateur;
}
public static String getJeton() {
return jeton;
}
public static void setJeton(String jeton) {
Utilisateur.jeton = jeton;
}
private Utilisateur(JSONObject objetJsonUtilisateur) {
// login utilisateur ou vide si non identifie
loginUtilisateurConnecte = ((JSONString) objetJsonUtilisateur.get("courriel")).stringValue();
loginUtilisateurConsulte = loginUtilisateurConnecte;
// identifiant utilisateur ou bien identifiant de session si non identifie
identifiantUtilisateurConnecte = ((JSONString) objetJsonUtilisateur.get("id_utilisateur")).stringValue();
identifiantUtilisateurConsulte = identifiantUtilisateurConnecte;
// Drapeau leve si utilisateur deja identifie
identifie = objetJsonUtilisateur.get("connecte").isBoolean().booleanValue();
// Drapeau leve si utilisateur est admin
isAdmin = objetJsonUtilisateur.get("admin").isBoolean().booleanValue();
// Drapeau leve si utilisateur a accepte licence
licenceAcceptee = objetJsonUtilisateur.get("licence_acceptee").isBoolean().booleanValue();
}
/**
* Retourne vrai si utilisateur identifie
* @return boolean
*/
public boolean isIdentifie() {
return identifie;
}
/**
* Retourne vrai si utilisateur est admin
* @return boolean
*/
public boolean isAdmin() {
return isAdmin;
}
/**
* Met à jour l'identité utilisée (dans le cas où l'utilisateur est admin)
* @param identite la nouvelle identité
*/
public void setUtilisateurConsulte(String identifiantUtilisateurConsulte, String loginUtilisateurConsulte) {
if(isAdmin()) {
this.identifiantUtilisateurConsulte = identifiantUtilisateurConsulte;
this.loginUtilisateurConsulte = loginUtilisateurConsulte;
}
else {
this.identifiantUtilisateurConsulte = identifiantUtilisateurConnecte;
this.loginUtilisateurConsulte = loginUtilisateurConnecte;
}
}
/**
* Retourne l'identifiant de l'utilisateur identifie ou un identifiant de session
* @return String identifiantUtilisateurConsulte
*/
public String getIdentifiantUtilisateurConnecte() {
return identifiantUtilisateurConnecte;
}
/**
* Retourne l'identifiant de l'utilisateur consulte
* @return String identifiantUtilisateurConsulte
*/
public String getIdentifiantUtilisateurConsulte() {
return identifiantUtilisateurConsulte;
}
/**
* Retourne le login de l'utilisateur identifie ou un identifiant de session
* @return String loginUtilisateurConnecte
*/
public String getLoginUtilisateurConnecte() {
return loginUtilisateurConnecte;
}
/**
* Retourne le login de l'utilisateur consulte
* @return String loginUtilisateurConsulte
*/
public String getLoginUtilisateurConsulte() {
return loginUtilisateurConsulte;
}
public void setLicenceAcceptee(boolean licenceAcceptee) {
this.licenceAcceptee = licenceAcceptee;
}
public boolean getLicenceAcceptee() {
return licenceAcceptee;
}
public void setLoginUtilisateurConnecte(String loginUtilisateurConnecte) {
this.loginUtilisateurConnecte = loginUtilisateurConnecte;
}
public void setLoginUtilisateurConsulte(String loginUtilisateurConsulte) {
this.loginUtilisateurConsulte = loginUtilisateurConsulte;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/InfosReferentielNom.java
New file
0,0 → 1,67
package org.tela_botanica.client.modeles.objets;
 
import org.tela_botanica.client.i18n.Msg;
 
public class InfosReferentielNom {
private String code = null;
private String version = null;
private String versionCourte = null;
private String intitule = null;
 
public InfosReferentielNom(String infosReferentiel) {
String[] codeVersion = infosReferentiel.split(":");
code = codeVersion[0];
intitule = Msg.get("referentiel-"+code);
if(codeVersion.length > 1) {
version = codeVersion[1];
versionCourte = formaterVersionCourte(version);
} else {
version = versionCourte = null;
}
}
public InfosReferentielNom(String code, String version, String intitule) {
super();
this.code = code;
this.version = version;
this.intitule = intitule;
this.versionCourte = formaterVersionCourte(version);
}
private String formaterVersionCourte(String version) {
return version.replaceAll("v","");
}
public String getCodeVersionComplet() {
return code+":"+version;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getIntitule() {
return intitule;
}
public void setIntitule(String intitule) {
this.intitule = intitule;
}
 
public String getVersionCourte() {
return versionCourte;
}
 
public void setVersionCourte(String versionCourte) {
this.versionCourte = versionCourte;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ReferentielNom.java
New file
0,0 → 1,49
package org.tela_botanica.client.modeles.objets;
 
 
/**
*
* Classe representant un element du referentiel de nom
*
*/
public class ReferentielNom {
 
 
private String nom=null;
private String numeroNom=null;
private String statut=null;
public ReferentielNom() {
}
 
/**
* @param nom
* @param numeroNom
* @param statut
*
*/
public ReferentielNom(String nom, String numeroNom, String statut) {
this.nom = nom;
this.numeroNom = numeroNom;
this.statut = statut;
}
 
 
public String getNom() {
return nom;
}
 
public String getNumeroNom() {
return numeroNom;
}
 
public String getStatut() {
return statut;
}
public boolean estRetenu() {
return statut != null && statut.equals("3");
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ListeDate.java
New file
0,0 → 1,59
package org.tela_botanica.client.modeles.objets;
 
 
import java.util.LinkedHashMap;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONString;
 
/**
* table de hachage composée d'entite geographique, renvoyé par les objets de type DAO
* La clé est le nom de l'entite + le nom de l'entite parente
*
* @author david delon
*
*/
public class ListeDate extends LinkedHashMap<String, DateObservation> {
/**
*
*/
private static final long serialVersionUID = 6057292016502553510L;
 
/**
* Constructeur sans paramètres
*/
public ListeDate()
{
super();
}
/**
* Constructeur avec paramètre
* @param taille la taille de la table de hachage
*/
public ListeDate(int taille)
{
super(taille);
}
public ListeDate(JSONArray dates)
{
super(dates.size()) ;
final int taillemax = dates.size();
for (int i = 0; i < taillemax; i++) {
JSONString dateEncours = dates.get(i).isString() ;
if(dateEncours != null)
{
String dateString = dateEncours.stringValue() ;
DateObservation dat = new DateObservation(dateString);
 
this.put(dateString,dat);
}
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ListeReferentielPerso.java
New file
0,0 → 1,76
package org.tela_botanica.client.modeles.objets;
 
import java.util.HashMap;
 
public class ListeReferentielPerso extends HashMap<String, String> {
public static enum TypesReferentiels {
REFERENTIEL_LIEU_DIT {
@Override
public String toString() {
return "lieudit";
}
},
REFERENTIEL_STATION {
@Override
public String toString() {
return "station";
}
},
REFERENTIEL_MILIEU {
@Override
public String toString() {
return "milieu";
}
}
}
/**
*
*/
private static final long serialVersionUID = 2159394354752556196L;
private TypesReferentiels typeReferentiel = null;
 
/**
* Constructeur sans paramètres
*/
public ListeReferentielPerso(TypesReferentiels typeReferentiel)
{
super();
this.typeReferentiel = typeReferentiel;
}
/**
* Constructeur avec paramètre
* @param taille la taille de la table de hachage
*/
public ListeReferentielPerso(int taille,TypesReferentiels typeReferentiel)
{
super();
this.typeReferentiel = typeReferentiel;
}
/**
* Constructeur avec paramètre
* @param ic un tableau de strings
*/
public ListeReferentielPerso(TypesReferentiels typeReferentiel, String[] nom)
{
super() ;
this.typeReferentiel = typeReferentiel;
for (int i = 0; i < nom.length; i++)
{
if(nom[i] != null && nom[i].equals("00null"))
{
this.put(i+"",nom[i]);
}
}
}
public TypesReferentiels getTypeReferentiel() {
return typeReferentiel;
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ImageCarnet.java
New file
0,0 → 1,457
package org.tela_botanica.client.modeles.objets;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
 
import org.tela_botanica.client.i18n.VocabulaireMetadonnees;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.xml.client.Document;
import com.google.gwt.xml.client.Node;
import com.google.gwt.xml.client.NodeList;
import com.google.gwt.xml.client.Text;
import com.google.gwt.xml.client.XMLParser;
import com.google.gwt.xml.client.impl.DOMParseException;
 
/**
*
* Classe representant une image du carnet, elle ne contient pas d'image à
* proprement parler mais plutôt les informations associées ainsi que l'url
* distante. C'est une table de hachage qui contient des paires propriété/valeur
*
*/
public class ImageCarnet extends HashMap<String, String> {
 
/**
*
*/
private static final long serialVersionUID = -6220175386957259859L;
 
/**
* Constructeur avec un objet JSON
*
* @param image
*/
public ImageCarnet(JSONObject image) {
// l'objet JSON est une table de hachage
Set<String> im = image.keySet();
 
// on la parcourt pour chaque clé
for (Iterator<String> iterator = im.iterator(); iterator.hasNext();) {
 
// si elle est associée à une valeur, on l'ajoute
String key = iterator.next();
if (Util.jsonNonNull(image, key)) {
String valeur = image.get(key).isString().stringValue();
this.put(key, valeur);
} else {
// sinon on ajoute la clé avec une valeur vide
String valeur = " ";
this.put(key, valeur);
}
 
}
 
}
public ImageCarnet(String[][] image) {
 
for (int i = 0; i < image.length; i++) {
if (image[i][0] != null && image[i][1] != null) {
this.put(image[i][0], image[i][1]);
}
}
}
 
/**
* Surcharge de toString qui affiche toutes les propriétés de l'image
*/
 
@Override
public String toString() {
String valeur = " ";
 
for (Iterator<String> iterator = this.keySet().iterator(); iterator
.hasNext();) {
 
String key = iterator.next();
if (this.get(key) != null) {
valeur += "cle : " + key + " valeur :" + this.get(key) + "\n";
}
 
}
 
return valeur;
}
 
/**
* Pour éviter que l'on traite des valeurs nulles à l'affichage on passe par
* cette fonction qui retire les charactères nuls qui font planter
* l'affichage, il ne faut pas utiliser get directement
*
* @param cle
* @return la valeur associée à la clé
*/
public String renvoyerValeurCorrecte(String cle) {
if (this.containsKey((cle))) {
String valeur = this.get(cle);
if (valeur.equals("null") || valeur == null) {
return " ";
} else {
char nullChar = '\u0000';
String sNull = "" + nullChar;
valeur = valeur.replaceAll(sNull, "");
return valeur;
}
} else {
return " ";
}
}
 
/**
* Acesseur pour l'id de l'image
*
* @return l'id de l'image
*/
public String getId() {
 
return renvoyerValeurCorrecte("id_image");
}
 
/**
* Acesseur pour le numero d'ordre de l'image
*
* @return l'ordre de l'image
*/
public String getOrdre() {
 
return renvoyerValeurCorrecte("ordre");
}
 
/**
* Base de l'url serveur pour les images
*
* @return url racine pour les images
*/
public String getVraieBaseUrl() {
return Configuration.getImageBaseUrl() ;
}
/**
* Base de l'url serveur pour les images
*
* @return url racine pour les images
*/
public String getBaseUrlRedirect() {
return Configuration.getImageRedirectUrl() ;
}
public String getIdAvecPadding() {
String id = getId();
 
int maxZeros = 9 - id.length();
 
for (int i = 0; i < maxZeros; i++) {
id = "0" + id;
}
return id;
}
private String getUrlFormat(String format) {
String urlImage = "";
if(Configuration.utiliseRedirectionImages()) {
String identifiantRedirect = getIdAvecPadding()+format;
urlImage = getBaseUrlRedirect()+identifiantRedirect;
} else {
urlImage = getVraieUrlFormat(format);
}
 
return urlImage;
}
 
/**
* Renvoie le nom de base du fichier image et ses sous dossier
*
* @return le nom de base du fichier de type (XXX_XXX_XXX), et ses sous
* dossier
*/
public String[] getVraiCheminBaseFichier() {
String id = getIdAvecPadding();
 
String dossierNv1 = id.substring(0, 3);
String dossierNv2 = id.substring(3, 6);
String fichierNv = id.substring(6, 9);
 
String nomFichier = dossierNv1 + "_" + dossierNv2 + "_" + fichierNv;
 
String[] infosFichier = { nomFichier, dossierNv1, dossierNv2 };
return infosFichier;
}
private String getVraieUrlFormat(String format) {
String[] infosFichier = getVraiCheminBaseFichier();
 
return getVraieBaseUrl() + infosFichier[1] + "/" + infosFichier[2] + "/"+format+"/"
+ infosFichier[0] + "_"+format+".jpg";
}
/**
* Renvoie le chemin et nom du fichier format original
*
* @return le chemin du fichier grand original
*/
public String getUrlFormatOriginal() {
 
return getUrlFormat(Configuration.getFormatOriginal());
}
 
/**
* Renvoie le chemin et nom du fichier grand format
*
* @return le chemin du fichier grand format
*/
public String getUrlFormatZoom() {
 
return getUrlFormat(Configuration.getFormatZoom());
}
 
/**
* Renvoie le chemin et nom du fichier petit format
*
* @return le chemin du fichier petit format
*/
public String getUrlFormatGalerie() {
 
return getUrlFormat(Configuration.getFormatGalerie());
}
 
/**
* Renvoie le chemin et nom du fichier moyen format
*
* @return le chemin du fichier moyen format
*/
public String getUrlFormatListe() {
 
return getUrlFormat(Configuration.getFormatListe());
}
 
/**
* Renvoie la taille de l'image
*
* @return un tableau de deux string contenant la hauteur puis la largeur
*/
public String[] getTailleImage() {
String[] XY = { renvoyerValeurCorrecte("hauteur"),
renvoyerValeurCorrecte("largeur") };
return XY;
}
 
public String[] getNote() {
String[] note = { renvoyerValeurCorrecte("note_qualite") };
return note;
}
 
/**
* Renvoie la date exif associée à l'image
*
* @return la date associée à l'image
*/
public String getDate() {
 
if(renvoyerValeurCorrecte("date_prise_de_vue").equals("00/00/0000"))
{
return "" ;
}
return renvoyerValeurCorrecte("date_prise_de_vue");
}
 
/**
* Renvoie la ville associée à l'image
*
* @return la ville iptc
*/
public Object getIptcCity() {
 
return renvoyerValeurCorrecte("");
}
 
/**
* Renvoie le fabricant de l'appareil
*
* @return le fabricant
*/
public String getFabriquantAppareil() {
 
return renvoyerValeurCorrecte("appareil_fabricant");
}
 
/**
* Renvoie le modele de l'appareil
*
* @return le modele
*/
public String getModeleAppareil() {
 
return renvoyerValeurCorrecte("appareil_modele");
}
 
/**
* Renvoie un tableau nom / valeur de toutes les metadonnées Iptc
*
* @return les métadonnées iptc
*/
public String[][] getMetadonnesIptc() {
return getMetadonneesXml("meta_iptc");
}
 
/**
* Renvoie un tableau nom / valeur de toutes les metadonnées Exif
*
* @return les métadonnées Exif
*/
public String[][] getMetadonnesExif() {
return getMetadonneesXml("meta_exif");
}
private String[][] getMetadonneesXml(String type) {
String[][] metadonnees = {{},{}};
String xml = renvoyerValeurCorrecte(type);
String invalidXmlPattern = "[^"
+ "\\u0009\\u000A\\u000D"
+ "\\u0020-\\uD7FF"
+ "\\uE000-\\uFFFD"
+ "\\u10000-\\u10FFFF"
+ "]+";
xml = xml.replaceAll(invalidXmlPattern, " ");
 
try {
Document d = XMLParser.parse(xml);
if(d.hasChildNodes()) {
NodeList attributs = d.getFirstChild().getChildNodes();
int taille = attributs.getLength();
metadonnees = new String[taille][2];
for(int i = 0; i < taille; i++) {
if(attributs.item(i) != null) {
XMLParser.removeWhitespace(attributs.item(i));
attributs.item(i).normalize();
String nomMetaDonneestraduite = VocabulaireMetadonnees.getTraduction(attributs.item(i).getNodeName());
metadonnees[i][0] = nomMetaDonneestraduite;
if(attributs.item(i).hasChildNodes()) {
Node valeur = attributs.item(i).getFirstChild();
if(valeur.getNodeType() == Node.TEXT_NODE) {
metadonnees[i][1] = ((Text)valeur).getData();
} else {
metadonnees[i][1] = "";
}
}
}
}
}
} catch(DOMParseException e) {
}
return metadonnees;
}
 
/**
* Renvoie un tableau nom / valeur contenant les infos générales
*
* @return les infos générales
*/
public String[][] getInfoGenerales() {
 
String[][] metaGen = new String[2][2];
 
metaGen[0][0] = "commentaire";
metaGen[0][1] = this.renvoyerValeurCorrecte("commentaire");
 
metaGen[1][0] = "date_prise_de_vue";
metaGen[1][1] = this.renvoyerValeurCorrecte("date_prise_de_vue");
 
return metaGen;
}
 
/**
* Renvoie une string contenant les mots clés séparés par des ','
*
* @return les mots clés
*/
public String getMotsCles() {
 
return renvoyerValeurCorrecte("mots_cles");
}
 
/**
* Met à jour le commenentaire et la date
*
* @param commentaires
* le nouveau commentaire
* @param date
* la nouvelle date
*/
public void miseAJourInfoGenerales(String commentaires, String date,
String note) {
put("commentaire", commentaires);
put("note_qualite", note);
put("date_prise_de_vue", date);
}
 
/**
* Met à jour les mots clés
*
* @param motsClesEnCours
* la liste de mots clés séparés par des ','
*/
public void mettreAjourMotsCles(String motsClesEnCours) {
 
put("mots_cles", motsClesEnCours);
 
}
public void mettreAjourObsAssociees(String idsObsAssociees) {
put("id_observation", idsObsAssociees);
}
/**
* Accesseur pour le nom original
*
* @return le nom orginal de l'image
*/
public String getNomOriginal() {
return renvoyerValeurCorrecte("nom_original");
}
public String getIdsObsAssociees() {
String observationsAssociees = renvoyerValeurCorrecte("id_observation");
observationsAssociees = observationsAssociees.replaceAll("null", "");
return observationsAssociees;
}
public String[][] obtenirChampsModifiablesImage() {
String[][] champs = {
{"commentaire", renvoyerValeurCorrecte("commentaire")},
{"note_qualite", renvoyerValeurCorrecte("note_qualite")},
{"date_prise_de_vue",renvoyerValeurCorrecte("date_prise_de_vue")}
};
return champs;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ListeImageCarnet.java
New file
0,0 → 1,54
package org.tela_botanica.client.modeles.objets;
 
import java.util.HashMap;
 
/**
* table de hachage composée d'ImageCarnet, renvoyé par les objets de type DAO
* pour les images. La clé est l'identifiant de l'image dans la base de données,
* et la valeur un objet de type ImageCarnet. GWT ne supporte pas encore les
* type paramètres mais quand il le fera il faudra créer la HashMap avec
* <String,ImageCarnet>
*
* @author aurelien
*
*/
public class ListeImageCarnet extends HashMap<String, ImageCarnet> {
 
/**
*
*/
private static final long serialVersionUID = 2715320270773281540L;
 
/**
* Constructeur sans paramètres
*/
public ListeImageCarnet() {
super();
}
 
/**
* Constructeur avec paramètre
*
* @param taille
* la taille de la table de hachage
*/
public ListeImageCarnet(int taille) {
super(taille);
}
 
/**
* Constructeur avec paramètre
*
* @param ic
* un tableau d'ImageCarnet
*/
public ListeImageCarnet(ImageCarnet[] ic) {
super();
for (int i = 0; i < ic.length; i++) {
if (ic[i] != null && ic[i] instanceof ImageCarnet) {
this.put(ic[i].getOrdre(), ic[i]);
}
}
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/ReferentielLocalite.java
New file
0,0 → 1,41
package org.tela_botanica.client.modeles.objets;
 
/**
*
* Classe representant un element du referentiel de localites
*
*/
 
public class ReferentielLocalite {
 
private String localite = null;
private String codeLocalite = null;
private String codeInsee = null;
 
/**
* @param localite
* @param code
*/
public ReferentielLocalite(String localite, String code) {
this.localite = localite;
if(code.length() == 5) {
codeInsee = code;
codeLocalite = code.substring(0,2);
} else {
codeLocalite = code;
}
}
 
public String getLocalite() {
return localite;
}
 
public String getCodeLocalite() {
return codeLocalite;
}
 
public String getCodeInsee() {
return codeInsee;
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/objets/Ontologies.java
New file
0,0 → 1,166
package org.tela_botanica.client.modeles.objets;
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.client.i18n.Msg;
 
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.IntegerFieldDef;
import com.gwtext.client.data.RecordDef;
import com.gwtext.client.data.SimpleStore;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
 
public class Ontologies {
//TODO: extraire toutes ces valeurs dans des fichiers de configuration
// ou bien via l'appel d'un web service spécialisé.
private static HashMap<String, String> valeursCertitude = null;
private static List<InfosReferentielNom> listeReferentielsNoms = null;
 
public static Store getValeursCertitude() {
Object[][] valeurs = {{Msg.get("certain"),"certain"},
{Msg.get("douteux"),"douteux"},
{Msg.get("a-determiner"),"aDeterminer"}
};
SimpleStore storeCertitude = new SimpleStore(new String[] {"label","valeur"},valeurs);
storeCertitude.load();
return storeCertitude;
}
public static Store getValeursAbondance() {
Object[][] valeurs = {
{Msg.get("abondance-5"),"5"},
{Msg.get("abondance-4"),"4"},
{Msg.get("abondance-3"),"3"},
{Msg.get("abondance-2"),"2"},
{Msg.get("abondance-1"),"1"},
{Msg.get("abondance-+"),"+"},
{Msg.get("abondance-r"),"r"},
{Msg.get("abondance-i"),"i"},
{Msg.get("abondance-1-5"),"1-5"},
{Msg.get("abondance-5-10"),"5-10"},
{Msg.get("abondance-10-50"),"10-50"},
{Msg.get("abondance-50-100"),"50-100"},
{Msg.get("abondance-100-500"),"100-500"},
{Msg.get("abondance->500"),">500"},
{Msg.get("abondance-E"),"E"},
{Msg.get("abondance-RR"),"RR"},
{Msg.get("abondance-R"),"R"},
{Msg.get("abondance-AR"),"AR"},
{Msg.get("abondance-PC"),"PC"},
{Msg.get("abondance-AC"),"AC"},
{Msg.get("abondance-C"),"C"},
{Msg.get("abondance-CC"),"CC"}
};
SimpleStore storeAbondance = new SimpleStore(new String[] {"label","valeur"},valeurs);
storeAbondance.load();
return storeAbondance;
}
public static String getCorrespondanceCertitude(String cle) {
if(valeursCertitude == null) {
valeursCertitude = new HashMap<String, String>();
valeursCertitude.put("certain", Msg.get("certain"));
valeursCertitude.put("douteux", Msg.get("douteux"));
valeursCertitude.put("aDeterminer", Msg.get("a-determiner"));
}
 
String valeur = valeursCertitude.get(cle);
return valeur == null ? cle : valeur;
}
public static Store getValeursReferentiel() {
List<InfosReferentielNom> listeReferentiels = Configuration.getReferentielsDispos();
Object[][] valeurs = new Object[listeReferentiels.size()][2];
int i = 0;
for (Iterator<InfosReferentielNom> iterator = listeReferentiels.iterator(); iterator
.hasNext();) {
InfosReferentielNom infosReferentielNom = iterator.next();
String referentielNom = Msg.get("referentiel-"+infosReferentielNom.getCode());
String[] valeur = {referentielNom, infosReferentielNom.getCode()};
valeurs[i] = valeur;
i++;
}
SimpleStore storeReferentiels = new SimpleStore(new String[] {"label","valeur"},valeurs);
storeReferentiels.load();
return storeReferentiels;
}
 
public static InfosReferentielNom getInfosReferentielNomParCode(String code) {
InfosReferentielNom infos = null;
List<InfosReferentielNom> listeReferentiels = Configuration.getReferentielsDispos();
for (Iterator<InfosReferentielNom> iterator = listeReferentiels.iterator(); iterator
.hasNext();) {
InfosReferentielNom infosReferentielNom = iterator.next();
if(infosReferentielNom.getCode().equals(code)) {
infos = infosReferentielNom;
break;
}
}
return infos;
}
public static Store getValeursPhenologie() {
Object[][] valeurs = {
{Msg.get("phenologie-00-09"), "00-09"},
{Msg.get("phenologie-10-19"), "10-19"},
{Msg.get("phenologie-11"), "11"},
{Msg.get("phenologie-15"), "15"},
{Msg.get("phenologie-20-29"), "20-29"},
{Msg.get("phenologie-30-39"), "30-39"},
{Msg.get("phenologie-40-49"), "40-49"},
{Msg.get("phenologie-50-59"), "50-59"},
{Msg.get("phenologie-60-69"), "60-69"},
{Msg.get("phenologie-61"), "61"},
{Msg.get("phenologie-65"), "65"},
{Msg.get("phenologie-70-79"), "70-79"},
{Msg.get("phenologie-80-89"), "80-89"},
{Msg.get("phenologie-85"), "85"},
{Msg.get("phenologie-90-99"), "90-99"},
{Msg.get("phenologie-91"), "91"},
{Msg.get("phenologie-95"), "95"}
};
SimpleStore storeAbondance = new SimpleStore(new String[] {"label","valeur"},valeurs);
storeAbondance.load();
return storeAbondance;
}
public static HashMap<String, String> getCorrespondanceGrilleObservationChampsTri() {
HashMap<String, String> correspondances = new HashMap<String, String>();
correspondances.put("etat_observation", "transmission");
correspondances.put("referentiel_taxo_observation", "nom_referentiel");
correspondances.put("nomSaisi_observation", "nom_sel");
correspondances.put("certitude", "certitude");
correspondances.put("nomRetenu_observation", "nom_ret");
correspondances.put("famille_observation", "famille");
correspondances.put("abondance", "abondance");
correspondances.put("phenologie", "phenologie");
correspondances.put("etat_observation", "transmission");
correspondances.put("lieu_observation", "ce_zone_geo");
correspondances.put("altitude_observation", "altitude");
correspondances.put("date_observation", "date_observation");
correspondances.put("ordre_observation", "ordre");
return correspondances;
}
public static HashMap<String, String> getCorrespondanceGrilleImageChampsTri() {
HashMap<String, String> correspondances = new HashMap<String, String>();
correspondances.put("num_image", "ordre");
correspondances.put("transmis", "transmission");
correspondances.put("obs_associees", "nom_sel");
correspondances.put("dat_image", "date_prise_de_vue");
correspondances.put("lie_image", "zone_geo");
correspondances.put("app_image", "appareil_fabriquant");
correspondances.put("note_image", "note_qualite");
correspondances.put("nom_original", "nom_original");
 
return correspondances;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ImageInformationRepartitionAsynchroneDAO.java
New file
0,0 → 1,124
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
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;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
 
/**
* DAO d'accès a une observation
*
* @author aurelien
*
*/
public class ImageInformationRepartitionAsynchroneDAO {
 
/**
* Le modele associé au DAO
*/
private ObservationModele observationModele = null;
 
public ImageInformationRepartitionAsynchroneDAO(ObservationModele obs) {
observationModele = obs;
}
 
 
 
/**
* Recherche Image repartition associee a un nom
* @param r
* @param identifiant
* @param numeroNomenclaturalSaisiObservation
*/
public void obtenirURLImage(final Rafraichissable r, String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
String referentielDefaut = Configuration.getReferentielsDispos().get(0).getCode();
referentielTaxo = (referentielTaxo != null && !referentielTaxo.isEmpty()) ? referentielTaxo : referentielDefaut;
// on envoie le get asynchrone
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl()
+"/NameMap/"+referentielTaxo+"/"+numeroNomenclaturalSaisiObservation) ;
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) {
JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse;
String urlImage=null;
 
if ((reponse = responseValue.isArray()) != null) {
// Url Image
urlImage= ((JSONString)reponse.get(0)).stringValue();
}
else {
urlImage="";
}
r.rafraichir(urlImage,true);
}
}) ;
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void taxonEstPresentDansZoneGeo(String referentielTaxo, String numeroNomenclaturalSaisiObservation, String pays, String zoneGeo, final Callback<String, String> callback) {
String referentielDefaut = Configuration.getReferentielsDispos().get(0).getCode();
referentielTaxo = (referentielTaxo != null && !referentielTaxo.isEmpty()) ? referentielTaxo : referentielDefaut;
String url = Configuration.getServiceBaseUrl()+"/InventoryTaxonPresent/"+referentielTaxo+"/"+numeroNomenclaturalSaisiObservation+"?pays="+URL.encode(pays)+"&ce_zone_geo="+URL.encode(zoneGeo);
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
callback.onFailure(exception.getMessage());
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
final JSONValue responseValue = JSONParser
.parse(response.getText());
if (responseValue.isString() != null) {
//Window.alert(response.getText()+responseValue.isString().stringValue());
callback.onSuccess(responseValue.isString().stringValue());
} else {
callback.onFailure(response.getText());
}
}
}) ;
 
} catch (RequestException e) {
callback.onFailure(e.getMessage());
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/UtilisateurAsynchroneDAO.java
New file
0,0 → 1,262
package org.tela_botanica.client.modeles.dao;
 
/**
* Modele DAO, specifique, permettant la validation, l'acces aux donnees distantes et la présentation des donnees en retour
*
*/
 
import org.tela_botanica.client.CarnetEnLigneModele;
import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.Utilisateur;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
 
public class UtilisateurAsynchroneDAO {
 
/**
* Le modèle associé au DAO
*/
private CarnetEnLigneModele carnetEnLigneModele = null ;
private Timer rafraichisseurJeton;
/**
* Constructeur
*/
public UtilisateurAsynchroneDAO(CarnetEnLigneModele carnetEnLigneModele) {
this.carnetEnLigneModele=carnetEnLigneModele;
}
/**
* Methode de classe d'appel du service gestion identification
* @param baseURL : URL du service
* @param retour : methode appelle en retour d'appel
*/
public void getEtatUtilisateur(final Rafraichissable r) {
String url = Configuration.getIdentificationBaseUrl()+"/identite/";
// Recherche identifiant utilisateur identifie
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url, false) ;
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
if(response.getText().isEmpty()) {
Window.alert(Msg.get("erreur-contacter-serveur"));
} else {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur = jsonValue.isObject();
if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
// Drapeau leve si utilisateur deja identifie
boolean identifie = objetJsonUtilisateur.get("session").isBoolean().booleanValue();
if(identifie) {
if(objetJsonUtilisateur.get("token").isString() != null) {
String token = ((JSONString) objetJsonUtilisateur.get("token")).stringValue();
Utilisateur.setJeton(token);
int dureeJeton = (int)objetJsonUtilisateur.get("duration").isNumber().doubleValue();
gererTimerRafraichissementJeton(dureeJeton, r);
}
}
}
// dans tous les cas même si l'on est pas identifié par le sso, ceci permet d'obtenir
// une session temporaire
obtenirInfosComplementairesUtilisateur(r);
}
}
}) ;
} catch (RequestException e) {
}
}
public void obtenirInfosComplementairesUtilisateur(final Rafraichissable r) {
String url = Configuration.getServiceBaseUrl()+"/User/";
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
if(response.getText().isEmpty()) {
Window.alert(Msg.get("erreur-contacter-serveur"));
} else {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur;
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
if(r != null) {
r.rafraichir(utilisateur,true);
}
} else {
}
}
}
}) ;
} catch (RequestException e) {
}
}
 
public void deconnecterUtilisateur(final Rafraichissable r, String user) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getIdentificationBaseUrl()+ "/deconnexion/") ;
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) {
Utilisateur.setJeton("");
gererTimerRafraichissementJeton(0, r);
obtenirInfosComplementairesUtilisateur(r);
}
}) ;
} catch (RequestException e) {
}
}
 
public void connecterUtilisateur (final Rafraichissable r, String login, String password) {
 
//connexion?login=aurelien@tela-botanica.org&password=Canard123$
if(!login.isEmpty() && !password.isEmpty()) {
String url = Configuration.getIdentificationBaseUrl() + "/connexion?login=" + URL.encodeComponent(login) + "&password=" + URL.encodeComponent(password);
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
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) {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur = jsonValue.isObject();
if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
if(objetJsonUtilisateur.get("token").isString() != null) {
String token = ((JSONString) objetJsonUtilisateur.get("token")).stringValue();
Utilisateur.setJeton(token);
int dureeJeton = (int)objetJsonUtilisateur.get("duration").isNumber().doubleValue();
gererTimerRafraichissementJeton(dureeJeton, r);
}
obtenirInfosComplementairesUtilisateur(r);
}
}
}) ;
} catch (RequestException e) {
e.printStackTrace() ;
}
}
}
private void gererTimerRafraichissementJeton(int duree, final Rafraichissable r) {
// Rafraîchissement automatique du jeton - s'annule lorsque le jeton devient nul
if (!Utilisateur.getJeton().isEmpty() && duree > 0) {
if (rafraichisseurJeton == null) { // on sait jamais
// 3/4 de la durée de vie du jeton, en millisecondes (ça laisse de la marge)
int delaiRepetition = (duree * 1000) * 3 / 4;
rafraichisseurJeton = new Timer() {
@Override
public void run() {
// Appel de l'annuaire pour rafraîchir le jeton (cb nul pour l'instant)
// @TODO gérer le possible changement de profil / coordonnées de l'utilisateur
// en cours de connexion
getEtatUtilisateur(r);
}
};
rafraichisseurJeton.scheduleRepeating(delaiRepetition);
}
} else {
if (rafraichisseurJeton != null) { // on sait jamais non plus
rafraichisseurJeton.cancel();
rafraichisseurJeton = null;
}
}
}
 
public void accepterLicence(String identifiantUtilisateur) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl() + "/LicenceUtilisateur/"+identifiantUtilisateur) ;
try {
String postData = "licence=1";
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
}
}) ;
} catch (RequestException e) {
e.printStackTrace() ;
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ListeUtilisateurAsynchroneDAO.java
New file
0,0 → 1,74
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.CarnetEnLigneModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
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;
 
public class ListeUtilisateurAsynchroneDAO {
 
CarnetEnLigneModele cModele = null ;
public ListeUtilisateurAsynchroneDAO(CarnetEnLigneModele carnetEnLigneModele) {
cModele = carnetEnLigneModele ;
}
public final void obtenirListeUtilisateur(final Rafraichissable r,final String rech, final String utilisateur) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + "/InventoryUserList/" + utilisateur+"/"+rech);
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) {
String[][] util ;
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse = responseValue.isArray();
if(reponse != null) {
util = new String[reponse.size()][2];
for(int i = 0; i < reponse.size() ; i++) {
JSONObject item = reponse.get(i).isObject();
util[i][0] = Util.getValeurJsonOuVide(item, "id_utilisateur");
util[i][1] = Util.getValeurJsonOuVide(item, "courriel");
}
}
else {
util = new String[0][2];
}
r.rafraichir(util, true);
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
}
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/LiaisonMotsClesImageAsynchroneDAO.java
New file
0,0 → 1,108
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.Window;
 
/**
* DAO d'accès à la liaison entre mots clés et observations
*
* @author aurelien
*
*/
public class LiaisonMotsClesImageAsynchroneDAO {
 
/**
* Le modele associé au DAO
*/
private ImageModele iModele = null;
 
public LiaisonMotsClesImageAsynchroneDAO(ImageModele img) {
iModele = img;
}
 
/**
* Setteur pour le modèle
*
* @param img
* le modèle à associer
*/
public void setiModele(ImageModele img) {
iModele = img;
}
 
/**
* Envoie requete au serveur pour modifier une observations
*
* @param motcle
* le mots clés à ajouter avec son parent et son identifiant
*/
public void modifier(final Rafraichissable r, String utilisateur, String idImg, String idMC) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/InventoryKeyWordImageLink/") ;
String postData = "ce_utilisateur="+utilisateur
+"&images="+idImg
+"&mots_cles="+URL.encodeComponent(""+idMC);
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
Window.alert(Msg.get("liaison-mots-cles-effectuee"));
}
}) ;
} catch (RequestException e) {
}
}
 
public void supprimer(final Rafraichissable r, String utilisateur, String idImg, String idMC) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/InventoryKeyWordImageLink/" + utilisateur + "/" +idImg+ "/" + URL.encodeComponent(""+idMC) + "/") ;
String postData = "&action=DELETE";
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
Window.alert(Msg.get("suppression-liaison-mot-cle-effectuee"));
}
}) ;
} catch (RequestException e) {
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/NomRetenuAsynchroneDAO.java
New file
0,0 → 1,69
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.observation.ObservationModele;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
 
public class NomRetenuAsynchroneDAO {
 
private ObservationModele oModele = null ;
public NomRetenuAsynchroneDAO(ObservationModele observationModele) {
oModele = observationModele ;
}
 
public void obtenirNomRetenu(final Rafraichissable r, final String anum) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,
Configuration.getServiceBaseUrl()
+ "/name/"+anum);
 
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) {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONArray jsonArray;
 
if ((jsonArray = jsonValue.isArray()) != null) {
String aname = ((JSONString) jsonArray.get(0)).toString();
// Nom
if (aname.compareTo("null")!=0) {
String[] numNom = {aname, anum } ;
r.rafraichir(numNom, false);
}
}
}
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/LiaisonMotsClesObsAsynchroneDAO.java
New file
0,0 → 1,107
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.observation.ObservationModele;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
 
/**
* DAO d'accès à la liaison entre mots clés et observations
*
* @author aurelien
*
*/
public class LiaisonMotsClesObsAsynchroneDAO {
 
/**
* Le modele associé au DAO
*/
private ObservationModele oModele = null;
 
public LiaisonMotsClesObsAsynchroneDAO(ObservationModele obs) {
oModele = obs;
}
 
/**
* Setteur pour le modèle
*
* @param obs
* le modèle à associer
*/
public void setoModele(ObservationModele obs) {
oModele = obs;
}
 
/**
* Envoie requete au serveur pour modifier une observations
*
* @param motcle
* le mots clés à ajouter avec son parent et son identifiant
*/
public void modifier(final Rafraichissable r, String utilisateur, String idObs, String idMC) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/InventoryKeyWordObsLink/") ;
String postData = "ce_utilisateur="+utilisateur
+"&observations="+idObs
+"&mots_cles="+URL.encodeComponent(""+idMC);
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
oModele.obtenirListeObservation(r);
}
}) ;
} catch (RequestException e) {
}
}
 
public void supprimer(final Rafraichissable r, String utilisateur, String idObs, String idMC) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/InventoryKeyWordObsLink/" + utilisateur + "/" +idObs+ "/" + URL.encodeComponent(""+idMC) + "/") ;
String postData = "&action=DELETE";
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
oModele.obtenirListeObservation(r);
}
}) ;
} catch (RequestException e) {
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ListeReferentielPersoAsynchroneDAO.java
New file
0,0 → 1,36
package org.tela_botanica.client.modeles.dao;
 
import java.util.HashMap;
 
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;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
 
public class ListeReferentielPersoAsynchroneDAO {
public static String getUrlReferentielPerso(TypesReferentiels refDemande) {
return Configuration.getServiceBaseUrl() +
"/SelfRefList/"+
"{utilisateur}/"+
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);
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ImageUploaderAsynchroneDAO.java
New file
0,0 → 1,168
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.Utilisateur;
 
import com.gwtext.client.core.UrlParam;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.Window;
import com.gwtext.client.widgets.event.WindowListenerAdapter;
import com.gwtextux.client.widgets.upload.UploadDialog;
import com.gwtextux.client.widgets.upload.UploadDialogListenerAdapter;
 
/**
* DAO un peu particulier car il crée une fenetre d'upload différente suivant
* que le plugin Java est détecté ou non
*
*
*/
public class ImageUploaderAsynchroneDAO {
 
/**
* Modele associé au DAO
*/
private static ImageModele iModele;
 
public ImageUploaderAsynchroneDAO(ImageModele im) {
iModele = im;
}
 
/**
* Setteur pour le modele
*
* @param im
* le modèle à associer au DAO
*/
public void setIModele(ImageModele im) {
iModele = im;
}
 
/**
* Crée un panel d'upload simple aux fonctions réduites mais utilisant
* uniquement javascript (pour les utilisateurs qui n'ont pas java)
*/
public static void appelerUploadSimple() {
// Ce composant est moche, compliqué et pas pratique pour l'i18n
// TODO: trouver un remplacer comme https://code.google.com/p/gwtupload/
UploadDialog up = new UploadDialog(Msg.get("upload-simple-fichiers"));
up.setUrl(Configuration.getServiceBaseUrl() + "/InventoryImage");
UrlParam id = new UrlParam("ce_utilisateur",Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
UrlParam[] params = { id };
up.setBaseParams(params);
up.setModal(true);
 
up.addListener(new UploadDialogListenerAdapter() {
 
@Override
public void onClose(Panel panel) {
iModele.setDernierePage();
iModele.requeteTerminee();
}
 
@Override
public void onUploadComplete(UploadDialog source) {
iModele.setDernierePage();
iModele.requeteTerminee();
 
}
 
});
 
up.show();
 
}
 
/**
* Crée une fenêtre contenant une applet java pour uploader plusieurs
* fichiers à la fois avec quelques fonctions avancées (nécessite le plugin
* java pour le navigateur)
*/
public static void appelerUploadMultiple() {
 
final Window nPan = new Window(Msg.get("upload-multiple-fichiers"));
nPan.setWidth(640);
final String warning = "<p class=\"warning_upload\"> "+Msg.get("indication-fin-upload-multiple-fermer")+". </p>";
 
final String applet = "<applet code=\"wjhk.jupload2.JUploadApplet\" name=\"JUpload\" archive=\"wjhk.jupload.jar\" alt=\"Le plugin java n'est pas installé\" mayscript=\"true\" height=\"350\" width=\"625\">";
final String paramPostTarget = "<param name=\"postURL\" value=\""
+ Configuration.getServiceBaseUrl()
+ "/InventoryImage/\">";
final String paramUploadPolicy = "<param name=\"uploadPolicy\" value=\"PictureUploadPolicy\">";
final String paramMaxChunkSize = "<param name=\"maxChunkSize\" value=\"0\">";
final String paramMaxFileSize = "<param name=\"maxFileSize\" value=\""+Configuration.getTailleMaxUpload()+"\">";
final String paramTransmitMetaData = "<param name=\"pictureTransmitMetadata\" value=\"true\">";
final String paramFilesPerRequest = "<param name=\"nbFilesPerRequest\" value=\"1\">";
final String paramAllowedExtensions = "<param name=\"allowedFileExtensions\" value=\"jpg/jpeg/\">";
final String paramUploadSuccess = "<param name=\"stringUploadSuccess\" value=\"OK\">";
final String paramShowLogWindow = "<param name=\"showLogWindow\" value=\"false\">";
final String paramLangue = "<param name=\"lang\" value=\""+Msg.getLangue()+"\">";
final String paramFormdata = "<param name=\"formData\" value=\"postid\">";
final String finApplet = "</applet>";
 
final String appelApplet = applet + paramPostTarget + paramUploadPolicy
+ paramMaxChunkSize + paramMaxFileSize + paramTransmitMetaData
+ paramFilesPerRequest + paramAllowedExtensions + paramLangue
+ paramUploadSuccess + paramShowLogWindow + paramFormdata
+ finApplet;
 
final String htmlForm = "<form method=\"post\" name=\"postid\">"
+ "<input type=\"hidden\" name=\"ce_utilisateur\" value=\""
+ Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "\">" + "</form>";
 
nPan.setHtml(warning + appelApplet + htmlForm);
 
nPan.setModal(true);
 
nPan.addListener(new WindowListenerAdapter() {
 
@Override
public void onClose(Panel panel) {
iModele.setDernierePage();
iModele.requeteTerminee();
}
 
});
 
nPan.show();
}
 
/**
* Fonction javascript native qui détecte la présence du plugin java pour le
* navigateur et appelle la méthode d'upload adaptée (appelerUploadSimple ou
* appelerUploadMultiple)
*/
public static native void choisirMethodeUpload() /*-{
var agt=navigator.userAgent.toLowerCase();
var ie = (agt.indexOf("msie") != -1);
var ns = (navigator.appName.indexOf("Netscape") != -1);
var win = ((agt.indexOf("win")!=-1) || (agt.indexOf("32bit")!=-1));
var mac = (agt.indexOf("mac")!=-1);
function detectIE(ClassID,name) { result = false; document.write('<SCRIPT LANGUAGE=VBScript>\n on error resume next \n result = IsObject(CreateObject("' + ClassID + '"))</SCRIPT>\n'); if (result) return name+','; else return ''; }
function detectNS(ClassID,name) { n = ""; if (nse.indexOf(ClassID) != -1) if (navigator.mimeTypes[ClassID].enabledPlugin != null) n = name+","; return n; }
if (ie && win) { pluginlist = detectIE("Adobe.SVGCtl","SVG Viewer") + detectIE("SWCtl.SWCtl.1","Shockwave Director") + detectIE("ShockwaveFlash.ShockwaveFlash.1","Shockwave Flash") + detectIE("rmocx.RealPlayer G2 Control.1","RealPlayer") + detectIE("QuickTimeCheckObject.QuickTimeCheck.1","QuickTime") + detectIE("MediaPlayer.MediaPlayer.1","Windows Media Player") + detectIE("PDF.PdfCtrl.5","Acrobat Reader"); }
if (ns || !win) {
nse = ""; for (var i=0;i<navigator.mimeTypes.length;i++) nse += navigator.mimeTypes[i].type.toLowerCase();
pluginlist = detectNS("image/svg-xml","SVG Viewer") + detectNS("application/x-director","Shockwave Director") + detectNS("application/x-shockwave-flash","Shockwave Flash") + detectNS("audio/x-pn-realaudio-plugin","RealPlayer") + detectNS("video/quicktime","QuickTime") + detectNS("application/x-mplayer2","Windows Media Player") + detectNS("application/pdf","Acrobat Reader");
}
pluginlist += navigator.javaEnabled() ? "Java," : "";
if (pluginlist.length > 0) pluginlist = pluginlist.substring(0,pluginlist.length-1);
if(pluginlist.indexOf("Java")!=-1)
{
@org.tela_botanica.client.modeles.dao.ImageUploaderAsynchroneDAO::appelerUploadMultiple()() ;
}
else
{
@org.tela_botanica.client.modeles.dao.ImageUploaderAsynchroneDAO::appelerUploadSimple()() ;
}
}-*/;
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ListeReferentielNomAsynchroneDAO.java
New file
0,0 → 1,50
package org.tela_botanica.client.modeles.dao;
 
import java.util.HashMap;
 
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.ReferentielNom;
import org.tela_botanica.client.observation.ObservationModele;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
 
/**
* DAO liste noms scientifiques // utilisation d'un cahce memoire pour eviter des requetes inutiles.
* @author David Delon
*
*/
public class ListeReferentielNomAsynchroneDAO {
 
public static String getBaseUrlReferentielNom() {
return Configuration.getServiceBaseUrl()+"/NameSearch/{referentiel}/";
}
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);
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);
}
return urlRequete+params;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ListeDateImageAsynchroneDAO.java
New file
0,0 → 1,71
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.ListeDate;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
 
public class ListeDateImageAsynchroneDAO {
/**
* Le modèle associé au DAO.
*/
private ImageModele imageModele = null;
/**
* Constructeur.
* @param obs : Modele
*/
public ListeDateImageAsynchroneDAO(final ImageModele obs) {
this.imageModele = obs;
}
public final void obtenirListeDate(final Rafraichissable r, final String utilisateur) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + "/ImageDateList/" + utilisateur);
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 ListeDate lDateObs;
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse = responseValue.isArray();
// si c'est un tableau
lDateObs = (reponse) != null ? new ListeDate(reponse) : new ListeDate(0);
// 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(lDateObs, true);
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ListeReferentielLocaliteAsynchroneDAO.java
New file
0,0 → 1,32
package org.tela_botanica.client.modeles.dao;
 
import java.util.HashMap;
 
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.ReferentielLocalite;
import org.tela_botanica.client.observation.ObservationModele;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
 
/**
* DAO la liste des localites. Utilisation d'un cache pour eviter les requetes inutiles
* @author David Delon
*
*/
public class ListeReferentielLocaliteAsynchroneDAO {
 
public static String getUrlReferentielLocalites() {
return Configuration.getServiceBaseUrl()+"/LocationSearch/";
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ImageAsynchroneDAO.java
New file
0,0 → 1,182
package org.tela_botanica.client.modeles.dao;
 
import java.util.Iterator;
 
import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.ImageCarnet;
import org.tela_botanica.client.modeles.objets.Utilisateur;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
 
/**
* DAO d'accès à une image, n'est utilisé que pour l'écriture et pas pour la
* lecture des images qui se fait par paquet
*
* @author aurelien
*
*/
public class ImageAsynchroneDAO {
 
ImageModele iModele = null;
 
public ImageAsynchroneDAO(ImageModele im) {
iModele = im;
}
 
public void setIModele(ImageModele im) {
iModele = im;
}
 
/**
* Met à jour la base de données avec toutes les données d'une image
*
* @param ic
* l'image à mettre à jour
*/
public void SynchroniserBaseDeDonnees(final ImageCarnet ic) {
String postData = "";
 
String[][] champsModifiables = ic.obtenirChampsModifiablesImage();
for (int i = 0; i < champsModifiables.length; i++) {
postData += "&"+champsModifiables[i][0]+"="+champsModifiables[i][1];
}
 
// et on envoie une requête asynchrone
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/inventoryImage/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()+"/"+ic.getId());
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
// Attention "OK" n'est pas un terme à traduire ici
if (response.getText().equals("OK")) {
return;
} else {
com.google.gwt.user.client.Window.alert(Msg.get("probleme-mise-a-jour-donnees"));
}
}
 
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
/**
* Met à jour la base de données avec les mots clés associés à l'image
*
* @param ic
* l'image à mettre à jour
*/
public void SynchroniserMotsClesImageBaseDeDonnees(final ImageCarnet ic) {
String postData = "";
 
// on récupère les mots clés de l'image et on fabrique le post
String motsCles = ic.getMotsCles();
String id = ic.getId();
postData += "&id_image=" + id + "&id_mot_cle_utilisateur=" + motsCles;
 
// on envoie une requête asynchrone
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,
Configuration.getServiceBaseUrl()
+ "/inventoryKeyWordImageList/" +Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()+ "/");
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
 
// TODO: les messages ne devraient pas être affichés ici
// mais l'architecture par très malléable complique les choses
// Attention OK n'est pas un terme à traduire ici
if (response.getText().equals("OK")) {
com.google.gwt.user.client.Window
.alert(Msg.get("mots-cles-appliques")+" : "+iModele.renvoyerChaineMotClesTexte(ic));
return;
} else {
com.google.gwt.user.client.Window
.alert(Msg.get("probleme-mise-a-jour-donnees")+", "+Msg.get("serveur-a-repondu")+" "+response.getText());
}
}
 
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
/**
* Supprime une image de la base de données
*
* @param ic
* l'image à supprimer
*/
public void supprimerBaseDeDonnees(final ImageCarnet ic) {
// le post contient l'action delete pour JREST (qui ne gère pas DELETE
// comme une requête à part entière)
String postData = "";
postData += "&action=DELETE";
 
// on envoie un post avec l'id de l'image à supprimer
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/inventoryImage/"
+ iModele.getIdentifiant()
+ "/"
+ ic.getId());
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
 
if (response.getText().equals("OK")) {
return;
} else {
com.google.gwt.user.client.Window
.alert(Msg.get("probleme-mise-a-jour-donnees")+" : "+response.getText());
}
}
 
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ListeImageAsynchroneDAO.java
New file
0,0 → 1,252
package org.tela_botanica.client.modeles.dao;
 
import java.util.Iterator;
 
import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.ImageCarnet;
import org.tela_botanica.client.modeles.objets.ListeImageCarnet;
import org.tela_botanica.client.modeles.objets.Utilisateur;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
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;
 
/**
* Data Object Access communiquant avec le serveur jrest fournissant la liste
* des images répondant à des critères donné
*
* @author aurelien
*
*/
public class ListeImageAsynchroneDAO {
 
/**
* Le modèle associé au DAO
*/
ImageModele iModele = null;
 
public ListeImageAsynchroneDAO(ImageModele im) {
iModele = im;
}
 
/**
* Setteur pour le modèle
*
* @param im
* le modèle à associer
*/
public void setIModele(ImageModele im) {
iModele = im;
}
 
/**
* Envoie une requete au serveur jrest pour obtenir une liste d'images
* correspondant à des critères demandés
*
* @param r
* le rafraichissable qui a demandé les données
* @param criteres
* un tableau contenant les critères de selections
*/
public void ObtenirListeImages(final Rafraichissable r, String[][] criteres) {
 
String requete = "";
 
// on construit les paramètres du get
if (criteres != null) {
for (int i = 0; i < criteres.length; i++) {
 
if (!criteres[i][1].equals("")) {
if (i != 0) {
requete += "&";
}
requete += criteres[i][0] + "=" + criteres[i][1];
 
}
}
}
 
// on envoie le get asynchrone
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()
+ "/InventoryImageList/"
+ Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()
+ "/?"
+ requete);
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 ListeImageCarnet photoData;
 
final JSONValue responseValue = JSONParser.parse(response
.getText());
// si c'est un tableau
if (responseValue.isArray() != null) {
 
final JSONArray reponse = responseValue.isArray();
 
final int taillemax = reponse.size();
photoData = new ListeImageCarnet(taillemax);
 
// on le parcourt
for (int j = 0; j < taillemax; j++) {
 
JSONObject image = (JSONObject) reponse.get(j);
 
ImageCarnet im = new ImageCarnet(image);
 
// et on en extrait les données pour construire la
// liste d'image
photoData.put(im.getOrdre(), im);
 
}
} else {
// si c'est un objet alors il n'y a qu'une réponse
if (responseValue.isObject() != null) {
photoData = new ListeImageCarnet(1);
ImageCarnet im = new ImageCarnet(responseValue
.isObject());
// on crée une liste de 1 élement auquel on ajoute
// ce qui a été reçu
photoData.put(im.getOrdre(), im);
} else {
// sinon on crée une liste vide
photoData = new ListeImageCarnet(0);
}
}
 
// 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(photoData, true);
}
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
/**
* Met à jour les valeurs d'une liste d'image donnée dans la base de données
*
* @param li
* la liste d'image à synchroniser avec la base
*/
public void SynchroniserBaseDeDonnees(ListeImageCarnet li) {
// on parcourt toute la liste d'image
for (Iterator<String> listIt = li.keySet().iterator(); listIt.hasNext();) {
String postData = "";
 
ImageCarnet enCours = li.get(listIt.next());
 
String[][] champsModifiables = enCours.obtenirChampsModifiablesImage();
for (int i = 0; i < champsModifiables.length; i++) {
postData += "&"+champsModifiables[i][0]+"="+champsModifiables[i][1];
}
 
// on fait un post asynchrone et on les envoie à jrest
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,
Configuration.getServiceBaseUrl()
+ "/inventoryImage/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "/");
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
// Attention OK n'est pas un terme à traduire ici
if (response.getText().equals("OK")) {
return;
} else {
com.google.gwt.user.client.Window
.alert(Msg.get("probleme-mise-a-jour-donnees"));
}
 
}
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
 
/**
* Supprime des image sur le serveur par rapport à leur identifant
*
* @param ids
* un tableau d'identifiants d'images à supprimer
*/
public void supprimerBaseDeDonnees(String[] ids) {
String postData = "";
// on fait un delete dans le post (jrest ne gère pas delete comme une
// action à part entière)
postData += "&action=DELETE";
 
String uid = "";
 
// on concatène les ids
for (int i = 0; i < ids.length; i++) {
 
uid += ids[i] + ",";
}
 
// et on envoie ça au serveur
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/inventoryImageList/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "/" + uid);
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
 
// quand la requête est éxecutée on le signale au modèle
// poru qu'il mette à jour les données
// et en notifie le médiateur
iModele.requeteTerminee();
 
}
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/NombreImageAsynchroneDAO.java
New file
0,0 → 1,116
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.Utilisateur;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
 
/**
* DAO qui renvoie le nombre d'image associées à différents critères donnés
* (utile pour la pagination)
*
* @author aurelien
*
*/
public class NombreImageAsynchroneDAO {
 
/**
* Le modèle associé au DAO
*/
private ImageModele iModele = null;
 
public NombreImageAsynchroneDAO(ImageModele im) {
iModele = im;
}
 
/**
* Setteur pour le modèle
*
* @param im
* le modèlme à associer
*/
public void setIModele(ImageModele im) {
iModele = im;
}
 
/**
* Envoie une requete au serveur jrest pour obtenir le nombre d'images
* correspondant à des critères données en paramètres
*
* @param r
* le rafraichissable qui demande la mise à jour
* @param criteres
* un tableau nom/valeur des critères pour les images
*/
public void obtenirNombreImages(final Rafraichissable r, String[][] criteres) {
String requete = "";
 
if (criteres != null) {
// on construit les paramètres du get avec les critères
// (&critere1=valeur1&critere2=valeur2 etc...)
for (int i = 0; i < criteres.length; i++) {
 
if (!criteres[i][1].equals("")) {
if (i != 0) {
requete += "&";
}
requete += criteres[i][0] + "=" + criteres[i][1];
}
}
}
 
// on fait un get asynchrone
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()
+ "/InventoryImageCount/"
+ Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()
+ "/?"
+ requete);
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 JSONValue responseValue = JSONParser.parse(response
.getText());
 
// si la requete se passe bien on reçoit une chaine JSON
if (responseValue.isString() != null) {
// qui contient une valeur : le nombre d'images
// correspondant au critères
JSONString reponseNombre = responseValue.isString();
int maxImages = Integer.parseInt(reponseNombre
.stringValue());
int[] nbImages = { maxImages };
// on le met dans un tableau d'entiers qu'on transmet au
// demandeur de la mise à jour
r.rafraichir(nbImages, true);
}
 
}
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ImportObservationAsynchroneDAO.java
New file
0,0 → 1,58
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.Utilisateur;
import org.tela_botanica.client.observation.ObservationModele;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
 
public class ImportObservationAsynchroneDAO {
 
private ObservationModele oModele = null ;
public ImportObservationAsynchroneDAO(ObservationModele observationModele) {
oModele = observationModele;
}
 
public void importerObservations() {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()
+ "/InventoryImport/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte());
 
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) {
 
// Attention OK n'est pas un terme à traduire ici
if(response.getText().equals("OK")) {
oModele.obtenirNombreObservation(null);
}
else
{
}
 
}
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ExportObservationsDAO.java
New file
0,0 → 1,46
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.Utilisateur;
import org.tela_botanica.client.observation.ObservationModele;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.http.client.URL;
import com.google.gwt.user.client.Window;
 
public class ExportObservationsDAO {
 
ObservationModele om = null ;
public ExportObservationsDAO(ObservationModele observationModele) {
om = observationModele ;
}
 
public void exporterObservations(String identifiant, String[][] criteres, String format, String groupes) {
String requete = "colonnes=" + groupes ;
if(criteres != null)
{
// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
for (int i = 0; i < criteres.length; i++) {
if(criteres[i] != null && criteres[i][1] != null && !criteres[i][1].equals(""))
{
requete += "&"+criteres[i][0]+"="+URL.encodeComponent(criteres[i][1]) ;
}
}
}
requete += "&id_utilisateur="+identifiant+"&format="+format;
// jeton SSO en GET car pas moyen d'ajouter un header Authorization
requete += "&Authorization=" + Utilisateur.getJeton();
String url = Configuration.getServiceBaseUrl()+"/CelWidgetExport/export/?"+requete;
//Util.LogVersFirebug(url);
Window.open(url ,"Export",null) ;
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/MotsClesAsynchroneDAO.java
New file
0,0 → 1,269
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.Utilisateur;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
 
/**
* DAO d'accès à l'arbre de mots clés
*
* @author aurelien
*
*/
public class MotsClesAsynchroneDAO {
private String identifiant = "" ;
private String mode = "";
private String nomService = "InventoryKeywordTree";
//private String nomService = "InventoryKeyWordList";
 
public MotsClesAsynchroneDAO() {
mode = "images";
identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
}
public MotsClesAsynchroneDAO(String mode) {
this.mode = mode;
identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
}
 
/**
* Envoie une requete au serveur jrest pour obtenir l'arbre des mots clés
*
* @param r
* le rafraichissable qui demande les données
*/
public void obtenirListeMotsCles(final Rafraichissable r) {
// on demande tous les mots clés associés à l'utilisateur
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()
+ "/"+nomService+"/"+mode+"/"+identifiant+"/");
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 JSONValue responseValue = JSONParser.parse(response
.getText());
// si la requête est un succès on reçoit un tableau
if (responseValue.isArray() != null) {
 
final JSONArray reponse = responseValue.isArray();
// et on met à jour le demandeur des données
r.rafraichir(reponse, true);
} else {
JSONArray vide = new JSONArray();
r.rafraichir(vide, true);
}
 
}
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
/**
* Envoie requete au serveur jrest pour ajouter un mot clé
*
* @param motcle
* le mots clés à ajouter avec son parent et son identifiant
* @param r
*/
public void ajouterBaseDeDonnees(String motcle, final Rafraichissable r) {
if (!motcle.equals("")) {
String postData = motcle+"&mode="+mode;
 
// on fait un post asynchrone
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/"+nomService+"/");
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
// TODO: les messages ne devraient pas être affichés ici
// mais l'architecture pas très malléable complique les choses
try {
Integer idMotcle = Integer.parseInt(response.getText());
r.rafraichir(idMotcle, false);
} catch (Exception e) {
com.google.gwt.user.client.Window
.alert(Msg.get("probleme-mise-a-jour-donnees")+", "+Msg.get("serveur-a-repondu")+response.getText());
}
}
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
 
/**
* Envoie requete au serveur jrest pour supprimer un mot clé
*
* @param motcle
* le mots clés à supprimer
*/
public void supprimerBaseDeDonnees(String motcle, final Rafraichissable r) {
if (!motcle.equals("")) {
String postData = "";
postData += "&action=DELETE";
 
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/"+nomService+"/"
+ mode+"/"
+ identifiant
+ "/"
+ motcle);
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
// TODO: les messages ne devraient pas être affichés ici
// mais l'architecture par très malléable complique les choses
// Attention OK n'est pas un terme à traduire ici
if (response.getText().equals("OK")) {
com.google.gwt.user.client.Window.alert(Msg.get("mot-cle-supprime"));
r.rafraichir(null, false);
return;
} else {
com.google.gwt.user.client.Window
.alert(Msg.get("probleme-mise-a-jour-donnees")+", "+Msg.get("serveur-a-repondu")+response.getText());
}
}
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
 
/**
* Envoie requete au serveur jrest pour modifier un mot clé
*
* @param motcle
* le mots clés à modifier avec son parent et son identifiant
*/
public void modifierBaseDeDonnees(String motcle, final Rafraichissable r) {
//TODO : cette fonction n'a aucun sens, on lui passe une sorte de chaine
// de requete url, elle devrait avoir au moins trois paramètres qu'elle assemble elle même
if (!motcle.equals("")) {
 
String postData = "";
postData += "&action=modification"+motcle;
 
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/"+nomService+"/"+mode+"/"+ identifiant);
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
// TODO: les messages ne devraient pas être affichés ici
// mais l'architecture par très malléable complique les choses
if (response.getText().equals("OK")) {
com.google.gwt.user.client.Window.alert(Msg.get("mot-cle-renomme"));
r.rafraichir(null, false);
return;
} else {
com.google.gwt.user.client.Window
.alert(Msg.get("probleme-mise-a-jour-donnees")+", "+Msg.get("serveur-a-repondu")+response.getText());
}
}
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
 
/**
* Envoie requete au serveur jrest pour modifier un mot clé
*
* @param motcle
* le mots clés à ajouter avec son ancien parent, son nouveau et
* son identifiant
*/
public void deplacerBaseDeDonnees(String motcle, final Rafraichissable r) {
 
if (!motcle.equals("")) {
 
String postData = "";
postData += "&action=deplacement"+motcle;
 
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/"+nomService+"/"+mode+"/"+identifiant);
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
r.rafraichir(null, false);
}
 
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ListeDateObservationAsynchroneDAO.java
New file
0,0 → 1,73
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.ListeDate;
import org.tela_botanica.client.observation.ObservationModele;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
 
public class ListeDateObservationAsynchroneDAO {
/**
* Le modèle associé au DAO.
*/
private ObservationModele observationModele = null;
/**
* Constructeur.
* @param obs : Modele
*/
public ListeDateObservationAsynchroneDAO(final ObservationModele obs) {
this.observationModele = obs;
}
public final void obtenirListeDate(final Rafraichissable r, final String utilisateur) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + "/InventoryDateList/" + utilisateur);
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 ListeDate lDateObs;
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse = responseValue.isArray();
 
// si c'est un tableau
lDateObs = (reponse) != null ? new ListeDate(reponse) : new ListeDate(0);
// 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(lDateObs, true);
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/LienImageAsynchroneDAO.java
New file
0,0 → 1,248
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.ListeObservation;
import org.tela_botanica.client.modeles.objets.Observation;
import org.tela_botanica.client.modeles.objets.Utilisateur;
import org.tela_botanica.client.observation.ObservationModele;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
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;
 
public class LienImageAsynchroneDAO {
 
private ImageModele iModele = null ;
private ObservationModele oModele = null ;
private Rafraichissable raf = null ;
public LienImageAsynchroneDAO(ImageModele im) {
iModele = im;
}
public LienImageAsynchroneDAO(ObservationModele om) {
oModele = om;
}
 
/**
* Setteur pour le modèle
*
* @param im
* le modèle à associer
*/
public void setIModele(ImageModele im) {
iModele = im;
}
public void obtenirLiaisonsImagesObservations(Rafraichissable r,String id)
{
String paramGet = "id_image="+id ;
raf = r ;
// et on envoie ça au serveur
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()
+ "/inventoryImageLink/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() + "/" + paramGet);
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 ListeObservation observationData ;
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse=null;
// si c'est un tableau
if ((reponse=responseValue.isArray()) != null) {
JSONObject observation;
final int taillemax = reponse.size();
observationData = new ListeObservation(taillemax);
for (int i = 0; i < taillemax; i++) {
if ((observation = reponse.get(i).isObject()) != null) {
Observation obs= new Observation(observation);
observationData.put(obs.getNumeroOrdre(),obs);
}
}
} else {
observationData = new ListeObservation(0) ;
}
// 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
// TODO : ce n'est pas ici qu'on devrait le decider ..
raf.rafraichir(observationData,true);
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void obtenirLiaisonsObservationsImages(Rafraichissable r,String idObs, String utilisateur)
{
String paramGet = "id_observation="+idObs ;
raf = r ;
 
// et on envoie ça au serveur
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()
+ "/inventoryImageLink/" + utilisateur + "/" + paramGet);
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) {
String baseUrl = Configuration.getImageBaseUrl() ;
final JSONValue responseValue = JSONParser.parse(response
.getText());
// si c'est un tableau
if (responseValue.isArray() != null) {
 
final JSONArray reponse = responseValue.isArray();
final int taillemax = reponse.size();
String imgTab[][] = new String[taillemax][3] ;
for(int i = 0 ;i<taillemax ;i++)
{
final JSONObject reponseInt = reponse.get(i).isObject();
String idImg = Util.getValeurJsonOuVide(reponseInt, "id_image") ;
String X = Util.getValeurJsonOuVide(reponseInt, "hauteur") ;
String Y = Util.getValeurJsonOuVide(reponseInt, "largeur") ;
imgTab[i][0] = idImg ;
imgTab[i][1] = X ;
imgTab[i][2] = Y ;
}
raf.rafraichir(imgTab, false) ;
}
else
{
String imgTab[] = new String[0] ;
raf.rafraichir(imgTab, false) ;
}
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void lierImageBaseDeDonnees(String idsImages, String idsObs) {
String postData = "";
postData += "id_image="+idsImages ;
postData += "&id_observation="+idsObs ;
postData += "&ce_utilisateur="+Utilisateur.getInstance().getIdentifiantUtilisateurConsulte() ;
 
// et on envoie ça au serveur
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/inventoryImageLink/");
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
 
iModele.requeteTerminee();
 
}
});
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
public void supprimerLienImageObservation(String idImg, String idObs) {
String postData = "";
postData += "&action=DELETE" ;
String identifiant = "" ;
identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
// et on envoie ça au serveur
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
+ "/inventoryImageLink/"+identifiant+"/"+idImg+"/"+idObs);
try {
rb.sendRequest(postData, new RequestCallback() {
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
@Override
public void onResponseReceived(Request request,
Response response) {
// quand la requête est éxecutée on le signale au modèle
// pour qu'il mette à jour les données
// et en notifie le médiateur
iModele.requeteTerminee();
}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ObservationAsynchroneDAO.java
New file
0,0 → 1,211
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.Observation;
import org.tela_botanica.client.observation.ObservationModele;
import org.tela_botanica.client.util.Util;
import org.tela_botanica.client.util.Analytics;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
 
 
/**
* DAO d'accès a une observation
*
* @author aurelien
*
*/
public class ObservationAsynchroneDAO {
 
/**
* Le modele associé au DAO
*/
private ObservationModele oModele = null;
 
public ObservationAsynchroneDAO(ObservationModele obs) {
oModele = obs;
}
 
/**
* Setteur pour le modèle
*
* @param obs
* le modèle à associer
*/
public void setoModele(ObservationModele obs) {
oModele = obs;
}
 
/**
* Envoie une requete au serveur pour ajouter une observation
*
* @param motcle
* le mot-clé à ajouter avec son parent et son identifiant
*/
public void ajouter(final Rafraichissable r, final String utilisateur, final Observation obs) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/Inventory/") ;
rb.setHeader("Content-type", "application/x-www-form-urlencoded");
String postData = "ce_utilisateur="
+ utilisateur
+"&nom_sel="+URL.encodeComponent(obs.getNomSaisi())
+"&nom_sel_nn="+obs.getNumeroNomenclaturalSaisi()
+"&zone_geo="+URL.encodeComponent(obs.getLocalite())
+"&pays="+ (obs.getPays() != null ? obs.getPays() : "")
+"&ce_zone_geo="+obs.getIdentifiantLocalite()
+"&date_observation=" + obs.getDate()
+"&lieudit="+ URL.encodeComponent(obs.getLieudit())
+"&station="+URL.encodeComponent(obs.getStation())
+"&milieu="+URL.encodeComponent(obs.getMilieu())
+"&commentaire="+obs.getCommentaire()
+"&latitude="+URL.encodeComponent(""+obs.getLatitude())
+"&longitude="+URL.encodeComponent(""+obs.getLongitude())
+"&altitude="+URL.encodeComponent(""+obs.getAltitude())
+"&abondance="+URL.encodeComponent(""+obs.getAbondance())
+"&certitude="+URL.encodeComponent(""+obs.getCertitude())
+"&phenologie="+URL.encodeComponent(""+obs.getPhenologie())
+"&nom_referentiel="+URL.encodeComponent(""+obs.getCodeCourtReferentielTaxo())
+"&obs_etendue="+URL.encodeComponent(""+Util.convertirChampsEtendusEnChaineRequete(obs.getChampsEtendus()));
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
if(response.getStatusCode() >= 400) {
com.google.gwt.user.client.Window.alert(response.getText());
}
// stats
Analytics.evenement("observation", "creation", "{\"utilisateur\": \"" + utilisateur + "\", \"nom_sci\": \"" + obs.getNomSaisi() + "\", \"referentiel\": \"" + obs.getCodeCourtReferentielTaxo() + "\"}");
 
r.rafraichir(obs,true);
}
}) ;
} catch (RequestException e) {
}
}
/**
* Envoie requete au serveur pour modifier une observations
*
* @param motcle
* le mots clés à ajouter avec son parent et son identifiant
*/
public void modifier(final Rafraichissable r, final String utilisateur, final Observation obs) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/Inventory/" + utilisateur + "/" + obs.getNumeroOrdre()+ "/") ;
rb.setHeader("Content-type", "application/x-www-form-urlencoded");
String postData = "ce_utilisateur="
+ utilisateur
+ "&nom_sel=" + URL.encodeComponent(obs.getNomSaisi())
+ "&nom_sel_nn=" + obs.getNumeroNomenclaturalSaisi()
+ "&zone_geo=" + URL.encodeComponent(obs.getLocalite())
+"&pays="+ (obs.getPays() != null ? obs.getPays() : "")
+ "&ce_zone_geo=" + obs.getIdentifiantLocalite()
+ "&date_observation=" + obs.getDate()
+ "&lieudit="+ URL.encodeComponent(obs.getLieudit())
+ "&station="+ URL.encodeComponent(obs.getStation())
+"&milieu="+ URL.encodeComponent(obs.getMilieu())
+"&commentaire="+obs.getCommentaire()
+"&latitude="+URL.encodeComponent(""+obs.getLatitude())
+"&longitude="+URL.encodeComponent(""+obs.getLongitude())
+"&altitude="+URL.encodeComponent(""+obs.getAltitude())
+"&abondance="+URL.encodeComponent(""+obs.getAbondance())
+"&certitude="+URL.encodeComponent(""+obs.getCertitude())
+"&phenologie="+URL.encodeComponent(""+obs.getPhenologie())
+"&nom_referentiel="+URL.encodeComponent(""+obs.getCodeCourtReferentielTaxo())
+"&obs_etendue="+URL.encodeComponent(""+Util.convertirChampsEtendusEnChaineRequete(obs.getChampsEtendus()));
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
if(response.getStatusCode() >= 400) {
com.google.gwt.user.client.Window.alert(response.getText());
}
// stats
Analytics.evenement("observation", "modification", "{\"utilisateur\": \"" + utilisateur + "\", \"nom_sci\": \"" + obs.getNomSaisi() + "\", \"referentiel\": \"" + obs.getCodeCourtReferentielTaxo() + "\"}");
 
r.rafraichir(obs,true);
}
}) ;
} catch (RequestException e) {
}
}
 
public void supprimer(Rafraichissable r, final String identifiant, final String numeroOrdre) {
String postData = "";
postData += "&action=DELETE";
 
// on envoie un post avec l'id de l'image à supprimer
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,
Configuration.getServiceBaseUrl()
+ "/inventory/"
+ identifiant
+ "/"
+ numeroOrdre);
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request, Response response) {
 
if (response.getText().equals("OK")) {
// stats
Analytics.evenement("observation", "suppression", "{\"utilisateur\": \"" + identifiant + "\", \"numero_ordre\": \"" + numeroOrdre + "\"}");
} else {
com.google.gwt.user.client.Window.alert(Msg.get("probleme-mise-a-jour-donnees"));
return ;
}
}
 
});
r.rafraichir("OK", true) ;
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ListeObservationAsynchroneDAO.java
New file
0,0 → 1,279
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.ListeObservation;
import org.tela_botanica.client.modeles.objets.Observation;
import org.tela_botanica.client.observation.ObservationModele;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
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;
 
/**
* DAO la liste des observations attachées a un observateur.
* @author David Delon
* TODO : se servir de ObservationDAO pour la lecture unitaire
*
*/
public class ListeObservationAsynchroneDAO {
 
 
/**
* Le modèle associé au DAO.
*/
private ObservationModele observationModele = null;
private ImageModele imageModele = null;
 
public ListeObservationAsynchroneDAO(final ObservationModele obs) {
this.observationModele=obs;
}
/**
* Le modèle associé au DAO.
*/
 
public ListeObservationAsynchroneDAO(final ImageModele img) {
this.imageModele = img;
}
/**
* Envoie une requete au serveur jrest pour obtenir le nombre d'observation correspondant
* à des critères données en paramètres
* @param r le rafraichissable qui demande la mise à jour
* @param criteres un tableau nom/valeur des critères pour les observations
*/
public final void obtenirListeObservation(final Rafraichissable r, final String utilisateur, final String[][] criteres)
{
String requete = "" ;
if(criteres != null)
{
// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
// ils contiennent limite et taille page et autres filtres (localites , lieu dit etc ...)S
for (int i = 0; i < criteres.length; i++) {
if(criteres[i][1] != null && !criteres[i][1].equals(""))
{
if(i!= 0)
{
requete += "&";
}
requete += criteres[i][0]+"="+URL.encodeComponent(criteres[i][1]) ;
}
}
}
// on envoie le get asynchrone
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl()
+"/InventoryObservationList/"+utilisateur+"/?"+requete) ;
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 ListeObservation observationData ;
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse=null;
// si c'est un tableau
if ((reponse=responseValue.isArray()) != null) {
JSONObject observation;
final int taillemax = reponse.size();
observationData = new ListeObservation(taillemax);
for (int i = 0; i < taillemax; i++) {
if ((observation=reponse.get(i).isObject()) != null) {
Observation obs = new Observation(observation);
observationData.put(obs.getNumeroOrdre(),obs);
}
}
} else {
observationData = new ListeObservation(0) ;
}
// 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
// TODO : ce n'est pas ici qu'on devrait le decider ..
r.rafraichir(observationData,true);
}
}) ;
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void modifierEnMasse(final Rafraichissable r, String identifiant,
final Observation obs) {
 
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/InventoryObservationList/" + identifiant + "/" + obs.getNumeroOrdre()+ "/") ;
String postData = "ce_utilisateur="
+ identifiant ;
if(obs.getNomSaisi() != null) {
postData += "&nom_sel=" + URL.encodeComponent(obs.getNomSaisi());
}
if(obs.getNumeroNomenclaturalSaisi() != null) {
postData += "&nom_sel_nn=" + obs.getNumeroNomenclaturalSaisi();
}
if(obs.getPays() != null) {
postData += "&pays=" + URL.encodeComponent(obs.getPays());
}
if(obs.getIdentifiantLocalite() != null) {
postData += "&ce_zone_geo=" + obs.getIdentifiantLocalite();
}
if(obs.getLocalite() != null) {
postData += "&zone_geo=" + URL.encodeComponent(obs.getLocalite());
}
if(obs.getDate() != null) {
postData += "&date_observation=" + obs.getDate();
}
if(obs.getLieudit() != null) {
postData += "&lieudit="+ URL.encodeComponent(obs.getLieudit());
}
if(obs.getStation() != null) {
postData += "&station="+ URL.encodeComponent(obs.getStation());
}
if(obs.getMilieu() != null) {
postData += "&milieu="+ URL.encodeComponent(obs.getMilieu());
}
if(obs.getCommentaire() != null) {
postData += "&commentaire="+obs.getCommentaire();
}
if(obs.getLatitude() != null ) {
postData += "&latitude="+URL.encodeComponent(""+obs.getLatitude());
}
if(obs.getLongitude() != null) {
postData += "&longitude="+URL.encodeComponent(""+obs.getLongitude());
}
if(obs.getAltitude() != null) {
postData += "&altitude="+URL.encodeComponent(""+obs.getAltitude());
}
if(obs.getAbondance() != null) {
postData += "&abondance="+URL.encodeComponent(""+obs.getAbondance());
}
if(obs.getCertitude() != null) {
postData += "&certitude="+URL.encodeComponent(""+obs.getCertitude());
}
if(obs.getPhenologie() != null) {
postData += "&phenologie="+URL.encodeComponent(""+obs.getPhenologie());
}
if(obs.getReferentielTaxo() != null) {
postData += "&nom_referentiel="+URL.encodeComponent(""+obs.getReferentielTaxo());
}
 
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
if(observationModele != null) {
observationModele.obtenirListeObservation(r);
}
}
}) ;
} catch (RequestException e) {
}
}
 
/**
* Supprime les observations possédant les identifiants données
* @param r le rafraichissable à avertir de la mise à jour
* @param identifiant l'identifiant utilisateur
* @param numerosOrdre les numéros d'ordre des observations séparés par des virgules
*/
public void supprimerListeObservation(Rafraichissable r, String identifiant, String numerosOrdre) {
String postData = "";
postData += "&action=DELETE";
 
// on envoie un post avec l'id de l'image à supprimer
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,
Configuration.getServiceBaseUrl()
+ "/inventoryObservationList/"
+ identifiant
+ "/"
+ numerosOrdre);
try {
rb.sendRequest(postData, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
 
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
// Attention OK n'est pas un terme à traduire ici
if (response.getText().equals("OK")) {
 
} else {
com.google.gwt.user.client.Window
.alert(Msg.get("probleme-mise-a-jour-donnees"));
return ;
}
}
});
// Attention OK n'est pas un terme à traduire ici non plus
r.rafraichir("OK", true) ;
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/NombreObservationAsynchroneDAO.java
New file
0,0 → 1,112
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.observation.ObservationModele;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
 
/**
* DAO qui renvoie le nombre d'image associées à différents critères donnés (utile pour la pagination)
* @author aurelien
*
*/
public class NombreObservationAsynchroneDAO {
 
 
/**
* Le modèle associé au DAO
*/
private ObservationModele observationModele = null ;
private ImageModele imageModele = null;
public NombreObservationAsynchroneDAO(ObservationModele observationModele)
{
this.observationModele=observationModele;
}
 
public NombreObservationAsynchroneDAO(final ImageModele imageModele) {
this.imageModele = imageModele;
}
/**
* Envoie une requete au serveur jrest pour obtenir le nombre d'observation correspondant
* à des critères données en paramètres
* @param r le rafraichissable qui demande la mise à jour
* @param criteres un tableau nom/valeur des critères pour les images
*/
public void obtenirNombreObservation(final Rafraichissable r, String utilisateur, String[][] criteres)
{
String requete = "" ;
if(criteres != null)
{
// on construit les paramètres du get avec les critères (&critere1=valeur1&critere2=valeur2 etc...)
for (int i = 0; i < criteres.length; i++) {
 
if(criteres[i][1] != null && !criteres[i][1].equals(""))
{
if(i!= 0)
{
requete += "&";
}
requete += criteres[i][0]+"="+URL.encodeComponent(criteres[i][1]) ;
}
}
}
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl()+"/InventoryObservationCount/"+utilisateur+"/?"+requete) ;
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 JSONValue responseValue = JSONParser.parse(response.getText());
// si la requete se passe bien on reçoit un tableau JSON
if(responseValue.isString() != null)
{
// qui contient une valeur : le nombre d'images correspondant au critères
JSONString res = responseValue.isString() ;
int maxObservations = Integer.parseInt(res.stringValue()) ;
int[] nbObservations = {maxObservations} ;
 
// on le met dans un tableau d'entiers qu'on tranmset au demandeur de la mise à jour
r.rafraichir(nbObservations, true) ;
} else {
int[] nbObservations = {} ;
r.rafraichir(nbObservations, true) ;
}
}
}) ;
} catch (RequestException e) {
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ListeReferentielChampsEtendusDAO.java
New file
0,0 → 1,304
package org.tela_botanica.client.modeles.dao;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
 
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;
import org.tela_botanica.client.modeles.objets.ListeGroupesChampsEtendus;
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 org.tela_botanica.client.util.Util;
 
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
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 ListeReferentielChampsEtendusDAO {
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) {
}
public void obtenirListeNomsChampsEtendus(final Rafraichissable r, String recherche) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() +
"/NomsChampsEtendus/cle"+
"?recherche="+URL.encode(recherche));
try {
rb.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(final Request request,
final Response response) {
 
ListeChampsEtendus labelCles = new ListeChampsEtendus(response.getText());
r.rafraichir(labelCles, true);
}
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
public void obtenirListeValeursChampEtendu(final Rafraichissable r, String cle, String recherche) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() +
"/NomsChampsEtendus/valeur"+
"?cle="+URL.encode(cle)+"&recherche="+URL.encode(recherche));
try {
rb.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(final Request request,
final Response response) {
 
 
ArrayList<String> valeurs = new ArrayList<String>();
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse = null;
if ((reponse = responseValue.isArray()) != null) {
for(int i = 0; i < reponse.size(); i++) {
valeurs.add(reponse.get(i).isString().stringValue());
}
}
r.rafraichir(valeurs, true);
}
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
public void obtenirGroupesChampsEtendus(final Rafraichissable r) {
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
}
});
} 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()+obtenirNomPageChampEtendu(champ)+"?";
String options = Configuration.getWikiDescriptionChampsEtendusUrlOptions();
 
if(cacheDescription.containsKey(champ)) {
callback.onSuccess(cacheDescription.get(champ));
}
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,
url + options);
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onResponseReceived(final Request request,
final Response response) {
try {
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);
} catch(Exception exception) {
this.onError(request, exception);
}
}
 
@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 cle) {
String url = Configuration.getWikiDescriptionChampsEtendusRestUrl()+obtenirNomPageChampEtendu(cle)+"?";
String options = Configuration.getWikiDescriptionChampsEtendusUrlOptions();
String pageTpl = Configuration.getWikiDescriptionChampsEtendusUrlOptionsPageTpl();
effectuerRequeteSynchrone(url + options + pageTpl, "", "GET");
}
public static String obtenirUrlEditionDescriptionWiki(String cle) {
String url = Configuration.getWikiDescriptionChampsEtendusPageUrl()+obtenirNomPageChampEtendu(cle)+"/edit";
return url;
}
protected static String obtenirNomPageChampEtendu(String cle) {
return prefixePageChampEtendu+Util.convertirEnChaMot(cle);
}
public static String getUrlRequeteValeursChampEtendu(String cle) {
return Configuration.getServiceBaseUrl() +
"/NomsChampsEtendus/valeur"+
"?cle="+URL.encode(cle)+"&recherche=";
}
public static String getUrlRequeteNomsChampsEtendus() {
return Configuration.getServiceBaseUrl()+
"/NomsChampsEtendus/cle?recherche=";
}
public static Map<String, String> parserRetourListeValeursChampsEtendus(Response response) {
Map<String, String> valeurs = new HashMap<String, String>();
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse = null;
if ((reponse = responseValue.isArray()) != null) {
for(int i = 0; i < reponse.size(); i++) {
valeurs.put(reponse.get(i).isString().stringValue(), reponse.get(i).isString().stringValue());
}
}
return valeurs;
}
public static Map<String, String> parserRetourListeNomsChampsEtendus(Response response) {
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONObject reponse = null;
cacheClesLabels = new HashMap<String, String>();
if ((reponse = responseValue.isObject()) != null) {
Iterator<String> it = reponse.keySet().iterator();
while(it.hasNext()) {
String cle = it.next();
String valeur = reponse.get(cle).isString().stringValue();
cacheClesLabels.put(cle, valeur);
}
}
return cacheClesLabels;
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/TransmissionObservationAsynchroneDAO.java
New file
0,0 → 1,74
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.Utilisateur;
import org.tela_botanica.client.observation.ObservationModele;
import org.tela_botanica.client.util.Analytics;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
 
public class TransmissionObservationAsynchroneDAO {
 
ObservationModele om = null ;
public TransmissionObservationAsynchroneDAO(ObservationModele observationModele) {
om = observationModele ;
}
 
public void transmettreObservations(final Rafraichissable r, final String identifiant, final String idsObs, final boolean publier) {
// on envoie le get asynchrone
String post = "&transmission=";
if(publier) {
post += "1";
}
else
{
post += "0" ;
}
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()
+"/InventoryTransmit/"+Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()+"/"+idsObs) ;
try {
rb.sendRequest(post, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
public void onResponseReceived(Request request, Response response) {
// stats
String action = "";
if (publier) {
action = "rendre-publiques";
} else {
action = "rendre-privees";
}
Analytics.evenement("observation", action, "{\"utilisateur\": \"" + identifiant + "\", \"observations\": \"" + idsObs + "\"}");
 
// Attention OK n'est pas un terme à traduire ici
r.rafraichir("OK",true);
}
}) ;
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
}
 
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ListeEntiteGeographiqueObservationAsynchroneDAO.java
New file
0,0 → 1,103
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.EntiteGeographiqueObservation;
import org.tela_botanica.client.modeles.objets.ListeEntiteGeographiqueObservation;
import org.tela_botanica.client.observation.ObservationModele;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
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;
 
/**
* DAO la liste des localites.
* @author David Delon
*
*/
public class ListeEntiteGeographiqueObservationAsynchroneDAO {
 
/**
* Le modèle associé au DAO.
*/
private ObservationModele observationModele = null;
/**
* Constructeur.
* @param obs : Modele
*/
public ListeEntiteGeographiqueObservationAsynchroneDAO(final ObservationModele obs) {
this.observationModele = obs;
}
public final void obtenirListeEntitesGeographiques(final Rafraichissable r, final String utilisateur) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl() + "/InventoryLocationList/" + utilisateur);
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 ListeEntiteGeographiqueObservation listeEntiteGeographiqueObservation;
final JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse = null;
// si c'est un tableau
if ((reponse = responseValue.isArray()) != null) {
JSONObject entites;
final int taillemax = reponse.size();
listeEntiteGeographiqueObservation = new ListeEntiteGeographiqueObservation(taillemax);
for (int i = 0; i < taillemax; i++) {
if ((entites = reponse.get(i).isObject()) != null) {
String idZoneGeo = Util.convertirChaineZoneGeoVersDepartement(Util.getValeurJsonOuVide(entites, "ce_zone_geo"));
String zoneGeo = Util.getValeurJsonOuVide(entites, "zone_geo");
String lieuDit = Util.getValeurJsonOuVide(entites, "lieudit");
String station = Util.getValeurJsonOuVide(entites, "station");
String pays = Util.getValeurJsonOuVide(entites, "pays");
EntiteGeographiqueObservation ent = new EntiteGeographiqueObservation(idZoneGeo, zoneGeo, lieuDit, station);
ent.setPays(pays);
listeEntiteGeographiqueObservation.put(ent);
}
}
} else {
listeEntiteGeographiqueObservation = new ListeEntiteGeographiqueObservation(0);
}
// 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(listeEntiteGeographiqueObservation, true);
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/ImageGeneriqueVueAsynchroneDAO.java
New file
0,0 → 1,95
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.observation.ObservationModele;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
 
/**
* DAO d'accès a une observation
*
* @author aurelien
*
*/
public class ImageGeneriqueVueAsynchroneDAO {
 
/**
* Le modele associé au DAO
*/
private ObservationModele observationModele = null;
 
public ImageGeneriqueVueAsynchroneDAO(ObservationModele obs) {
observationModele = obs;
}
 
 
 
/**
* Recherche Image associee a un nom
* @param r
* @param identifiant
* @param numeroNomenclaturalSaisiObservation
*/
public void obtenirURLImage(final Rafraichissable r, String referentielTaxo, String numeroNomenclaturalSaisiObservation) {
String referentielDefaut = Configuration.getReferentielsDispos().get(0).getCode();
referentielTaxo = (referentielTaxo != null && !referentielTaxo.isEmpty()) ? referentielTaxo : referentielDefaut;
// on envoie le get asynchrone
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl()
+"/NameImage/"+referentielTaxo+"/"+numeroNomenclaturalSaisiObservation) ;
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) {
try {
JSONValue responseValue = JSONParser.parse(response.getText());
JSONArray reponse;
String urlImage=null;
String urlImageMax=null;
if ((reponse = responseValue.isArray()) != null) {
// Url Image
urlImage= ((JSONString)reponse.get(0)).stringValue();
urlImageMax= ((JSONString)reponse.get(1)).stringValue();
}
else {
urlImage="";
urlImageMax="";
}
r.rafraichir(new String[]{urlImage,urlImageMax},true);
} catch (Exception e) {
// TODO: handle exception
}
}
}) ;
 
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
}
/tags/v2.25-scarificateur/src/org/tela_botanica/client/modeles/dao/InformationLocaliteDAO.java
New file
0,0 → 1,201
package org.tela_botanica.client.modeles.dao;
 
import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.EntiteGeographiqueObservation;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
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 InformationLocaliteDAO {
 
private final String NOM_SERVICE = "CoordSearch";
private final String CODE_PAYS = "FR";
// Ce DAO peut être fréquemment sollicité lors de l'utilisation de la carte
// et peut empiler beaucoup de longues requête, ceci permet donc de les annuler facilement
private static Request requeteEnCours = null;
 
Rafraichissable r = null;
 
public InformationLocaliteDAO(Rafraichissable r) {
this.r = r;
}
 
public void obtenirLocalitePlusProche(final Rafraichissable r, final double lng,
final double lat) {
annulerRequeteEnCours();
 
String adresseAppel = Configuration.getServiceBaseUrl() + "/"
+ NOM_SERVICE + "?lat="+URL.encode("" + lat) + "&lon="+URL.encode("" + lng);
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, adresseAppel);
 
try {
requeteEnCours = rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
requeteEnCours = null;
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
EntiteGeographiqueObservation infos;
String idLocalite = "";
String nomLocalite = "";
String pays = "";
 
if (response.getStatusCode() == Response.SC_BAD_REQUEST) {
Window.alert(Msg.get("requete-mal-formee"));
} else {
if(response.getText().equals("")) {
 
infos = new EntiteGeographiqueObservation(idLocalite, nomLocalite, null, null);
infos.setLat(""+lat);
infos.setLon(""+lng);
r.rafraichir(infos, false);
}
final JSONValue responseValue = JSONParser
.parse(response.getText());
 
if (responseValue.isObject() != null) {
JSONObject objectRetour = responseValue.isObject();
if(objectRetour.get("nom").isString() != null) {
nomLocalite = objectRetour.get("nom").isString().stringValue();
}
if(objectRetour.get("code_zone").isString() != null) {
idLocalite = objectRetour.get("code_zone").isString().stringValue().substring(0, 2);
}
if(objectRetour.get("code_pays").isString() != null) {
pays = objectRetour.get("code_pays").isString().stringValue();
}
}
}
infos = new EntiteGeographiqueObservation(idLocalite, nomLocalite, null, null);
infos.setLat(""+lat);
infos.setLon(""+lng);
infos.setPays(pays);
 
r.rafraichir(infos, false);
}
});
} catch (RequestException e) {
Window.alert(e.getMessage());
}
}
 
public void obtenirInfosLocalite(final Rafraichissable r,
String valeurLocalite, String codeLoc) {
annulerRequeteEnCours();
codeLoc = codeLoc.replaceAll("000null", "*");
codeLoc = codeLoc.replaceAll("\"", "");
valeurLocalite = valeurLocalite.split(" \\([0-9][0-9]\\)")[0];
valeurLocalite = valeurLocalite.replaceAll("000null", "*");
valeurLocalite = valeurLocalite.replaceAll("\"", "");
String adresseAppel = Configuration.getServiceBaseUrl() + "/"
+ NOM_SERVICE+"?zone="+ URL.encode(valeurLocalite);
if(!codeLoc.trim().isEmpty()) {
// Cas du code de département ou postal
if(Util.estUnDepartement(codeLoc)) {
adresseAppel += "&code="+URL.encode(codeLoc)+"&pays="+URL.encode(CODE_PAYS);
} else {
//cas du code pays
adresseAppel += "&pays="+URL.encode(codeLoc);
}
}
 
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, adresseAppel);
 
try {
requeteEnCours = rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
Window.alert(exception.getMessage());
}
 
@Override
public void onResponseReceived(Request request,
Response response) {
 
if (response.getStatusCode() == Response.SC_BAD_REQUEST) {
r.rafraichir(Msg.get("impossible-geolocaliser-obs"), false);
} else {
final JSONValue responseValue = JSONParser
.parse(response.getText());
if (responseValue.isObject() != null) {
EntiteGeographiqueObservation infos;
Double lng = 0.0;
Double lat = 0.0;
JSONObject objectRetour = responseValue.isObject();
String nomLocalite = Util.getValeurJsonOuVide(objectRetour, "nom");
String idLocalite = Util.getValeurJsonOuVide(objectRetour, "code_zone");
lat = Util.jsonNonNull(objectRetour,"lat") ? objectRetour.get("lat").isNumber().doubleValue(): 0.0;
lng = Util.jsonNonNull(objectRetour,"lng") ? objectRetour.get("lng").isNumber().doubleValue(): 0.0;
String pays = Util.getValeurJsonOuVide(objectRetour, "code_pays");
infos = new EntiteGeographiqueObservation(idLocalite, nomLocalite, null, null);
infos.setLat(""+lat);
infos.setLon(""+lng);
infos.setPays(pays);
r.rafraichir(infos, false);
} else {
EntiteGeographiqueObservation infos;
String idLocalite = "";
String nomLocalite = "";
 
infos = new EntiteGeographiqueObservation(idLocalite, nomLocalite, null, null);
infos.setLat("");
infos.setLon("");
r.rafraichir(infos, false);
}
}
}
});
} catch (RequestException e) {
Window.alert(e.getMessage());
}
}
public static void annulerRequeteEnCours() {
if(requeteEnCours != null) {
requeteEnCours.cancel();
requeteEnCours = null;
}
}
}