Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 9 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 9 Rev 49
Line 1... Line 1...
1
package org.tela_botanica.client.observation;
1
package org.tela_botanica.client.observation;
Line 2... Line -...
2
 
-
 
3
 
-
 
-
 
2
 
4
 
3
 
5
 
4
import java.util.Iterator;
-
 
5
import org.tela_botanica.client.CarnetEnLigneMediateur;
6
import org.tela_botanica.client.CarnetEnLigneMediateur;
6
import org.tela_botanica.client.interfaces.FournisseurListe;
7
import org.tela_botanica.client.interfaces.iMediateur;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
8
import org.tela_botanica.client.modeles.ListeObservation;
-
 
9
import org.tela_botanica.client.modeles.Observation;
Line -... Line 10...
-
 
10
import org.tela_botanica.client.vues.FormulaireSaisieObservationVue;
-
 
11
import org.tela_botanica.client.vues.ListeObservationVue;
-
 
12
 
-
 
13
import com.gwtext.client.data.ArrayReader;
8
import org.tela_botanica.client.interfaces.iRetourObservation;
14
import com.gwtext.client.data.FieldDef;
-
 
15
import com.gwtext.client.data.MemoryProxy;
9
import org.tela_botanica.client.modeles.Observation;
16
import com.gwtext.client.data.RecordDef;
10
 
17
import com.gwtext.client.data.Store;
Line -... Line 18...
-
 
18
import com.gwtext.client.data.StringFieldDef;
-
 
19
import com.gwtext.client.widgets.Panel;
-
 
20
import com.gwtext.client.widgets.TabPanel;
-
 
21
 
-
 
22
/**
-
 
23
 * Mediateur gérant les interactions entre vues et les echanges de données
11
import com.google.gwt.user.client.Window;
24
 * C'est un singleton. 
Line -... Line 25...
-
 
25
 * @author aurelien
-
 
26
 *
-
 
27
 */
-
 
