Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1792 Rev 1886
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
import java.util.HashMap;
4
import java.util.HashMap;
5
import java.util.Map;
5
import java.util.Map;
6
 
6
 
7
import org.tela_botanica.del.client.cache.CacheClient;
7
import org.tela_botanica.del.client.cache.CacheClient;
8
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxPresenteur;
8
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxPresenteur;
9
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxVue;
9
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxVue;
10
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
10
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
11
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul;
11
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul;
12
import org.tela_botanica.del.client.config.Config;
12
import org.tela_botanica.del.client.config.Config;
13
import org.tela_botanica.del.client.modeles.Contributeur;
13
import org.tela_botanica.del.client.modeles.Contributeur;
14
import org.tela_botanica.del.client.modeles.InterventionForum;
14
import org.tela_botanica.del.client.modeles.InterventionForum;
15
import org.tela_botanica.del.client.modeles.PropositionDetermination;
15
import org.tela_botanica.del.client.modeles.PropositionDetermination;
16
import org.tela_botanica.del.client.modeles.Utilisateur;
16
import org.tela_botanica.del.client.modeles.Utilisateur;
17
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
17
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
18
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
18
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
19
import org.tela_botanica.del.client.services.ReferentielService;
19
import org.tela_botanica.del.client.services.ReferentielService;
20
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
20
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
21
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
21
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
-
 
22
import org.tela_botanica.del.client.utils.InfosNomPourAutocompletion;
22
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService;
23
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService;
-
 
24
 
23
 
25
import com.google.gwt.core.client.GWT;
24
import com.google.gwt.event.dom.client.ClickEvent;
26
import com.google.gwt.event.dom.client.ClickEvent;
25
import com.google.gwt.event.dom.client.ClickHandler;
27
import com.google.gwt.event.dom.client.ClickHandler;
26
import com.google.gwt.event.dom.client.HasClickHandlers;
28
import com.google.gwt.event.dom.client.HasClickHandlers;
27
import com.google.gwt.http.client.Response;
29
import com.google.gwt.http.client.Response;
-
 
30
import com.google.gwt.user.client.Window;
28
import com.google.gwt.user.client.ui.HasText;
31
import com.google.gwt.user.client.ui.HasText;
29
import com.google.gwt.user.client.ui.HasWidgets;
32
import com.google.gwt.user.client.ui.HasWidgets;
30
import com.google.gwt.user.client.ui.IsWidget;
33
import com.google.gwt.user.client.ui.IsWidget;
31
 
34
 
