Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2653 Rev 2726
1
package org.tela_botanica.client.vues.observation;
1
package org.tela_botanica.client.vues.observation;
2
 
2
 
3
 
3
 
4
import java.util.HashMap;
4
import java.util.HashMap;
5
import java.util.Iterator;
5
import java.util.Iterator;
6
 
6
 
7
import org.tela_botanica.client.modeles.objets.ListeObservation;
7
import org.tela_botanica.client.modeles.objets.ListeObservation;
8
import org.tela_botanica.client.modeles.objets.Observation;
8
import org.tela_botanica.client.modeles.objets.Observation;
9
import org.tela_botanica.client.modeles.objets.Ontologies;
9
import org.tela_botanica.client.modeles.objets.Ontologies;
10
import org.tela_botanica.client.observation.ObservationMediateur;
10
import org.tela_botanica.client.observation.ObservationMediateur;
11
import org.tela_botanica.client.util.Util;
11
import org.tela_botanica.client.util.Util;
12
import org.tela_botanica.client.vues.BarrePaginationVue;
12
import org.tela_botanica.client.vues.BarrePaginationVue;
13
import org.tela_botanica.client.i18n.Msg;
13
import org.tela_botanica.client.i18n.Msg;
14
import org.tela_botanica.client.interfaces.ListePaginable;
14
import org.tela_botanica.client.interfaces.ListePaginable;
15
import org.tela_botanica.client.interfaces.Rafraichissable;
15
import org.tela_botanica.client.interfaces.Rafraichissable;
16
import org.tela_botanica.client.interfaces.VueListable;
16
import org.tela_botanica.client.interfaces.VueListable;
17
 
17
 
18
import com.google.gwt.user.client.Event;
18
import com.google.gwt.user.client.Event;
19
import com.google.gwt.user.client.Timer;
19
import com.google.gwt.user.client.Timer;
20
import com.google.gwt.user.client.Window;
20
import com.google.gwt.user.client.Window;
21
import com.gwtext.client.core.EventCallback;
21
import com.gwtext.client.core.EventCallback;
22
import com.gwtext.client.core.EventObject;
22
import com.gwtext.client.core.EventObject;
23
import com.gwtext.client.core.Ext;
23
import com.gwtext.client.core.Ext;
24
import com.gwtext.client.core.ExtElement;
24
import com.gwtext.client.core.ExtElement;
25
import com.gwtext.client.core.SortDir;
25
import com.gwtext.client.core.SortDir;
26
import com.gwtext.client.data.ArrayReader;
26
import com.gwtext.client.data.ArrayReader;
27
import com.gwtext.client.data.FieldDef;
27
import com.gwtext.client.data.FieldDef;
28
import com.gwtext.client.data.IntegerFieldDef;
28
import com.gwtext.client.data.IntegerFieldDef;
29
import com.gwtext.client.data.MemoryProxy;
29
import com.gwtext.client.data.MemoryProxy;
30
import com.gwtext.client.data.Record;
30
import com.gwtext.client.data.Record;
31
import com.gwtext.client.data.RecordDef;
31
import com.gwtext.client.data.RecordDef;
32
import com.gwtext.client.data.SortState;
32
import com.gwtext.client.data.SortState;
33
import com.gwtext.client.data.Store;
33
import com.gwtext.client.data.Store;
34
import com.gwtext.client.data.StringFieldDef;
34
import com.gwtext.client.data.StringFieldDef;
35
import com.gwtext.client.dd.DragData;
35
import com.gwtext.client.dd.DragData;
36
import com.gwtext.client.dd.DragDropConfig;
36
import com.gwtext.client.dd.DragDropConfig;
37
import com.gwtext.client.dd.DragSource;
37
import com.gwtext.client.dd.DragSource;
38
import com.gwtext.client.dd.DropTarget;
38
import com.gwtext.client.dd.DropTarget;
39
import com.gwtext.client.dd.DropTargetConfig;
39
import com.gwtext.client.dd.DropTargetConfig;
40
import com.gwtext.client.widgets.Button;
40
import com.gwtext.client.widgets.Button;
41
import com.gwtext.client.widgets.Component;
41
import com.gwtext.client.widgets.Component;
42
import com.gwtext.client.widgets.Panel;
42
import com.gwtext.client.widgets.Panel;
43
import com.gwtext.client.widgets.Tool;
43
import com.gwtext.client.widgets.Tool;
44
import com.gwtext.client.widgets.Toolbar;
44
import com.gwtext.client.widgets.Toolbar;
45
import com.gwtext.client.widgets.ToolbarButton;
45
import com.gwtext.client.widgets.ToolbarButton;
46
import com.gwtext.client.widgets.ToolbarTextItem;
46
import com.gwtext.client.widgets.ToolbarTextItem;
47
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
47
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
48
import com.gwtext.client.widgets.event.PanelListenerAdapter;
48
import com.gwtext.client.widgets.event.PanelListenerAdapter;
49
import com.gwtext.client.widgets.grid.CellMetadata;
49
import com.gwtext.client.widgets.grid.CellMetadata;
50
import com.gwtext.client.widgets.grid.ColumnConfig;
50
import com.gwtext.client.widgets.grid.ColumnConfig;
51
import com.gwtext.client.widgets.grid.ColumnModel;
51
import com.gwtext.client.widgets.grid.ColumnModel;
52
import com.gwtext.client.widgets.grid.GridPanel;
52
import com.gwtext.client.widgets.grid.GridPanel;
53
import com.gwtext.client.widgets.grid.Renderer;
53
import com.gwtext.client.widgets.grid.Renderer;
54
import com.gwtext.client.widgets.grid.event.GridHeaderListenerAdapter;
54
import com.gwtext.client.widgets.grid.event.GridHeaderListenerAdapter;
55
import com.gwtext.client.widgets.grid.event.GridListenerAdapter;
55
import com.gwtext.client.widgets.grid.event.GridListenerAdapter;
56
import com.gwtext.client.widgets.grid.event.GridRowListenerAdapter;
56
import com.gwtext.client.widgets.grid.event.GridRowListenerAdapter;
57
import com.gwtext.client.widgets.tree.TreeDragData;
57
import com.gwtext.client.widgets.tree.TreeDragData;
58
import com.gwtext.client.widgets.tree.TreeNode;
58
import com.gwtext.client.widgets.tree.TreeNode;
59
 
59
 
60
/**
60
/**
61
 * Liste d'observation composée de ligne d'observation
61
 * Liste d'observation composée de ligne d'observation
62
 * l'interface rafraichissable et l'interface vueListable
62
 * l'interface rafraichissable et l'interface vueListable
63
 * 
63
 * 
64
 * @author David Delon 2008
64
 * @author David Delon 2008
65
 */
65
 */
