Subversion Repositories eFlore/Applications.del

Rev

Rev 887 | Rev 930 | Go to most recent revision | Details | Compare with Previous | 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;
690 gduche 13
import org.tela_botanica.del.client.modeles.Contributeur;
602 aurelien 14
import org.tela_botanica.del.client.modeles.PropositionDetermination;
690 gduche 15
import org.tela_botanica.del.client.modeles.Utilisateur;
602 aurelien 16
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
17
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
887 aurelien 18
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
19
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
20
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
21
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack.ModeRequete;
602 aurelien 22
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService;
23
 
24
import com.google.gwt.event.dom.client.ClickEvent;
25
import com.google.gwt.event.dom.client.ClickHandler;
26
import com.google.gwt.event.dom.client.HasClickHandlers;
27
import com.google.gwt.http.client.Response;
887 aurelien 28
import com.google.gwt.user.client.Window;
602 aurelien 29
import com.google.gwt.user.client.ui.HasText;
30
import com.google.gwt.user.client.ui.HasWidgets;
31
import com.google.gwt.user.client.ui.IsWidget;
32
 
33
public class FormulairePropositionPresenteur extends Presenteur {
34
 
35
	public interface Vue extends IsWidget {
690 gduche 36
		public HasText getObjetNom();
37
		public HasText getObjetPrenom();
602 aurelien 38
		public HasWidgets getPropositionTaxon();
39
		public HasText getCommentaires();
40
		public HasClickHandlers getBoutonValidationProposition();
690 gduche 41
		public void afficherNomPrenomEtDesactiver(String nom, String prenom);
42
		public String getCourriel();
683 gduche 43
		public void afficherEmailEtDesactiver(String courriel);
690 gduche 44
		public String getNom();
45
		public String getPrenom();
46
		public void afficherStyleErreurNom(String styleErreur);
47
		public void supprimerStyleErreurNom(String styleErreur);
48
		public void afficherStyleErreurPrenom(String styleErreur);
49
		public void supprimerStyleErreurPrenom(String styleErreur);
602 aurelien 50
	}
51
 
52
	private Vue vue;
53
	private Config config;
54
	private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
887 aurelien 55
	private PropositionDeterminationService propositionDeterminationService = new PropositionDeterminationServiceConcret();
602 aurelien 56
 
57
	public FormulairePropositionPresenteur(Vue vue) {
58
		this.vue = vue;
59
		config = new Config();
60
		creerCompletionTaxons();
61
		remplirAvecInfosUtilisateur();
62
	}
63
 
64
	private void remplirAvecInfosUtilisateur() {
690 gduche 65
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
66
		if(utilisateur.estIdentifie()) {
67
			vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom());
68
			vue.afficherEmailEtDesactiver(utilisateur.getCourriel());
602 aurelien 69
		}
70
	}
71
 
72
	private void creerCompletionTaxons() {
73
		String url = this.config.getUrl("nomSciCompletionService");
74
		autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
75
			protected String effectuerPreTraitementChaineRequete(String requete) {
76
				return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);
77
			}
78
 
79
			@Override
80
			protected String[] parserResultatRequete(Response response) {
81
				return UtilitairesAutoCompletionService.parserRetourSimple(response);
82
			}
83
		};
84
	}
85
 
86
	public void go(HasWidgets composite) {
87
		autoCompletionNomTaxonsPresenteur.go(vue.getPropositionTaxon());
88
		composite.add(vue.asWidget());
89
		gererEvenements();
90
	}
91
 
92
	protected void gererEvenements() {
93
		vue.getBoutonValidationProposition().addClickHandler(new ClickHandler() {
94
			@Override
95
			public void onClick(ClickEvent event) {
96
 
97
				if (!validerSaisieProposition()) {
98
					return;
99
				} else {
887 aurelien 100
					final PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
101
					propositionDeterminationService.ajouterProposition(propositionAjoutee, new PropositionDeterminationCallBack(ModeRequete.AJOUT) {
102
 
103
						@Override
104
						public void surRetour(String messageRetour) {
105
							propositionAjoutee.setId(messageRetour);
106
							CacheClient.getInstance().getObservationCourante().ajouterPropositionDetermination(propositionAjoutee);
107
							EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee);
108
							BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
109
						}
110
 
111
						@Override
112
						public void surErreur(String messageErreur) {
113
							Window.alert(messageErreur);
114
						}
115
					});
602 aurelien 116
				}
117
			}
118
		});
119
	}
120
 
121
	private boolean validerSaisieProposition() {
122
 
690 gduche 123
		ValidateurChampTexteNonNul validateurNom = new ValidateurChampTexteNonNul(vue.getObjetNom()) {
602 aurelien 124
			@Override
125
			public void afficherStyleErreur(String styleErreur) {
690 gduche 126
				vue.afficherStyleErreurNom(styleErreur);
602 aurelien 127
			}
128
 
129
			@Override
130
			public void supprimerStyleErreur(String styleErreur) {
690 gduche 131
				vue.supprimerStyleErreurNom(styleErreur);
602 aurelien 132
			}
133
		};
690 gduche 134
 
135
		ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getObjetPrenom()) {
136
			@Override
137
			public void afficherStyleErreur(String styleErreur) {
138
				vue.afficherStyleErreurPrenom(styleErreur);
139
			}
140
 
141
			@Override
142
			public void supprimerStyleErreur(String styleErreur) {
143
				vue.supprimerStyleErreurPrenom(styleErreur);
144
			}
145
		};
146
 
147
		boolean nomSaisi = validateurNom.valider();
148
		boolean prenomSaisi = validateurPrenom.valider();
602 aurelien 149
 
690 gduche 150
		return nomSaisi && prenomSaisi;
602 aurelien 151
	}
152
 
153
	private PropositionDetermination collecterValeursSaisieProposition() {
851 aurelien 154
		PropositionDetermination propositionAjoutee = new PropositionDetermination(CacheClient.getInstance().getObservationCourante());
155
		propositionAjoutee.setId(CacheClient.getInstance().getObservationCourante().getId());
882 aurelien 156
 
157
		String idUtilisateur = null;
158
		if(CacheClient.getInstance().getUtilisateur().estIdentifie()) {
159
			idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
160
		}
602 aurelien 161
 
882 aurelien 162
		Contributeur contributeur = new Contributeur(idUtilisateur, vue.getNom(), vue.getPrenom(), vue.getCourriel());
690 gduche 163
		propositionAjoutee.setContributeur(contributeur);
164
		propositionAjoutee.setDate(new Date());
165
		propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur());
166
 
602 aurelien 167
		if (vue.getCommentaires().getText() != "") {
168
			String contenuCommentaire = vue.getCommentaires().getText();
896 aurelien 169
			propositionAjoutee.setCommentaire(contenuCommentaire);
602 aurelien 170
		}
171
 
172
		return propositionAjoutee;
173
	}
174
}