Subversion Repositories eFlore/Applications.del

Rev

Rev 898 | 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.PropositionDetermination;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack.ModeRequete;

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

public class PropositionDeterminationServiceConcret implements
                PropositionDeterminationService {
        
        private String baseUrl;

        public PropositionDeterminationServiceConcret() {
                Config config = new Config();
                this.baseUrl = config.getServiceBaseUrl();
        }
        
        public PropositionDeterminationServiceConcret(Config config) {
                this.baseUrl = config.getServiceBaseUrl();
        }

        @Override
        public void ajouterProposition(PropositionDetermination proposition, PropositionDeterminationCallBack callback) {
                
                String urlService = baseUrl+"commentaires/";
                RequestBuilder rb = new RequestBuilder(RequestBuilder.PUT, urlService);
                
                callback.setMode(ModeRequete.AJOUT);
                String chainePost = assemblerChaineRequeteAjoutModif(proposition);
                try {
                        // TODO urlencoder toutes les requetes;
                        rb.sendRequest(URL.encode(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(PropositionDetermination proposition) {

                String chaineRequete = "";
                //TODO: tests sur les num nn et nt et la famille quand ils seront implémentés
                chaineRequete += "nom_sel="+proposition.getEspece()+            
                "&auteur.prenom="+proposition.getContributeur().getPrenom()+
                "&auteur.nom="+proposition.getContributeur().getNom()+
                "&auteur.courriel="+proposition.getContributeur().getAdresseEmail();
                
                if(proposition.getObservation() != null && proposition.getObservation().getId() != null) {
                        chaineRequete += "&observation="+proposition.getObservation().getId();
                }
                if(proposition.getContributeur().getId() != null) {
                        chaineRequete += "&auteur.id="+proposition.getContributeur().getId();
                }
                
                if(proposition.getParent() != null && proposition.getParent().getId() != null) {
                        chaineRequete += "&id_parent="+proposition.getParent().getId();
                        PropositionDetermination propositionParente = proposition.getPropositionParenteOuNulle();
                        if(propositionParente != null) {
                                chaineRequete += "&proposition="+proposition.getPropositionParenteOuNulle();
                        }
                }
                
                //TODO prise en compte du texte qui pourrait être saisi avec le commentaire

                return chaineRequete;
        }
}