Subversion Repositories eFlore/Applications.cel

Rev

Rev 318 | 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 org.tela_botanica.client.observation.ObservationMediateur;
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.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;
        
        private ObservationModele oModele = null ;
        
        private String identifiant = "" ;
        
        private String mode = "";

        public MotsClesAsynchroneDAO(ImageModele im) {
                iModele = im;
                mode = "images";
                identifiant = im.getIdentifiant();
        }
        
        public MotsClesAsynchroneDAO(ObservationModele om) {
                oModele = om;
                mode = "obs";
                identifiant = om.getIdentifiant();
        }
        
        

        /**
         * 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, Configuration.getServiceBaseUrl()
                                + "/InventoryKeyWordList/"+mode+"/"+identifiant+"/");

                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);
                                        } else  {
                                                JSONArray vide = new JSONArray();
                                                r.rafraichir(vide, 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+"&mode="+mode;

                        // on fait un post asynchrone
                        RequestBuilder rb = new RequestBuilder(RequestBuilder.POST, Configuration.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, Configuration.getServiceBaseUrl()
                                        + "/InventoryKeyWordList/"
                                        + mode+"/"
                                        + identifiant
                                        + "/"
                                        + 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, Configuration.getServiceBaseUrl()
                                        + "/InventoryKeyWordList/"+mode+"/"+ identifiant);
                        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, Configuration.getServiceBaseUrl()
                                        + "/InventoryKeyWordList/"+mode+"/"+identifiant);
                        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();
                        }
                }

        }

}