Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 938 → Rev 939

/trunk/src/org/tela_botanica/del/client/composants/votes/details/DetailListeVotesDeterminationPresenteur.java
6,8 → 6,7
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
import org.tela_botanica.del.client.services.rest.async.VoteDeterminationCallback;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
import org.tela_botanica.del.client.services.rest.async.ListeVotesDeterminationCallback;
 
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
17,32 → 16,45
 
public interface Vue extends IsWidget {
public void afficherVotes(PropositionDetermination propositionDetermination);
 
void ajouterVote(VoteDetermination vote);
 
void stopChargement();
 
void startChargement();
 
public void afficherAucuneDonnees();
}
 
private Vue vue;
 
public DetailListeVotesDeterminationPresenteur(Vue vue) {
this.vue = vue;
}
 
public void go(HasWidgets container) {
container.add(vue.asWidget());
}
 
public void afficherVotes(final PropositionDetermination propositionDetermination) {
vue.startChargement();
VoteDeterminationServiceConcret voteService = new VoteDeterminationServiceConcret();
voteService.consulterVotesPourPropositionDetermination(propositionDetermination, new VoteDeterminationCallback() {
voteService.consulterVotesPourPropositionDetermination(propositionDetermination, new ListeVotesDeterminationCallback() {
 
@Override
public void surRetour(String messageRetour) {
HashMap<String, VoteDetermination> votesComplets = UtilitairesServiceResultat.parserRetourListeVotesDetermination(messageRetour, propositionDetermination);
if(votesComplets != null) {
propositionDetermination.setVotesDeterminations(UtilitairesServiceResultat.parserRetourListeVotesDetermination(messageRetour, propositionDetermination));
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
vue.stopChargement();
}
 
@Override
public void surRetour(HashMap<String, VoteDetermination> votesComplets) {
if (votesComplets != null && votesComplets.size() > 0) {
for (VoteDetermination voteDetermination : votesComplets.values()) {
voteDetermination.setPropositionDetermination(propositionDetermination);
}
 
propositionDetermination.setVotesDeterminations(votesComplets);
vue.afficherVotes(propositionDetermination);
vue.stopChargement();
} else {
49,19 → 61,12
vue.afficherAucuneDonnees();
vue.stopChargement();
}
 
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
vue.stopChargement();
}
});
}
 
@Override
protected void gererEvenements() {
// TODO Auto-generated method stub
}
// TODO Auto-generated method stub
}
}
/trunk/src/org/tela_botanica/del/client/composants/votes/moyennevotes/MoyenneVotePresenteur.java
1,7 → 1,6
package org.tela_botanica.del.client.composants.votes.moyennevotes;
 
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.Image;
10,10 → 9,10
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret;
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
22,32 → 21,45
 
public interface Vue extends IsWidget {
public HasClickHandlers getBoutonVoter();
 
public HasClickHandlers getBoutonAnnuler();
 
public HasText getNbVotes();
 
public HasClickHandlers getVotes();
 
public int getValeurVote();
 
public void afficherBoutonVoter();
 
public void afficherBoutonAnnuler();
 
public void masquerBoutonVoter();
 
public void masquerBoutonAnnuler();
 
public void afficherNbVotes();
public void masquerNbVotes();
 
public void masquerNbVotes();
 
public void reinitialiserVotes();
 
public void rafraichir(int moyenneVote, int nbVotes);
 
public void ajouterAuParent(HasWidgets composite);
}
 
private Vue vue;
private Protocole protocole;
private Image image;
 
private int valeurVoteDefaut = -1;
private int valeurVoteUtilisateur = -1;
private int valeurVoteTotal = 0;
//TODO: on devrait passer un conteneur qui permet d'accéder à ces services
 
// TODO: on devrait passer un conteneur qui permet d'accéder à ces services
private VoteProtocoleService voteProtocoleService = new VoteProtocoleServiceConcret();
 
public MoyenneVotePresenteur(Image image, Protocole protocole, Vue vue) {
this.vue = vue;
this.protocole = protocole;
59,7 → 71,7
gererEvenements();
rafraichirVue();
}
 
public void gererEvenements() {
vue.getVotes().addClickHandler(new ClickHandler() {
@Override
70,7 → 82,7
vue.masquerNbVotes();
}
});
 
vue.getBoutonAnnuler().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
81,7 → 93,7
vue.reinitialiserVotes();
}
});
 
