Subversion Repositories eFlore/Archives.cel-v1

Rev

Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client;


import net.mygwt.ui.client.event.BaseEvent;
import net.mygwt.ui.client.event.Listener;
import net.mygwt.ui.client.util.Observable;

import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.interfaces.iMediateur;
import org.tela_botanica.client.interfaces.iRetourUtilisateur;
import org.tela_botanica.client.modeles.Utilisateur;
import org.tela_botanica.client.observation.ObservationMediateur;


public class CarnetEnLigneMediateur extends Observable implements iMediateur, Listener {
        
        // Evenenements
        final static public  int ETAT_CONNEXION=1;
        final static public  int DECONNEXION=2;
        final static public  int CONNEXION = 3;
        
        
        private final CarnetEnLigneModele carnetEnLigneModele;
        private Utilisateur utilisateur=null; 
        
        // Fonctionnement servicecs
        private boolean async=true;

        
        
        public CarnetEnLigneMediateur() {
                
                carnetEnLigneModele=new CarnetEnLigneModele();
                addListener(ETAT_CONNEXION,this);
                getEtatUtilisateur(); // Alimente Objet Utilisateur 
                
        }
        
        /**
         * Fin construction (est appelle sur reception evenement Applicatif ETAT_CONNEXION)
         *
         */
        
        private void _CarnetEnLigneMediateur() {
                
                new ImageMediateur(this); 
                new ObservationMediateur(this); 

        }
        
        
        private void getEtatUtilisateur() {  // Pourrait devenir publique ...
                
// TODO : utiliser une factory ici : Avec Modele synchrone ou non, ou au niveau methode comme dans cette exemple
        
                
// Pas possible de traiter dans Modele car retour asynchrone devant etre traité ici.
                
                // if asynchrone 
                
                if (async) {
                carnetEnLigneModele.getUtilisateurAsynchroneDAO(
                                new iRetourUtilisateur() {
                                        public void onRetour(Utilisateur uti) {
                                                utilisateur=uti;
                                                fireEvent(ETAT_CONNEXION); 
                                        }

                                        
                                }
                                
                );
                
                }
                // else if synchrone 
                else {

                utilisateur= carnetEnLigneModele.getUtilisateurSynchroneDAO();
                _CarnetEnLigneMediateur();

                }

                

                
        }


        // Evenenements Applicatifs
        
        public void handleEvent(BaseEvent be) {
                if (be.type==CarnetEnLigneMediateur.ETAT_CONNEXION) {
                 _CarnetEnLigneMediateur(); // Fin initialisation 
                }
        }
        
        
        // Methode publiques
        
        /**
         * Recherche Identifiant utilisateur en cours et etat de connection
         * @return Utilisateur
         */
        
        
        public Utilisateur getUtilisateur() {
                return utilisateur;
        }

        /**
         * Deconnecte l'utilisateur passe en parametre
         * @param String uti (utilisateur connecte)
         */
        
        
    public void deconnecterUtilisateur() {

                        
                        carnetEnLigneModele.deconnecterUtilisateur(
                                        new iRetourUtilisateur() {
                                                public void onRetour(Utilisateur uti) {
                                                        utilisateur=uti;
                                                        fireEvent(DECONNEXION); 
                                                }

                                                
                                        }, utilisateur.getIdentifiant()
                                        
                        );

                
                
        }

        public void connecterUtilisateur(String login, String password) {
        
                carnetEnLigneModele.connecterUtilisateur(
                                new iRetourUtilisateur() {
                                        public void onRetour(Utilisateur uti) {
                                                utilisateur=uti;
                                                fireEvent(CONNEXION); 
                                        }

                                        
                                }, login, password 
                                
                );

                
        }


}