66
public class ListeObservationVue extends GridPanel implements Rafraichissable,
66
public class ListeObservationVue extends GridPanel implements Rafraichissable,
67
		VueListable, ListePaginable {
67
		VueListable, ListePaginable {
68
 
68
 
69
	/**
69
	/**
70
	 * Le médiateur associé à la vue
70
	 * Le médiateur associé à la vue
71
	 */
71
	 */
72
	private ObservationMediateur	observationMediateur		= null;
72
	private ObservationMediateur	observationMediateur		= null;
73
 
73
 
74
	/**
74
	/**
75
	 * Config de colonne
75
	 * Config de colonne
76
	 */
76
	 */
77
	private ColumnConfig	etatObservation;
77
	private ColumnConfig	etatObservation;
78
	private ColumnConfig	referentielTaxoObservation;
78
	private ColumnConfig	referentielTaxoObservation;
79
	private ColumnConfig	nomSaisiObservation;
79
	private ColumnConfig	nomSaisiObservation;
80
	private ColumnConfig	nomRetenuObservation;
80
	private ColumnConfig	nomRetenuObservation;
81
	private ColumnConfig	familleObservation;
81
	private ColumnConfig	familleObservation;
82
	private ColumnConfig	lieuObservation;
82
	private ColumnConfig	lieuObservation;
83
	private ColumnConfig	altitudeObservation;
83
	private ColumnConfig	altitudeObservation;
84
	private ColumnConfig	dateObservation;
84
	private ColumnConfig	dateObservation;
85
	private ColumnConfig	ordreObservation;
85
	private ColumnConfig	ordreObservation;
86
	private ColumnConfig 	abondanceObservation;
86
	private ColumnConfig 	abondanceObservation;
87
	private ColumnConfig 	certitudeObservation;
87
	private ColumnConfig 	certitudeObservation;
88
	private ColumnModel		modeleColonnes;
88
	private ColumnModel		modeleColonnes;
89
 
89
 
90
	/**
90
	/**
91
	 * Store qui contient les données à afficher
91
	 * Store qui contient les données à afficher
92
	 */
92
	 */
93
	private Store			st				= null;
93
	private Store			st				= null;
94
	/**
94
	/**
95
	 * Barre de pagination
95
	 * Barre de pagination
96
	 */
96
	 */
97
	private BarrePaginationVue bt = null ;
97
	private BarrePaginationVue bt = null ;
98
	/**
98
	/**
99
	 * Numéro de page en cours
99
	 * Numéro de page en cours
100
	 */
100
	 */
101
	private int pageEncours = 0 ;
101
	private int pageEncours = 0 ;
102
	/**
102
	/**
103
	 * Nombre de pages totales
103
	 * Nombre de pages totales
104
	 */
104
	 */
105
	private int pageMax = 1 ;
105
	private int pageMax = 1 ;
106
	/**
106
	/**
107
	 * Taille de page (par défaut 20)
107
	 * Taille de page (par défaut 20)
108
	 */
108
	 */
109
	private int taillePage = 20 ;
109
	private int taillePage = 20 ;
110
	/**
110
	/**
111
	 * Nombre d'éléments total correspondant à la requete
111
	 * Nombre d'éléments total correspondant à la requete
112
	 */
112
	 */
113
	private int nbElements = 0 ;
113
	private int nbElements = 0 ;
114
	
114
	
115
	private ListeObservation cacheListeObservation = null;
115
	private ListeObservation cacheListeObservation = null;
116
	
116
	
117
	private Tool exporterObservations = null ;
117
	private Tool exporterObservations = null ;
118
	
118
	
119
	private final int KEY_ENTER = 13;
119
	private final int KEY_ENTER = 13;
120
	
120
	
121
	private String modeleLieu = "IDLOCLOCALITE, LIEUDIT, STATION";
121
	private String modeleLieu = "IDLOCLOCALITE, LIEUDIT, STATION";
122
 
122
 
123
 
123
 
124
	private boolean tailleInitialisee = false ;
124
	private boolean tailleInitialisee = false ;
125
 
125
 
126
	private ColumnConfig phenologieObservation;
126
	private ColumnConfig phenologieObservation;
127
 
127
 
128
	private SortDir directionTri;
128
	private SortDir directionTri;
129
 
129
 
130
	private String champTri;
130
	private String champTri;
131
	
131
	
132
	private boolean triActif;
132
	private boolean triActif;
133
	
133
	
134
	/**
134
	/**
135
	 * Constructeur sans arguments (privé car ne doit pas être utilisé)
135
	 * Constructeur sans arguments (privé car ne doit pas être utilisé)
136
	 */
136
	 */
137
	@SuppressWarnings("unused")
137
	@SuppressWarnings("unused")
138
	private ListeObservationVue()
138
	private ListeObservationVue()
139
	{
139
	{
140
		super() ;
140
		super() ;
141
	}
141
	}
142
	
142
	
143
	/**
143
	/**
144
	 * Constructeur avec argument
144
	 * Constructeur avec argument
145
	 * @param im le médiateur à associer
145
	 * @param im le médiateur à associer
146
	 */
146
	 */
147
	public ListeObservationVue(ObservationMediateur obs) {		
147
	public ListeObservationVue(ObservationMediateur obs) {		
148
		
148
		
149
		this.observationMediateur = obs;
149
		this.observationMediateur = obs;
150
		
150
		
151
		setId("x-list-obs");
151
		setId("x-list-obs");
152
		
152
		
153
		setHeader(true);  
153
		setHeader(true);  
154
		// on place la barre de pagination
154
		// on place la barre de pagination
155
		bt = new BarrePaginationVue(this);		
155
		bt = new BarrePaginationVue(this);		
156
		bt.setLabelElement(Msg.get("observations"));
156
		bt.setLabelElement(Msg.get("observations"));
157
		bt.setTaillePageParDefaut(20);
157
		bt.setTaillePageParDefaut(20);
158
		bt.setIntervallesPages(new String[] {"1000","400","200","100","50","20","10"}) ;
158
		bt.setIntervallesPages(new String[] {"1000","400","200","100","50","20","10"}) ;
159
		
159
		
160
		Toolbar barreActions = new Toolbar();
160
		Toolbar barreActions = new Toolbar();
161
		ToolbarButton publier = new ToolbarButton(Msg.Get("rendre-publiques"));
161
		ToolbarButton publier = new ToolbarButton(Msg.Get("rendre-publiques"));
162
		publier.addListener(new ButtonListenerAdapter() {
162
		publier.addListener(new ButtonListenerAdapter() {
163
			@Override
163
			@Override
164
			public void onClick(Button b, EventObject e) {
164
			public void onClick(Button b, EventObject e) {
165
				observationMediateur.transmettreObservations(true);
165
				observationMediateur.transmettreObservations(true);
166
			}
166
			}
167
		});
167
		});
168
		
168
		
169
		ToolbarButton privatiser = new ToolbarButton(Msg.Get("rendre-privees"));
169
		ToolbarButton privatiser = new ToolbarButton(Msg.Get("rendre-privees"));
170
		privatiser.addListener(new ButtonListenerAdapter() {
170
		privatiser.addListener(new ButtonListenerAdapter() {
171
			@Override
171
			@Override
172
			public void onClick(Button b, EventObject e) {
172
			public void onClick(Button b, EventObject e) {
173
				observationMediateur.transmettreObservations(false);
173
				observationMediateur.transmettreObservations(false);
174
			}
174
			}
175
		});
175
		});
176
		
176
		
177
		ToolbarButton supprimer = new ToolbarButton(Msg.get("supprimer"));
177
		ToolbarButton supprimer = new ToolbarButton(Msg.get("supprimer"));
178
		supprimer.addListener(new ButtonListenerAdapter() {
178
		supprimer.addListener(new ButtonListenerAdapter() {
179
			@Override
179
			@Override
180
			public void onClick(Button b, EventObject e) {
180
			public void onClick(Button b, EventObject e) {
181
				observationMediateur.supprimerObservations();
181
				observationMediateur.supprimerObservations();
182
			}
182
			}
183
		});
183
		});
184
		
184
		
185
		ToolbarButton importer = new ToolbarButton(Msg.get("importer"));
185
		ToolbarButton importer = new ToolbarButton(Msg.get("importer"));
186
		importer.addListener(new ButtonListenerAdapter() {
186
		importer.addListener(new ButtonListenerAdapter() {
187
			@Override
187
			@Override
188
			public void onClick(Button b, EventObject e) {
188
			public void onClick(Button b, EventObject e) {
189
				observationMediateur.afficherFormulaireImportObservation();
189
				observationMediateur.afficherFormulaireImportObservation();
190
			}
190
			}
191
		});
191
		});
192
		
192
		
193
		ToolbarTextItem exporter = new ToolbarTextItem("<a href=\"#\" id=\"lienExport\"> " + Msg.get("exporter") + " </a>");
193
		ToolbarTextItem exporter = new ToolbarTextItem("<a href=\"#\" id=\"lienExport\"> " + Msg.get("exporter") + " </a>");
194
		ToolbarTextItem exporterFull = new ToolbarTextItem("<a href=\"#\" id=\"lienExportFull\" title=\"" + Msg.get("export-nc-ce-bf-bv") + "\"> " + Msg.get("export-etendu") + " </a>");
194
		ToolbarTextItem exporterFull = new ToolbarTextItem("<a href=\"#\" id=\"lienExportFull\" title=\"" + Msg.get("export-nc-ce-bf-bv") + "\"> " + Msg.get("export-etendu") + " </a>");
195
 		ToolbarTextItem exporterPDF = new ToolbarTextItem("<a href=\"#\" id=\"lienExportPDF\" title=\"" + Msg.get("etiquettes-pdf") + "\"> " + Msg.get("etiquettes") + " </a>");
195
 		ToolbarTextItem exporterPDF = new ToolbarTextItem("<a href=\"#\" id=\"lienExportPDF\" title=\"" + Msg.get("etiquettes-pdf") + "\"> " + Msg.get("etiquettes") + " </a>");
196
		
196
		
197
		barreActions.addButton(publier);
197
		barreActions.addButton(publier);
198
		barreActions.addButton(privatiser);
198
		barreActions.addButton(privatiser);
199
		barreActions.addSpacer();
199
		barreActions.addSpacer();
200
		barreActions.addButton(supprimer);
200
		barreActions.addButton(supprimer);
201
		barreActions.addSpacer();
201
		barreActions.addSpacer();
202
		barreActions.addButton(importer);
202
		barreActions.addButton(importer);
203
		barreActions.addSpacer();
203
		barreActions.addSpacer();
204
		barreActions.addItem(exporter);
204
		barreActions.addItem(exporter);
205
		barreActions.addItem(exporterFull);
205
		barreActions.addItem(exporterFull);
206
		barreActions.addItem(exporterPDF);
206
		barreActions.addItem(exporterPDF);
207
		
207
		
208
		this.setTopToolbar(barreActions) ;
208
		this.setTopToolbar(barreActions) ;
209
		this.setBottomToolbar(bt);
209
		this.setBottomToolbar(bt);
210
		
210
		
211
		this.setCollapsible(true);
211
		this.setCollapsible(true);
212
		this.setTitleCollapse(true);
212
		this.setTitleCollapse(true);
213
 
213
 
214
		this.setTitle(Msg.get("observations"));
214
		this.setTitle(Msg.get("observations"));
215
		
215
		
216
		modeleColonnes = new ColumnModel(getConfigColonnes());
216
		modeleColonnes = new ColumnModel(getConfigColonnes());
217
		
217
		
218
		this.setColumnModel(modeleColonnes);
218
		this.setColumnModel(modeleColonnes);
219
		
219
		
220
		this.setAutoScroll(true);
220
		this.setAutoScroll(true);
221
		this.setEnableColumnResize(true);
221
		this.setEnableColumnResize(true);
222
		
222
		
223
		// creation du store		
223
		// creation du store		
224
		RecordDef rd = new RecordDef(getDefinitionChamps());
224
		RecordDef rd = new RecordDef(getDefinitionChamps());
225
		st = new Store(rd);
225
		st = new Store(rd);
226
 
226
 
227
		// on associe le store
227
		// on associe le store
228
		
228
		
229
		this.setStore(st);
229
		this.setStore(st);
230
		this.getView().setAutoFill(true);
230
		this.getView().setAutoFill(true);
231
		this.getView().setForceFit(true) ;
231
		this.getView().setForceFit(true) ;
232
				
232
				
233
		// on crée un masque de chargement qui s'affichera lors des mises à jour
233
		// on crée un masque de chargement qui s'affichera lors des mises à jour
234
		this.setLoadMask(Msg.get("chargement"));
234
		this.setLoadMask(Msg.get("chargement"));
235
	
235
	
236
		// on ajoute les listeners
236
		// on ajoute les listeners
237
		ajouterListeners();
237
		ajouterListeners();
238
		
238
		
239
		configDragAndDrop();
239
		configDragAndDrop();
240
 
240
 
241
	}
241
	}
242
	
242
	
243
	private ColumnConfig[] getConfigColonnes() {
243
	private ColumnConfig[] getConfigColonnes() {
244
		// on construit le modèle de colonnes
244
		// on construit le modèle de colonnes
245
		// Le store suivant est ensuite remplacé par le store contenant les données obtenus depuis le serveur (cf rafraichir) 
245
		// Le store suivant est ensuite remplacé par le store contenant les données obtenus depuis le serveur (cf rafraichir) 
246
		Renderer colRend = new Renderer() {
246
		Renderer colRend = new Renderer() {
247
 
247
 
248
			@Override
248
			@Override
249
			public String render(Object value, CellMetadata cellMetadata,
249
			public String render(Object value, CellMetadata cellMetadata,
250
					Record record, int rowIndex, int colNum, Store store) {
250
					Record record, int rowIndex, int colNum, Store store) {
251
				
251
				
252
				String valeur = "";
252
				String valeur = "";
253
				if(value != null && !value.equals("null") && !value.equals("000null") && !value.equals("0000-00-00 00:00:00")) {			
253
				if(value != null && !value.equals("null") && !value.equals("000null") && !value.equals("0000-00-00 00:00:00")) {			
254
					valeur = value.toString() ;
254
					valeur = value.toString() ;
255
				}
255
				}
256
				return valeur;
256
				return valeur;
257
			}
257
			}
258
		} ;
258
		} ;
259
		
259
		
260
		Renderer dateRend = new Renderer() {
260
		Renderer dateRend = new Renderer() {
261
 
261
 
262
			@Override
262
			@Override
263
			public String render(Object value, CellMetadata cellMetadata,
263
			public String render(Object value, CellMetadata cellMetadata,
264
					Record record, int rowIndex, int colNum, Store store) {
264
					Record record, int rowIndex, int colNum, Store store) {
265
				
265
				
266
				if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) {
266
				if(value == null || value.equals("null") || value.equals("000null") || value.equals("0000-00-00 00:00:00")) {
267
				
267
				
268
					return "" ;
268
					return "" ;
269
				}	
269
				}	
270
				else
270
				else
271
				{
271
				{
272
					String dateEntiere = value.toString() ;
272
					String dateEntiere = value.toString() ;
273
					String[] dateEtHeure = dateEntiere.split(" ", 2);
273
					String[] dateEtHeure = dateEntiere.split(" ", 2);
274
					if(verifierFormatDate(dateEtHeure[0])) {
274
					if(verifierFormatDate(dateEtHeure[0])) {
275
						String[] dateFormateeTab = dateEtHeure[0].split("-",3);
275
						String[] dateFormateeTab = dateEtHeure[0].split("-",3);
276
						return dateFormateeTab[2]+"/"+dateFormateeTab[1]+"/"+dateFormateeTab[0] ;
276
						return dateFormateeTab[2]+"/"+dateFormateeTab[1]+"/"+dateFormateeTab[0] ;
277
					}
277
					}
278
				}
278
				}
279
				
279
				
280
				return value.toString() ;
280
				return value.toString() ;
281
			}
281
			}
282
			
282
			
283
		} ;
283
		} ;
284
		
284
		
285
		etatObservation = new ColumnConfig(Msg.get("transmis"), "etat_observation", 20, true, new Renderer() {
285
		etatObservation = new ColumnConfig(Msg.get("transmis"), "etat_observation", 20, true, new Renderer() {
286
 
286
 
287
			@Override
287
			@Override
288
			public String render(Object value, CellMetadata cellMetadata,
288
			public String render(Object value, CellMetadata cellMetadata,
289
					Record record, int rowIndex, int colNum, Store store) {
289
					Record record, int rowIndex, int colNum, Store store) {
290
				if(value.equals("1"))
290
				if(value.equals("1"))
291
				{
291
				{
292
					return "<img src=\"tela.png\"/></img>" ;
292
					return "<img src=\"tela.png\"/></img>" ;
293
				}
293
				}
294
				else
294
				else
295
				{
295
				{
296
					return "" ;
296
					return "" ;
297
				}
297
				}
298
			}
298
			}
299
			
299
			
300
		});		
300
		});		
301
		
301
		
302
		referentielTaxoObservation = new ColumnConfig(Msg.get("referentiel"), "referentiel_taxo_observation", 15, true, colRend);
302
		referentielTaxoObservation = new ColumnConfig(Msg.get("referentiel"), "referentiel_taxo_observation", 15, true, colRend);
303
		nomSaisiObservation = new ColumnConfig(Msg.get("nom-saisi"), "nomSaisi_observation", 130, true, colRend);
303
		nomSaisiObservation = new ColumnConfig(Msg.get("nom-saisi"), "nomSaisi_observation", 130, true, colRend);
304
		nomRetenuObservation = new ColumnConfig(Msg.get("nom-retenu"), "nomRetenu_observation", 130, true, colRend);
304
		nomRetenuObservation = new ColumnConfig(Msg.get("nom-retenu"), "nomRetenu_observation", 130, true, colRend);
305
		familleObservation = new ColumnConfig(Msg.get("famille"), "famille_observation", 50, true, colRend);
305
		familleObservation = new ColumnConfig(Msg.get("famille"), "famille_observation", 50, true, colRend);
306
		lieuObservation = new ColumnConfig(Msg.get("lieu"), "lieu_observation", 130, true, colRend);
306
		lieuObservation = new ColumnConfig(Msg.get("lieu"), "lieu_observation", 130, true, colRend);
307
		altitudeObservation = new ColumnConfig(Msg.Get("altitude-court"), "altitude_observation", 10, true, colRend);
307
		altitudeObservation = new ColumnConfig(Msg.Get("altitude-court"), "altitude_observation", 10, true, colRend);
308
		dateObservation = new ColumnConfig(Msg.get("date"), "date_observation", 70, true, dateRend);
308
		dateObservation = new ColumnConfig(Msg.get("date"), "date_observation", 70, true, dateRend);
309
		abondanceObservation = new ColumnConfig(Msg.get("abondance"), "abondance", 50, true, colRend);
309
		abondanceObservation = new ColumnConfig(Msg.get("abondance"), "abondance", 50, true, colRend);
310
		certitudeObservation = new ColumnConfig(Msg.get("identification"), "certitude", 50, true, new Renderer() {
310
		certitudeObservation = new ColumnConfig(Msg.get("identification"), "certitude", 50, true, new Renderer() {
311
			@Override
311
			@Override
312
			public String render(Object value, CellMetadata cellMetadata,
312
			public String render(Object value, CellMetadata cellMetadata,
313
					Record record, int rowIndex, int colNum, Store store) {
313
					Record record, int rowIndex, int colNum, Store store) {
314
				return Ontologies.getCorrespondanceCertitude(record.getAsString("certitude"));
314
				return Ontologies.getCorrespondanceCertitude(record.getAsString("certitude"));
315
			}
315
			}
316
			
316
			
317
		});
317
		});
318
		phenologieObservation = new ColumnConfig(Msg.get("phenologie"), "phenologie", 40, true, colRend);	
318
		phenologieObservation = new ColumnConfig(Msg.get("phenologie"), "phenologie", 40, true, colRend);	
319
		ordreObservation = new ColumnConfig(Msg.get("ordre"), "ordre_observation", 70, true, colRend);		
319
		ordreObservation = new ColumnConfig(Msg.get("ordre"), "ordre_observation", 70, true, colRend);		
320
		ColumnConfig[] cm = {etatObservation, referentielTaxoObservation, 
320
		ColumnConfig[] cm = {etatObservation, referentielTaxoObservation, 
321
							 nomSaisiObservation, certitudeObservation, 
321
							 nomSaisiObservation, certitudeObservation, 
322
							 nomRetenuObservation, familleObservation,
322
							 nomRetenuObservation, familleObservation,
323
							 abondanceObservation, phenologieObservation,
323
							 abondanceObservation, phenologieObservation,
324
							 lieuObservation, altitudeObservation,
324
							 lieuObservation, altitudeObservation,
325
							 dateObservation, ordreObservation};
325
							 dateObservation, ordreObservation};
326
	
326
	
327
		return cm;
327
		return cm;
328
	}
328
	}
329
 
329
 
330
 
330
 
331
	/**
331
	/**
332
	 * Ajoute les listeners pour la gestion des évènements
332
	 * Ajoute les listeners pour la gestion des évènements
333
	 */
333
	 */
334
	private void ajouterListeners() {
334
	private void ajouterListeners() {
335
			
335
			
336
		this.addGridHeaderListener(new GridHeaderListenerAdapter() {		
336
		this.addGridHeaderListener(new GridHeaderListenerAdapter() {		
337
			@Override
337
			@Override
338
			public void onHeaderClick(GridPanel grid, int colIndex, EventObject e) {
338
			public void onHeaderClick(GridPanel grid, int colIndex, EventObject e) {
339
				triActif = true;
339
				triActif = true;
340
				Timer t = new Timer() {
340
				Timer t = new Timer() {
341
					
341
					
342
					@Override
342
					@Override
343
					public void run() {
343
					public void run() {
344
						enregistrerEtatTri();
344
						enregistrerEtatTri();
345
						observationMediateur.obtenirListeObservation();
345
						observationMediateur.obtenirListeObservation();
346
					}
346
					}
347
				};
347
				};
-
 
348
				// Le changement de tri n'est pas immédiat et si on recharge le liste tout de suite 
-
 
349
				// on a l'ancien tri et pas le nouveau (200 millisecondes suffisent et ne se voient pas)
-
 
350
				// #mondeDeMerde
348
				t.schedule(200);
351
				t.schedule(200);
349
			}
352
			}
350
		});
353
		});
351
		
354
		
352
		this.addGridRowListener(new GridRowListenerAdapter() {
355
		this.addGridRowListener(new GridRowListenerAdapter() {
353
			
356
			
354
			// gestion du clic sur une ligne
357
			// gestion du clic sur une ligne
355
			@Override
358
			@Override
356
			public void onRowClick(GridPanel grid, int rowIndex,
359
			public void onRowClick(GridPanel grid, int rowIndex,
357
					EventObject e) {
360
					EventObject e) {
358
				// on notifie le médiateur et on lui passe le numéro de ligne
361
				// on notifie le médiateur et on lui passe le numéro de ligne
359
				
362
				
360
			
363
			
361
				Record rd = st.getAt(rowIndex);
364
				Record rd = st.getAt(rowIndex);
362
				
365
				
363
				String ordreObservation = rd.getAsString("ordre_observation") ;
366
				String ordreObservation = rd.getAsString("ordre_observation") ;
364
				observationMediateur.onClicListeObservation(rowIndex,ordreObservation);
367
				observationMediateur.onClicListeObservation(rowIndex,ordreObservation);
365
				
368
				
366
			}
369
			}
367
 
370
 
368
			// gestion du clic droit
371
			// gestion du clic droit
369
			@Override
372
			@Override
370
			public void onRowContextMenu(GridPanel grid, int rowIndex,
373
			public void onRowContextMenu(GridPanel grid, int rowIndex,
371
					EventObject e) {
374
					EventObject e) {
372
				// on stoppe l'évenement pour empecher le navigateur d'afficher son propre menu
375
				// on stoppe l'évenement pour empecher le navigateur d'afficher son propre menu
373
				e.stopEvent() ;
376
				e.stopEvent() ;
374
				// on notifie le médiateur en lui passant l'évenement
377
				// on notifie le médiateur en lui passant l'évenement
375
				observationMediateur.montrerContextMenu(e);
378
				observationMediateur.montrerContextMenu(e);
376
			}
379
			}
377
 
380
 
378
			// gestion du double clic
381
			// gestion du double clic
379
			@Override
382
			@Override
380
			public void onRowDblClick(GridPanel grid, int rowIndex,
383
			public void onRowDblClick(GridPanel grid, int rowIndex,
381
					EventObject e) {
384
					EventObject e) {
382
				// on notifie le médiateur en lui passant le numéro de ligne
385
				// on notifie le médiateur en lui passant le numéro de ligne
383
				observationMediateur.doubleClicListeObservation(rowIndex);
386
				observationMediateur.doubleClicListeObservation(rowIndex);
384
			}
387
			}
385
			
388
			
386
		});
389
		});
387
		
390
		
388
		this.addGridListener(new GridListenerAdapter() {
391
		this.addGridListener(new GridListenerAdapter() {
389
			@Override
392
			@Override
390
			public void onKeyPress(EventObject e) {
393
			public void onKeyPress(EventObject e) {
391
				if(e.getKey() == KEY_ENTER) {
394
				if(e.getKey() == KEY_ENTER) {
392
					Record rd = getSelectionModel().getSelected();
395
					Record rd = getSelectionModel().getSelected();
393
					int rowIndex = st.indexOf(rd);
396
					int rowIndex = st.indexOf(rd);
394
					String ordreObservation = rd.getAsString("ordre_observation") ;
397
					String ordreObservation = rd.getAsString("ordre_observation") ;
395
					observationMediateur.onClicListeObservation(rowIndex, ordreObservation);
398
					observationMediateur.onClicListeObservation(rowIndex, ordreObservation);
396
				}
399
				}
397
			}
400
			}
398
		});
401
		});
399
		
402
		
400
		this.addListener(new PanelListenerAdapter() {
403
		this.addListener(new PanelListenerAdapter() {
401
			@Override
404
			@Override
402
			public void onRender(Component c) {
405
			public void onRender(Component c) {
403
				
406
				
404
				ExtElement lienExport = Ext.get("lienExport") ;
407
				ExtElement lienExport = Ext.get("lienExport") ;
405
				lienExport.addListener("click", new EventCallback() {
408
				lienExport.addListener("click", new EventCallback() {
406
					@Override
409
					@Override
407
					public void execute(EventObject e) {
410
					public void execute(EventObject e) {
408
						observationMediateur.exporterObservations("xls", "standard");
411
						observationMediateur.exporterObservations("xls", "standard");
409
					}
412
					}
410
				});
413
				});
411
 
414
 
412
				ExtElement lienExportFull = Ext.get("lienExportFull") ;
415
				ExtElement lienExportFull = Ext.get("lienExportFull") ;
413
				lienExportFull.addListener("click", new EventCallback() {
416
				lienExportFull.addListener("click", new EventCallback() {
414
					@Override
417
					@Override
415
					public void execute(EventObject e) {
418
					public void execute(EventObject e) {
416
						observationMediateur.exporterObservations("xls", "standard,avance,etendu,baseflor");
419
						observationMediateur.exporterObservations("xls", "standard,avance,etendu,baseflor");
417
					}
420
					}
418
				});
421
				});
419
 
422
 
420
				ExtElement lienExportPDF = Ext.get("lienExportPDF") ;
423
				ExtElement lienExportPDF = Ext.get("lienExportPDF") ;
421
				lienExportPDF.addListener("click", new EventCallback() {
424
				lienExportPDF.addListener("click", new EventCallback() {
422
					@Override
425
					@Override
423
					public void execute(EventObject e) {
426
					public void execute(EventObject e) {
424
						observationMediateur.exporterObservationsPDF();
427
						observationMediateur.exporterObservationsPDF();
425
					}
428
					}
426
				});
429
				});
427
			}
430
			}
428
		});
431
		});
429
		
432
		
430
		this.addListener(new PanelListenerAdapter() {
433
		this.addListener(new PanelListenerAdapter() {
431
			@Override
434
			@Override
432
			public void onBodyResize(Panel panel, java.lang.String width, java.lang.String height) {
435
			public void onBodyResize(Panel panel, java.lang.String width, java.lang.String height) {
433
				doLayout();
436
				doLayout();
434
			}
437
			}
435
		});
438
		});
436
	}
439
	}
437
	
440
	
438
	/**
441
	/**
439
	 * Configure le drag 'n drop pour la liste
442
	 * Configure le drag 'n drop pour la liste
440
	 */
443
	 */
441
	private void configDragAndDrop()
444
	private void configDragAndDrop()
442
	{
445
	{
443
 
446
 
444
		setDdGroup("ObsMotsClesGroup");
447
		setDdGroup("ObsMotsClesGroup");
445
		setEnableDragDrop(true);
448
		setEnableDragDrop(true);
446
		setDragDropText(Msg.get("glissez-observations-pour-lier"));
449
		setDragDropText(Msg.get("glissez-observations-pour-lier"));
447
		// on fabrique la nouvelle configuration
450
		// on fabrique la nouvelle configuration
448
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
451
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
449
		DropTargetConfig dtc = new DropTargetConfig();
452
		DropTargetConfig dtc = new DropTargetConfig();
450
		dtc.setdDdGroup("ObsMotsClesGroup");
453
		dtc.setdDdGroup("ObsMotsClesGroup");
451
		dtc.setTarget(true);
454
		dtc.setTarget(true);
452
		
455
		
453
		DragDropConfig ddc = new DragDropConfig();
456
		DragDropConfig ddc = new DragDropConfig();
454
 
457
 
455
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
458
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
456
		@SuppressWarnings("unused")
459
		@SuppressWarnings("unused")
457
		DropTarget tg = new DropTarget(this, dtc)
460
		DropTarget tg = new DropTarget(this, dtc)
458
		{
461
		{
459
			@Override
462
			@Override
460
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){	
463
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){	
461
				
464
				
462
				// si on reçoit des données provenant d'un arbre
465
				// si on reçoit des données provenant d'un arbre
463
				// on les convertit 
466
				// on les convertit 
464
				if(data instanceof TreeDragData)  {
467
				if(data instanceof TreeDragData)  {
465
			    	TreeDragData tdd = (TreeDragData)data ;
468
			    	TreeDragData tdd = (TreeDragData)data ;
466
			    	
469
			    	
467
			    	TreeNode treeNode = tdd.getTreeNode();  
470
			    	TreeNode treeNode = tdd.getTreeNode();  
468
			    	String idMc = treeNode.getId();  
471
			    	String idMc = treeNode.getId();  
469
			    	
472
			    	
470
			    	int index = getView().findRowIndex(e);
473
			    	int index = getView().findRowIndex(e);
471
			    	if(index < 0) {
474
			    	if(index < 0) {
472
			    		return true;
475
			    		return true;
473
			    	}
476
			    	}
474
			    	
477
			    	
475
			    	Record obsRd = getStore().getRecordAt(index);
478
			    	Record obsRd = getStore().getRecordAt(index);
476
			    	if(obsRd == null) {
479
			    	if(obsRd == null) {
477
			    		return true;
480
			    		return true;
478
			    	}
481
			    	}
479
			    	
482
			    	
480
			    	String ordreObs = obsRd.getAsString("ordre_observation");
483
			    	String ordreObs = obsRd.getAsString("ordre_observation");
481
			    	
484
			    	
482
			    	if(ordreObs != null) {
485
			    	if(ordreObs != null) {
483
			    		observationMediateur.gererDDMotCleSurObs(ordreObs, idMc);
486
			    		observationMediateur.gererDDMotCleSurObs(ordreObs, idMc);
484
			    		return true ;
487
			    		return true ;
485
			    	} else {
488
			    	} else {
486
			    		return true;
489
			    		return true;
487
			    	}
490
			    	}
488
				}
491
				}
489
		    	return true;
492
		    	return true;
490
			}
493
			}
491
			
494
			
492
			@Override
495
			@Override
493
			public String notifyOver(DragSource source, EventObject e, DragData data){
496
			public String notifyOver(DragSource source, EventObject e, DragData data){
494
				
497
				
495
				if(data instanceof TreeDragData)  {
498
				if(data instanceof TreeDragData)  {
496
			    	TreeDragData tdd = (TreeDragData)data ;
499
			    	TreeDragData tdd = (TreeDragData)data ;
497
			    	
500
			    	
498
			    	TreeNode treeNode = tdd.getTreeNode();  
501
			    	TreeNode treeNode = tdd.getTreeNode();  
499
			    	String idMc = treeNode.getId();  
502
			    	String idMc = treeNode.getId();  
500
			    	
503
			    	
501
			    	int index = getView().findRowIndex(e);
504
			    	int index = getView().findRowIndex(e);
502
			    	if(index < 0) {
505
			    	if(index < 0) {
503
			    		return "x-dd-drop-nodrop";
506
			    		return "x-dd-drop-nodrop";
504
			    	}
507
			    	}
505
			    	
508
			    	
506
			    	Record obsRd = getStore().getRecordAt(index);
509
			    	Record obsRd = getStore().getRecordAt(index);
507
			    	
510
			    	
508
			    	if(obsRd == null) {
511
			    	if(obsRd == null) {
509
			    		return "x-dd-drop-nodrop";
512
			    		return "x-dd-drop-nodrop";
510
			    	}
513
			    	}
511
			    	
514
			    	
512
			    	String ordreObs = obsRd.getAsString("ordre_observation");
515
			    	String ordreObs = obsRd.getAsString("ordre_observation");
513
			    	
516
			    	
514
			    	if(ordreObs != null) {
517
			    	if(ordreObs != null) {
515
			    		return observationMediateur.gererOverDDMotCleSurObs(ordreObs, idMc);
518
			    		return observationMediateur.gererOverDDMotCleSurObs(ordreObs, idMc);
516
			    	}
519
			    	}
517
				}
520
				}
518
				
521
				
519
				return "x-dd-drop-nodrop";
522
				return "x-dd-drop-nodrop";
520
			}
523
			}
521
		};
524
		};
522
	}
