Subversion Repositories eFlore/Applications.del

Rev

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

Rev 970 Rev 1037
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.PropositionDetermination;
13
import org.tela_botanica.del.client.modeles.PropositionDetermination;
13
import org.tela_botanica.del.client.modeles.Utilisateur;
14
import org.tela_botanica.del.client.modeles.Utilisateur;
14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
15
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
15
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
16
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
16
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
17
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
17
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
18
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
18
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService;
19
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService;
19
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
-
 
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
		
-
 
60
		public void afficherPropositionDejaEffectuée(String taxon);
59
	}
61
	}
60
 
62
 
61
	private Vue vue;
63
	private Vue vue;
62
	private Config config;
64
	private Config config;
63
	private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
65
	private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
64
	private PropositionDeterminationService propositionDeterminationService;
66
	private PropositionDeterminationService propositionDeterminationService;
65
 
67
 
66
	public FormulairePropositionPresenteur(Vue vue, PropositionDeterminationService propositionDeterminationService) {
68
	public FormulairePropositionPresenteur(Vue vue, PropositionDeterminationService propositionDeterminationService) {
67
		this.vue = vue;
69
		this.vue = vue;
68
		this.propositionDeterminationService=propositionDeterminationService;
70
		this.propositionDeterminationService=propositionDeterminationService;
69
		config = new Config();
71
		config = new Config();
70
		creerCompletionTaxons();
72
		creerCompletionTaxons();
71
		remplirAvecInfosUtilisateur();
73
		remplirAvecInfosUtilisateur();
72
	}
74
	}
73
 
75
 
74
	private void remplirAvecInfosUtilisateur() {
76
	private void remplirAvecInfosUtilisateur() {
75
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
77
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
76
		if (utilisateur.estIdentifie()) {
78
		if (utilisateur.estIdentifie()) {
77
			vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom());
79
			vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom());
78
			vue.afficherEmailEtDesactiver(utilisateur.getCourriel());
80
			vue.afficherEmailEtDesactiver(utilisateur.getCourriel());
79
		}
81
		}
80
	}
82
	}
81
 
83
 
82
	private void creerCompletionTaxons() {
84
	private void creerCompletionTaxons() {
83
		String url = this.config.getServiceBaseUrl() + "nomstaxons";
85
		String url = this.config.getServiceBaseUrl() + "nomstaxons";
84
		autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
86
		autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
85
			protected String effectuerPreTraitementChaineRequete(String requete) {
87
			protected String effectuerPreTraitementChaineRequete(String requete) {
86
				requete = "?masque.nom=" + requete;
88
				requete = "?masque.nom=" + requete;
87
				return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);
89
				return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);
88
			}
90
			}
89
 
91
 
90
			@Override
92
			@Override
91
			protected String[] parserResultatRequete(Response response) {
93
			protected String[] parserResultatRequete(Response response) {
92
				return UtilitairesAutoCompletionService.parserResultatRetourSimple(response);
94
				return UtilitairesAutoCompletionService.parserResultatRetourSimple(response);
93
			}
95
			}
94
		};
96
		};
95
	}
97
	}
96
 
98
 
97
	public void go(HasWidgets composite) {
99
	public void go(HasWidgets composite) {
98
		autoCompletionNomTaxonsPresenteur.go(vue.getPropositionTaxon());
100
		autoCompletionNomTaxonsPresenteur.go(vue.getPropositionTaxon());
99
		composite.add(vue.asWidget());
101
		composite.add(vue.asWidget());
100
		gererEvenements();
102
		gererEvenements();
101
	}
103
	}
102
 
104
 
103
	protected void gererEvenements() {
105
	protected void gererEvenements() {
104
		vue.getBoutonValidationProposition().addClickHandler(new ClickHandler() {
106
		vue.getBoutonValidationProposition().addClickHandler(new ClickHandler() {
105
			@Override
107
			@Override
106
			public void onClick(ClickEvent event) {
108
			public void onClick(ClickEvent event) {
107
 
109
 
108
				if (!validerSaisieProposition()) {
110
				if (!validerSaisieProposition()) {
109
					return;
111
					return;
110
				} else {
112
				} else {
111
					final PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
113
					final PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
-
 
114
					if(verifierPropositionDejaAjoutee(propositionAjoutee)){
-
 
115
						BusEvenementiel.getInstance().fireEvent(new EvenementAjoutDetermination(propositionAjoutee));
-
 
116
						vue.afficherPropositionDejaEffectuée(propositionAjoutee.getEspece());
-
 
117
						return;
-
 
118
					}
-
 
119
 
112
					propositionDeterminationService.ajouterProposition(propositionAjoutee, new PropositionDeterminationCallBack() {
120
					propositionDeterminationService.ajouterProposition(propositionAjoutee, new PropositionDeterminationCallBack() {
113
 
121
 
114
						@Override
122
						@Override
115
						public void surRetour(String idNouvelleProposition) {
123
						public void surRetour(String idNouvelleProposition) {
116
							propositionAjoutee.setId(idNouvelleProposition);
124
							propositionAjoutee.setId(idNouvelleProposition);
117
							CacheClient.getInstance().getObservationCourante().ajouterPropositionDetermination(propositionAjoutee);
125
							CacheClient.getInstance().getObservationCourante().ajouterPropositionDetermination(propositionAjoutee);
118
							EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee);
126
							EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee);
119
							BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
127
							BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
120
						}
128
						}
121
 
129
 
122
					});
130
					});
123
				}
131
				}
124
			}
132
			}
125
		});
133
		});