vue.getBoutonVoter().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
93,13 → 105,13
}
});
}
 
public void setValeurVoteUtilisateur(int valeurVoteUtilisateur) {
this.valeurVoteUtilisateur = valeurVoteUtilisateur;
}
 
public void enregistrerVote() {
final VoteProtocole voteProtocole = new VoteProtocole();
final VoteProtocole voteProtocole = new VoteProtocole();
voteProtocole.setProtocole(this.protocole);
voteProtocole.setVote(valeurVoteUtilisateur);
String idContributeur = CacheClient.getInstance().getUtilisateur().getId();
107,26 → 119,23
// TODO: Mettre un message de chargement pendant l'envoi du vote ?
// C'est très rapide mais bon
VoteProtocoleCallback vpc = new VoteProtocoleCallback() {
 
@Override
public void surRetour(String messageRetour) {
//TODO: voir si l'on affiche un message en cas de succès ?
public void surRetour(Void objetRetour) {
// TODO: voir si l'on affiche un message en cas de succès ?
image.ajouterVoteProtocole(voteProtocole);
rafraichirVue();
}
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
}
 
};
if(image.utilisateurAVotePourProtocole(this.protocole.getId()+"", idContributeur)) {
 
if (image.utilisateurAVotePourProtocole(this.protocole.getId() + "", idContributeur)) {
voteProtocoleService.modifierVote(image.getIdImage(), voteProtocole, vpc);
} else {
voteProtocoleService.ajouterVote(image.getIdImage(), voteProtocole, vpc);
}
}
 
public int getValeurVoteTotal() {
return valeurVoteTotal;
}
134,26 → 143,26
public IsWidget getVue() {
return vue;
}
 
private void rafraichirVue() {
valeurVoteTotal = calculerMoyenneVotes();
vue.rafraichir(valeurVoteTotal, image.getVotesProtocoles(protocole.getId()).size());
}
 
public int calculerMoyenneVotes() {
double valeurVote = 0;
int nbVote = 0;
for (Iterator<String> iterator = image.getVotesProtocoles(protocole.getId()).keySet().iterator(); iterator.hasNext();) {
VoteProtocole imageCelValidationData = image.getVotesProtocoles(protocole.getId()).get(iterator.next());
valeurVote += (double)imageCelValidationData.getVote()/5;
valeurVote += (double) imageCelValidationData.getVote() / 5;
nbVote++;
}
 
if (nbVote > 0) {
valeurVote /= nbVote;
valeurVote *= 5;
}
 
return (int)Math.round(valeurVote);
return (int) Math.round(valeurVote);
}
}
/trunk/src/org/tela_botanica/del/client/composants/votes/barrerepartition/BarreRepartitionVotePresenteur.java
7,11 → 7,10
import org.tela_botanica.del.client.modeles.VoteDetermination;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
import org.tela_botanica.del.client.services.rest.VoteDeterminationService;
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
import org.tela_botanica.del.client.services.rest.async.VoteDeterminationCallback;
import org.tela_botanica.del.client.services.rest.async.AjoutVoteDeterminationCallback;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
21,29 → 20,36
import com.google.gwt.user.client.ui.IsWidget;
 
