Subversion Repositories eFlore/Applications.del

Rev

Rev 1862 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
447 gduche 1
package org.tela_botanica.del.client.composants.metadonnees;
2
 
552 benjamin 3
import org.tela_botanica.del.client.cache.CacheClient;
447 gduche 4
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
1079 gduche 5
import org.tela_botanica.del.client.config.Config;
552 benjamin 6
import org.tela_botanica.del.client.modeles.InformationsRecherche;
7
import org.tela_botanica.del.client.modeles.ModeRecherche;
447 gduche 8
import org.tela_botanica.del.client.modeles.Observation;
1667 jpm 9
import org.tela_botanica.del.client.modeles.Utilisateur;
552 benjamin 10
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
1667 jpm 11
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
12
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
552 benjamin 13
import org.tela_botanica.del.client.navigation.evenement.detailsimage.EvenementRechercheImage;
14
import org.tela_botanica.del.client.navigation.evenement.rechercheobservation.EvenementRechercheObservation;
1131 aurelien 15
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
477 benjamin 16
 
1667 jpm 17
import com.google.gwt.core.shared.GWT;
552 benjamin 18
import com.google.gwt.event.dom.client.ClickEvent;
19
import com.google.gwt.event.dom.client.ClickHandler;
20
import com.google.gwt.event.dom.client.HasClickHandlers;
674 gduche 21
import com.google.gwt.i18n.client.DateTimeFormat;
1078 gduche 22
import com.google.gwt.user.client.History;
1026 gduche 23
import com.google.gwt.user.client.Window;
447 gduche 24
import com.google.gwt.user.client.ui.HasText;
25
import com.google.gwt.user.client.ui.HasWidgets;
26
import com.google.gwt.user.client.ui.IsWidget;
27
 
