Rev 157 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.modeles;import org.tela_botanica.client.Util;import org.tela_botanica.client.interfaces.Rafraichissable;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.json.client.JSONArray;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.Window;/*** 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;public ListeObservationAsynchroneDAO(final ObservationModele obs) {this.observationModele=obs;}/*** 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 pagefor (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 asynchroneRequestBuilder rb = new RequestBuilder(RequestBuilder.GET,Configuration.getServiceBaseUrl()+"/InventoryObservationList/"+utilisateur+"/"+requete) ;try {rb.sendRequest(null, new RequestCallback() {public void onError(final Request request, final Throwable exception) {// TODO Auto-generated method stub}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 tableauif ((reponse=responseValue.isArray()) != null) {JSONArray observation;final int taillemax = reponse.size();observationData = new ListeObservation(taillemax);for (int i = 0; i < taillemax; i++) {if ((observation=reponse.get(i).isArray()) != null) {String transmis=((JSONString) observation.get(13)).stringValue();String identifiantLocalite=((JSONString) observation.get(14)).toString();String nomSaisi=Util.toCelString(((JSONString) observation.get(0)).toString());String nomRetenu=Util.toCelString(((JSONString) observation.get(2)).toString());String numeroNomenclaturalSaisi=((JSONString) observation.get(1)).stringValue();String numeroNomenclaturalRetenu=((JSONString) observation.get(3)).stringValue();String numeroTaxonomique=((JSONString) observation.get(4)).stringValue();String famille=Util.toCelString(((JSONString) observation .get(5)).toString());String localite=Util.toCelString(((JSONString) observation .get(6)).toString());String lieudit=Util.toCelString(((JSONString) observation .get(9)).toString());String station=Util.toCelString(((JSONString) observation .get(10)).toString());String milieu=Util.toCelString(((JSONString) observation .get(11)).toString());String commentaire=Util.toCelString(((JSONString) observation .get(12)).toString());String date=((JSONString) observation .get(8)).stringValue();String numeroOrdre=((JSONString) observation.get(7)).stringValue();//String motsCles=((JSONString) observation.get(15)).stringValue();Observation obs=new Observation(transmis, nomSaisi, nomRetenu, numeroNomenclaturalSaisi, numeroNomenclaturalRetenu ,numeroTaxonomique, famille, localite, identifiantLocalite, lieudit, station, milieu, commentaire, date, numeroOrdre/*, motsCles*/);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();}}/*** 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() {public void onError(Request request, Throwable exception) {// TODO Auto-generated method stub}public 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();}}}