Subversion Repositories eFlore/Applications.cel

Rev

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

package org.tela_botanica.client.modeles.dao;

import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.objets.Configuration;
import org.tela_botanica.client.modeles.objets.Utilisateur;

import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
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 {
        
        private String identifiant = "" ;
        private String mode = "";
        private String nomService = "InventoryKeywordTree";
        //private String nomService = "InventoryKeyWordList";

        public MotsClesAsynchroneDAO() {
                mode = "images";
                identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
        }
        
        public MotsClesAsynchroneDAO(String mode) {
                this.mode = mode;
                identifiant = Utilisateur.getInstance().getIdentifiantUtilisateurConsulte();
        }

        /**
         * 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
                RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()
                                + "/"+nomService+"/"+mode+"/"+identifiant+"/");
                try {
                        rb.sendRequest(null, new RequestCallback() {

                                @Override
                                public void onError(Request request, Throwable exception) {
                                        // TODO Auto-generated method stub

                                }

                                @Override
                                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
         * @param r 
         */
        public void ajouterBaseDeDonnees(String motcle, final Rafraichissable r) {
                if (!motcle.equals("")) {
                        String postData = motcle+"&mode="+mode;

                        // on fait un post asynchrone
                        RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
                                        + "/"+nomService+"/");
                        try {
                                rb.sendRequest(postData, new RequestCallback() {

                                        @Override
                                        public void onError(Request request, Throwable exception) {
                                                // TODO Auto-generated method stub

                                        }

                                        @Override
                                        public void onResponseReceived(Request request,
                                                        Response response) {
                                                // TODO: les messages ne devraient pas être affichés ici
                                                // mais l'architecture pas très malléable complique les choses
                                                try {
                                                        Integer idMotcle = Integer.parseInt(response.getText());
                                                        r.rafraichir(idMotcle, false);
                                                } catch (Exception e) {
                                                        com.google.gwt.user.client.Window
                                                        .alert(Msg.get("probleme-mise-a-jour-donnees")+", "+Msg.get("serveur-a-repondu")+response.getText());
                                                }
                                        }

                                });
                        } 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, final Rafraichissable r) {
                if (!motcle.equals("")) {
                        String postData = "";
                        postData += "&action=DELETE";

                        RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
                                        + "/"+nomService+"/"
                                        + mode+"/"
                                        + identifiant
                                        + "/"
                                        + motcle);

                        try {
                                rb.sendRequest(postData, new RequestCallback() {

                                        @Override
                                        public void onError(Request request, Throwable exception) {
                                                // TODO Auto-generated method stub

                                        }

                                        @Override
                                        public void onResponseReceived(Request request,
                                                        Response response) {
                                                // TODO: les messages ne devraient pas être affichés ici
                                                // mais l'architecture par très malléable complique les choses
                                                // Attention OK n'est pas un terme à traduire ici
                                                if (response.getText().equals("OK")) {
                                                        com.google.gwt.user.client.Window.alert(Msg.get("mot-cle-supprime"));
                                                        r.rafraichir(null, false);
                                                        return;
                                                } else {
                                                        com.google.gwt.user.client.Window
                                                                        .alert(Msg.get("probleme-mise-a-jour-donnees")+", "+Msg.get("serveur-a-repondu")+response.getText());
                                                }
                                        }
                                });

                        } 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, final Rafraichissable r) {
                //TODO : cette fonction n'a aucun sens, on lui passe une sorte de chaine 
                // de requete url, elle devrait avoir au moins trois paramètres qu'elle assemble elle même
                if (!motcle.equals("")) {

                        String postData = "";
                        postData += "&action=modification"+motcle;

                        RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
                                        + "/"+nomService+"/"+mode+"/"+ identifiant);
                        try {
                                rb.sendRequest(postData, new RequestCallback() {

                                        @Override
                                        public void onError(Request request, Throwable exception) {
                                                // TODO Auto-generated method stub

                                        }

                                        @Override
                                        public void onResponseReceived(Request request,
                                                        Response response) {
                                                // TODO: les messages ne devraient pas être affichés ici
                                                // mais l'architecture par très malléable complique les choses
                                                if (response.getText().equals("OK")) {
                                                        com.google.gwt.user.client.Window.alert(Msg.get("mot-cle-renomme"));
                                                        r.rafraichir(null, false);
                                                        return;
                                                } else {
                                                        com.google.gwt.user.client.Window
                                                                        .alert(Msg.get("probleme-mise-a-jour-donnees")+", "+Msg.get("serveur-a-repondu")+response.getText());
                                                }
                                        }

                                });
                        } 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, final Rafraichissable r) {

                if (!motcle.equals("")) {

                        String postData = "";
                        postData += "&action=deplacement"+motcle;

                        RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
                                        + "/"+nomService+"/"+mode+"/"+identifiant);
                        try {
                                rb.sendRequest(postData, new RequestCallback() {

                                        @Override
                                        public void onError(Request request, Throwable exception) {
                                                // TODO Auto-generated method stub

                                        }

                                        @Override
                                        public void onResponseReceived(Request request,
                                                        Response response) {
                                                r.rafraichir(null, false);
                                        }

                                });
                        } catch (RequestException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
        }
}