Subversion Repositories eFlore/Applications.del

Rev

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

package org.tela_botanica.del.client.composants.identification;

import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;

public class FormulaireIdentificationPresenteur {
        
        public abstract interface Vue extends IsWidget {
                public void ajouterVue(HasWidgets composite);
                public HasClickHandlers getSeConnecter();
                public HasClickHandlers getSeDeconnecter();
                public void basculerAffichageFormulaire();
                public void basculerModeConnecte(Utilisateur utilisateur);
                public HasClickHandlers getBoutonOK();
                public String getLogin();
                public String getMotdepasse();
                public void afficherErreur();
                public void masquerErreur();
                public void viderFormulaire();
                public void setErreur(String texte);
        }
        
        private Vue vue;
        private Utilisateur utilisateur;
        private UtilisateurServiceConcret utilisateurService;
        
        public FormulaireIdentificationPresenteur(Vue vue) {
                this.vue = vue;
                utilisateurService = new UtilisateurServiceConcret();
                utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
                        @Override
                        public void surRetourUtilisateur(Utilisateur utilisateur) {
                                CacheClient.getInstance().setUtilisateur(utilisateur);
                                rafraichir();
                        }
                });
                gererEvenements();
                
        }
        
        public void rafraichir() {
                utilisateur = CacheClient.getInstance().getUtilisateur();               
                vue.basculerModeConnecte(this.utilisateur);
        }
        
        public void gererEvenements() {
                vue.getSeConnecter().addClickHandler(new ClickHandler() {
                        
                        @Override
                        public void onClick(ClickEvent event) {
                                vue.basculerAffichageFormulaire();
                        }
                });
                
                vue.getBoutonOK().addClickHandler(new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                String login = vue.getLogin(); 
                                String motdepasse = vue.getMotdepasse();
                                
                                if (login.equals("") || motdepasse.equals("")) {
                                        vue.setErreur(I18n.getMessages().saisirLogin());
                                        vue.afficherErreur();
                                } else {
                                        utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
                                                @Override
                                                public void surRetourUtilisateur(Utilisateur utilisateur) {
                                                        CacheClient.getInstance().setUtilisateur(utilisateur);
                                                        if (utilisateur.isIdentifie()) {
                                                                vue.masquerErreur();
                                                                rafraichir();
                                                                vue.basculerAffichageFormulaire();
                                                                vue.viderFormulaire();
                                                        } else {
                                                                vue.setErreur(I18n.getMessages().identificationRefus());
                                                                vue.afficherErreur();
                                                        }       
                                                }
                                        });
                                }
                        }
                });
                
                vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
                        @Override
                        public void onClick(ClickEvent event) {
                                Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
                                utilisateurService.deconnecterUtilisateur(utilisateur.getCourriel(), new UtilisateurCallback() {
                                        @Override
                                        public void surRetourUtilisateur(Utilisateur utilisateur) {
                                                CacheClient.getInstance().setUtilisateur(utilisateur);
                                                rafraichir();
                                        }
                                });
                                
                        }
                });
        }
        
        public void go(HasWidgets composite) {
                vue.ajouterVue(composite);
        }
}