Subversion Repositories eFlore/Applications.cel

Rev

Rev 116 | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client.modeles;

import org.tela_botanica.client.Util;
import org.tela_botanica.client.image.ImageModele;
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;

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 = "&coi_ce_image="+id ;
                
                raf = r ;
                
                // et on envoie ça au serveur
                RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
                                + "/inventoryImageLink/" + iModele.getIdentifiant() + "/" + paramGet);
                        try {
                                rb.sendRequest(null, new RequestCallback() {
        
                                        public void onError(Request request, Throwable exception) {
                                                // TODO Auto-generated method stub
        
                                        }
        
                                        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) {
                                                        
                                                        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();
                                                                        
                                                                        Observation obs=new Observation(transmis, nomSaisi, nomRetenu, numeroNomenclaturalSaisi, numeroNomenclaturalRetenu ,numeroTaxonomique, famille, localite, identifiantLocalite, lieudit, station, milieu, commentaire, date, numeroOrdre);
                                
                                                                        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 = "&coi_ce_observation="+idObs ;
                raf = r ;

                // et on envoie ça au serveur
                RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, Configuration.getServiceBaseUrl()
                                + "/inventoryImageLink/" + utilisateur + "/" + paramGet);
                        try {
                                rb.sendRequest(null, new RequestCallback() {
        
                                        public void onError(Request request, Throwable exception) {
                                                // TODO Auto-generated method stub
        
                                        }
        
                                        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] ;
                                                        
                                                        for(int i = 0 ;i<taillemax ;i++)
                                                        {
                                                                
                                                                final JSONArray reponseInt = reponse.get(i).isArray();
                                                                String idImg = ((JSONString)reponseInt.get(0)).stringValue() ;
                                                                imgTab[i] = idImg ;
                                                                
                                                        }
                                                        
                                                        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 += "&coi_ce_image="+idsImages ;
                postData += "&coi_ce_observation="+idsObs ;
                postData += "&identifiant="+iModele.getIdentifiant() ;

                // et on envoie ça au serveur
                RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
                                + "/inventoryImageLink/");
                
                if(Window.confirm("Lier les images "+idsImages+" aux observations "+idsObs+" ?"))
                {
                        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) {
        
                                                // 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();
                        }
                }
        }

        public void supprimerLienImageObservation(String idImg, String idObs) {
                
                String postData = "";
                
                postData += "&action=DELETE" ;
                String identifiant = "" ;
                
                if(iModele == null) {
                        identifiant = oModele.getIdentifiant() ;  ;
                }
                else
                {
                        identifiant = iModele.getIdentifiant() ;
                }

                // et on envoie ça au serveur
                RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.getServiceBaseUrl()
                                + "/inventoryImageLink/"+identifiant+"/"+idImg+"/"+idObs);
                
                        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) {
        
                                                // 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();
                        }
        }
}