477 benjamin 28
public class MetadonneesPresenteur extends Presenteur {
447 gduche 29
 
30
	public abstract interface Vue extends IsWidget {
31
		public HasText getNomRetenu();
477 benjamin 32
 
552 benjamin 33
		public HasClickHandlers getLienNomRetenu();
34
 
447 gduche 35
		public HasText getNomCommun();
477 benjamin 36
 
447 gduche 37
		public HasText getFamille();
477 benjamin 38
 
447 gduche 39
		public HasText getLocalite();
477 benjamin 40
 
447 gduche 41
		public HasText getLieuDit();
477 benjamin 42
 
447 gduche 43
		public HasText getMilieu();
477 benjamin 44
 
447 gduche 45
		public HasText getCommentaire();
477 benjamin 46
 
447 gduche 47
		public HasText getAuteur();
1667 jpm 48
 
49
		public HasText getCourrielAuteur();
50
 
51
		public void setCourrielAuteurHref(String courriel);
52
 
449 gduche 53
		public HasText getDateTransmission();
477 benjamin 54
 
447 gduche 55
		public HasText getMotsClefs();
477 benjamin 56
 
447 gduche 57
		public HasText getNumNomenclatural();
477 benjamin 58
 
449 gduche 59
		public HasText getDateReleve();
1995 aurelien 60
 
61
		public HasText getPays();
552 benjamin 62
 
63
		public HasClickHandlers getLienFamille();
64
 
65
		public HasClickHandlers getLienAuteur();
1667 jpm 66
 
67
		public HasClickHandlers getLienCourrielAuteur();
552 benjamin 68
 
69
		public HasClickHandlers getLienDateTransmission();
70
 
71
		public HasClickHandlers getLienDateReleve();
1995 aurelien 72
 
73
		public HasClickHandlers getLienPays();
74
 
552 benjamin 75
		public HasClickHandlers getLienLocalite();
76
 
77
		public HasClickHandlers getLienMotsClefs();
78
 
79
		public HasClickHandlers getLienNumNomenclatural();
80
 
81
		public HasClickHandlers getLienNomCommun();
82
 
83
		public HasClickHandlers getLienMilieu();
84
 
85
		public HasClickHandlers getLienCommentaire();
570 gduche 86
 
1026 gduche 87
		public void setStation(String station) ;
88
 
570 gduche 89
		public void masquerChampsVides();
1078 gduche 90
 
91
		public void activerLiens();
1079 gduche 92
 
93
		public void activerLienAuteur();
1214 gduche 94
 
1531 mathias 95
		public void activerLienNomRetenu();
96
 
1342 gduche 97
		public void setLienIdentiplante(String id);
1282 aurelien 98
 
99
		void desactiverLienAuteur();
1393 aurelien 100
 
101
		public HasText getReferentiel();
1667 jpm 102
 
103
		public void afficherCourrielAuteur();
104
 
105
		public void cacherCourrielAuteur();
447 gduche 106
	}
477 benjamin 107
 
447 gduche 108
	private Vue vue;
109
	private Observation observation;
552 benjamin 110
	private ModeRecherche modeRecherche;
1078 gduche 111
	private boolean avecLiens;
112
 
113
	public MetadonneesPresenteur(Vue vue, Observation observation, ModeRecherche modeRecherche, boolean avecLiens) {
447 gduche 114
		this.vue = vue;
552 benjamin 115
		this.modeRecherche = modeRecherche;
447 gduche 116
		setObservation(observation);
1078 gduche 117
		this.avecLiens = avecLiens;
447 gduche 118
	}
477 benjamin 119
 
447 gduche 120
	public void setObservation(Observation observation) {
121
		this.observation = observation;
122
	}
477 benjamin 123
 
447 gduche 124
	public void chargerMetaDonnees() {
125
		vue.getNomRetenu().setText(observation.getNomRetenu());
126
		vue.getNomCommun().setText(observation.getNomCommun());
1393 aurelien 127
		vue.getReferentiel().setText(observation.getReferentiel());
447 gduche 128
		vue.getFamille().setText(observation.getFamille());
1995 aurelien 129
		if(CacheClient.getInstance().getListePays() != null) {
130
			vue.getPays().setText(CacheClient.getInstance().getListePays().get(observation.getPays()));
131
		} else {
132
			vue.getPays().setText(observation.getPays());
133
		}
134
 
471 aurelien 135
		vue.getLocalite().setText(observation.getLocaliteAvecIdFormatee());
447 gduche 136
		vue.getLieuDit().setText(observation.getLieuDit());
1026 gduche 137
		vue.setStation(observation.getStation());
447 gduche 138
		vue.getMilieu().setText(observation.getMilieu());
139
		vue.getCommentaire().setText(observation.getCommentaire());
140
		vue.getAuteur().setText(observation.getAuteur());
674 gduche 141
		vue.getDateTransmission().setText(formaterDate(observation.getDateTransmission()));
1667 jpm 142
		vue.getDateReleve().setText(formaterDate(observation.getDateReleve()));
143
		gererAffichageCourrielAuteur();
674 gduche 144
 
1667 jpm 145
		// ATTENTION : Masquer champs vide doit se faire en dernier !
570 gduche 146
		vue.masquerChampsVides();
447 gduche 147
	}
477 benjamin 148
 
674 gduche 149
	public String formaterDate(String dateNonFormatee) {
676 gduche 150
		try {
1862 jpm 151
			String dateFormatee = DateTimeFormat.getFormat("dd/MM/yyyy").format(UtilitairesServiceResultat.parserDateObservation(dateNonFormatee));
1132 aurelien 152
			dateFormatee = (dateFormatee == "01/01/1970") ? "???" : dateFormatee ;
153
			return dateFormatee;
676 gduche 154
		} catch (IllegalArgumentException e) {
155
			return "";
156
		}
674 gduche 157
	}
158
 
447 gduche 159
	@Override
160
	public void go(HasWidgets composite) {
477 benjamin 161
		composite.add(vue.asWidget());
447 gduche 162
		chargerMetaDonnees();
1830 aurelien 163
		gererEvenements();
447 gduche 164
	}
165
 
166
	@Override
167
	protected void gererEvenements() {
1078 gduche 168
		if (this.avecLiens) {
1667 jpm 169
			if (!observation.getIdAuteur().equals("0")) {
1282 aurelien 170
				vue.getLienAuteur().addClickHandler(new ClickHandler() {
171
					@Override
172
					public void onClick(ClickEvent arg0) {
173
						InformationsRecherche informationsRecherche = new InformationsRecherche();
174
						informationsRecherche.setAuteur(vue.getAuteur().getText());
175
						setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
176
						History.fireCurrentHistoryState();
177
					}
178
				});
1078 gduche 179
			}
1214 gduche 180
 
1282 aurelien 181
			vue.getLienDateReleve().addClickHandler(new ClickHandler() {
1079 gduche 182
				@Override
1282 aurelien 183
				public void onClick(ClickEvent arg0) {
184
					InformationsRecherche informationsRecherche = new InformationsRecherche();
185
					informationsRecherche.setDate(vue.getDateReleve().getText());
186
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
187
					History.fireCurrentHistoryState();
188
				}
189
			});
190
 
191
			vue.getLienDateTransmission().addClickHandler(new ClickHandler() {
192
				@Override
193
				public void onClick(ClickEvent arg0) {
194
					InformationsRecherche informationsRecherche = new InformationsRecherche();
195
					informationsRecherche.setDate(vue.getDateReleve().getText());
196
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
197
					History.fireCurrentHistoryState();
198
				}
199
			});
200
 
201
			vue.getLienFamille().addClickHandler(new ClickHandler() {
202
				@Override
203
				public void onClick(ClickEvent arg0) {
204
					InformationsRecherche informationsRecherche = new InformationsRecherche();
205
					informationsRecherche.setFamille(vue.getFamille().getText());
206
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
207
					History.fireCurrentHistoryState();
208
				}
209
			});
210
 
211
			vue.getLienLocalite().addClickHandler(new ClickHandler() {
212
				@Override
213
				public void onClick(ClickEvent arg0) {
214
					InformationsRecherche informationsRecherche = new InformationsRecherche();
215
					informationsRecherche.setCommune(vue.getLocalite().getText());
216
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
217
					History.fireCurrentHistoryState();
218
				}
219
			});
1995 aurelien 220
 
221
			vue.getLienPays().addClickHandler(new ClickHandler() {
222
				@Override
223
				public void onClick(ClickEvent arg0) {
224
					InformationsRecherche informationsRecherche = new InformationsRecherche();
225
					if(CacheClient.getInstance().getListePaysInversee() != null) {
226
	 					informationsRecherche.setPays(CacheClient.getInstance().getListePaysInversee().get(vue.getPays().getText()));
227
					} else {
228
	 					informationsRecherche.setPays(vue.getPays().getText());
229
					}
230
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
231
					History.fireCurrentHistoryState();
232
				}
233
			});
1282 aurelien 234
 
235
			vue.getLienMotsClefs().addClickHandler(new ClickHandler() {
236
				@Override
237
				public void onClick(ClickEvent arg0) {
238
					InformationsRecherche informationsRecherche = new InformationsRecherche();
239
					informationsRecherche.setMotClef(vue.getMotsClefs().getText());
240
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
241
					History.fireCurrentHistoryState();
242
				}
243
			});
244
 
245
			vue.getLienNomCommun().addClickHandler(new ClickHandler() {
246
				@Override
247
				public void onClick(ClickEvent arg0) {
248
					InformationsRecherche informationsRecherche = new InformationsRecherche();
249
					informationsRecherche.setRechercheLibre(vue.getNomCommun().getText());
250
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
251
					History.fireCurrentHistoryState();
252
				}
253
			});
254
 
255
			vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
256
				@Override
257
				public void onClick(ClickEvent arg0) {
258
					InformationsRecherche informationsRecherche = new InformationsRecherche();
259
					informationsRecherche.setRechercheLibre(vue.getNomRetenu().getText());
260
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
261
					History.fireCurrentHistoryState();
262
				}
263
			});
264
 
265
			vue.getLienMilieu().addClickHandler(new ClickHandler() {
266
				@Override
267
				public void onClick(ClickEvent arg0) {
268
					InformationsRecherche informationsRecherche = new InformationsRecherche();
269
					informationsRecherche.setRechercheLibre(vue.getMilieu().getText());
270
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
271
					History.fireCurrentHistoryState();
272
				}
273
			});
274
 
275
			vue.getLienCommentaire().addClickHandler(new ClickHandler() {
276
				@Override
277
				public void onClick(ClickEvent arg0) {
278
					InformationsRecherche informationsRecherche = new InformationsRecherche();
279
					informationsRecherche.setRechercheLibre(vue.getCommentaire().getText());
280
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
281
					History.fireCurrentHistoryState();
282
				}
283
			});
1531 mathias 284
 
1342 gduche 285
			vue.setLienIdentiplante(this.observation.getId());
1282 aurelien 286
			vue.activerLiens();
287
 
1667 jpm 288
			if (observation.getIdAuteur().equals("0")) {
1282 aurelien 289
				vue.desactiverLienAuteur();
290
			}
291
		} else {
1531 mathias 292
			if (! observation.getIdAuteur().equals("0")) {
1282 aurelien 293
				vue.getLienAuteur().addClickHandler(new ClickHandler() {
294
					@Override
295
					public void onClick(ClickEvent event) {
296
						Config config = new Config();
1687 mathias 297
						Window.open(config.getUrl("profil") + observation.getIdAuteur(), "Consultation de l'annuaire", config.getInfo("popupOptions"));
1282 aurelien 298
					}
299
				});
300
 
301
				vue.activerLienAuteur();
302
			}
1531 mathias 303
 
304
			if (observation.getNumNomenclatural() != null && ! observation.getNumNomenclatural().equals("0") && ! observation.getNumNomenclatural().equals("")) {
305
				vue.activerLienNomRetenu();
306
				vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
307
					@Override
308
					public void onClick(ClickEvent arg0) {
309
						Config config = new Config();
310
						String efloreUrlFicheTpl = config.getUrl("efloreTaxon");
1830 aurelien 311
						String efloreUrlFiche = efloreUrlFicheTpl.replaceAll("referentiel-nn-num_nom", observation.getReferentiel()+"-nn-"+observation.getNumNomenclatural());
1687 mathias 312
						Window.open(efloreUrlFiche, "Fiche eflore", config.getInfo("popupOptions"));
1531 mathias 313
					}
314
				});
