Subversion Repositories eFlore/Applications.del

Rev

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