Subversion Repositories eFlore/Applications.cel

Rev

Rev 262 | Rev 301 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
195 david 1
package org.tela_botanica.client.vues.observation;
12 david 2
 
3
 
46 david 4
import java.util.Iterator;
5
 
6
import org.tela_botanica.client.modeles.ListeObservation;
7
import org.tela_botanica.client.modeles.Observation;
12 david 8
import org.tela_botanica.client.observation.ObservationMediateur;
195 david 9
import org.tela_botanica.client.vues.BarrePaginationVue;
59 david 10
import org.tela_botanica.client.interfaces.ListePaginable;
12 david 11
import org.tela_botanica.client.interfaces.Rafraichissable;
12
import org.tela_botanica.client.interfaces.VueListable;
133 aurelien 13
 
128 aurelien 14
import com.gwtext.client.core.EventCallback;
41 jpm 15
import com.gwtext.client.core.EventObject;
12 david 16
import com.gwtext.client.core.Ext;
17
import com.gwtext.client.core.ExtElement;
46 david 18
import com.gwtext.client.data.ArrayReader;
12 david 19
import com.gwtext.client.data.FieldDef;
238 aurelien 20
import com.gwtext.client.data.IntegerFieldDef;
46 david 21
import com.gwtext.client.data.MemoryProxy;
12 david 22
import com.gwtext.client.data.Record;
23
import com.gwtext.client.data.RecordDef;
24
import com.gwtext.client.data.Store;
25
import com.gwtext.client.data.StringFieldDef;
128 aurelien 26
import com.gwtext.client.widgets.Button;
12 david 27
import com.gwtext.client.widgets.Component;
275 aurelien 28
import com.gwtext.client.widgets.Panel;
101 jpm 29
import com.gwtext.client.widgets.Tool;
128 aurelien 30
import com.gwtext.client.widgets.Toolbar;
31
import com.gwtext.client.widgets.ToolbarButton;
32
import com.gwtext.client.widgets.ToolbarTextItem;
33
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
34
import com.gwtext.client.widgets.event.PanelListenerAdapter;
41 jpm 35
import com.gwtext.client.widgets.grid.CellMetadata;
12 david 36
import com.gwtext.client.widgets.grid.ColumnConfig;
37
import com.gwtext.client.widgets.grid.ColumnModel;
38
import com.gwtext.client.widgets.grid.GridPanel;
41 jpm 39
import com.gwtext.client.widgets.grid.Renderer;
133 aurelien 40
import com.gwtext.client.widgets.grid.event.GridListenerAdapter;
41 jpm 41
import com.gwtext.client.widgets.grid.event.GridRowListenerAdapter;
12 david 42
 
43
/**
44
 * Liste d'observation composée de ligne d'observation
45
 * l'interface rafraichissable et l'interface vueListable
46
 *
47
 * @author David Delon 2008
48
 */
