Subversion Repositories eFlore/Applications.cel

Rev

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

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