Subversion Repositories eFlore/Applications.del

Rev

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

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

import java.util.HashMap;
import java.util.Iterator;

import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.client.services.rest.async.ListePreferencesCallback;
import org.tela_botanica.del.client.services.rest.async.ModificationPreferencesCallback;
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;

import org.tela_botanica.del.client.services.RequestBuilderWithCredentials;
import com.google.gwt.user.client.Window;

public class PreferencesServiceConcret implements PreferencesService {
        
        private String baseUrl;

        public PreferencesServiceConcret() {
                this(new Config());
        }
        
        public PreferencesServiceConcret(Config config) {
                this.baseUrl = config.getUrl("serviceUtilisateursBaseUrl");
        }

        @Override
        public void modifierPreferences(Utilisateur utilisateur, HashMap<String, String> preferences, ModificationPreferencesCallback callback) {
                String idUtilisateur = utilisateur.getId();
                String urlService = baseUrl+"utilisateurs/"+idUtilisateur+"/preferences/";
                RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST, urlService);
                
                callback.setMode(ModeRequete.MODIFICATION);
                String chainePost = assemblerRequeteModification(preferences);
                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 assemblerRequeteModification(HashMap<String, String> preferences) {
                String chaine = "";
                Iterator<String> it = preferences.keySet().iterator();
            while (it.hasNext()) {
                String cle = it.next();
                if(!chaine.equals("")) {
                        chaine += "&";
                }
                chaine += cle+"="+preferences.get(cle);
            }
            
            return chaine;
        }

        @Override
        public void chargerPreferences(Utilisateur utilisateur,
                        ListePreferencesCallback callback) {
                String idUtilisateur = utilisateur.getId();
                String urlService = baseUrl+"utilisateurs/"+idUtilisateur+"/preferences/";
                RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, urlService);
                                
                callback.setMode(ModeRequete.LECTURE);
                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 ?
                }
        }
}