49
public class ListeObservationVue extends GridPanel implements Rafraichissable,
59 david 50
		VueListable, ListePaginable {
12 david 51
 
52
	/**
53
	 * Le médiateur associé à la vue
54
	 */
55
	private ObservationMediateur	observationMediateur		= null;
56
 
57
 
58
	/**
59
	 * Config de colonne
60
	 */
61
	private ColumnConfig	etatObservation;
62
	/**
63
	 * Config de colonne
64
	 */
65
	private ColumnConfig	nomSaisiObservation;
66
	/**
67
	 * Config de colonne
68
	 */
69
	private ColumnConfig	nomRetenuObservation;
70
	/**
71
	 * Config de colonne
72
	 */
73
	private ColumnConfig	lieuObservation;
74
	/**
75
	 * Config de colonne
76
	 */
77
	private ColumnConfig	dateObservation;
78
	/**
79
	 * Config de colonne
80
	 */
81
	private ColumnConfig	ordreObservation;
82
	/**
83
	 * Modele de colonnes
84
	 */
85
	private ColumnModel		modeleColonnes;
86
 
82 david 87
 
12 david 88
	/**
89
	 * Store qui contient les données à afficher
90
	 */
91
	private Store			st				= null;
92
 
93
 
94
	/**
95
	 * Barre de pagination
96
	 */
59 david 97
	private BarrePaginationVue bt = null ;
12 david 98
 
99
	/**
46 david 100
	 * Numéro de page en cours
101
	 */
102
	private int pageEncours = 0 ;
103
	/**
104
	 * Nombre de pages totales
105
	 */
106
	private int pageMax = 1 ;
107
	/**
108
	 * Taille de page (par défaut 20)
109
	 */
110
	private int taillePage = 20 ;
111
	/**
112
	 * Nombre d'éléments total correspondant à la requete
113
	 */
114
	private int nbElements = 0 ;
115
 
82 david 116
	private ListeObservation cacheListeObservation = null;
46 david 117
 
101 jpm 118
	private Tool exporterObservations = null ;
119
 
133 aurelien 120
	private final int KEY_ENTER = 13;
121
 
206 aurelien 122
	private String modeleLieu = "IDLOCCOMMUNE, LIEUDIT, STATION";
250 aurelien 123
 
124
 
125
	private boolean tailleInitialisee = false ;
206 aurelien 126
 
46 david 127
	/**
12 david 128
	 * Constructeur sans arguments (privé car ne doit pas être utilisé)
129
	 */
59 david 130
	@SuppressWarnings("unused")
12 david 131
	private ListeObservationVue()
132
	{
133
		super() ;
134
	}
135
 
136
	/**
137
	 * Constructeur avec argument
138
	 * @param im le médiateur à associer
139
	 */
140
	public ListeObservationVue(ObservationMediateur obs) {
141
 
142
		this.observationMediateur = obs;
143
 
144
		setHeader(true);
53 david 145
 
12 david 146
 
147
		// on place la barre de pagination
59 david 148
		bt = new BarrePaginationVue(this);
149
		bt.setLabelElement("Observations");
150
		bt.setTaillePageParDefaut(20);
128 aurelien 151
		bt.setIntervallesPages(new String[] {"400","200",  "100" , "50" , "20", "10"}) ;
94 jpm 152
 
128 aurelien 153
		Toolbar barreActions = new Toolbar();
146 aurelien 154
		ToolbarButton publier = new ToolbarButton("Rendre publiques");
155
		publier.addListener(new ButtonListenerAdapter() {
128 aurelien 156
			public void onClick(Button b, EventObject e) {
146 aurelien 157
				observationMediateur.transmettreObservations(true);
128 aurelien 158
			}
159
		});
146 aurelien 160
 
161
		ToolbarButton privatiser = new ToolbarButton("Rendre privées");
162
		privatiser.addListener(new ButtonListenerAdapter() {
163
			public void onClick(Button b, EventObject e) {
164
				observationMediateur.transmettreObservations(false);
165
			}
166
		});
167
 
128 aurelien 168
		ToolbarButton supprimer = new ToolbarButton("Supprimer");
169
		supprimer.addListener(new ButtonListenerAdapter() {
170
			public void onClick(Button b, EventObject e) {
171
				observationMediateur.supprimerObservations();
172
			}
173
		});
174
 
175
 
176
		ToolbarTextItem exporter = new ToolbarTextItem("<a href=\"#\" id=\"lienExport\"> Exporter </a>");
177
 
146 aurelien 178
		barreActions.addButton(publier);
179
		barreActions.addButton(privatiser);
128 aurelien 180
		barreActions.addSpacer();
181
		barreActions.addButton(supprimer);
182
		barreActions.addSpacer();
183
		barreActions.addItem(exporter);
184
 
140 aurelien 185
		this.setTopToolbar(barreActions) ;
186
		this.setBottomToolbar(bt);
128 aurelien 187
 
129 aurelien 188
		this.setCollapsible(true);
189
		this.setTitleCollapse(true);
101 jpm 190
 
94 jpm 191
		this.setTitle("Observations") ;
12 david 192
 
193
		// on construit le modèle de colonnes
194
 
195
		// Le store suivant est ensuite remplacé par le store contenant les données obtenus depuis le serveur (cf rafraichir)
196
 
41 jpm 197
		Renderer colRend = new Renderer() {
198
 
199
			public String render(Object value, CellMetadata cellMetadata,
200
					Record record, int rowIndex, int colNum, Store store) {
201
 
202
				if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) {
203
 
204
					return "" ;
205
				}
206
				else
207
				{
208
 
209
				}
210
 
211
				return value.toString() ;
212
			}
213
 
214
		} ;
12 david 215
 
133 aurelien 216
		Renderer dateRend = new Renderer() {
217
 
218
			public String render(Object value, CellMetadata cellMetadata,
219
					Record record, int rowIndex, int colNum, Store store) {
220
 
221
				if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) {
222
 
223
					return "" ;
224
				}
225
				else
226
				{
227
					String dateEntiere = value.toString() ;
228
					String[] dateEtHeure = dateEntiere.split(" ", 2);
229
					if(verifierFormatDate(dateEtHeure[0])) {
230
						String[] dateFormateeTab = dateEtHeure[0].split("-",3);
231
						return dateFormateeTab[2]+"/"+dateFormateeTab[1]+"/"+dateFormateeTab[0] ;
232
					}
233
				}
234
 
235
				return value.toString() ;
236
			}
237
 
238
		} ;