315
			}
1078 gduche 316
		}
1667 jpm 317
 
318
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
319
			@Override
320
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
321
				gererAffichageCourrielAuteur();
322
			}
323
		});
447 gduche 324
	}
1667 jpm 325
 
326
	public void gererAffichageCourrielAuteur() {
327
		GWT.log("Auteur courrriel :"+observation.getCourrielAuteur());
328
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
329
		if (utilisateur.etreAdmin()) {
330
			vue.getCourrielAuteur().setText(observation.getCourrielAuteur());
331
			vue.setCourrielAuteurHref(observation.getCourrielAuteur());
332
			vue.afficherCourrielAuteur();
333
		} else {
334
			vue.getCourrielAuteur().setText("");
335
			vue.setCourrielAuteurHref("");
336
			vue.cacherCourrielAuteur();
337
		}
338
	}
552 benjamin 339
 
340
	public void setInfosRechercheEnCacheEtLancerEvenement(InformationsRecherche informationsRecherche) {
341
		switch (modeRecherche) {
1667 jpm 342
			case MODE_IMAGE:
343
				CacheClient.getInstance().setPageCouranteRechercheImages(1);
344
				CacheClient.getInstance().setInformationsRechercheImage(informationsRecherche);
345
				BusEvenementiel.getInstance().fireEvent(new EvenementRechercheImage());
346
				break;
347
			case MODE_OBSERVATION:
348
				CacheClient.getInstance().setPageCouranteRechercheObservations(1);
349
				CacheClient.getInstance().setInformationsRechercheObservation(informationsRecherche);
350
				BusEvenementiel.getInstance().fireEvent(new EvenementRechercheObservation());
351
			default:
352
				break;
552 benjamin 353
		}
354
	}
447 gduche 355
}