32
public class FormulairePropositionPresenteur extends Presenteur {
35
public class FormulairePropositionPresenteur extends Presenteur {
33
 
36
 
34
	public interface Vue extends IsWidget {
37
	public interface Vue extends IsWidget {
35
		public HasText getObjetNom();
38
		public HasText getObjetNom();
36
 
39
 
37
		public HasText getObjetPrenom();
40
		public HasText getObjetPrenom();
38
 
41
 
39
		public HasWidgets getPropositionTaxon();
42
		public HasWidgets getPropositionTaxon();
40
 
43
 
41
		public HasText getCommentaires();
44
		public HasText getCommentaires();
42
 
45
 
43
		public HasClickHandlers getBoutonValidationProposition();
46
		public HasClickHandlers getBoutonValidationProposition();
44
 
47
 
45
		public void afficherNomPrenomEtDesactiver(String nom, String prenom);
48
		public void afficherNomPrenomEtDesactiver(String nom, String prenom);
46
 
49
 
47
		public String getCourriel();
50
		public String getCourriel();
48
 
51
 
49
		public void afficherEmailEtDesactiver(String courriel);
52
		public void afficherEmailEtDesactiver(String courriel);
50
 
53
 
51
		public String getNom();
54
		public String getNom();
52
 
55
 
53
		public String getPrenom();
56
		public String getPrenom();
54
 
57
 
55
		public void afficherStyleErreurNom(String styleErreur);
58
		public void afficherStyleErreurNom(String styleErreur);
56
 
59
 
57
		public void supprimerStyleErreurNom(String styleErreur);
60
		public void supprimerStyleErreurNom(String styleErreur);
58
 
61
 
59
		public void afficherStyleErreurPrenom(String styleErreur);
62
		public void afficherStyleErreurPrenom(String styleErreur);
60
 
63
 
61
		public void supprimerStyleErreurPrenom(String styleErreur);
64
		public void supprimerStyleErreurPrenom(String styleErreur);
62
		
65
		
63
		public void afficherPropositionDejaEffectuée(String taxon);
66
		public void afficherPropositionDejaEffectuée(String taxon);
64
 
67
 
65
		public HasText getObjetCourriel();
68
		public HasText getObjetCourriel();
66
		
69
		
67
		public void setReferentiel(String referentiel);
70
		public void setReferentiel(String referentiel);
68
		
71
		
69
		public String getReferentiel();
72
		public String getReferentiel();
70
 
73
 
71
		public void afficherStyleErreurCourriel(String styleErreur);
74
		public void afficherStyleErreurCourriel(String styleErreur);
72
 
75
 
73
		void supprimerStyleErreurCourriel(String styleErreur);
76
		void supprimerStyleErreurCourriel(String styleErreur);
74
 
77
 
75
		void remplirListeReferentiels(Map<String, String> listeReferentiels);
78
		void remplirListeReferentiels(Map<String, String> listeReferentiels);
76
	}
79
	}
77
 
80
 
78
	private Vue vue;
81
	private Vue vue;
79
	private Config config;
82
	private Config config;
80
	private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
83
	private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
81
	private PropositionDeterminationService propositionDeterminationService;
84
	private PropositionDeterminationService propositionDeterminationService;
82
	
85
	
83
	private Map<String, String> cacheTaxons = new HashMap<String, String>();
86
	private Map<String, InfosNomPourAutocompletion> cacheTaxons = new HashMap<String, InfosNomPourAutocompletion>();
84
 
87
 
85
	public FormulairePropositionPresenteur(Vue vue, PropositionDeterminationService propositionDeterminationService) {
88
	public FormulairePropositionPresenteur(Vue vue, PropositionDeterminationService propositionDeterminationService) {
86
		this.vue = vue;
89
		this.vue = vue;
87
		this.propositionDeterminationService=propositionDeterminationService;
90
		this.propositionDeterminationService=propositionDeterminationService;
88
		config = new Config();
91
		config = new Config();
89
		creerCompletionTaxons();
92
		creerCompletionTaxons();
90
		remplirAvecInfosUtilisateur();
93
		remplirAvecInfosUtilisateur();
91
	}
94
	}
92
 
95
 
93
	private void remplirAvecInfosUtilisateur() {
96
	private void remplirAvecInfosUtilisateur() {
94
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
97
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
95
		if (utilisateur.estIdentifie()) {
98
		if (utilisateur.estIdentifie()) {
96
			vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom());
99
			vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom());
97
			vue.afficherEmailEtDesactiver(utilisateur.getCourriel());
100
			vue.afficherEmailEtDesactiver(utilisateur.getCourriel());
98
		}
101
		}
99
	}
102
	}
100
 
103
 
101
	private void creerCompletionTaxons() {
104
	private void creerCompletionTaxons() {
102
		String url = this.config.getServiceBaseUrl() + "nomstaxons";
105
		String url = this.config.getServiceBaseUrl() + "nomstaxons";
103
		vue.remplirListeReferentiels(ReferentielService.getReferentiels());
106
		vue.remplirListeReferentiels(ReferentielService.getReferentiels());
104
		final String referentiel = CacheClient.getInstance().getObservationCourante().getReferentiel();
107
		final String referentiel = CacheClient.getInstance().getObservationCourante().getReferentiel();
105
		String referentielPredefini = referentiel.substring(0, 5);
108
		String referentielPredefini = referentiel.substring(0, 5);
106
		if (referentielPredefini.equals("autre") || referentielPredefini.equals("")) {
109
		if (referentielPredefini.equals("autre") || referentielPredefini.equals("")) {
107
			referentielPredefini = "bdtfx"; // évite de saisir des noms latins en dur et de perdre le nn
110
			referentielPredefini = "bdtfx"; // évite de saisir des noms latins en dur et de perdre le nn
108
		}
111
		}
109
		vue.setReferentiel(referentielPredefini);
112
		vue.setReferentiel(referentielPredefini);
110
		autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
113
		autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
111
			protected String effectuerPreTraitementChaineRequete(String requete) {		
114
			protected String effectuerPreTraitementChaineRequete(String requete) {		
112
				// si aucun référentiel selectionné, pas de requete
115
				// si aucun référentiel selectionné, pas de requete
113
				if(vue.getReferentiel() != null && !vue.getReferentiel().equals("") && !vue.getReferentiel().equals("tous")) {
116
				if(vue.getReferentiel() != null && !vue.getReferentiel().equals("") && !vue.getReferentiel().equals("tous")) {
114
					requete = "?masque.nom=" + requete + "&masque.referentiel=" + vue.getReferentiel().substring(0, 5);
117
					requete = "?masque.nom=" + requete + "&masque.referentiel=" + vue.getReferentiel().substring(0, 5);
115
					return requete;
118
					return requete;
116
				} else {
119
				} else {
117
					return null;
120
					return null;
118
				}
121
				}
119
			}
122
			}
120
 
123
 
121
			@Override
124
			@Override
122
			protected String[] parserResultatRequete(Response response) {
125
			protected InfosNomPourAutocompletion[] parserResultatRequete(Response response) {
123
				cacheTaxons = UtilitairesAutoCompletionService.extraireTaxonsNumNomsResultatRetourSimple(response);
126
				cacheTaxons = UtilitairesAutoCompletionService.extraireTaxonsNumNomsResultatRetourSimple(response);
124
				return UtilitairesAutoCompletionService.parserResultatRetourSimple(response);
127
				return UtilitairesAutoCompletionService.parserResultatRetourSimple(response);
125
			}
128
			}
126
		};
129
		};
