Rev 1542 | Blame | Compare with Previous | Last modification | View Log | RSS feed
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.observation.ObservationModele;import com.google.gwt.http.client.Request;import com.google.gwt.http.client.RequestBuilder;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 (communes , lieu dit etc ...)Sfor (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 asynchroneRequestBuilder rb = new RequestBuilder(RequestBuilder.GET,Configuration.getServiceBaseUrl()+"/InventoryObservationList/"+utilisateur+"/?"+requete) ;try {rb.sendRequest(null, new RequestCallback() {@Overridepublic void onError(final Request request, final Throwable exception) {// TODO Auto-generated method stub}@Overridepublic 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 tableauif ((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 blocke.printStackTrace();}}public void modifierEnMasse(final Rafraichissable r, String identifiant,final Observation obs) {RequestBuilder rb = new RequestBuilder(RequestBuilder.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.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.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() {@Overridepublic void onError(Request request, Throwable exception) {// TODO Auto-generated method stub}@Overridepublic 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 à supprimerRequestBuilder rb = new RequestBuilder(RequestBuilder.POST,Configuration.getServiceBaseUrl()+ "/inventoryObservationList/"+ identifiant+ "/"+ numerosOrdre);try {rb.sendRequest(postData, new RequestCallback() {@Overridepublic void onError(Request request, Throwable exception) {// TODO Auto-generated method stub}@Overridepublic void onResponseReceived(Request request,Response response) {if (response.getText().equals("OK")) {} else {com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des données");return ;}}});r.rafraichir("OK", true) ;} catch (RequestException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}