126
	}
134
	}
-
 
135
 
-
 
136
	private boolean verifierPropositionDejaAjoutee(PropositionDetermination propositionDetermination){
-
 
137
		for(InterventionForum interventionForum: CacheClient.getInstance().getObservationCourante().getInterventionsForum()){
-
 
138
			if(interventionForum instanceof PropositionDetermination){
-
 
139
				if(((PropositionDetermination)interventionForum).getEspece().equals(propositionDetermination.getEspece())){
-
 
140
					return true;
-
 
141
				}
-
 
142
			}
-
 
143
		}
-
 
144
		return false;
-
 
145
	}
127
 
146
	
128
	private boolean validerSaisieProposition() {
147
	private boolean validerSaisieProposition() {
129
 
148
 
130
		ValidateurChampTexteNonNul validateurNom = new ValidateurChampTexteNonNul(vue.getObjetNom()) {
149
		ValidateurChampTexteNonNul validateurNom = new ValidateurChampTexteNonNul(vue.getObjetNom()) {
131
			@Override
150
			@Override
132
			public void afficherStyleErreur(String styleErreur) {
151
			public void afficherStyleErreur(String styleErreur) {
133
				vue.afficherStyleErreurNom(styleErreur);
152
				vue.afficherStyleErreurNom(styleErreur);
134
			}
153
			}
135
 
154
 
136
			@Override
155
			@Override
137
			public void supprimerStyleErreur(String styleErreur) {
156
			public void supprimerStyleErreur(String styleErreur) {
138
				vue.supprimerStyleErreurNom(styleErreur);
157
				vue.supprimerStyleErreurNom(styleErreur);
139
			}
158
			}
140
		};
159
		};
141
 
160
 
142
		ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getObjetPrenom()) {
161
		ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getObjetPrenom()) {
143
			@Override
162
			@Override
144
			public void afficherStyleErreur(String styleErreur) {
163
			public void afficherStyleErreur(String styleErreur) {
145
				vue.afficherStyleErreurPrenom(styleErreur);
164
				vue.afficherStyleErreurPrenom(styleErreur);
146
			}
165
			}
147
 
166
 
148
			@Override
167
			@Override
149
			public void supprimerStyleErreur(String styleErreur) {
168
			public void supprimerStyleErreur(String styleErreur) {
150
				vue.supprimerStyleErreurPrenom(styleErreur);
169
				vue.supprimerStyleErreurPrenom(styleErreur);
151
			}
170
			}
152
		};
171
		};
153
 
172
 
154
		boolean nomSaisi = validateurNom.valider();
173
		boolean nomSaisi = validateurNom.valider();
155
		boolean prenomSaisi = validateurPrenom.valider();
174
		boolean prenomSaisi = validateurPrenom.valider();
156
 
175
 
157
		return nomSaisi && prenomSaisi;
176
		return nomSaisi && prenomSaisi;
158
	}
177
	}
159
 
178
 
160
	private PropositionDetermination collecterValeursSaisieProposition() {
179
	private PropositionDetermination collecterValeursSaisieProposition() {
161
		PropositionDetermination propositionAjoutee = new PropositionDetermination(CacheClient.getInstance().getObservationCourante());
180
		PropositionDetermination propositionAjoutee = new PropositionDetermination(CacheClient.getInstance().getObservationCourante());
162
		propositionAjoutee.setId(CacheClient.getInstance().getObservationCourante().getId());
181
		propositionAjoutee.setId(CacheClient.getInstance().getObservationCourante().getId());
163
 
182
 
164
		String idUtilisateur = null;
183
		String idUtilisateur = null;
165
		if (CacheClient.getInstance().getUtilisateur().estIdentifie()) {
184
		if (CacheClient.getInstance().getUtilisateur().estIdentifie()) {
166
			idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
185
			idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
167
		}
186
		}
168
 
187
 
169
		Contributeur contributeur = new Contributeur(idUtilisateur, vue.getNom(), vue.getPrenom(), vue.getCourriel());
188
		Contributeur contributeur = new Contributeur(idUtilisateur, vue.getNom(), vue.getPrenom(), vue.getCourriel());
170
		propositionAjoutee.setContributeur(contributeur);
189
		propositionAjoutee.setContributeur(contributeur);
171
		propositionAjoutee.setDate(new Date());
190
		propositionAjoutee.setDate(new Date());
172
		propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur());
191
		propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur());
173
 
192
 
174
		if (vue.getCommentaires().getText() != "") {
193
		if (vue.getCommentaires().getText() != "") {
175
			String contenuCommentaire = vue.getCommentaires().getText();
194
			String contenuCommentaire = vue.getCommentaires().getText();
176
			propositionAjoutee.setCommentaire(contenuCommentaire);
195
			propositionAjoutee.setCommentaire(contenuCommentaire);
177
		}
196
		}
178
 
197
 
179
		return propositionAjoutee;
198
		return propositionAjoutee;
180
	}
199
	}
181
}
200
}