Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 10 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
9 ddelon 1
package org.tela_botanica.client;
2
 
3
 
4
import net.mygwt.ui.client.event.BaseEvent;
5
import net.mygwt.ui.client.event.Listener;
6
import net.mygwt.ui.client.util.Observable;
7
 
8
import org.tela_botanica.client.image.ImageMediateur;
9
import org.tela_botanica.client.interfaces.iMediateur;
10
import org.tela_botanica.client.interfaces.iRetourUtilisateur;
11
import org.tela_botanica.client.modeles.Utilisateur;
12
import org.tela_botanica.client.observation.ObservationMediateur;
13
 
14
 
15
public class CarnetEnLigneMediateur extends Observable implements iMediateur, Listener {
16
 
17
	// Evenenements
18
	final static public  int ETAT_CONNEXION=1;
19
	final static public  int DECONNEXION=2;
20
	final static public  int CONNEXION = 3;
21
 
22
 
23
	private final CarnetEnLigneModele carnetEnLigneModele;
24
	private Utilisateur utilisateur=null;
25
 
26
	// Fonctionnement servicecs
27
	private boolean async=true;
28
 
29
 
30
 
31
	public CarnetEnLigneMediateur() {
32
 
33
		carnetEnLigneModele=new CarnetEnLigneModele();
34
		addListener(ETAT_CONNEXION,this);
35
		getEtatUtilisateur(); // Alimente Objet Utilisateur
36
 
37
	}
38
 
39
	/**
40
	 * Fin construction (est appelle sur reception evenement Applicatif ETAT_CONNEXION)
41
	 *
42
	 */
43
 
44
	private void _CarnetEnLigneMediateur() {
45
 
46
		new ImageMediateur(this);
47
		new ObservationMediateur(this);
48
 
49
	}
50
 
51
 
52
	private void getEtatUtilisateur() {  // Pourrait devenir publique ...
53
 
54
// TODO : utiliser une factory ici : Avec Modele synchrone ou non, ou au niveau methode comme dans cette exemple
55
 
56
 
57
// Pas possible de traiter dans Modele car retour asynchrone devant etre traité ici.
58
 
59
		// if asynchrone
60
 
61
		if (async) {
62
		carnetEnLigneModele.getUtilisateurAsynchroneDAO(
63
				new iRetourUtilisateur() {
64
					public void onRetour(Utilisateur uti) {
65
						utilisateur=uti;
66
						fireEvent(ETAT_CONNEXION);
67
					}
68
 
69
 
70
				}
71
 
72
		);
73
 
74
		}
75
		// else if synchrone
76
		else {
77
 
78
		utilisateur= carnetEnLigneModele.getUtilisateurSynchroneDAO();
79
		_CarnetEnLigneMediateur();
80
 
81
		}
82
 
83
 
84
 
85
 
86
	}
87
 
88
 
89
	// Evenenements Applicatifs
90
 
91
	public void handleEvent(BaseEvent be) {
92
		if (be.type==CarnetEnLigneMediateur.ETAT_CONNEXION) {
93
		 _CarnetEnLigneMediateur(); // Fin initialisation
94
		}
95
	}
96
 
97
 
98
	// Methode publiques
99
 
100
	/**
101
	 * Recherche Identifiant utilisateur en cours et etat de connection
102
	 * @return Utilisateur
103
	 */
104
 
105
 
106
	public Utilisateur getUtilisateur() {
107
		return utilisateur;
108
	}
109
 
110
	/**
111
	 * Deconnecte l'utilisateur passe en parametre
112
	 * @param String uti (utilisateur connecte)
113
	 */
114
 
115
 
116
    public void deconnecterUtilisateur() {
117
 
118
 
119
			carnetEnLigneModele.deconnecterUtilisateur(
120
					new iRetourUtilisateur() {
121
						public void onRetour(Utilisateur uti) {
122
							utilisateur=uti;
123
							fireEvent(DECONNEXION);
124
						}
125
 
126
 
127
					}, utilisateur.getIdentifiant()
128
 
129
			);
130
 
131
 
132
 
133
	}
134
 
135
	public void connecterUtilisateur(String login, String password) {
136
 
137
		carnetEnLigneModele.connecterUtilisateur(
138
				new iRetourUtilisateur() {
139
					public void onRetour(Utilisateur uti) {
140
						utilisateur=uti;
141
						fireEvent(CONNEXION);
142
					}
143
 
144
 
145
				}, login, password
146
 
147
		);
148
 
149
 
150
	}
151
 
152
 
153
}
154