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
);
}
}