239
 
128 aurelien 240
		etatObservation = new ColumnConfig("Transmis", "etat_observation", 20, true, new Renderer() {
41 jpm 241
 
242
			public String render(Object value, CellMetadata cellMetadata,
243
					Record record, int rowIndex, int colNum, Store store) {
244
				if(value.equals("1"))
245
				{
128 aurelien 246
					return "<img src=\"tela.png\"/></img>" ;
41 jpm 247
				}
248
				else
249
				{
250
					return "" ;
251
				}
252
			}
253
 
254
		});
255
		nomSaisiObservation = new ColumnConfig("Nom saisi", "nomSaisi_observation", 200, true, colRend);
256
		nomRetenuObservation = new ColumnConfig("Nom retenu", "nomRetenu_observation", 200, true, colRend);
257
		lieuObservation = new ColumnConfig("Lieu", "lieu_observation", 200, true, colRend);
133 aurelien 258
		dateObservation = new ColumnConfig("Date", "date_observation", 120, true, dateRend);
41 jpm 259
		ordreObservation = new ColumnConfig("Ordre", "ordre_observation", 50, true, colRend);
42 jpm 260
 
12 david 261
 
262
		// on associe le modèle de colonnes
263
 
264
		ColumnConfig[] cm = {etatObservation, nomSaisiObservation, nomRetenuObservation, lieuObservation, dateObservation, ordreObservation};
265
 
266
		modeleColonnes = new ColumnModel(cm);
267
 
268
		this.setColumnModel(modeleColonnes);
269
 
270
		this.setAutoScroll(true);
271
		this.setEnableColumnResize(true);
272
 
46 david 273
		//temp dd viewport desactive ajout de ces 2 lignes
53 david 274
	//	this.setAutoWidth(true);
46 david 275
		// temp
276
 
12 david 277
		// creation du store
52 david 278
 
12 david 279
		FieldDef defEtatObservation = new StringFieldDef("etat_observation");
280
		FieldDef defNomSaisiObservation = new StringFieldDef("nomSaisi_observation");
281
		FieldDef defNomRetenuObservation = new StringFieldDef("nomRetenu_observation");
282
		FieldDef defLieuObservation = new StringFieldDef("lieu_observation");
283
		FieldDef defDateObservation = new StringFieldDef("date_observation");
238 aurelien 284
		FieldDef defOrdreObservation = new IntegerFieldDef("ordre_observation");
12 david 285
 
286
 
287
		FieldDef[] defTab = { defEtatObservation, defNomSaisiObservation, defNomRetenuObservation,
288
				defLieuObservation, defDateObservation, defOrdreObservation };
289
 
290
		RecordDef rd = new RecordDef(defTab);
291
		st = new Store(rd);
292
 
293
		// on associe le store