525
	}
523
 
526
 
524
	/**
527
	/**
525
	 * Méthode héritée de l'interface VueListable
528
	 * Méthode héritée de l'interface VueListable
526
	 * Sélectionne les observations  dans la liste suivant les identifiants donnés en paramètres
529
	 * Sélectionne les observations  dans la liste suivant les identifiants donnés en paramètres
527
	 */
530
	 */
528
	@Override
531
	@Override
529
	public String[] getIdSelectionnees() {
532
	public String[] getIdSelectionnees() {
530
		
533
		
531
		Record[] selection = this.getSelectionModel().getSelections();
534
		Record[] selection = this.getSelectionModel().getSelections();
532
		int taille = selection.length;
535
		int taille = selection.length;
533
		String id_selection[] = new String[taille];
536
		String id_selection[] = new String[taille];
534
 
537
 
535
		for (int i = 0; i < selection.length; i++) {
538
		for (int i = 0; i < selection.length; i++) {
536
 
539
 
537
			id_selection[i] = selection[i].getAsString("ordre_observation");
540
			id_selection[i] = selection[i].getAsString("ordre_observation");
538
		}
541
		}
539
 
542
 
540
		return id_selection;
543
		return id_selection;
541
	}
544
	}
542
	
545
	
543
 
546
 