28
public class ObservationMediateur implements Rafraichissable {
Line 12... Line -...
12
import com.google.gwt.user.client.ui.RootPanel;
-
 
13
import com.google.gwt.user.client.ui.VerticalPanel;
29
	
-
 
30
	/**
-
 
31
	 * booleen qui verifie l'unicite de l'instance (donc static)
-
 
32
	 */
Line 14... Line 33...
14
 
33
	private static boolean estInstancie = false ;  
Line -... Line 34...
-
 
34
	
15
public class ObservationMediateur implements iMediateur{
35
	/** Mediateur general de l'application carnet en ligne
-
 
36
	 * 
16
 
37
	 * 
Line 17... Line -...
17
 
-
 
Line -... Line 38...
-
 
38
	 */
18
	// Evenenements
39
	
-
 
40
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
19
	final static public  int NOMBRE_OBSERVATION=1;
41
	
Line -... Line 42...
-
 
42
	
20
 
43
	/**
-
 
44
	 * modele de données
-
 
45
	 */
Line -... Line 46...
-
 
46
	private ObservationModele observationModele = null ;
21
	final static public  int LISTE_OBSERVATION=2;
47
	
22
	
-
 
-
 
48
	
23
	
49
	/**
Line -... Line 50...
-
 
50
	 * panneau principal des Observation (onglet "observation")
-
 
51
	 */
24
	private CarnetEnLigneMediateur carnetEnLigneMediateur=null;  // Mediateur General
52
	private final Panel panneauPrincipalObservation = new Panel("Observation");
-
 
53
	
Line -... Line 54...
-
 
54
	/**
-
 
55
	 * panneau a onglet pour la liste
-
 
56
	 */ 
Line 25... Line 57...
25
	private final ObservationModele observationModele=new ObservationModele();
57
	private TabPanel ongletsObservation = null ;
-
 
58
	
-
 
59
	/**
-
 
60
	 * conteneur du panneau a onglets
-
 
61
	 */
Line -... Line 62...
-
 
62
	private Panel panneauMenuEtOngletsObservation = null ;
-
 
63
	
-
 
64
	/**
-
 
65
	 * liste détaillée des Observations
Line 26... Line -...
26
 
-
 
Line 27... Line -...
27
	private Observation observation=null; 
-
 
28
 
-
 
Line -... Line 66...
-
 
66
	 */
-
 
67
	private ListeObservationVue listeObservation = null ;
-
 
68
	
-
 
69
	/**
-
 
70
	 * Saisie des Observations
-
 
71
	 */
-
 
72
	
-
 
73
	private FormulaireSaisieObservationVue formulaireSaisieObservationVue=null;
-
 
74
	/**
-
 
75
	 * l'indice du dernier onglet sélectionné
29
	// Variable interne 
76
	 */
-
 
77
	private int dernierIndexOnglet = 0 ; 
-
 
78
	
-
 
79
	/**
-
 
80
	 * booleen explicitant s'il y a une selection en cours
-
 
81
	 */
-
 
82
	private boolean selection = false ;
Line 30... Line -...
30
	private final String texteDeconnexion="Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica"; 
-
 
Line -... Line 83...
-
 
83
	
-
 
84
	
-
 
85
 
31
 
86
	/**
Line 32... Line -...
32
	// Composants graphiques
-
 
Line 33... Line -...
33
	
-
 
Line -... Line 87...
-
 
87
	 * 
-
 
88
	 * Numéro de page en cours
-
 
89
	 */
-
 
90
	private int pageEncours = 0 ;
-
 
91
	/**
34
	private EtatConnexionVue etatConnexionVue=null; // Vue Etat de la connexion utilisateur
92
	 * Nombre de pages totales
Line 35... Line -...
35
	private FormulaireDeConnexionVue formulaireDeConnexionVue=null; // Formulaire de connexion utilisateur
-
 
Line 36... Line 93...
36
	private ListeObservationsVue listeObservationsVue = null;  // Liste de releves
93
	 */
37
 
-
 
38
    // 
94
	private int pageMax = 1 ;
39
		
-
 
40
	
95
	/**
Line 41... Line -...
41
	public ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur) {
-
 
Line -... Line 96...
-
 
96
	 * Taille de page (par défaut 20)
-
 
97
	 */
-
 
98
	private int taillePage = 20 ;
Line 42... Line -...
42
		
-
 
43
 
-
 
Line -... Line 99...
-
 
99
	/**
44
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
100
	 * Nombre d'éléments total correspondant à la requete
Line 45... Line -...
45
		
-
 
Line 46... Line 101...
46
		etatConnexionVue=new EtatConnexionVue(this);
101
	 */
47
		listeObservationsVue=new ListeObservationsVue(this);
102
	private int nbElements = 0 ;
48
		
-
 
Line 49... Line -...
49
		VerticalPanel panel=new VerticalPanel();
-
 
Line 50... Line 103...
50
		
103
	
51
		panel.add(etatConnexionVue);
-
 
52
	
-
 
53
		panel.add(listeObservationsVue);
104
	
54
	
-
 
Line -... Line 105...
-
 
105
	/**
55
 
106
	 * Le store contenant les données à afficher, que le modèle transmet au médiateur quand il le demande
56
		RootPanel.get().add(panel);
107
	 */
Line -... Line 108...
-
 
108
	private Store st = null ;
-
 
109
	
Line 57... Line -...
57
		
-
 
Line -... Line 110...
-
 
110
	
-
 
111
	
-
 
112
	
-
 
113
	/**
-
 
114
	 * La liste des observations affichées en cours (verifier utilité)
Line -... Line 115...
-
 
115
	 */
Line -... Line 116...
-
 
116
	
Line -... Line 117...
-
 
117
	private ListeObservation cacheObservation = new ListeObservation(0) ;
-
 
118
	/**
-
 
119
	
-
 
120
	
-
 
121
	
-
 
122
	/**
-
 
123
	 * constructeur privé (on accède a la classe par la méthode getInstance
-
 
124
	 */
-
 
125
	
-
 
126
	
58
		onInitialisation();
127
	private ObservationMediateur(CarnetEnLigneMediateur carnetEnLigneMediateur )
-
 
128
	{
-
 
129
		this.carnetEnLigneMediateur=carnetEnLigneMediateur;
-
 
130
	
-
 
131
	
-
 
132
		
-
 
133
		// Demande d'identification
-
 
134
//		afficherMenuId() ;
-
 
135
 
-
 
136
		
-
 
137
		// on crée un modèle
-
 
138
		observationModele = ObservationModele.Instance(this);
-
 
139
		
-
 
140
		
Line 59... Line 141...
59
		
141
		// on gère la mise en page du panneau principal
60
	}
142
		//panneauPrincipalObservation.setLayout(new BorderLayout());
-
 
143
		
61
 
144
		// on crée le panneau qui contient les differentes onglets ainsi que le menu supérieur
-
 
145
	//	panneauMenuEtOngletsObservation = new Panel("gg") ;
-
 
146
	//	panneauMenuEtOngletsObservation.setLayout(new BorderLayout()) ;
-
 
147
		
-
 
148
		// le panneau à onglet qui contient la vue
-
 
149
		//ongletsObservation = new TabPanel();
-
 
150
		
-
 
151
		
-
 
152
		// la liste des observations
-
 
153
		
-
 
154
		//Panel panneauListeObservation = new Panel("Liste");
Line 62... Line -...
62
	
-
 
63
	/// Methodes privees 
-
 
64
 
-
 
65
	/**
-
 
66
	 * 
155
		
67
	 * Initialisations
-
 
68
	 * 
-
 
69
	 */
156
		listeObservation = new ListeObservationVue(this);
Line 70... Line -...
70
	
-
 
Line 71... Line 157...
71
	private void onInitialisation() {
157
		
72
	
-
 
73
	
158
		
74
		afficheEtatConnexion();
-
 
75
		onFiltrageListeObservation("all","all","all");
159
		// Le formulaire de saisie / modification d'observation
Line 76... Line -...
76
		
-
 
Line 77... Line 160...
77
	
160
		
78
	}
-
 
Line 79... Line -...
79
	
-
 
80
	// Filtre  selection lieu
-
 
81
	
-
 
82
	/**
-
 
83
	 * Action sur selection d'un lieu : affichage de la liste des taxons correspondants au filtrage
-
 
Line 84... Line -...
84
	 */
-
 
-
 
161
		formulaireSaisieObservationVue = new FormulaireSaisieObservationVue(this);
-
 
162
 
Line -... Line 163...
-
 
163
		
Line 85... Line 164...
85
	
164
		//panneauListeObservation.setLayout(new FitLayout());
86
	public void onFiltrageListeObservation(String id_loc, String loc,String lieu) {
165
		//panneauListeObservation.setSize(600,600);
87
 
166
		//panneauListeObservation.add(listeObservation);
Line 88... Line -...
88
		// Positionnement Filtre affichage
-
 
Line 89... Line 167...
89
		listeObservationsVue.setIdLocation(id_loc);
167
		
-
 
168
		
-
 
169
		// on ajoute les panneaux au panneau à onglets
90
		listeObservationsVue.setLocalite(loc);
170
		//ongletsObservation.add(panneauListeObservation);
Line 91... Line 171...
91
		listeObservationsVue.setLieudit(lieu);
171
		
Line -... Line 172...
-
 
172
		
-
 
173
		// les onglets au centre
-
 
174
//		panneauMenuEtOngletsObservation.add(ongletsObservation,regionCentre);
92
		listeObservationsVue.initialiser();
175
		
93
 
176
		// on ajoute le panneau qui contient le menu et les onglets d'images au centre
94
		// Affichage des filtres
177
		//panneauPrincipalObservation.add(panneauMenuEtOngletsObservation,regionCentre);
95
		listeObservationsVue.displayFilter();
178
		
96
 
179
		panneauPrincipalObservation.add(formulaireSaisieObservationVue);
-
 
180
	
-
 
181
		panneauPrincipalObservation.add(listeObservation);
-
 
182
		
-
 
183
	
-
 
184
	
-
 
185
 
-
 
186
	}
Line 97... Line 187...
97
		
187
 
Line 98... Line -...
98
	}
-
 
99
	
188
 
Line 100... Line 189...
100
 
189
	/**
Line -... Line 190...
-
 
190
	 * Retourne une instance de manière unique
-
 
191
	 * @return l'instance unique du médiateur
-
 
192
	 */
Line 101... Line -...
101
 
-
 
Line 102... Line -...
102
 
-
 
103
	
-
 
104
	/// UTILISATEUR
-
 
105
 
-
 
Line -... Line 193...
-
 
193
	public static ObservationMediateur Instance(CarnetEnLigneMediateur carnetEnLigneMediateur)
Line 106... Line 194...
106
	
194
	{
Line -... Line 195...
-
 
195
			if(!estInstancie)
107
	/**
196
			{
108
	 *  Affichage etat de la connexion
197
				estInstancie = true ;
-
 
198
				return new ObservationMediateur(carnetEnLigneMediateur) ;
-
 
199
			}
109
	 */
200
			else
-
 
201
			{
110
	
202
				return null ;
-
 
203
				
-
 
204
			}
-
 
205
	}
111
	
206
	
112
	private void afficheEtatConnexion() {
207
	
Line -... Line 208...
-
 
208
	
-
 
209
	/**
-
 
210
	 * envoie au modèle une demande de mise a jour
-
 
211
	 */
-
 
212
 
Line -... Line 213...
-
 
213
 
-
 
214
	public void obtenirNombreObservation() {
-
 
215
		
-
 
216
	
-
 
217
			listeObservation.masquerChargement();
113
		 if (!carnetEnLigneMediateur.getUtilisateur().isIdentifie()) {
218
		    observationModele.obtenirNombreObservation(this) ;
Line 114... Line -...
114
			    etatConnexionVue.setEtat(texteDeconnexion,false);
-
 
Line -... Line 219...
-
 
219
		
-
 
220
	}
115
		 }
221
	
Line 116... Line 222...
116
		 else {
222
	/**
Line -... Line 223...
-
 
223
	 * envoie au modèle une demande de mise a jour
-
 
224
	 */
-
 
225
 
-
 
226
 
-
 
227
	public void obtenirListeObservation() {
-
 
228
		
Line 117... Line -...
117
		    etatConnexionVue.setEtat(carnetEnLigneMediateur.getUtilisateur().getIdentifiant()+ " (deconnexion)",true);
-
 
118
		 }
-
 
119
		
-
 
120
	}
229
 
121
 
-
 
122
	
-
 
Line -... Line 230...
-
 
230
			observationModele.obtenirListeObservation(this, taillePage, pageEncours) ;
-
 
231
		
Line 123... Line 232...
123
	/**
232
	}
Line -... Line 233...
-
 
233
 
124
	 * 
234
 
Line -... Line 235...
-
 
235
	
-
 
236
		
125
	 * Affichage boite de connexion
237
	
-
 
238
	/**
-
 
239
	 * C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
Line -... Line 240...
-
 
240
	 * sous forme de tableau [nom, valeur]
-
 
241
	 * @return Les noms et valeurs des filtres
Line -... Line 242...
-
 
242
	 */
126
	 *
243
	public String[][] renvoyerFiltres()
-
 
244
	{
127
	 */
245
		String[][] valeursFiltres = { {"location","Saint-Martin-de-Londres"} } ;
-
 
246
		
-
 
247
		
128
	
248
		return valeursFiltres ;
Line -... Line 249...
-
 
249
	}
-
 
250
 
-
 
251
 
-
 
252
	public String getIdentifiant() {
-
 
253
		
Line -... Line 254...
-
 
254
		return carnetEnLigneMediateur.getUtilisateur().getIdentifiant();
-
 
255
	
-
 
256
	}
-
 
257
 
-
 
258
 
-
 
259
	public Panel getPanneauPrincipalObservation() {
-
 
260
		return panneauPrincipalObservation;
-
 
261
	}
-
 
262
	
-
 
263
	
Line 129... Line -...
129
	public void afficherDialogueConnexion() {
-
 
Line 130... Line 264...
130
		
264
	
-
 
265
	// TODO : plutot dans la listevu non ?
-
 
266
 
131
		  // TODO : singleton ? 
267
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
132
		  formulaireDeConnexionVue = new FormulaireDeConnexionVue(this);
-
 
-
 
268
	
-
 
269
		
133
 
270
		
-
 
271
//		 si l'on a reçu une liste d'observation
134
		  // Position it roughly in the middle of the screen.
272
		if(nouvelleDonnees instanceof ListeObservation)
135
		  int left = (Window.getClientWidth() - 512) / 2;
-
 
136
		  int top = (Window.getClientHeight() - 256) / 2;
-
 
137
		  formulaireDeConnexionVue.setPopupPosition(left, top);
-
 
138
		  formulaireDeConnexionVue.show();
-
 
139
		
273
		{
140
	}
-
 
141
 
274
			
142
	
275
				ListeObservation data = (ListeObservation) nouvelleDonnees ;
143
	/**
-
 
-
 
276
				Object[][] observationData = new Object[data.size()][8];
144
	 * Deconnexion de l'utilisateur en cours 
277
				int i = 0 ;
-
 
278
				
-
 
279
				if(data.size() == 0)
-
 
280
				{
-
 
281
					pageEncours = 0 ;
-
 
282
				}
145
	 */
283
				
-
 
284
				// on la parse et on récupère les informations quiç nous interessent
-
 
285
				for (Iterator it = data.keySet().iterator(); it.hasNext();) 
-
 
286
				{
-
 
287
					
-
 
288
					Observation obs=(Observation) data.get(it.next());
-
 
289
					
-
 
290
					observationData[i][0]= obs.getTransmis();
146
	
291
					observationData[i][1]= obs.getNomSaisi();
-
 
292
					observationData[i][2]= obs.getNomRetenu();
-
 
293
					observationData[i][3]= obs.getLieudit();
-
 
294
					observationData[i][4]= obs.getDate();
-
 
295
					observationData[i][5]= obs.getNumeroOrdre();
-
 
296
					
-
 
297
					
-
 
298
 
147
	public void deconnecterUtilisateur() {
299
					
-
 
300
										
-
 
301
					i++ ;
-
 
302
				}
-
 
303
		
-
 
304
				// creation du store qui les contient
-
 
305
				
148
		
306
				FieldDef defEtatObservation = new StringFieldDef("etat_observation");
-
 
307
				FieldDef defNomSaisiObservation = new StringFieldDef("nomSaisi_observation");
-
 
308
				FieldDef defNomRetenuObservation = new StringFieldDef("nomRetenu_observation");
-
 
309
				FieldDef defLieuObservation = new StringFieldDef("lieu_observation");
-
 
310
				FieldDef defDateObservation = new StringFieldDef("date_observation");
-
 
311
				FieldDef defOrdreObservation = new StringFieldDef("ordre_observation");
-
 
312
				
-
 
313
				// on associe le store
-
 
314
 
-
 
315
				FieldDef[] defTab = { defEtatObservation, defNomSaisiObservation, defNomRetenuObservation,
-
 
316
						defLieuObservation, defDateObservation, defOrdreObservation };
-
 
317
				
-
 
318
				RecordDef rd = new RecordDef(defTab);
-
 
319
				
149
	//	carnetEnLigneMediateur.addListener(CarnetEnLigneMediateur.DECONNEXION,this);
320
				final MemoryProxy dataProxy = new MemoryProxy(observationData);
-
 
321
				final ArrayReader reader = new ArrayReader(rd);
-
 
322
		
-
 
323
				final Store observationStore = new Store(dataProxy, reader);
-
 
324
				
-
 
325
				
-
 
326
				st = observationStore ;
-
 
327
				st.load() ;
-
 
328
				
-
 
329
				// par défaut le store est trié sur l'ordre d'observations
-
 
330
				st.sort("ordre_observation") ;
-
 
331
 
-
 
332
			
-
 
333
				// si on doit répandre les données, on notifie le médiateur qui les distribuera à son tour
-
 
334
				if(repandreRafraichissement)
-
 
335
				{
-
 
336
					listeObservation.rafraichir(st, false) ;					
-
 
337
				}
150
		carnetEnLigneMediateur.deconnecterUtilisateur();
338
				
Line -... Line 339...
-
 
339
		}
-
 
340
		
-
 
341
		
-
 
342
		// Si on reçoit un tableau d'entiers
151
	
343
		// c'est un tableau d'un seul entier qui est le nombre d'observation correspondant aux critères
Line -... Line 344...
-
 
344
		if(nouvelleDonnees instanceof int[])
-
 
345
		{
-
 
346
			int[] pages = (int[])nouvelleDonnees ;
-
 
347
			
-
 
348
			// on calcule le nombre de pages nécessaires et on les met à jour dans le modèle
-
 
349
			pageMax  = calculerNbPages(pages[0]) ;
-
 
350
			nbElements = pages[0] ;
-
 
351
			
-
 
352
			// et on notifie de le mediateur du changement des valeurs
-
 
353
			changerPageMaxEtCourante(pageMax,pageEncours,taillePage,pages[0]) ;
-
 
354
			
-
 
355
			obtenirListeObservation();
-
 
356
		}
-
 
357
	}
-
 
358
	
-
 
359
	
-
 
360
	/**
-
 
361
	 * Met à jour les barre d'outils avec des nouvelles valeurs
-
 
362
	 * @param pageMax le nombre de pages
-
 
363
	 * @param pageEncours la page en cours
-
 
364
	 * @param taillePage la taille de page
-
 
365
	 * @param nbElement le nombre d'élements par page
-
 
366
	 */
-
 
367
	public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) 
-
 
368
	{