Subversion Repositories eFlore/Applications.del

Rev

Rev 683 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
602 aurelien 1
package org.tela_botanica.del.client.composants.formulaires.formulaireproposition;
2
 
3
import java.util.Date;
4
 
5
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxPresenteur;
7
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxVue;
8
 
9
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
10
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul;
11
import org.tela_botanica.del.client.config.Config;
12
import org.tela_botanica.del.client.modeles.Commentaire;
13
import org.tela_botanica.del.client.modeles.PropositionDetermination;
14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
15
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
16
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService;
17
 
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;
21
import com.google.gwt.http.client.Response;
22
import com.google.gwt.user.client.ui.HasText;
23
import com.google.gwt.user.client.ui.HasWidgets;
24
import com.google.gwt.user.client.ui.IsWidget;
25
 
26
public class FormulairePropositionPresenteur extends Presenteur {
27
 
28
	public interface Vue extends IsWidget {
29
		public HasText getNomPrenom();
30
		public HasWidgets getPropositionTaxon();
31
		public HasText getCommentaires();
32
		public HasClickHandlers getBoutonValidationProposition();
33
		public void afficherStyleErreur(String styleErreur);
34
		public void supprimerStyleErreur(String styleErreur);
35
		public void afficherNomPrenomEtDesactiver(String nomPrenomFormate);
36
	}
37
 
38
	private Vue vue;
39
	private Config config;
40
	private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
41
 
42
	public FormulairePropositionPresenteur(Vue vue) {
43
		this.vue = vue;
44
		config = new Config();
45
		creerCompletionTaxons();
46
		remplirAvecInfosUtilisateur();
47
	}
48
 
49
	private void remplirAvecInfosUtilisateur() {
50
		if(CacheClient.getInstance().getUtilisateur().estIdentifie()) {
51
			vue.afficherNomPrenomEtDesactiver(CacheClient.getInstance().getUtilisateur().getNomPrenomFormate());
52
		}
53
	}
54
 
55
	private void creerCompletionTaxons() {
56
		String url = this.config.getUrl("nomSciCompletionService");
57
		autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
58
			protected String effectuerPreTraitementChaineRequete(String requete) {
59
				return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);
60
			}
61
 
62
			@Override
63
			protected String[] parserResultatRequete(Response response) {
64
				return UtilitairesAutoCompletionService.parserRetourSimple(response);
65
			}
66
		};
67
	}
68
 
69
	public void go(HasWidgets composite) {
70
		autoCompletionNomTaxonsPresenteur.go(vue.getPropositionTaxon());
71
		composite.add(vue.asWidget());
72
		gererEvenements();
73
	}
74
 
75
	protected void gererEvenements() {
76
		vue.getBoutonValidationProposition().addClickHandler(new ClickHandler() {
77
			@Override
78
			public void onClick(ClickEvent event) {
79
 
80
				if (!validerSaisieProposition()) {
81
					return;
82
				} else {
83
					PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
84
					CacheClient.getInstance().getObservationCourante().ajouterPropositionDetermination(propositionAjoutee);
85
 
86
					EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee);
87
					BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
88
				}
89
			}
90
		});
91
	}
92
 
93
	private boolean validerSaisieProposition() {
94
 
95
		ValidateurChampTexteNonNul validateurTaxon = new ValidateurChampTexteNonNul(vue.getNomPrenom()) {
96
			@Override
97
			public void afficherStyleErreur(String styleErreur) {
98
				vue.afficherStyleErreur(styleErreur);
99
			}
100
 
101
			@Override
102
			public void supprimerStyleErreur(String styleErreur) {
103
				vue.supprimerStyleErreur(styleErreur);
104
			}
105
		};
106
		boolean taxonSaisi = validateurTaxon.valider();
107
 
108
		return taxonSaisi;
109
	}
110
 
111
	private PropositionDetermination collecterValeursSaisieProposition() {
112
		PropositionDetermination propositionAjoutee = new PropositionDetermination();
113
		propositionAjoutee.setId(CacheClient.getInstance().getImageCourante().getIdImage());
114
 
115
		String auteur = vue.getNomPrenom().getText();
116
		if (vue.getCommentaires().getText() != "") {
117
			String contenuCommentaire = vue.getCommentaires().getText();
118
			Commentaire comm = new Commentaire(auteur, new Date(), contenuCommentaire);
119
			propositionAjoutee.ajouterCommentaire(comm);
120
		}
121
		propositionAjoutee.setContributeur(auteur);
122
		propositionAjoutee.setDate(new Date());
123
 
124
		propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur());
125
 
126
		return propositionAjoutee;
127
	}
128
}