127
	}
130
	}
128
 
131
 
129
	public void go(HasWidgets composite) {
132
	public void go(HasWidgets composite) {
130
		autoCompletionNomTaxonsPresenteur.go(vue.getPropositionTaxon());
133
		autoCompletionNomTaxonsPresenteur.go(vue.getPropositionTaxon());
131
		composite.add(vue.asWidget());
134
		composite.add(vue.asWidget());
132
		gererEvenements();
135
		gererEvenements();
133
	}
136
	}
134
 
137
 
135
	protected void gererEvenements() {
138
	protected void gererEvenements() {
136
		vue.getBoutonValidationProposition().addClickHandler(new ClickHandler() {
139
		vue.getBoutonValidationProposition().addClickHandler(new ClickHandler() {
137
			@Override
140
			@Override
138
			public void onClick(ClickEvent event) {
141
			public void onClick(ClickEvent event) {
139
 
142
 
140
				if (!validerSaisieProposition()) {
143
				if (!validerSaisieProposition()) {
141
					return;
144
					return;
142
				} else {
145
				} else {
143
					final PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
146
					final PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
144
					if(verifierPropositionDejaAjoutee(propositionAjoutee)){
147
					if(verifierPropositionDejaAjoutee(propositionAjoutee)){
145
						BusEvenementiel.getInstance().fireEvent(new EvenementAjoutDetermination(propositionAjoutee));
148
						BusEvenementiel.getInstance().fireEvent(new EvenementAjoutDetermination(propositionAjoutee));
146
						vue.afficherPropositionDejaEffectuée(propositionAjoutee.getEspece());
149
						vue.afficherPropositionDejaEffectuée(propositionAjoutee.getEspece());
147
						return;
150
						return;
148
					}
151
					}
149
 
152
 
150
					propositionDeterminationService.ajouterProposition(propositionAjoutee, new PropositionDeterminationCallBack() {
153
					propositionDeterminationService.ajouterProposition(propositionAjoutee, new PropositionDeterminationCallBack() {
151
 
154
 
152
						@Override
155
						@Override
153
						public void surRetour(String idNouvelleProposition) {
156
						public void surRetour(String idNouvelleProposition) {
154
							propositionAjoutee.setId(idNouvelleProposition);
157
							propositionAjoutee.setId(idNouvelleProposition);
155
							CacheClient.getInstance().getObservationCourante().ajouterPropositionDetermination(propositionAjoutee);
158
							CacheClient.getInstance().getObservationCourante().ajouterPropositionDetermination(propositionAjoutee);
156
							EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee);
159
							EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee);
157
							BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
160
							BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
158
						}
161
						}
159
 
162
 
160
					});
163
					});
161
				}
164
				}
162
			}
165
			}
163
		});
166
		});
164
	}
167
	}
165
 
168
 