544
	
547
	
545
	/**
548
	/**
546
	 * Sélectionne des enregistrements donné 
549
	 * Sélectionne des enregistrements donné 
547
	 * @param sel un tableau d'enregistrement à selectionner
550
	 * @param sel un tableau d'enregistrement à selectionner
548
	 */
551
	 */
549
	public void selectionnerEnregistrements(Record[] sel) {
552
	public void selectionnerEnregistrements(Record[] sel) {
550
 
553
 
551
			getSelectionModel().clearSelections();
554
			getSelectionModel().clearSelections();
552
			getSelectionModel().selectRecords(sel);
555
			getSelectionModel().selectRecords(sel);
553
		
556
		
554
	}
557
	}
555
	
558
	
556
	/**
559
	/**
557
	 * Accesseur pour la toolbar de pagination
560
	 * Accesseur pour la toolbar de pagination
558
	 * @return la toolbar de pagination
561
	 * @return la toolbar de pagination
559
	 */
562
	 */
560
	public BarrePaginationVue getToolBarVue()
563
	public BarrePaginationVue getToolBarVue()
561
	{
564
	{
562
		return bt ;
565
		return bt ;
563
	}
566
	}
564
 
567
 
565
 
568
 
566
	/**
569
	/**
567
	 * Recherche l'élement actuellement affiché et affiche son message de chargement
570
	 * Recherche l'élement actuellement affiché et affiche son message de chargement
568
	 */