294
 
295
		this.setStore(st);
296
		this.getView().setAutoFill(true);
42 jpm 297
		this.getView().setForceFit(true) ;
12 david 298
 
299
		// on crée un masque de chargement qui s'affichera lors des mises à jour
300
		this.setLoadMask("Chargement");
301
 
302
		// on ajoute les listeners
303
		ajouterListeners();
304
 
305
 
306
	}
307
 
308
 
309
	/**
310
	 * Ajoute les listeners pour la gestion des évènements
311
	 */
312
	private void ajouterListeners() {
41 jpm 313
 
314
		this.addGridRowListener(new GridRowListenerAdapter() {
12 david 315
 
316
			// gestion du clic sur une ligne
41 jpm 317
			public void onRowClick(GridPanel grid, int rowIndex,
318
					EventObject e) {
216 aurelien 319
				// on notifie le médiateur et on lui passe le numéro de ligne
320
				Record rd = getStore().getAt(rowIndex);
71 jpm 321
				String ordreObservation = rd.getAsString("ordre_observation") ;
82 david 322
				observationMediateur.onClicListeObservation(rowIndex,ordreObservation);
41 jpm 323
 
12 david 324
			}
41 jpm 325
 
12 david 326
			// gestion du clic droit
327
			public void onRowContextMenu(GridPanel grid, int rowIndex,
328
					EventObject e) {
329
				// on stoppe l'évenement pour empecher le navigateur d'afficher son propre menu
330
				e.stopEvent() ;
331
				// on notifie le médiateur en lui passant l'évenement
54 david 332
				observationMediateur.montrerContextMenu(e);
12 david 333
			}
334
 
335
			// gestion du double clic
336
			public void onRowDblClick(GridPanel grid, int rowIndex,
337
					EventObject e) {
338
				// on notifie le médiateur en lui passant le numéro de ligne
54 david 339
				observationMediateur.doubleClicListeObservation(rowIndex);
12 david 340
			}
41 jpm 341
 
12 david 342
		});
343
 
133 aurelien 344
		this.addGridListener(new GridListenerAdapter() {
345
			public void onKeyPress(EventObject e) {
346
				if(e.getKey() == KEY_ENTER) {
347
					Record rd = getSelectionModel().getSelected();
348
					int rowIndex = st.indexOf(rd);
349
					String ordreObservation = rd.getAsString("ordre_observation") ;
350
					observationMediateur.onClicListeObservation(rowIndex, ordreObservation);
351
				}
352
			}
353
		});
354
 
128 aurelien 355
		this.addListener(new PanelListenerAdapter() {
356
			public void onRender(Component c) {
357
 
358
				ExtElement lienExport = Ext.get("lienExport") ;
359
				lienExport.addListener("click", new EventCallback() {
12 david 360
 
128 aurelien 361
					public void execute(EventObject e) {
362
 
363
						observationMediateur.exporterObservations();
364
					}
365
 
366
				});
12 david 367
			}
128 aurelien 368
		});
275 aurelien 369
 
370
		this.addListener(new PanelListenerAdapter() {
371
			public void onBodyResize(Panel panel, java.lang.String width, java.lang.String height) {
372
				setHeight("50%");
373
			}
374
		});
12 david 375
	}
376
 
377
	/**
378
	 * Méthode héritée de l'interface VueListable
379
	 * Sélectionne les observations  dans la liste suivant les identifiants donnés en paramètres
380
	 */
381
 
382
	public String[] getIdSelectionnees() {
383
 
384
		Record[] selection = this.getSelectionModel().getSelections();
385
		int taille = selection.length;
386
		String id_selection[] = new String[taille];
387
 
388
		for (int i = 0; i < selection.length; i++) {
389
 
390
			id_selection[i] = selection[i].getAsString("ordre_observation");
391
		}
392
 
393
		return id_selection;
394
	}
395
 
396
 
397
 
398
	/**
399
	 * Sélectionne des enregistrements donné
400
	 * @param sel un tableau d'enregistrement à selectionner
401
	 */
