Subversion Repositories eFlore/Applications.del

Rev

Rev 327 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
46 aurelien 1
package org.tela_botanica.del.client.vues.plateformedetermination.formulaireproposition;
2
 
95 aurelien 3
import java.util.Date;
46 aurelien 4
 
85 benjamin 5
import org.tela_botanica.del.client.cache.CacheClient;
262 aurelien 6
import org.tela_botanica.del.client.composants.formulaires.AutoCompletionComboBoxPresenteur;
321 aurelien 7
 
262 aurelien 8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
228 aurelien 9
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul;
140 aurelien 10
import org.tela_botanica.del.client.modeles.Commentaire;
11
import org.tela_botanica.del.client.modeles.PropositionDetermination;
159 benjamin 12
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
13
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
46 aurelien 14
 
77 aurelien 15
import com.google.gwt.event.dom.client.ClickEvent;
16
import com.google.gwt.event.dom.client.ClickHandler;
303 aurelien 17
import com.google.gwt.event.dom.client.HasClickHandlers;
268 aurelien 18
import com.google.gwt.http.client.Response;
19
import com.google.gwt.json.client.JSONArray;
20
import com.google.gwt.json.client.JSONParser;
21
import com.google.gwt.json.client.JSONValue;
303 aurelien 22
import com.google.gwt.user.client.ui.HasText;
46 aurelien 23
import com.google.gwt.user.client.ui.HasWidgets;
303 aurelien 24
import com.google.gwt.user.client.ui.IsWidget;
46 aurelien 25
 
262 aurelien 26
public class FormulairePropositionPresenteur extends Presenteur {
27
 
303 aurelien 28
	public interface Vue extends IsWidget {
29
		public abstract HasText getNomPrenom();
30
		public abstract HasWidgets getPropositionTaxon();
31
		public abstract HasText getCommentaires();
32
		public abstract HasClickHandlers getBoutonValidationProposition();
33
		public abstract void afficherStyleErreur(String styleErreur);
34
		public abstract void supprimerStyleErreur(String styleErreur);
35
	}
36
	private Vue vue;
37
 
268 aurelien 38
	private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
39
	private String urlServiceCompletionNom = "http://www.tela-botanica.org/eflore/cel2/jrest/NameSearch/";
262 aurelien 40
 
303 aurelien 41
	public FormulairePropositionPresenteur(Vue vue) {
42
		this.vue = vue;
268 aurelien 43
 
321 aurelien 44
		autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(urlServiceCompletionNom) {
45
 
46
			protected String effectuerPreTraitementChaineRequete(String requete) {
343 aurelien 47
 
48
				String chaineTraitee = requete;
321 aurelien 49
				String[] parties = requete.split(" ", 2);
50
 
51
				if(parties.length == 2) {
52
					if(parties[1].trim().isEmpty()) {
53
						parties[1] = "*";
54
					}
343 aurelien 55
					chaineTraitee = parties[0]+"/"+parties[1];
321 aurelien 56
				}
57
 
343 aurelien 58
				return chaineTraitee;
321 aurelien 59
			}
60
 
61
			@Override
268 aurelien 62
			protected String[] parserResultatRequete(Response response) {
63
				return convertirReponseVersListeNom(response);
64
			}
65
		};
262 aurelien 66
	}
85 benjamin 67
 
46 aurelien 68
	public void go(HasWidgets composite) {
85 benjamin 69
 
303 aurelien 70
		autoCompletionNomTaxonsPresenteur.go(vue.getPropositionTaxon());
71
		composite.add(vue.asWidget());
95 aurelien 72
		gererEvenements();
46 aurelien 73
	}
85 benjamin 74
 
262 aurelien 75
	protected void gererEvenements() {
303 aurelien 76
		vue.getBoutonValidationProposition().addClickHandler(new ClickHandler() {
77 aurelien 77
 
78
			@Override
79
			public void onClick(ClickEvent event) {
234 gduche 80
 
81
				if (!validerSaisieProposition()) {
105 aurelien 82
					return;
77 aurelien 83
				} else {
140 aurelien 84
					PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
234 gduche 85
					CacheClient.getInstance().getObservationCourante().addImageCelValidationData(propositionAjoutee);
86
 
87
					EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee);
159 benjamin 88
					BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
77 aurelien 89
				}
85 benjamin 90
			}
77 aurelien 91
		});
92
	}
234 gduche 93
 
105 aurelien 94
	private boolean validerSaisieProposition() {
234 gduche 95
 
303 aurelien 96
		ValidateurChampTexteNonNul validateurTaxon = new ValidateurChampTexteNonNul(vue.getNomPrenom()) {
97
			@Override
98
			public void afficherStyleErreur(String styleErreur) {
99
				vue.afficherStyleErreur(styleErreur);
100
			}
101
 
102
			@Override
103
			public void supprimerStyleErreur(String styleErreur) {
104
				vue.supprimerStyleErreur(styleErreur);
105
			}
106
		};
228 aurelien 107
		boolean taxonSaisi = validateurTaxon.valider();
234 gduche 108
 
140 aurelien 109
		return taxonSaisi;
105 aurelien 110
	}
234 gduche 111
 
140 aurelien 112
	private PropositionDetermination collecterValeursSaisieProposition() {
234 gduche 113
 
140 aurelien 114
		PropositionDetermination propositionAjoutee = new PropositionDetermination();
148 benjamin 115
		propositionAjoutee.setId(CacheClient.getInstance().getImageCourante().getIdImage());
234 gduche 116
 
303 aurelien 117
		String auteur = vue.getNomPrenom().getText();
118
		if (vue.getCommentaires().getText() != "") {
119
			String contenuCommentaire = vue.getCommentaires().getText();
234 gduche 120
			Commentaire comm = new Commentaire(auteur, new Date(), contenuCommentaire);
140 aurelien 121
			propositionAjoutee.ajouterCommentaire(comm);
122
		}
123
		propositionAjoutee.setContributeur(auteur);
105 aurelien 124
		propositionAjoutee.setDate(new Date());
234 gduche 125
 
268 aurelien 126
		propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur());
234 gduche 127
 
105 aurelien 128
		return propositionAjoutee;
129
	}
268 aurelien 130
 
131
	private String[] convertirReponseVersListeNom(Response response) {
132
		final JSONValue responseValue = JSONParser.parseStrict(response.getText());
133
		JSONArray noms;
134
		String[] valeurs = new String[0];
135
 
136
		if ((noms=responseValue.isArray()) != null) {
137
 
138
			final int taillemax = noms.size();
139
			valeurs = new String[taillemax];
140
			for (int i = 0; i < taillemax; i++) {
141
				valeurs[i] = (noms.get(i).isArray().get(0).isString().stringValue());
142
			}
143
		}
144
 
145
		return valeurs;
146
	}
46 aurelien 147
}