Subversion Repositories eFlore/Applications.cel

Rev

Rev 5 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.modeles;

import java.util.Iterator;

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

/**
 * 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 = "" ;
                
                // on construit le post avec toutes les valeur de l'image
                for(Iterator<String> imgIt = ic.keySet().iterator();imgIt.hasNext();)
                {
                        
                        String key = imgIt.next() ;
                                        String valeur = ic.renvoyerValeurCorrecte(key) ;
                                        postData += "&"+key+"="+valeur ;

                }

                // et on envoie une requête asynchrone
                RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele.getConfig().getServiceBaseUrl()+"/inventoryImage/"+iModele.getIdentifiant()+"/") ;
                
                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")) 
                                        {
                                                return ;
                                        }
                                        else
                                        {
                                                com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des données") ;
                                        }                               
                                }
                                
                        }) ;
                        
                } 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 += "&ci_id_image="+id+"&ci_meta_mots_cles="+motsCles ;

                // on envoie une requête asynchrone                    
                RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele.getConfig().getServiceBaseUrl()+"/inventoryImage/"+iModele.getIdentifiant()+"/") ;
                                        
                                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")) 
                                                        {
                                                                return ;
                                                        }
                                                        else
                                                        {
                                                                com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des données") ;
                                                        }                               
                                                }
                                                
                                        }) ;
                                                
                                } 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
                RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, iModele.getConfig().getServiceBaseUrl()+"/inventoryImage/"+iModele.getIdentifiant()+"/"+ic.getId()) ;
                
                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")) 
                                        {
                                                return ;
                                        }
                                        else
                                        {
                                                com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des données") ;
                                        }                               
                                }
                                
                        }) ;
                        
                } catch (RequestException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
}