Subversion Repositories eFlore/Applications.cel

Rev

Rev 275 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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