571
	 */
569
	public void masquerChargement()
572
	public void masquerChargement()
570
	{
573
	{
571
		ExtElement masked = Ext.get(getId()) ;
574
		ExtElement masked = Ext.get(getId()) ;
572
 
575
 
573
		if (masked!=null) {
576
		if (masked!=null) {
574
			masked.mask(Msg.get("chargement"));
577
			masked.mask(Msg.get("chargement"));
575
		}
578
		}
576
	}
579
	}
577
	
580
	
578
	/**
581
	/**
579
	 * Recherche l'élement actuellement affiché et retire son message de chargement si l'était affiché
582
	 * Recherche l'élement actuellement affiché et retire son message de chargement si l'était affiché
580
	 */
583
	 */
581
	public void demasquerChargement()
584
	public void demasquerChargement()
582
	{
585
	{
583
		ExtElement masked = Ext.get(getId()) ;
586
		ExtElement masked = Ext.get(getId()) ;
584
		
587
		
585
		if (masked!=null) {
588
		if (masked!=null) {
586
			masked.unmask() ;
589
			masked.unmask() ;
587
		}
590
		}
588
	}
591
	}
589
	
592
	
590
	/**
593
	/**
591
	 * Méthode héritée de l'interface rafraichissable
594
	 * Méthode héritée de l'interface rafraichissable
592
	 * @param nouvelleDonnees les nouvelles données
595
	 * @param nouvelleDonnees les nouvelles données
593
	 * @param repandreRafraichissement le booleen de notification du rafraichissement
596
	 * @param repandreRafraichissement le booleen de notification du rafraichissement
594
	 */
597
	 */
595
	@Override
598
	@Override
596
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
599
	public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
597
		// si l'on a reçu une liste d'observation
600
		// si l'on a reçu une liste d'observation
598
		if(nouvelleDonnees instanceof ListeObservation)
601
		if(nouvelleDonnees instanceof ListeObservation)
599
		{	
602
		{	
600
				ListeObservation data = (ListeObservation) nouvelleDonnees ;
603
				ListeObservation data = (ListeObservation) nouvelleDonnees ;
601
				Object[][] observationData = new Object[data.size()][13];
604
				Object[][] observationData = new Object[data.size()][13];
602
				int i = 0 ;
605
				int i = 0 ;
603
				
606
				
604
				if(data.size() == 0)
607
				if(data.size() == 0)
605
				{
608
				{
606
					pageEncours = 0 ;
609
					pageEncours = 0 ;
607
				}
610
				}
608
				
611
				
609
				// on la parse et on récupère les informations qui nous interessent
612
				// on la parse et on récupère les informations qui nous interessent
610
				for (Iterator it = data.keySet().iterator(); it.hasNext();) 
613
				for (Iterator it = data.keySet().iterator(); it.hasNext();) 
611
				{
614
				{
612
					
615
					
613
					Observation obs=data.get(it.next());
616
					Observation obs=data.get(it.next());
614
					
617
					
615
					observationData[i][0] = obs.getTransmis();
618
					observationData[i][0] = obs.getTransmis();
616
					observationData[i][1] = obs.getCodeCourtReferentielTaxo();
619
					observationData[i][1] = obs.getCodeCourtReferentielTaxo();
617
					observationData[i][2] = obs.getNomSaisi();
620
					observationData[i][2] = obs.getNomSaisi();
618
					observationData[i][3] = obs.getCertitude();
621
					observationData[i][3] = obs.getCertitude();
619
					observationData[i][4] = obs.getNomRetenu();
622
					observationData[i][4] = obs.getNomRetenu();
620
					observationData[i][5] = obs.getFamille();
623
					observationData[i][5] = obs.getFamille();
621
					observationData[i][6] = obs.getAbondance();
624
					observationData[i][6] = obs.getAbondance();
622
					observationData[i][7] = obs.getPhenologie();
625
					observationData[i][7] = obs.getPhenologie();
623
					observationData[i][8] = Util.formaterLieu(obs, modeleLieu);
626
					observationData[i][8] = Util.formaterLieu(obs, modeleLieu);
624
					observationData[i][9] = formaterAltitude(obs.getAltitude());
627
					observationData[i][9] = formaterAltitude(obs.getAltitude());
625
					observationData[i][10] = obs.getDate();
628
					observationData[i][10] = obs.getDate();
626
					observationData[i][11] = obs.getNumeroOrdre();		
629
					observationData[i][11] = obs.getNumeroOrdre();		
627
					observationData[i][12] = obs.getNumeroNomenclaturalSaisi();
630
					observationData[i][12] = obs.getNumeroNomenclaturalSaisi();
628
									
631
									
629
					i++ ;
632
					i++ ;
630
				}
633
				}
631
		
634
		
632
				RecordDef rd = new RecordDef(getDefinitionChamps());
635
				RecordDef rd = new RecordDef(getDefinitionChamps());
633
				
636
				
634
				final MemoryProxy dataProxy = new MemoryProxy(observationData);
637
				final MemoryProxy dataProxy = new MemoryProxy(observationData);
635
				final ArrayReader reader = new ArrayReader(rd);
638
				final ArrayReader reader = new ArrayReader(rd);
636
		
639
		
637
				final Store observationStore = new Store(dataProxy, reader);
640
				final Store observationStore = new Store(dataProxy, reader);
638
				
641
				
639
				st = observationStore ;
642
				st = observationStore ;
640
				st.load() ;
643
				st.load() ;
641
									
644
									
642
				// et on reconfigure et rafraichit la vue
645
				// et on reconfigure et rafraichit la vue
643
				this.reconfigure(st, this.getColumnModel());
646
				this.reconfigure(st, this.getColumnModel());
644
				demasquerChargement();
647
				demasquerChargement();
645
			    cacheListeObservation=data;
648
			    cacheListeObservation=data;
646
				observationMediateur.onRafraichissementListeObservations();	
649
				observationMediateur.onRafraichissementListeObservations();	
647
		}
650
		}