402
	public void selectionnerEnregistrements(Record[] sel) {
403
 
404
			getSelectionModel().clearSelections();
405
			getSelectionModel().selectRecords(sel);
406
 
407
	}
408
 
409
	/**
410
	 * Accesseur pour la toolbar de pagination
411
	 * @return la toolbar de pagination
412
	 */
413
 
59 david 414
	public BarrePaginationVue getToolBarVue()
12 david 415
	{
416
		return bt ;
417
	}
418
 
419
 
420
	/**
421
	 * Recherche l'élement actuellement affiché et affiche son message de chargement
422
	 */
423
	public void masquerChargement()
424
	{
425
			ExtElement masked = Ext.get(getId()) ;
426
 
52 david 427
 
12 david 428
			if (masked!=null) {
429
				masked.mask("Chargement") ;
430
			}
431
 
432
	}
433
 
434
	/**
435
	 * Recherche l'élement actuellement affiché et retire son message de chargement si l'était affiché
436
	 */
437
	public void demasquerChargement()
438
	{
155 aurelien 439
		ExtElement masked = Ext.get(getId()) ;
440
 
441
		if (masked!=null) {
12 david 442
 
155 aurelien 443
			if(masked.isMasked())
444
			{
445
				masked.unmask() ;
12 david 446
			}
155 aurelien 447
		}
12 david 448
	}
449
 
450
 
54 david 451
 
46 david 452
	/**
453
	 * Méthode héritée de l'interface rafraichissable
454
	 * @param nouvelleDonnees les nouvelles données
455
	 * @param repandreRafraichissement le booleen de notification du rafraichissement
456
	 */
457
 
12 david 458
 
46 david 459
 
460
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
461
 
462
//		 si l'on a reçu une liste d'observation
463
		if(nouvelleDonnees instanceof ListeObservation)
464
		{
465
 
466
				ListeObservation data = (ListeObservation) nouvelleDonnees ;
54 david 467
				Object[][] observationData = new Object[data.size()][7];
46 david 468
				int i = 0 ;
469
 
470
				if(data.size() == 0)
471
				{
472
					pageEncours = 0 ;
473
				}
474
 
54 david 475
				// on la parse et on récupère les informations qui nous interessent
46 david 476
				for (Iterator it = data.keySet().iterator(); it.hasNext();)
477
				{
478
 
479
					Observation obs=(Observation) data.get(it.next());
480
 
206 aurelien 481
					observationData[i][0] = obs.getTransmis();
482
					observationData[i][1] = obs.getNomSaisi();
483
					observationData[i][2] = obs.getNomRetenu();
484
 
485
					observationData[i][3] = fabriquerLieu(obs);
486
					observationData[i][4] = obs.getDate();
487
					observationData[i][5] = obs.getNumeroOrdre();
488
					observationData[i][6] = obs.getNumeroNomenclaturalSaisi();
46 david 489
 
490
					i++ ;
491
				}
492
 
493
				// creation du store qui les contient
494
				FieldDef defEtatObservation = new StringFieldDef("etat_observation");
495
				FieldDef defNomSaisiObservation = new StringFieldDef("nomSaisi_observation");
496
				FieldDef defNomRetenuObservation = new StringFieldDef("nomRetenu_observation");
497
				FieldDef defLieuObservation = new StringFieldDef("lieu_observation");
498
				FieldDef defDateObservation = new StringFieldDef("date_observation");
238 aurelien 499
				FieldDef defOrdreObservation = new IntegerFieldDef("ordre_observation");
46 david 500
 
54 david 501
				// Non affiches :
502
				FieldDef defNumeroNomenclaturalSaisiObservation = new StringFieldDef("numeroNomenclaturalSaisi_observation");
503
 
504
 
46 david 505
				// on associe le store
506
 
507
				FieldDef[] defTab = { defEtatObservation, defNomSaisiObservation, defNomRetenuObservation,
54 david 508
						defLieuObservation, defDateObservation, defOrdreObservation, defNumeroNomenclaturalSaisiObservation };
46 david 509
 
510
				RecordDef rd = new RecordDef(defTab);
511
 
512
				final MemoryProxy dataProxy = new MemoryProxy(observationData);
513
				final ArrayReader reader = new ArrayReader(rd);
514
 
515
				final Store observationStore = new Store(dataProxy, reader);
516
 
517
 
518
				st = observationStore ;
519
				st.load() ;
520
 
521
 
522
				// et on reconfigure et rafraichit la vue
523
				this.reconfigure(st, this.getColumnModel());
524
 
525
				demasquerChargement();
526
 
82 david 527
			    cacheListeObservation=data;
528
 
529
				observationMediateur.onRafraichissementListeObservations();
46 david 530
 
82 david 531
 
46 david 532
		}
