Subversion Repositories eFlore/Applications.del

Rev

Rev 944 | Rev 958 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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