public class BarreRepartitionVotePresenteur {
 
public interface Vue extends IsWidget {
public void afficherVotes(int pourcentage, String NomTaxon);
 
public HasClickHandlers getBoutonOui();
 
public HasClickHandlers getBoutonNon();
 
public void desactiverBoutons();
 
public void activerBoutons();
 
public void setVoteOuiEffectue();
 
public void setVoteNonEffectue();
 
public void afficherVotePrisEnCompte(boolean b);
}
 
private Vue vue;
private MoyenneVote moyenneVote;
 
// TODO: classe conteneur qui est passé en paramètre au constructeur
private VoteDeterminationService voteDeterminationService = new VoteDeterminationServiceConcret();
 
public BarreRepartitionVotePresenteur(Vue vue) {
this.vue = vue;
gererEvenements();
}
 
public void go(HasWidgets container) {
container.add(vue.asWidget());
}
51,43 → 57,49
public void afficherVotes(MoyenneVote moyenneVote) {
this.moyenneVote = moyenneVote;
int score = moyenneVote.getScore();
String intitule =moyenneVote.getIntituleAssocie();
String intitule = moyenneVote.getIntituleAssocie();
vue.afficherVotes(score, intitule);
}
 
public Vue getBarreRepartitionVoteVue() {
return vue;
}
 
public MoyenneVote getMoyenneVote() {
return moyenneVote;
}
 
public void gererEvenements() {
 
vue.getBoutonOui().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
voter(true);
vue.afficherVotePrisEnCompte(true);
}
}
});
 
vue.getBoutonNon().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
voter(false);
vue.afficherVotePrisEnCompte(false);
}
}
});
}
 
private void surVoteDetermination(final VoteDetermination vd) {
if(vd.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
VoteDeterminationCallback vdc = new VoteDeterminationCallback() {
if (vd.getPropositionDetermination().equals(moyenneVote.getPropositionAssociee())) {
AjoutVoteDeterminationCallback vdc = new AjoutVoteDeterminationCallback() {
 
@Override
public void surRetour(String messageRetour) {
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
vue.activerBoutons();
}
 
@Override
public void surRetour(Void objetRetour) {
moyenneVote.getPropositionAssociee().ajouterVoteDetermination(vd);
moyenneVote = CalculVoteDeterminationService.calculerVoteDetermination(moyenneVote.getPropositionAssociee());
afficherVotes(moyenneVote);
95,34 → 107,28
// l'évènement n'est lancé que si le vote est validé
BusEvenementiel.getInstance().fireEvent(new EvenementVoteDetermination(vd));
}
};
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
vue.activerBoutons();
}
};
if(moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(vd.getContributeur())) {
if (moyenneVote.getPropositionAssociee().utilisateurAVotePourDetermination(vd.getContributeur())) {
voteDeterminationService.modifierVote(vd, vdc);
} else {
voteDeterminationService.ajouterVote(vd, vdc);
}
}
}
}
 
