Subversion Repositories eFlore/Applications.cel

Rev

Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client.modeles;


import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
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.JSONValue;
import com.google.gwt.user.client.Window;

/**
 * DAO d'accès à l'arbre de mots clés
 * @author aurelien
 *
 */
public class MotsClesAsynchroneDAO {
        
        /**
         * Le modele associé au DAO
         */
        private ImageModele iModele = null ;
        
        public MotsClesAsynchroneDAO(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 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
                RequestBuilder rb = new RequestBuilder(RequestBuilder.GET,iModele.getConfig().getServiceBaseUrl()+"/InventoryKeyWordList/"+iModele.getIdentifiant()) ;
                
                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 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) ;           
                                        }               
                                        
                                }
                                
                        }) ;
                } 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
         */
        public void ajouterBaseDeDonnees(String motcle)
        {
                if(!motcle.equals(""))
                {
                        String postData = motcle ;
                        
                        // on fait un post asynchrone
                        RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,iModele.getConfig().getServiceBaseUrl()+"/InventoryKeyWordList/") ;
                        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) {
                                                
                                                // si on reçoit une erreur d'ajout, on affiche un message d'erreur
                                                if(response.getText().equals("ERROR"))
                                                {
                                                        Window.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application," +
                                                                        "nous vous invitons à recharger la page. ") ;
                                                }
                                                
                                        }
                                        
                                }) ;
                        } 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)
        {
                if(!motcle.equals(""))
                {
                        String postData = "" ;
                        postData += "&action=DELETE" ;
                        
                        RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,iModele.getConfig().getServiceBaseUrl()+"/InventoryKeyWordList/"+iModele.getIdentifiant()+"/"+motcle) ;
                                
                                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.equals("ERROR"))
                                                        {
                                                                Window.alert("Attention, la base de données des mots clés n'est plus synchronisée avec l'application," +
                                                                                "nous vous invitons à recharger la page. ") ;
                                                        }                                                       
                                                }                                       
                                        });
                                        
                                } 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) {
                
                if(!motcle.equals(""))
                {

                String postData = "" ;
                postData += "&action=modification"+motcle ;
                
                RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,iModele.getConfig().getServiceBaseUrl()+"/InventoryKeyWordList/"+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) {
                                                // TODO Auto-generated method stub
                                                
                                        }
                                        
                                });
                        } 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) {
                
                if(!motcle.equals(""))
                {

                String postData = "" ;
                postData += "&action=deplacement"+motcle ;
                        
                RequestBuilder rb = new RequestBuilder(RequestBuilder.POST,iModele.getConfig().getServiceBaseUrl()+"/InventoryKeyWordList/"+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) {
                                                // TODO Auto-generated method stub
                                                
                                        }
                                        
                                });
                        } catch (RequestException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
                
        } 

}