Subversion Repositories eFlore/Applications.del

Rev

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

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