648
		
651
		
649
		// Si on reçoit un tableau d'entiers
652
		// Si on reçoit un tableau d'entiers
650
		// c'est un tableau d'un seul entier qui est le nombre d'observation correspondant aux critères
653
		// c'est un tableau d'un seul entier qui est le nombre d'observation correspondant aux critères
651
		if(nouvelleDonnees instanceof int[])
654
		if(nouvelleDonnees instanceof int[])
652
		{
655
		{
653
			int[] pages = (int[])nouvelleDonnees ;
656
			int[] pages = (int[])nouvelleDonnees ;
654
			
657
			
655
			// on calcule le nombre de pages nécessaires et on les met à jour dans le modèle
658
			// on calcule le nombre de pages nécessaires et on les met à jour dans le modèle
656
			pageMax  = calculerNbPages(pages[0]) ;
659
			pageMax  = calculerNbPages(pages[0]) ;
657
			nbElements = pages[0] ;
660
			nbElements = pages[0] ;
658
			
661
			
659
			
662
			
660
			// et on notifie de le mediateur du changement des valeurs
663
			// et on notifie de le mediateur du changement des valeurs
661
			changerPageMaxEtCourante(pageMax,pageEncours,taillePage,pages[0]) ;
664
			changerPageMaxEtCourante(pageMax,pageEncours,taillePage,pages[0]) ;
662
			
665
			
663
			if(nbElements > 0) {
666
			if(nbElements > 0) {
664
				masquerChargement();
667
				masquerChargement();
665
				observationMediateur.obtenirListeObservation(this);
668
				observationMediateur.obtenirListeObservation(this);
666
			} else {
669
			} else {
667
				this.rafraichir(new ListeObservation(0), false);
670
				this.rafraichir(new ListeObservation(0), false);
668
			}
671
			}
669
		}
672
		}
670
		
673
		
671
		
674
		
672
		// si l'on a reçu une Observation 
675
		// si l'on a reçu une Observation 
673
		if(nouvelleDonnees instanceof Observation) {
676
		if(nouvelleDonnees instanceof Observation) {
674
			// la modification ou suppression d'un élément dans la liste provoque un bug sur l'état du tri
677
			// la modification ou suppression d'un élément dans la liste provoque un bug sur l'état du tri
675
			// on l'enregistre donc avant suppression 
678
			// on l'enregistre donc avant suppression 
676
			enregistrerEtatTri();
679
			enregistrerEtatTri();
677
			Observation obs= (Observation) nouvelleDonnees;
680
			Observation obs= (Observation) nouvelleDonnees;
678
			if (obs.getNumeroOrdre()==null) { 
681
			if (obs.getNumeroOrdre()==null) { 
679
				
682
				
680
				// Nouvelle observation
683
				// Nouvelle observation
681
				// On affiche la dernière page
684
				// On affiche la dernière page
682
				pageEncours = pageMax ;
685
				pageEncours = pageMax ;
683
				masquerChargement();
686
				masquerChargement();
684
	
687
	
685
				observationMediateur.obtenirNombreObservation();
688
				observationMediateur.obtenirNombreObservation();
686
			
689
			
687
			}
690
			}
688
			else { // Modification d'une observation
691
			else { // Modification d'une observation
689
					
692
					
690
				masquerChargement();
693
				masquerChargement();
691
				observationMediateur.obtenirNombreObservation();		
694
				observationMediateur.obtenirNombreObservation();		
692
			}
695
			}
693
		}
696
		}
694
		
697
		
695
		// Si on a effectué une suppression
698
		// Si on a effectué une suppression
696
		if(nouvelleDonnees instanceof String)
699
		if(nouvelleDonnees instanceof String)
697
		{
700
		{
698
			// la modification ou suppression d'un élément dans la liste provoque un bug sur l'état du tri
701
			// la modification ou suppression d'un élément dans la liste provoque un bug sur l'état du tri
699
			// on l'enregistre donc avant suppression 
702
			// on l'enregistre donc avant suppression 
700
			enregistrerEtatTri();
703
			enregistrerEtatTri();
701
			observationMediateur.obtenirNombreObservation() ;
704
			observationMediateur.obtenirNombreObservation() ;
702
		}
705
		}
703
		
706
		
704
		if(!getTailleInitialisee()) {
707
		if(!getTailleInitialisee()) {
705
			if((int)Math.round(observationMediateur.getPanneauPrincipalObservation().getHeight() * 0.6) != 0) {
708
			if((int)Math.round(observationMediateur.getPanneauPrincipalObservation().getHeight() * 0.6) != 0) {
706
				doLayout();
709
				doLayout();
707
				setTailleInitialisee();
710
				setTailleInitialisee();
708
			}
711
			}
709
		}
712
		}
710
		
713
		
711
		// réaffectation du tri courant si nécessaire
714
		// réaffectation du tri courant si nécessaire
712
		if(directionTri != null && champTri != null) {
715
		if(directionTri != null && champTri != null) {
713
			st.sort(champTri, directionTri);
716
			st.sort(champTri, directionTri);
714
		}
717
		}
715
	}
718
	}
716
	
719
	
717
	private String formaterAltitude(String alt) {
720
	private String formaterAltitude(String alt) {
718
		String alfFmt = Util.formaterNombre(alt);
721
		String alfFmt = Util.formaterNombre(alt);
719
		if(!alfFmt.isEmpty() && !Util.estZero(alfFmt)) {
722
		if(!alfFmt.isEmpty() && !Util.estZero(alfFmt)) {
720
			alfFmt = alfFmt+" m.";
723
			alfFmt = alfFmt+" m.";
721
		}
724
		}
722
		return alfFmt;
725
		return alfFmt;
723
	}
726
	}
724
	
727
	
725
	private FieldDef[] getDefinitionChamps() {
728
	private FieldDef[] getDefinitionChamps() {
726
		// creation du store qui les contient
729
		// creation du store qui les contient
727
		FieldDef defEtatObservation = new StringFieldDef("etat_observation");
730
		FieldDef defEtatObservation = new StringFieldDef("etat_observation");
728
		FieldDef defRefTaxObservation = new StringFieldDef("referentiel_taxo_observation");
731
		FieldDef defRefTaxObservation = new StringFieldDef("referentiel_taxo_observation");
729
		FieldDef defNomSaisiObservation = new StringFieldDef("nomSaisi_observation");
732
		FieldDef defNomSaisiObservation = new StringFieldDef("nomSaisi_observation");
730
		FieldDef defCertitudeObservation = new StringFieldDef("certitude");
733
		FieldDef defCertitudeObservation = new StringFieldDef("certitude");
731
		FieldDef defNomRetenuObservation = new StringFieldDef("nomRetenu_observation");
734
		FieldDef defNomRetenuObservation = new StringFieldDef("nomRetenu_observation");
732
		FieldDef defFamilleObservation = new StringFieldDef("famille_observation");
735
		FieldDef defFamilleObservation = new StringFieldDef("famille_observation");
733
		FieldDef defAbondanceObservation = new StringFieldDef("abondance");
736
		FieldDef defAbondanceObservation = new StringFieldDef("abondance");
734
		FieldDef defPhenologieObservation = new StringFieldDef("phenologie");
737
		FieldDef defPhenologieObservation = new StringFieldDef("phenologie");
735
		FieldDef defLieuObservation = new StringFieldDef("lieu_observation");
738
		FieldDef defLieuObservation = new StringFieldDef("lieu_observation");
736
		FieldDef defAltObservation = new StringFieldDef("altitude_observation");
739
		FieldDef defAltObservation = new StringFieldDef("altitude_observation");
737
		FieldDef defDateObservation = new StringFieldDef("date_observation");
740
		FieldDef defDateObservation = new StringFieldDef("date_observation");
738
		FieldDef defOrdreObservation = new IntegerFieldDef("ordre_observation");
741
		FieldDef defOrdreObservation = new IntegerFieldDef("ordre_observation");
739
		
742
		
740
		// Non affiches :
743
		// Non affiches :
741
		FieldDef defNumeroNomenclaturalSaisiObservation = new StringFieldDef("numeroNomenclaturalSaisi_observation");
744
		FieldDef defNumeroNomenclaturalSaisiObservation = new StringFieldDef("numeroNomenclaturalSaisi_observation");
742
 
745
 
743
		FieldDef[] defTab = {defEtatObservation, defRefTaxObservation,defNomSaisiObservation, defCertitudeObservation, defNomRetenuObservation, defFamilleObservation, defAbondanceObservation,
746
		FieldDef[] defTab = {defEtatObservation, defRefTaxObservation,defNomSaisiObservation, defCertitudeObservation, defNomRetenuObservation, defFamilleObservation, defAbondanceObservation,
744
				defPhenologieObservation, defLieuObservation, defAltObservation, defDateObservation, defOrdreObservation, defNumeroNomenclaturalSaisiObservation };
747
				defPhenologieObservation, defLieuObservation, defAltObservation, defDateObservation, defOrdreObservation, defNumeroNomenclaturalSaisiObservation };
745
		
748
		
746
		return defTab;
749
		return defTab;
747
	}
750
	}
