New file |
0,0 → 1,210 |
package org.tela_botanica.del.client.composants.formulaires.formulairecommentaire; |
|
import java.util.Date; |
|
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul; |
import org.tela_botanica.del.client.modeles.Commentaire; |
import org.tela_botanica.del.client.modeles.Contributeur; |
import org.tela_botanica.del.client.modeles.InterventionForum; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.modeles.Utilisateur; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
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.async.AjoutCommentaireCallback; |
|
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; |
|
public class FormulaireCommentairePresenteur extends Presenteur { |
|
// le meme presenteur gere les commentaires pour les observations et pour |
// les possesseurs de commentaires, mais la logique est differente, d'ou la |
// necessité de separer les deux objets metiers |
private Observation observation; |
|
private InterventionForum possesseurDeCommentaires; |
|
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(); |
|
public void afficherStyleErreurNom(String styleErreur); |
|
public void supprimerStyleErreurNom(String styleErreur); |
|
public void afficherStyleErreurPrenom(String styleErreur); |
|
public void supprimerStyleErreurPrenom(String styleErreur); |
|
public void afficherStyleErreurCourriel(String styleErreur); |
|
public void supprimerStyleErreurCourriel(String styleErreur); |
|
public void afficherStyleErreurCommentaire(String styleErreur); |
|
public void supprimerStyleErreurCommentaire(String styleErreur); |
|
void afficherNomPrenomEtDesactiver(String nom, String prenom, String courriel); |
|
public HasText getCourrielObjet(); |
} |
|
private Vue vue; |
private CommentaireService commentaireService; |
|
public FormulaireCommentairePresenteur(Observation observation, CommentaireService commentaireService, Vue vue) { |
this.observation = observation; |
this.vue = vue; |
this.commentaireService = commentaireService; |
} |
|
public FormulaireCommentairePresenteur(InterventionForum possesseurDeCommentaires, CommentaireService commentaireService, Vue vue) { |
this.possesseurDeCommentaires = possesseurDeCommentaires; |
this.commentaireService = commentaireService; |
this.vue = vue; |
} |
|
public void go(HasWidgets composite) { |
remplirAvecInfosUtilisateur(); |
composite.add(vue.asWidget()); |
gererEvenements(); |
} |
|
private void remplirAvecInfosUtilisateur() { |
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur(); |
if (utilisateur.estIdentifie()) { |
vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom(), utilisateur.getCourriel()); |
} |
} |
|
protected void gererEvenements() { |
vue.getBoutonValidationCommentaire().addClickHandler(new ClickHandler() { |
|
@Override |
public void onClick(ClickEvent event) { |
if (!validerSaisie()) { |
return; |
} |
|
surValidationCommentaire(); |
} |
}); |
} |
|
public void surValidationCommentaire() { |
String texteCommentaire = vue.getCommentaire().getText(); |
String idUtilisateur = null; |
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); |
} else if (possesseurDeCommentaires != null) { |
commentaire.setObservation(CacheClient.getInstance().getObservationCourante()); |
commentaire.setParent(possesseurDeCommentaires); |
} |
|
commentaireService.ajouterCommentaire(commentaire, new AjoutCommentaireCallback() { |
|
@Override |
public void surRetour(String idNouveauCommentaire) { |
commentaire.setId(idNouveauCommentaire); |
if (observation != null) { |
observation.getInterventionsForum().add(commentaire); |
} else if (possesseurDeCommentaires != null) { |
possesseurDeCommentaires.getListeCommentaires().add(commentaire); |
} |
BusEvenementiel.getInstance().fireEvent(new EvenementAjoutCommentaire(commentaire)); |
} |
|
@Override |
public void surErreur(String messageErreur) { |
Window.alert(messageErreur); |
} |
}); |
} |
|
private boolean validerSaisie() { |
|
ValidateurChampTexteNonNul validateurNom = new ValidateurChampTexteNonNul(vue.getNomObjet()) { |
@Override |
public void afficherStyleErreur(String styleErreur) { |
vue.afficherStyleErreurNom(styleErreur); |
} |
|
@Override |
public void supprimerStyleErreur(String styleErreur) { |
vue.supprimerStyleErreurNom(styleErreur); |
} |
}; |
|
ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getPrenomObjet()) { |
@Override |
public void afficherStyleErreur(String styleErreur) { |
vue.afficherStyleErreurPrenom(styleErreur); |
} |
|
@Override |
public void supprimerStyleErreur(String styleErreur) { |
vue.supprimerStyleErreurPrenom(styleErreur); |
} |
}; |
|
ValidateurChampTexteNonNul validateurCourriel = new ValidateurChampTexteNonNul(vue.getCourrielObjet()) { |
@Override |
public void afficherStyleErreur(String styleErreur) { |
vue.afficherStyleErreurCourriel(styleErreur); |
} |
|
@Override |
public void supprimerStyleErreur(String styleErreur) { |
vue.supprimerStyleErreurCourriel(styleErreur); |
} |
}; |
|
ValidateurChampTexteNonNul validateurCommentaire = new ValidateurChampTexteNonNul(vue.getCommentaire()) { |
@Override |
public void afficherStyleErreur(String styleErreur) { |
vue.afficherStyleErreurCommentaire(styleErreur); |
} |
|
@Override |
public void supprimerStyleErreur(String styleErreur) { |
vue.supprimerStyleErreurCommentaire(styleErreur); |
} |
}; |
|
boolean nomSaisi = validateurNom.valider(); |
boolean prenomSaisi = validateurPrenom.valider(); |
boolean courrielSaisi = validateurCourriel.valider(); |
boolean commentaireSaisi = validateurCommentaire.valider(); |
|
return nomSaisi && prenomSaisi && courrielSaisi && commentaireSaisi; |
} |
|
} |