Subversion Repositories eFlore/Applications.cel

Rev

Rev 2 | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client;

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

public class CarnetEnLigneMediateur {

        // 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() {

                ImageMediateur.Instance();
                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
         */
        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

                );

        }

}