Subversion Repositories eFlore/Applications.del

Rev

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

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