533
 
534
 
535
		// Si on reçoit un tableau d'entiers
536
		// c'est un tableau d'un seul entier qui est le nombre d'observation correspondant aux critères
537
		if(nouvelleDonnees instanceof int[])
538
		{
539
			int[] pages = (int[])nouvelleDonnees ;
540
 
541
			// on calcule le nombre de pages nécessaires et on les met à jour dans le modèle
542
			pageMax  = calculerNbPages(pages[0]) ;
543
			nbElements = pages[0] ;
544
 
52 david 545
 
46 david 546
			// et on notifie de le mediateur du changement des valeurs
51 david 547
			changerPageMaxEtCourante(pageMax,pageEncours,taillePage,pages[0]) ;
46 david 548
 
54 david 549
			masquerChargement();
82 david 550
			observationMediateur.obtenirListeObservation(this);
46 david 551
		}
552
 
553
 
82 david 554
//		 si l'on a reçu une Observation
46 david 555
 
556
		if(nouvelleDonnees instanceof Observation) {
79 david 557
 
558
			Observation obs= (Observation) nouvelleDonnees;
559
			if (obs.getNumeroOrdre()==null) { // Nouvelle observation
52 david 560
			// On affiche la dernière page
561
 
562
			pageEncours = pageMax ;
54 david 563
			masquerChargement();
564
 
46 david 565
			observationMediateur.obtenirNombreObservation();
566
 
79 david 567
			}
568
			else { // Modification d'une observation
569
 
82 david 570
 
571
				masquerChargement();
572
 
94 jpm 573
				observationMediateur.obtenirNombreObservation();
82 david 574
 
79 david 575
			}
107 aurelien 576
		}
74 david 577
 
107 aurelien 578
		// Si on a effectué une suppression
579
		if(nouvelleDonnees instanceof String)
580
		{
581
			String str = (String)nouvelleDonnees ;
582
			observationMediateur.obtenirNombreObservation() ;
583
		}
584
 
46 david 585
	}
51 david 586
 
587
 
588
	// GESTION DE LA PAGINATION
46 david 589
 
590
 
82 david 591
	public ListeObservation getCacheListeObservation() {
592
		return cacheListeObservation;
593
	}
594
 
46 david 595
	/**
596
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page
597
	 * en cours
598
	 * @param nbElements le nombre d'élements total
599
	 * @return le nombre de pages
600
	 */
601
	public int calculerNbPages(int nbElements)
602
	{
603
		// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement
604
		// pour eviter qu'il arrondisse mal la division
605
		// nombre de pages = (nombre d'element / taille de la page) arrondie à l'entier superieur
606
 
607
		double nPage = (1.0*nbElements)/(1.0*taillePage) ;
608
		double nPageRound = Math.ceil(nPage) ;
609
		Double nPageInt = new Double(nPageRound) ;
610
 
611
		// on convertit en entier
612
		return nPageInt.intValue() ;
613
	}
614
 
615
 
616
	/**
617
	 * Recalcule la page en cours lors du changement du nombre d'élements
618
	 * @param nbElements le nombre d'élements total
619
	 * @return la nouvelle page encours
620
	 */
621
	public int calculerPageCourante(int nbElements)