166
	private boolean verifierPropositionDejaAjoutee(PropositionDetermination propositionDetermination){
169
	private boolean verifierPropositionDejaAjoutee(PropositionDetermination propositionDetermination){
167
		for(InterventionForum interventionForum: CacheClient.getInstance().getObservationCourante().getInterventionsForum()){
170
		for(InterventionForum interventionForum: CacheClient.getInstance().getObservationCourante().getInterventionsForum()){
168
			if(interventionForum instanceof PropositionDetermination){
171
			if(interventionForum instanceof PropositionDetermination){
169
				if(((PropositionDetermination)interventionForum).getEspece().equals(propositionDetermination.getEspece())){
172
				if(((PropositionDetermination)interventionForum).getEspece().equals(propositionDetermination.getEspece())){
170
					return true;
173
					return true;
171
				}
174
				}
172
			}
175
			}
173
		}
176
		}
174
		return false;
177
		return false;
175
	}
178
	}
176
	
179
	
177
	private boolean validerSaisieProposition() {
180
	private boolean validerSaisieProposition() {
178
 
181
 
179
		ValidateurChampTexteNonNul validateurNom = new ValidateurChampTexteNonNul(vue.getObjetNom()) {
182
		ValidateurChampTexteNonNul validateurNom = new ValidateurChampTexteNonNul(vue.getObjetNom()) {
180
			@Override
183
			@Override
181
			public void afficherStyleErreur(String styleErreur) {
184
			public void afficherStyleErreur(String styleErreur) {
182
				vue.afficherStyleErreurNom(styleErreur);
185
				vue.afficherStyleErreurNom(styleErreur);
183
			}
186
			}
184
 
187
 
185
			@Override
188
			@Override
186
			public void supprimerStyleErreur(String styleErreur) {
189
			public void supprimerStyleErreur(String styleErreur) {
187
				vue.supprimerStyleErreurNom(styleErreur);
190
				vue.supprimerStyleErreurNom(styleErreur);
188
			}
191
			}
189
		};
192
		};
190
 
193
 
191
		ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getObjetPrenom()) {
194
		ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getObjetPrenom()) {
192
			@Override
195
			@Override
193
			public void afficherStyleErreur(String styleErreur) {
196
			public void afficherStyleErreur(String styleErreur) {
194
				vue.afficherStyleErreurPrenom(styleErreur);
197
				vue.afficherStyleErreurPrenom(styleErreur);
195
			}
198
			}
196
 
199
 
197
			@Override
200
			@Override
198
			public void supprimerStyleErreur(String styleErreur) {
201
			public void supprimerStyleErreur(String styleErreur) {
199
				vue.supprimerStyleErreurPrenom(styleErreur);
202
				vue.supprimerStyleErreurPrenom(styleErreur);
200
			}
203
			}
201
		};
204
		};
202
		
205
		
203
		ValidateurChampTexteNonNul validateurCourriel = new ValidateurChampTexteNonNul(vue.getObjetCourriel()) {
206
		ValidateurChampTexteNonNul validateurCourriel = new ValidateurChampTexteNonNul(vue.getObjetCourriel()) {
204
			@Override
207
			@Override
205
			public void afficherStyleErreur(String styleErreur) {
208
			public void afficherStyleErreur(String styleErreur) {
206
				vue.afficherStyleErreurCourriel(styleErreur);
209
				vue.afficherStyleErreurCourriel(styleErreur);
207
			}
210
			}
208
 
211
 
209
			@Override
212
			@Override
210
			public void supprimerStyleErreur(String styleErreur) {
213
			public void supprimerStyleErreur(String styleErreur) {
211
				vue.supprimerStyleErreurCourriel(styleErreur);
214
				vue.supprimerStyleErreurCourriel(styleErreur);
212
			}
215
			}
213
		};
216
		};
214
 
217
 
215
		ValidateurChampTexteNonNul validateurTaxon = new ValidateurChampTexteNonNul(autoCompletionNomTaxonsPresenteur.getAutoCompletionComboBoxVue().getSuggestBox()) {
218
		ValidateurChampTexteNonNul validateurTaxon = new ValidateurChampTexteNonNul(autoCompletionNomTaxonsPresenteur.getAutoCompletionComboBoxVue().getSuggestBox()) {
216
			@Override
219
			@Override
217
			public void afficherStyleErreur(String styleErreur) {
220
			public void afficherStyleErreur(String styleErreur) {
218
				autoCompletionNomTaxonsPresenteur.afficherStyleErreur(styleErreur);
221
				autoCompletionNomTaxonsPresenteur.afficherStyleErreur(styleErreur);
219
			}
222
			}
220
 
223
 
221
			@Override
224
			@Override
222
			public void supprimerStyleErreur(String styleErreur) {
225
			public void supprimerStyleErreur(String styleErreur) {
223
				autoCompletionNomTaxonsPresenteur.supprimerStyleErreur(styleErreur);
226
				autoCompletionNomTaxonsPresenteur.supprimerStyleErreur(styleErreur);
224
			}
227
			}
225
		};
228
		};