public void voter(boolean oui) {
 
VoteDetermination vd = new VoteDetermination();
vd.setPropositionDetermination(moyenneVote.getPropositionAssociee());
vd.setContributeur(CacheClient.getInstance().getUtilisateur().getId());
vd.setDate(new Date());
 
int valeurVote = oui ? 1 : 0;
vd.setVote(valeurVote);
vd.setId(CacheClient.getInstance().getUtilisateur().getId());
if(oui) {
 
if (oui) {
vue.setVoteOuiEffectue();
} else {
vue.setVoteNonEffectue();
/trunk/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentaireVue.java
15,6 → 15,13
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.Widget;
 
/**
* Cette classe permet d'afficher une popup avec la liste des commentaires
* associées à une proposition de determination
*
* @author LIENS
*
*/
public class DetailCommentaireVue extends Composite implements DetailCommentairePresenteur.Vue {
 
private static DetailListeVotesDeterminationVueUIiBinder uiBinder = GWT.create(DetailListeVotesDeterminationVueUIiBinder.class);
35,6 → 42,9
initWidget(uiBinder.createAndBindUi(this));
}
 
/**
* Affiche les commentaires associées à une proposition de determination
*/
@Override
public void afficherCommentairesProposition(PropositionDetermination propositionDetermination) {
 
50,6 → 60,10
creerListeCommentaireRecursive(propositionDetermination.getListeCommentaires());
}
 
/**
* Affiche une liste de commentaires recursivement
* @param commentaires
*/
private void creerListeCommentaireRecursive(List<Commentaire> commentaires) {
 
for (Commentaire commentaire : commentaires) {
60,6 → 74,10
}
}
 
/**
* Affiche un commentaire
* @param commentaire
*/
private void chargerCommentaire(Commentaire commentaire) {
int ligne = htmlTableau.getRowCount() + 1;
htmlTableau.setHTML(ligne, 1, commentaire.getAuteur());
67,6 → 85,9
htmlTableau.setHTML(ligne, 3, commentaire.getDate() + "");
}
 
/**
* Affiche les en-têtes du tableau de commentaires
*/
private void creerEntetes() {
htmlTableau.setHTML(1, 1, I18n.getVocabulary().contributeur());
htmlTableau.setHTML(1, 2, I18n.getVocabulary().commentaire());
73,6 → 94,9
htmlTableau.setHTML(1, 3, I18n.getVocabulary().date());
}
 
/**
* Affiche un icone de début de chargement
*/
@Override
public void startChargement() {
panneauChargement.setHeight((this.getOffsetHeight() / 2) + "px");
80,11 → 104,17
panneauChargement.setVisible(true);
}
 
/**
* Cache l'icone de début de chargement
*/
@Override
public void stopChargement() {
panneauChargement.setVisible(false);
}
 
/**
* Affiche un message indiquant qu'il n'y a aucun commentaire à présenter
*/
@Override
public void afficherAucuneDonnees() {
aucuneDonnees.setVisible(true);
/trunk/src/org/tela_botanica/del/client/composants/commentaires/DetailCommentairePresenteur.java
5,55 → 5,96
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.services.rest.CommentaireService;
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
import org.tela_botanica.del.client.services.rest.async.CommentaireCallback;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
import org.tela_botanica.del.client.services.rest.async.ListeCommentairesCallback;
 
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
/**
* Cette classe permet d'afficher une popup avec la liste des commentaires
* associées à une proposition de determination
*
* @author LIENS
*
*/
public class DetailCommentairePresenteur extends Presenteur {
 
/**
* Interface de la vue correspondante
*
* @author LIENS
*
*/
public interface Vue extends IsWidget {
public void afficherCommentairesProposition(PropositionDetermination propositionDetermination);
 
void stopChargement();
public void afficherAucuneDonnees();
 
void startChargement();
public void stopChargement();
 
public void afficherAucuneDonnees();
public void startChargement();
}
 
// La vue correspondante
private Vue vue;
 
// La proposition de determination
private PropositionDetermination propositionDetermination;
 
/**
* Constructeur
*
* @param vue
* @param propositionDetermination
*/
public DetailCommentairePresenteur(Vue vue, PropositionDetermination propositionDetermination) {
this.vue = vue;
this.propositionDetermination = propositionDetermination;
}
 
/**
* Declenchement du présenteur
*/
public void go(HasWidgets container) {
container.add(vue.asWidget());
}
 
/**
* Affichage des commentaires
*/
public void afficherCommentaires() {
 
// affichage de l'icone de chargement
vue.startChargement();
CommentaireServiceConcret commentaireService = new CommentaireServiceConcret();
commentaireService.chargerCommentaires(propositionDetermination, new CommentaireCallback() {
 
// Appel du service
CommentaireService commentaireService = new CommentaireServiceConcret();
commentaireService.chargerCommentaires(propositionDetermination, new ListeCommentairesCallback() {
 
@Override
public void surRetour(String messageRetour) {
List<Commentaire> commentaires = UtilitairesServiceResultat.parserCommentaires(JSONParser.parseStrict(messageRetour).isObject().get("resultats").isObject(), propositionDetermination.getObservation());
public void surRetour(List<Commentaire> commentaires) {
 
propositionDetermination.setListeCommentaires(commentaires);
int nbCommentaires = propositionDetermination.getTotalCommentaires();
if (nbCommentaires > 0) {
 
// s'il existe des commentaires ils sont affichés
if (propositionDetermination.getTotalCommentaires() > 0) {
 
// affichage des commentaires associés à la proposition dans
// la vue
vue.afficherCommentairesProposition(propositionDetermination);
 
// supression de l'icone de chargement
vue.stopChargement();
} else {
 
// affichage d'un message precisant qu'il n'y a pas de
// commentaires
vue.afficherAucuneDonnees();
 
// supression de l'icone de chargement
vue.stopChargement();
}
 
67,6 → 108,9
});
}
 
/**
* Gestion des evenements du presenteur
*/
@Override
protected void gererEvenements() {
// TODO Auto-generated method stub
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulairecommentaire/FormulaireCommentairePresenteur.java
14,9 → 14,7
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
import org.tela_botanica.del.client.services.rest.CommentaireService;
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
import org.tela_botanica.del.client.services.rest.async.CommentaireCallback;
import org.tela_botanica.del.client.services.rest.async.CommentaireCallback.ModeRequete;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
import org.tela_botanica.del.client.services.rest.async.AjoutCommentaireCallback;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
38,15 → 36,15
public interface Vue extends IsWidget {
 
public HasText getNomObjet();
 
public HasText getPrenomObjet();
 
public String getNom();
 
public String getPrenom();
 
public String getCourriel();
 
public abstract HasText getCommentaire();
 
public abstract HasClickHandlers getBoutonValidationCommentaire();
54,7 → 52,7
public void afficherStyleErreurNom(String styleErreur);
 
public void supprimerStyleErreurNom(String styleErreur);
 
public void afficherStyleErreurPrenom(String styleErreur);
 
public void supprimerStyleErreurPrenom(String styleErreur);
62,7 → 60,7
public void afficherStyleErreurCommentaire(String styleErreur);
 
public void supprimerStyleErreurCommentaire(String styleErreur);
 
void afficherNomPrenomEtDesactiver(String nom, String prenom, String courriel);
}
 
106,18 → 104,18
}
});
}
 
public void surValidationCommentaire() {
 
String texteCommentaire = vue.getCommentaire().getText();
String idUtilisateur = null;
if(CacheClient.getInstance().getUtilisateur().estIdentifie()) {
if (CacheClient.getInstance().getUtilisateur().estIdentifie()) {
idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
}
 
Contributeur contributeur = new Contributeur(idUtilisateur, vue.getNom(), vue.getPrenom(), vue.getCourriel());
final Commentaire commentaire = new Commentaire(contributeur, new Date(), texteCommentaire);
 
if (observation != null) {
commentaire.setObservation(observation);
commentaire.setParent(null);
125,12 → 123,12
commentaire.setObservation(CacheClient.getInstance().getObservationCourante());
commentaire.setParent(possesseurDeCommentaires);
}
commentaireService.ajouterCommentaire(commentaire, new CommentaireCallback(ModeRequete.AJOUT) {
 
commentaireService.ajouterCommentaire(commentaire, new AjoutCommentaireCallback() {
 
@Override
public void surRetour(String messageRetour) {
commentaire.setId(UtilitairesServiceResultat.convertirEtParserRetourAjoutCommentaire(messageRetour));
public void surRetour(String objetRetour) {
commentaire.setId(objetRetour);
if (observation != null) {
observation.getInterventionsForum().add(commentaire);
} else if (possesseurDeCommentaires != null) {
138,7 → 136,7
}
BusEvenementiel.getInstance().fireEvent(new EvenementAjoutCommentaire(commentaire));
}
 
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
/trunk/src/org/tela_botanica/del/client/composants/formulaires/identification/FormulaireIdentificationPresenteur.java
1,11 → 1,10
package org.tela_botanica.del.client.composants.formulaires.identification;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.client.services.rest.UtilisateurService;
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
18,61 → 17,72
import com.google.gwt.user.client.ui.IsWidget;
 
public class FormulaireIdentificationPresenteur {
 
public abstract interface Vue extends IsWidget {
public void ajouterVue(HasWidgets composite);
 
public HasClickHandlers getSeConnecter();
 
public HasClickHandlers getSeDeconnecter();
 
public void basculerAffichageFormulaire();
 
public void basculerModeConnecte(Utilisateur utilisateur);
 
public HasClickHandlers getBoutonOK();
 
public HasText getLogin();
 
public HasText getMotdepasse();
 
public void afficherErreur();
 
public void masquerErreur();
 
public void viderFormulaire();
 
public void setErreur(String idTexte);
 
public String getErreur();
 
public HasKeyPressHandlers getLoginHasKeyPressHandler();
 
public HasKeyPressHandlers getMotdepasseHasKeyPressHandler();
}
 
private Vue vue;
private Utilisateur utilisateur;
private UtilisateurService utilisateurService;
 
public FormulaireIdentificationPresenteur(Vue vue, UtilisateurService utilisateurService) {
this.vue = vue;
this.utilisateurService = utilisateurService;
utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
 
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
public void surRetour(Utilisateur objetRetour) {
CacheClient.getInstance().setUtilisateur(utilisateur);
rafraichir();
}
public void surErreurUtilisateur(String message) {
/*null*/
}
});
gererEvenements();
 
}
 
public void rafraichir() {
utilisateur = CacheClient.getInstance().getUtilisateur();
utilisateur = CacheClient.getInstance().getUtilisateur();
vue.basculerModeConnecte(this.utilisateur);
}
 
public void gererEvenements() {
vue.getSeConnecter().addClickHandler(new ClickHandler() {
 
@Override
public void onClick(ClickEvent event) {
vue.basculerAffichageFormulaire();
}
});
 
vue.getBoutonOK().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
79,22 → 89,22
surTentativeLogin();
}
});
 
vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
deconnecterUtilisateur();
deconnecterUtilisateur();
}
});
 
vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
}
 
private void surTentativeLogin() {
String login = vue.getLogin().getText();
String login = vue.getLogin().getText();
String motdepasse = vue.getMotdepasse().getText();
 
if (login.equals("") || motdepasse.equals("")) {
gererErreur("saisirLogin");
} else {
101,7 → 111,7
connecterUtilisateur(login, motdepasse);
}
}
 
public KeyPressHandler creerGestionnaireEvenementToucheEntree() {
return new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
111,17 → 121,23
}
};
}
 
public void gererErreur(String erreur) {
vue.setErreur(erreur);
vue.afficherErreur();
}
 
public void connecterUtilisateur(String login, String motdepasse) {
 
utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
 
public void surErreur(String message) {
vue.setErreur("identificationRefus");
vue.afficherErreur();
}
 
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
public void surRetour(Utilisateur objetRetour) {
CacheClient.getInstance().setUtilisateur(utilisateur);
if (utilisateur.estIdentifie()) {
vue.masquerErreur();
128,31 → 144,27
rafraichir();
vue.basculerAffichageFormulaire();
vue.viderFormulaire();
}
}
}
public void surErreurUtilisateur(String message) {
vue.setErreur("identificationRefus");
vue.afficherErreur();
}
});
}
 
public void deconnecterUtilisateur() {
utilisateurService.deconnecterUtilisateur(new UtilisateurCallback() {
 
public void surErreur(String message) {
vue.setErreur("identificationRefus");
vue.afficherErreur();
}
 
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
public void surRetour(Utilisateur objetRetour) {
CacheClient.getInstance().setUtilisateur(utilisateur);
rafraichir();
}
public void surErreurUtilisateur(String message) {
vue.setErreur("identificationRefus");
vue.afficherErreur();
}
});
}
 
public void go(HasWidgets composite) {
vue.ajouterVue(composite);
}
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/FormulairePropositionPresenteur.java
5,11 → 5,9
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxPresenteur;
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxVue;
 
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.Contributeur;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Utilisateur;
18,7 → 16,6
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack.ModeRequete;
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
26,35 → 23,47
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.http.client.Response;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
public class FormulairePropositionPresenteur extends Presenteur {
 
public interface Vue extends IsWidget {
public HasText getObjetNom();
 
public HasText getObjetPrenom();
 
public HasWidgets getPropositionTaxon();
 
public HasText getCommentaires();
 
public HasClickHandlers getBoutonValidationProposition();
 
public void afficherNomPrenomEtDesactiver(String nom, String prenom);
 
public String getCourriel();
 
public void afficherEmailEtDesactiver(String courriel);
 
public String getNom();
 
public String getPrenom();
 
public void afficherStyleErreurNom(String styleErreur);
 
public void supprimerStyleErreurNom(String styleErreur);
 
public void afficherStyleErreurPrenom(String styleErreur);
 
public void supprimerStyleErreurPrenom(String styleErreur);
}
 
private Vue vue;
private Config config;
private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;
private PropositionDeterminationService propositionDeterminationService = new PropositionDeterminationServiceConcret();
 
public FormulairePropositionPresenteur(Vue vue) {
this.vue = vue;
config = new Config();
61,22 → 70,22
creerCompletionTaxons();
remplirAvecInfosUtilisateur();
}
 
private void remplirAvecInfosUtilisateur() {
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
if(utilisateur.estIdentifie()) {
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
if (utilisateur.estIdentifie()) {
vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom());
vue.afficherEmailEtDesactiver(utilisateur.getCourriel());
}
}
 
private void creerCompletionTaxons() {
String url = this.config.getUrl("nomSciCompletionService");
autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
protected String effectuerPreTraitementChaineRequete(String requete) {
return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);
}
 
@Override
protected String[] parserResultatRequete(Response response) {
return UtilitairesAutoCompletionService.parserRetourSimple(response);
99,8 → 108,8
return;
} else {
final PropositionDetermination propositionAjoutee = collecterValeursSaisieProposition();
propositionDeterminationService.ajouterProposition(propositionAjoutee, new PropositionDeterminationCallBack(ModeRequete.AJOUT) {
propositionDeterminationService.ajouterProposition(propositionAjoutee, new PropositionDeterminationCallBack() {
 
@Override
public void surRetour(String messageRetour) {
propositionAjoutee.setId(UtilitairesServiceResultat.convertirEtParserRetourAjoutCommentaire(messageRetour));
108,11 → 117,7
EvenementAjoutDetermination evenementAjoutDetermination = new EvenementAjoutDetermination(propositionAjoutee);
BusEvenementiel.getInstance().fireEvent(evenementAjoutDetermination);
}
@Override
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
}
 
});
}
}
126,25 → 131,25
public void afficherStyleErreur(String styleErreur) {
vue.afficherStyleErreurNom(styleErreur);
}
 
@Override
public void supprimerStyleErreur(String styleErreur) {
vue.supprimerStyleErreurNom(styleErreur);
}
};
 
ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getObjetPrenom()) {
@Override
public void afficherStyleErreur(String styleErreur) {
vue.afficherStyleErreurPrenom(styleErreur);
}
 
@Override
public void supprimerStyleErreur(String styleErreur) {
vue.supprimerStyleErreurPrenom(styleErreur);
}
};
 
boolean nomSaisi = validateurNom.valider();
boolean prenomSaisi = validateurPrenom.valider();
 
154,9 → 159,9
private PropositionDetermination collecterValeursSaisieProposition() {
PropositionDetermination propositionAjoutee = new PropositionDetermination(CacheClient.getInstance().getObservationCourante());
propositionAjoutee.setId(CacheClient.getInstance().getObservationCourante().getId());
 
String idUtilisateur = null;
if(CacheClient.getInstance().getUtilisateur().estIdentifie()) {
if (CacheClient.getInstance().getUtilisateur().estIdentifie()) {
idUtilisateur = CacheClient.getInstance().getUtilisateur().getId();
}
 
164,7 → 169,7
propositionAjoutee.setContributeur(contributeur);
propositionAjoutee.setDate(new Date());
propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur());
 
if (vue.getCommentaires().getText() != "") {
String contenuCommentaire = vue.getCommentaires().getText();
propositionAjoutee.setCommentaire(contenuCommentaire);