622
	{
623
		// on calcule le nombre de page
624
		int nouvelNbPages = calculerNbPages(nbElements) ;
625
		// la nouvelle page en cours
626
		double nPageCourante = (1.0*pageEncours)/(1.0*pageMax) * (1.0*nouvelNbPages) ;
627
 
628
		// on arrondit au supérieur
629
		double nPageRound = Math.ceil(nPageCourante) ;
630
		Double nPageInt = new Double(nPageRound) ;
631
 
632
		// on convertit en entier
633
		return Math.abs(nPageInt.intValue()) ;
634
	}
635
 
636
 
637
	/**
638
	 * Appelle le modèle pour lui demander les données d'une page à afficher
639
	 * @param pageCourante le numéro de page à affciher
640
	 */
641
	public void changerNumeroPage(int pageCourante) {
642
 
643
 
644
 
645
		pageEncours = pageCourante ;
646
 
54 david 647
		masquerChargement();
648
 
46 david 649
		// On lance le chargerment des observations
650
		observationMediateur.obtenirNombreObservation();
651
 
652
		getToolBarVue().changerPageCourante(pageCourante);
653
 
654
	}
655
 
656
 
657
	/**
658
	 * Appelle le modèle pour qu'il change la taille de page utilisée
659
	 * @param nouvelleTaillePage la nouvelle taille de page
660
	 */
661
 
662
	public void changerTaillePage(int nouvelleTaillePage)
663
	{
664
 
665
		taillePage = nouvelleTaillePage ;
666
		pageEncours = calculerPageCourante(nbElements) ;
667
 
54 david 668
		masquerChargement();
669
 
61 jpm 670
		// 	On lance le chargement des observations
46 david 671
		observationMediateur.obtenirNombreObservation();
672
 
673
 
674
		// et on met à jour la taille de page dans les barres d'outils
675
		getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);
676
 
677
 
678
	}
679
 
680
 
51 david 681
	/**
682
	 * Met à jour les barre d'outils avec des nouvelles valeurs
683
	 * @param pageMax le nombre de pages
684
	 * @param pageEncours la page en cours
685
	 * @param taillePage la taille de page
686
	 * @param nbElement le nombre d'élements par page
687
	 */
688
	public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement)
689
	{
690
 
691
		int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
692
		getToolBarVue().rafraichir(pages, false) ;
693
 
694
	}
46 david 695
 
61 jpm 696
	/**
697
	 * Renvoie la taille de page en cours d'utilisation
698
	 * @return la taille de page
699
	 */
46 david 700
	public int getTaillePage() {
701
 
702
		return taillePage;
703
	}
61 jpm 704
 
705
	/**
706
	 * Renvoie le numéro de la page encours (attention on commence à 0)
707
	 * @return le numéro de la page en cours
708
	 */
46 david 709
	public int getPageEncours() {
710
 
711
		return pageEncours;
712
	}
713
 
250 aurelien 714
	public void afficherFiltres(String nLieu, String nDate, String nTaxon)
94 jpm 715
	{
716
 
717
		String titre = "Observations " ;
718
 
719
		if(!nLieu.equals(""))
720
		{
250 aurelien 721
			nLieu = nLieu.replaceAll(",", ", ");
94 jpm 722
			titre += "  -  Lieu : "+nLieu ;
723
 
724
		}
725
 
726
		if(!nDate .equals(""))
727
		{
250 aurelien 728
			nDate = nDate.replaceAll(",", ", ");
94 jpm 729
			titre += "  -  Date : "+nDate ;
730
		}
731
 
250 aurelien 732
		if(!nTaxon .equals(""))
733
		{
262 aurelien 734
			titre += "  -  Recherche : "+nTaxon ;
250 aurelien 735
		}
736
 
94 jpm 737
		this.setTitle(titre) ;
738
	}
46 david 739
 