748
	
751
	
749
	
752
	
750
	// GESTION DE LA PAGINATION
753
	// GESTION DE LA PAGINATION
751
	public ListeObservation getCacheListeObservation() {
754
	public ListeObservation getCacheListeObservation() {
752
		return cacheListeObservation;
755
		return cacheListeObservation;
753
	}
756
	}
754
 
757
 
755
	/**
758
	/**
756
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page
759
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page
757
	 * en cours
760
	 * en cours
758
	 * @param nbElements le nombre d'élements total
761
	 * @param nbElements le nombre d'élements total
759
	 * @return le nombre de pages 
762
	 * @return le nombre de pages 
760
	 */
763
	 */
761
	public int calculerNbPages(int nbElements)
764
	public int calculerNbPages(int nbElements)
762
	{
765
	{
763
		// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement
766
		// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement
764
		// pour eviter qu'il arrondisse mal la division
767
		// pour eviter qu'il arrondisse mal la division
765
		// nombre de pages = (nombre d'element / taille de la page) arrondi à l'entier superieur
768
		// nombre de pages = (nombre d'element / taille de la page) arrondi à l'entier superieur
766
		double nPage = (1.0*nbElements)/(1.0*taillePage) ; 
769
		double nPage = (1.0*nbElements)/(1.0*taillePage) ; 
767
		double nPageRound = Math.ceil(nPage) ;
770
		double nPageRound = Math.ceil(nPage) ;
768
		Double nPageInt = new Double(nPageRound) ;
771
		Double nPageInt = new Double(nPageRound) ;
769
		
772
		
770
		return nPageInt.intValue() ; 
773
		return nPageInt.intValue() ; 
771
	}
774
	}
772
 
775
 
773
	/**
776
	/**
774
	 * Recalcule la page en cours lors du changement du nombre d'élements
777
	 * Recalcule la page en cours lors du changement du nombre d'élements
775
	 * @param nbElements le nombre d'élements total
778
	 * @param nbElements le nombre d'élements total
776
	 * @return la nouvelle page encours
779
	 * @return la nouvelle page encours
777
	 */
780
	 */
778
	public int calculerPageCourante(int nbElements)
781
	public int calculerPageCourante(int nbElements)
779
	{
782
	{
780
		// on calcule le nombre de page
783
		// on calcule le nombre de page
781
		int nouvelNbPages = calculerNbPages(nbElements) ;
784
		int nouvelNbPages = calculerNbPages(nbElements) ;
782
		// la nouvelle page en cours
785
		// la nouvelle page en cours
783
		double nPageCourante = (1.0*pageEncours)/(1.0*pageMax) * (1.0*nouvelNbPages) ;
786
		double nPageCourante = (1.0*pageEncours)/(1.0*pageMax) * (1.0*nouvelNbPages) ;
784
		
787
		
785
		// on arrondit au supérieur
788
		// on arrondit au supérieur
786
		double nPageRound = Math.ceil(nPageCourante) ;
789
		double nPageRound = Math.ceil(nPageCourante) ;
787
		Double nPageInt = new Double(nPageRound) ;
790
		Double nPageInt = new Double(nPageRound) ;
788
		
791
		
789
		return Math.abs(nPageInt.intValue()) ; 
792
		return Math.abs(nPageInt.intValue()) ; 
790
	}
793
	}
791
	
794
	
792
	/**
795
	/**
793
	 * Appelle le modèle pour lui demander les données d'une page à afficher
796
	 * Appelle le modèle pour lui demander les données d'une page à afficher
794
	 * @param pageCourante le numéro de page à affciher
797
	 * @param pageCourante le numéro de page à affciher
795
	 */
798
	 */
796
	@Override
799
	@Override
797
	public void changerNumeroPage(int pageCourante) {
800
	public void changerNumeroPage(int pageCourante) {
798
		pageEncours = pageCourante ;
801
		pageEncours = pageCourante ;
799
		masquerChargement();
802
		masquerChargement();
800
		
803
		
801
		enregistrerEtatTri();
804
		enregistrerEtatTri();
802
		// On lance le chargerment des observations
805
		// On lance le chargerment des observations
803
		observationMediateur.obtenirNombreObservation();
806
		observationMediateur.obtenirNombreObservation();
804
		getToolBarVue().changerPageCourante(pageCourante);	
807
		getToolBarVue().changerPageCourante(pageCourante);	
805
	}
808
	}
806
	
809
	
807
	
810
	
808
	/**
811
	/**
809
	 * Appelle le modèle pour qu'il change la taille de page utilisée
812
	 * Appelle le modèle pour qu'il change la taille de page utilisée
810
	 * @param nouvelleTaillePage la nouvelle taille de page
813
	 * @param nouvelleTaillePage la nouvelle taille de page
811
	 */
814
	 */
812
	@Override
815
	@Override
813
	public void changerTaillePage(int nouvelleTaillePage) {
816
	public void changerTaillePage(int nouvelleTaillePage) {
814
	
817
	
815
		taillePage = nouvelleTaillePage ;
818
		taillePage = nouvelleTaillePage ;
816
		pageEncours = calculerPageCourante(nbElements) ;
819
		pageEncours = calculerPageCourante(nbElements) ;
817
		
820
		
818
		enregistrerEtatTri();
821
		enregistrerEtatTri();
819
 
822
 
820
		masquerChargement();
823
		masquerChargement();
821
 
824
 
822
		// 	On lance le chargement des observations
825
		// 	On lance le chargement des observations
823
		observationMediateur.obtenirNombreObservation();
826
		observationMediateur.obtenirNombreObservation();
824
		
827
		
825
		// et on met à jour la taille de page dans les barres d'outils
828
		// et on met à jour la taille de page dans les barres d'outils
826
		getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);	
829
		getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);	
827
	}
830
	}
828
 
831
 
829
	
832
	
830
	/**
833
	/**
831
	 * Met à jour les barre d'outils avec des nouvelles valeurs
834
	 * Met à jour les barre d'outils avec des nouvelles valeurs
832
	 * @param pageMax le nombre de pages
835
	 * @param pageMax le nombre de pages
833
	 * @param pageEncours la page en cours
836
	 * @param pageEncours la page en cours
834
	 * @param taillePage la taille de page
837
	 * @param taillePage la taille de page
835
	 * @param nbElement le nombre d'élements par page
838
	 * @param nbElement le nombre d'élements par page
836
	 */
839
	 */
837
	public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) {			
840
	public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement) {			
838
		int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
841
		int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
839
		getToolBarVue().rafraichir(pages, false) ;
842
		getToolBarVue().rafraichir(pages, false) ;
840
	}
843
	}
841
	
844
	
842
	/**
845
	/**
843
	 * Renvoie la taille de page en cours d'utilisation
846
	 * Renvoie la taille de page en cours d'utilisation
844
	 * @return la taille de page
847
	 * @return la taille de page
845
	 */
848
	 */
846
	public int getTaillePage() {
849
	public int getTaillePage() {
847
		
850
		
848
		return taillePage;
851
		return taillePage;
849
	}
852
	}
850
	
853
	
851
	/**
854
	/**
852
	 * Renvoie le numéro de la page encours (attention on commence à 0)
855
	 * Renvoie le numéro de la page encours (attention on commence à 0)
853
	 * @return le numéro de la page en cours
856
	 * @return le numéro de la page en cours
854
	 */
857
	 */
855
	public int getPageEncours() {
858
	public int getPageEncours() {
856
		
859
		
857
		return pageEncours;
860
		return pageEncours;
858
	}
861
	}
859
	
862
	
860
	private void enregistrerEtatTri() {
863
	private void enregistrerEtatTri() {
861
		if(triActif) {
864
		if(triActif) {
862
			this.directionTri = st.getSortState().getDirection();
865
			this.directionTri = st.getSortState().getDirection();
863
			this.champTri = st.getSortState().getField();
866
			this.champTri = st.getSortState().getField();
864
		}
867
		}
865
	}
868
	}
866
	
869
	
