Subversion Repositories eFlore/Applications.cel

Rev

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