104 jpm 740
	public void raz() {
741
 
742
 
743
		// creation du store qui les contient
744
 
745
		FieldDef defEtatObservation = new StringFieldDef("etat_observation");
746
		FieldDef defNomSaisiObservation = new StringFieldDef("nomSaisi_observation");
747
		FieldDef defNomRetenuObservation = new StringFieldDef("nomRetenu_observation");
748
		FieldDef defLieuObservation = new StringFieldDef("lieu_observation");
749
		FieldDef defDateObservation = new StringFieldDef("date_observation");
238 aurelien 750
		FieldDef defOrdreObservation = new IntegerFieldDef("ordre_observation");
104 jpm 751
 
752
		// Non affiches :
753
		FieldDef defNumeroNomenclaturalSaisiObservation = new StringFieldDef("numeroNomenclaturalSaisi_observation");
754
 
755
		FieldDef[] defTab = { defEtatObservation, defNomSaisiObservation, defNomRetenuObservation,
756
				defLieuObservation, defDateObservation, defOrdreObservation };
757
 
758
		RecordDef rd = new RecordDef(defTab);
759
		st = new Store(rd);
760
 
761
		// on associe le store
762
 
763
		this.setStore(st);
764
 
765
	}
133 aurelien 766
 
767
	public boolean verifierFormatDate(String date) {
768
 
769
		String regex = "[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}" ;
770
		if(date.matches(regex) && !date.equals("0000-00-00")) {
771
			return true ;
772
		}
773
		else {
774
			return false;
775
		}
776
	}
206 aurelien 777
 
778
	private String fabriquerLieu(Observation obs) {
779
 
216 aurelien 780
		String lieuModele = modeleLieu;
781
 
206 aurelien 782
		String commune = obs.getLocalite();
783
		String lieuDit = obs.getLieudit();
784
		String station = obs.getStation();
785
 
786
		String lieuCommuneFormate = "";
787
		String lieuDitFormate = "";
788
		String stationFormatee = "";
789
 
790
		if(commune != null && !commune.contains("000null") && !commune.trim().equals("")) {
791
			String	idLoc =obs.getIdentifiantLocalite().replaceAll(" ","/");
792
			if(idLoc != null && !idLoc.contains("000null") && !idLoc.trim().equals("")) {
104 jpm 793
 
206 aurelien 794
				idLoc = idLoc.replaceAll("%","");
795
				idLoc = idLoc.replaceAll("\"","");
796
				idLoc = idLoc.replace('\\',' ');
797
				idLoc = idLoc.trim();
798
				lieuCommuneFormate += idLoc+" - ";
799
			}
800
			lieuCommuneFormate += commune;
216 aurelien 801
			lieuModele = lieuModele.replaceAll("IDLOCCOMMUNE", lieuCommuneFormate);
206 aurelien 802
		} else {
803
 
216 aurelien 804
			lieuModele = lieuModele.replaceAll("IDLOCCOMMUNE,", lieuCommuneFormate);
206 aurelien 805
		}
806
 
807
		if(lieuDit != null && !lieuDit.contains("000null") && !lieuDit.trim().equals("")) {
808
			lieuDitFormate += lieuDit;
216 aurelien 809
			lieuModele = lieuModele.replaceAll("LIEUDIT", lieuDitFormate);
206 aurelien 810
		} else {
216 aurelien 811
			lieuModele = lieuModele.replaceAll("LIEUDIT,", lieuDitFormate);
206 aurelien 812
		}
813
 
814
		if(station != null && !station.contains("000null") && !station.trim().equals("")) {
815
			stationFormatee += station;
216 aurelien 816
			lieuModele = lieuModele.replaceAll("STATION", stationFormatee);
206 aurelien 817
		} else {
221 aurelien 818
			lieuModele = lieuModele.replaceAll("STATION", stationFormatee);
206 aurelien 819
		}
820
 
250 aurelien 821
		lieuModele = lieuModele.trim();
822
		lieuModele = lieuModele.replaceAll(",$","");
823
		lieuModele = lieuModele.replaceAll(",^$",", ");
824
 
216 aurelien 825
		return lieuModele;
206 aurelien 826
	}
250 aurelien 827
 
828
	public boolean getTailleInitialisee() {
829
		return tailleInitialisee ;
830
	}
831
 
832
	public void setTailleInitialisee() {
833
		tailleInitialisee = true;
834
	}
206 aurelien 835
 
12 david 836
}