867
	public void afficherFiltres(String[][] filtresEnCours) {
870
	public void afficherFiltres(String[][] filtresEnCours) {
868
		
871
		
869
		String texteFiltresEnCours = "";
872
		String texteFiltresEnCours = "";
870
		
873
		
871
		for(int i = 0; i < filtresEnCours.length; i++) {
874
		for(int i = 0; i < filtresEnCours.length; i++) {
872
			if(Util.filtreValide(filtresEnCours[i])) {
875
			if(Util.filtreValide(filtresEnCours[i])) {
873
				
876
				
874
				if(!texteFiltresEnCours.equals("")) {
877
				if(!texteFiltresEnCours.equals("")) {
875
					texteFiltresEnCours += " - ";
878
					texteFiltresEnCours += " - ";
876
				}
879
				}
877
				
880
				
878
				texteFiltresEnCours += "<span class=\"affichage_filtre\">"+
881
				texteFiltresEnCours += "<span class=\"affichage_filtre\">"+
879
											transformerNomFiltre(filtresEnCours[i][0])+": "+transformerValeurFiltre(filtresEnCours[i][0], filtresEnCours[i][1])+
882
											transformerNomFiltre(filtresEnCours[i][0])+": "+transformerValeurFiltre(filtresEnCours[i][0], filtresEnCours[i][1])+
880
									   " <input value=\"X\" type=\"button\" rel=\""+filtresEnCours[i][0]+"\" id=\"bouton_raz_filtres_obs_"+filtresEnCours[i][0]+"\" />"+
883
									   " <input value=\"X\" type=\"button\" rel=\""+filtresEnCours[i][0]+"\" id=\"bouton_raz_filtres_obs_"+filtresEnCours[i][0]+"\" />"+
881
										"</span>";
884
										"</span>";
882
			}
885
			}
883
		}
886
		}
884
		
887
		
885
		if(!texteFiltresEnCours.equals("")) {
888
		if(!texteFiltresEnCours.equals("")) {
886
			texteFiltresEnCours = "- <span class=\"indicateur_filtres\"> "+Msg.get("filtres")+" - "+texteFiltresEnCours+"</span>";
889
			texteFiltresEnCours = "- <span class=\"indicateur_filtres\"> "+Msg.get("filtres")+" - "+texteFiltresEnCours+"</span>";
887
		}
890
		}
888
		
891
		
889
		this.setTitle(Msg.get("observations")+texteFiltresEnCours) ;
892
		this.setTitle(Msg.get("observations")+texteFiltresEnCours) ;
890
		
893
		
891
		for(int i = 0; i < filtresEnCours.length; i++) {
894
		for(int i = 0; i < filtresEnCours.length; i++) {
892
			
895
			
893
			if(Util.filtreValide(filtresEnCours[i])) {
896
			if(Util.filtreValide(filtresEnCours[i])) {
894
				if(Ext.get("bouton_raz_filtres_obs_"+filtresEnCours[i][0]) != null) {
897
				if(Ext.get("bouton_raz_filtres_obs_"+filtresEnCours[i][0]) != null) {
895
					
898
					
896
					Ext.get("bouton_raz_filtres_obs_"+filtresEnCours[i][0]).addListener("click", new EventCallback() {
899
					Ext.get("bouton_raz_filtres_obs_"+filtresEnCours[i][0]).addListener("click", new EventCallback() {
897
						
900
						
898
						@Override
901
						@Override
899
						public void execute(EventObject e) {
902
						public void execute(EventObject e) {
900
							e.stopEvent();
903
							e.stopEvent();
901
							observationMediateur.viderFiltre(e.getTarget().getAttribute("rel"));
904
							observationMediateur.viderFiltre(e.getTarget().getAttribute("rel"));
902
						}
905
						}
903
						
906
						
904
					});
907
					});
905
				}
908
				}
906
			}
909
			}
907
		}
910
		}
908
	}
911
	}
909
	
912
	
910
	private String transformerNomFiltre(String nomFiltre) {
913
	private String transformerNomFiltre(String nomFiltre) {
911
		
914
		
912
		if(nomFiltre.equals("departement")) {
915
		if(nomFiltre.equals("departement")) {
913
			nomFiltre = Msg.get("departement");
916
			nomFiltre = Msg.get("departement");
914
		} else if(nomFiltre.equals("localite")) {
917
		} else if(nomFiltre.equals("localite")) {
915
			nomFiltre = Msg.get("localite");
918
			nomFiltre = Msg.get("localite");
916
		} else if(nomFiltre.equals("nom_taxon")) {
919
		} else if(nomFiltre.equals("nom_taxon")) {
917
			nomFiltre = Msg.get("recherche");
920
			nomFiltre = Msg.get("recherche");
918
		} else if(nomFiltre.equals("id_mots_cles")) {
921
		} else if(nomFiltre.equals("id_mots_cles")) {
919
			nomFiltre = Msg.get("projets");
922
			nomFiltre = Msg.get("projets");
920
		} else if(nomFiltre.equals("lieudit")) {
923
		} else if(nomFiltre.equals("lieudit")) {
921
			nomFiltre = Msg.get("lieu-dit");
924
			nomFiltre = Msg.get("lieu-dit");
922
		} else {
925
		} else {
923
			nomFiltre = Msg.get(nomFiltre);
926
			nomFiltre = Msg.get(nomFiltre);
924
		}
927
		}
925
		
928
		
926
		return nomFiltre;
929
		return nomFiltre;
927
		
930
		
928
	}
931
	}
929
	
932
	
930
	private String transformerValeurFiltre(String nomFiltre, String valeurFiltre) {
933
	private String transformerValeurFiltre(String nomFiltre, String valeurFiltre) {
931
		
934
		
932
		String valeurFiltreTransformee = valeurFiltre;
935
		String valeurFiltreTransformee = valeurFiltre;
933
		
936
		
934
		if(nomFiltre.equals("id_mots_cles")) {
937
		if(nomFiltre.equals("id_mots_cles")) {
935
			
938
			
936
			String[] tabMotsCles = valeurFiltre.split(";");
939
			String[] tabMotsCles = valeurFiltre.split(";");
937
			String[] tabMotsClesTexte = observationMediateur.obtenirTexteMotsCles(tabMotsCles);
940
			String[] tabMotsClesTexte = observationMediateur.obtenirTexteMotsCles(tabMotsCles);
938
			
941
			
939
			if(tabMotsClesTexte.length > 1) {
942
			if(tabMotsClesTexte.length > 1) {
940
				valeurFiltreTransformee = Util.implode(",", tabMotsClesTexte);
943
				valeurFiltreTransformee = Util.implode(",", tabMotsClesTexte);
941
			} else {
944
			} else {
942
				valeurFiltreTransformee = tabMotsClesTexte[0];
945
				valeurFiltreTransformee = tabMotsClesTexte[0];
943
			}
946
			}
944
		}
947
		}
945
		
948
		
946
		if(nomFiltre.equals("mois")) {
949
		if(nomFiltre.equals("mois")) {
947
			valeurFiltreTransformee = Util.renvoyerMois(Integer.parseInt(valeurFiltre));
950
			valeurFiltreTransformee = Util.renvoyerMois(Integer.parseInt(valeurFiltre));
948
		}
951
		}
949
		
952
		
950
		valeurFiltreTransformee = valeurFiltreTransformee.replaceAll("000null", Msg.get("inconnue"));
953
		valeurFiltreTransformee = valeurFiltreTransformee.replaceAll("000null", Msg.get("inconnue"));
951
		valeurFiltreTransformee = valeurFiltreTransformee.replaceAll("null", Msg.get("inconnue"));
954
		valeurFiltreTransformee = valeurFiltreTransformee.replaceAll("null", Msg.get("inconnue"));
952
		valeurFiltreTransformee = valeurFiltreTransformee.replaceAll("NULL", Msg.get("inconnue"));
955
		valeurFiltreTransformee = valeurFiltreTransformee.replaceAll("NULL", Msg.get("inconnue"));
953
 
956
 
954
		return valeurFiltreTransformee;
957
		return valeurFiltreTransformee;
955
		
958
		
956
	}
959
	}
957
 
960
 
958
	public void raz() {		
961
	public void raz() {		
959
		RecordDef rd = new RecordDef(getDefinitionChamps());
962
		RecordDef rd = new RecordDef(getDefinitionChamps());
960
		st = new Store(rd);
963
		st = new Store(rd);
961
		// on associe le store
964
		// on associe le store
962
		this.setStore(st);	
965
		this.setStore(st);	
963
	}
966
	}
964
	
967
	
965
	public boolean verifierFormatDate(String date) {
968
	public boolean verifierFormatDate(String date) {
966
		
969
		
967
		String regex = "[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}" ;
970
		String regex = "[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}" ;
968
		if(date.matches(regex) && !date.equals("0000-00-00")) {
971
		if(date.matches(regex) && !date.equals("0000-00-00")) {
969
			return true ;
972
			return true ;
970
		}
973
		}
971
		else {
974
		else {
972
			return false;
975
			return false;
973
		}
976
		}
974
	}
977
	}
975
	
978
	
976
	public boolean getTailleInitialisee() {
979
	public boolean getTailleInitialisee() {
977
		return tailleInitialisee ;
980
		return tailleInitialisee ;
978
	}
981
	}
979
	
982
	
980
	public void setTailleInitialisee() {
983
	public void setTailleInitialisee() {
981
		tailleInitialisee = true;
984
		tailleInitialisee = true;
982
	}
985
	}
983
 
986
 
984
	public String renvoyerTri() {
987
	public String renvoyerTri() {
985
		String tri = "ordre";
988
		String tri = "ordre";
986
		if(triActif) {
989
		if(triActif) {
987
			HashMap<String, String> corr = Ontologies.getCorrespondanceGrilleObservationChampsTri();
990
			HashMap<String, String> corr = Ontologies.getCorrespondanceGrilleObservationChampsTri();
988
			if(corr.containsKey(champTri)) {
991
			if(corr.containsKey(champTri)) {
989
				tri = corr.get(champTri);
992
				tri = corr.get(champTri);
990
			}
993
			}
991
		}
994
		}
992
		return tri;
995
		return tri;
993
	}
996
	}
994
 
997
 
995
	public String renvoyerDirectionTri() {
998
	public String renvoyerDirectionTri() {
996
		try {
999
		try {
997
			return (triActif) ? directionTri.getDirection() : "ASC";
1000
			return (triActif) ? directionTri.getDirection() : "ASC";
998
		} catch (Exception e) {
1001
		} catch (Exception e) {
999
			return "ASC";
1002
			return "ASC";
1000
		}
1003
		}
1001
	}
1004
	}
1002
}
1005
}