Subversion Repositories eFlore/Applications.del

Rev

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