Subversion Repositories eFlore/Applications.cel

Rev

Rev 1918 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.modeles.dao;

import java.util.Iterator;

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

/**
 * 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 = "";

                String[][] champsModifiables = ic.obtenirChampsModifiablesImage();
                for (int i = 0; i < champsModifiables.length; i++) {
                        postData += "&"+champsModifiables[i][0]+"="+champsModifiables[i][1];
                }

                // et on envoie une requête asynchrone
                RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
                                + "/inventoryImage/" + Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()+"/"+ic.getId());

                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) {

                                        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 += "&id_image=" + id + "&id_mot_cle_utilisateur=" + motsCles;

                // on envoie une requête asynchrone
                RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,
                                Configuration.getServiceBaseUrl()
                                + "/inventoryKeyWordImageList/" +Utilisateur.getInstance().getIdentifiantUtilisateurConsulte()+ "/");

                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("Les mots clés suivants ont bien été appliqués : "+iModele.renvoyerChaineMotClesTexte(ic));
                                                return;
                                        } else {
                                                com.google.gwt.user.client.Window
                                                                .alert("Problème lors de la mise à jour des données, le serveur a répondu "+response.getText());
                                        }
                                }

                        });

                } 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
                RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, Configuration.getServiceBaseUrl()
                                + "/inventoryImage/"
                                + iModele.getIdentifiant()
                                + "/"
                                + ic.getId());

                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) {

                                        if (response.getText().equals("OK")) {
                                                
                                                return;
                                        } else {
                                                com.google.gwt.user.client.Window
                                                                .alert("Problème lors de la mise à jour des données : "+response.getText());
                                        }
                                }

                        });

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