Subversion Repositories eFlore/Applications.del

Rev

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

package org.tela_botanica.del.client.services.rest;

import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.services.rest.async.AjoutCommentaireCallback;
import org.tela_botanica.del.client.services.rest.async.ListeCommentairesCallback;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback;

import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.URL;

public class CommentaireServiceConcret implements CommentaireService {

        private String baseUrl;

        public CommentaireServiceConcret() {
                Config config = new Config();
                this.baseUrl = config.getServiceBaseUrl();
        }
        
        public CommentaireServiceConcret(Config config) {
                this.baseUrl = config.getServiceBaseUrl();
        }
        
        @Override
        public void ajouterCommentaire(Commentaire commentaire, AjoutCommentaireCallback callback) {
                
                String urlService = baseUrl+"commentaires/";
                RequestBuilder rb = new RequestBuilder(RequestBuilder.PUT, urlService);
                
                callback.setMode(ModeRequete.AJOUT);
                String chainePost = assemblerChaineRequeteAjoutModif(commentaire);
                try {
                        rb.sendRequest(chainePost, callback);
                } catch (Exception e) {
                        //TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
                }
        }
        
        private String assemblerChaineRequeteAjoutModif(Commentaire commentaire) {

                String chaineRequete = "";
                if(commentaire.getObservation() != null && commentaire.getObservation().getId() != null) {
                        chaineRequete += "observation="+URL.encodeQueryString(commentaire.getObservation().getId());
                }
                if(commentaire.getContributeur().getId() != null) {
                        chaineRequete += "&auteur.id="+URL.encodeQueryString(commentaire.getContributeur().getId());
                }

                if(commentaire.getParent() != null && commentaire.getParent().getId() != null) {
                        chaineRequete += "&id_parent="+URL.encodeQueryString(commentaire.getParent().getId());
                        PropositionDetermination propositionParente = commentaire.getPropositionParenteOuNulle();
                        if(propositionParente != null) {
                                chaineRequete += "&proposition="+URL.encodeQueryString(propositionParente.getId());
                        }
                }
                chaineRequete += "&texte="+URL.encodeQueryString(commentaire.getCommentaire())+
                "&auteur.prenom="+URL.encodeQueryString(commentaire.getContributeur().getPrenom())+
                "&auteur.nom="+URL.encodeQueryString(commentaire.getContributeur().getNom())+
                "&auteur.courriel="+URL.encodeQueryString(commentaire.getContributeur().getAdresseEmail());
                return chaineRequete;
        }

        public void chargerCommentaires(PropositionDetermination propositionDetermination, ListeCommentairesCallback commentaireCallback) {
                String urlService = baseUrl+"commentaires/?masque.proposition="+propositionDetermination.getId();
                RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, urlService);
                
                commentaireCallback.setMode(ModeRequete.LECTURE);
                
                try {
                        rb.sendRequest(null, commentaireCallback);
                } catch (Exception e) {
                        //TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
                }
        }

        @Override
        public void supprimerCommentaire(Commentaire commentaire,
                        SuppressionCommentaireCallback callback) {
                
                String urlService = baseUrl+"commentaires/"+commentaire.getId();
                RequestBuilder rb = new RequestBuilder(RequestBuilder.DELETE, urlService);
                
                callback.setMode(ModeRequete.SUPPRESSION);
                try {
                        rb.sendRequest(null, callback);
                } catch (Exception e) {
                        //TODO: quoi faire si la requete est mal formée coté client avant d'être envoyée ?
                }
        }
}