226
 
229
 
227
		boolean nomSaisi = validateurNom.valider();
230
		boolean nomSaisi = validateurNom.valider();
228
		boolean prenomSaisi = validateurPrenom.valider();
231
		boolean prenomSaisi = validateurPrenom.valider();
229
		boolean courrielSaisi = validateurCourriel.valider();
232
		boolean courrielSaisi = validateurCourriel.valider();
230
		boolean taxonSaisi = validateurTaxon.valider();
233
		boolean taxonSaisi = validateurTaxon.valider();
231
 
234
 
232
		return nomSaisi && prenomSaisi && courrielSaisi && taxonSaisi;
235
		return nomSaisi && prenomSaisi && courrielSaisi && taxonSaisi;
233
	}
236
	}
234
 
237
 
235
	private PropositionDetermination collecterValeursSaisieProposition() {
238
	private PropositionDetermination collecterValeursSaisieProposition() {
236
		PropositionDetermination propositionAjoutee = new PropositionDetermination(CacheClient.getInstance().getObservationCourante());
239
		PropositionDetermination propositionAjoutee = new PropositionDetermination(CacheClient.getInstance().getObservationCourante());
237
		propositionAjoutee.setId(CacheClient.getInstance().getObservationCourante().getId());
240
		propositionAjoutee.setId(CacheClient.getInstance().getObservationCourante().getId());
238
 
241
 
239
		String idUtilisateur = null;
242
		String idUtilisateur = null;
240
		if (CacheClient.getInstance().getUtilisateur().estIdentifie()) {
243
		if (CacheClient.getInstance().getUtilisateur().estIdentifie()) {
241
			idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
244
			idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
242
		}
245
		}
243
 
246
 
244
		Contributeur contributeur = new Contributeur(idUtilisateur, vue.getNom(), vue.getPrenom(), vue.getCourriel());
247
		Contributeur contributeur = new Contributeur(idUtilisateur, vue.getNom(), vue.getPrenom(), vue.getCourriel());
245
		propositionAjoutee.setContributeur(contributeur);
248
		propositionAjoutee.setContributeur(contributeur);
246
		propositionAjoutee.setDate(new Date());
249
		propositionAjoutee.setDate(new Date());
247
		
250
		
248
		String nomTaxon = autoCompletionNomTaxonsPresenteur.getValeur();
251
		String nomTaxon = autoCompletionNomTaxonsPresenteur.getValeur();
249
		propositionAjoutee.setEspece(nomTaxon);
252
		propositionAjoutee.setEspece(nomTaxon);
250
		if(cacheTaxons.containsKey(nomTaxon)) {
253
		if(cacheTaxons.containsKey(nomTaxon)) {
251
			propositionAjoutee.setNumNomenclatural(cacheTaxons.get(nomTaxon));
254
			propositionAjoutee.setNumNomenclatural("" + cacheTaxons.get(nomTaxon).getNn());
252
		}
255
		}
253
		
256
		
254
		if(vue.getReferentiel() != "tous") {
257
		if(vue.getReferentiel() != "tous") {
255
			propositionAjoutee.setReferentiel(vue.getReferentiel());
258
			propositionAjoutee.setReferentiel(vue.getReferentiel());
256
		}
259
		}
257
		
260
		
258
		if (vue.getCommentaires().getText() != "") {
261
		if (vue.getCommentaires().getText() != "") {
259
			String contenuCommentaire = vue.getCommentaires().getText();
262
			String contenuCommentaire = vue.getCommentaires().getText();
260
			propositionAjoutee.setCommentaire(contenuCommentaire);
263
			propositionAjoutee.setCommentaire(contenuCommentaire);
261
		}
264
		}
262
 
265
 
263
		return propositionAjoutee;
266
		return propositionAjoutee;
264
	}
267
	}
265
}
268
}