| 1196 | gduche | 1 | package org.tela_botanica.del.client.composants.forum;
 | 
        
           |  |  | 2 |   | 
        
           |  |  | 3 | import java.util.Collections;
 | 
        
           |  |  | 4 | import java.util.List;
 | 
        
           |  |  | 5 |   | 
        
           |  |  | 6 | import org.tela_botanica.del.client.cache.CacheClient;
 | 
        
           |  |  | 7 | import org.tela_botanica.del.client.composants.forum.interventions.ForumInterventionPresenteur;
 | 
        
           |  |  | 8 | import org.tela_botanica.del.client.composants.forum.interventions.ForumInterventionVue;
 | 
        
           |  |  | 9 | import org.tela_botanica.del.client.modeles.Commentaire;
 | 
        
           |  |  | 10 | import org.tela_botanica.del.client.modeles.InterventionForum;
 | 
        
           |  |  | 11 | import org.tela_botanica.del.client.modeles.PropositionDetermination;
 | 
        
           |  |  | 12 | import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
 | 
        
           |  |  | 13 | import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
 | 
        
           |  |  | 14 | import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
 | 
        
           |  |  | 15 | import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
 | 
        
           |  |  | 16 | import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
 | 
        
           |  |  | 17 | import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
 | 
        
           |  |  | 18 | import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.GestionnaireEvenementSuppressionCommentaire;
 | 
        
           |  |  | 19 | import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.EvenementSuppressionDetermination;
 | 
        
           |  |  | 20 | import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.GestionnaireEvenementSuppressionDetermination;
 | 
        
           |  |  | 21 | import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
 | 
        
           |  |  | 22 | import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
 | 
        
           |  |  | 23 | import org.tela_botanica.del.client.utils.ComparateurPropositionDetermination;
 | 
        
           |  |  | 24 |   | 
        
           |  |  | 25 | import com.google.gwt.user.client.ui.HasWidgets;
 | 
        
           |  |  | 26 | import com.google.gwt.user.client.ui.IsWidget;
 | 
        
           |  |  | 27 |   | 
        
           |  |  | 28 | public class ForumPresenteur {
 | 
        
           |  |  | 29 |   | 
        
           |  |  | 30 | 	public interface Vue extends IsWidget {
 | 
        
           |  |  | 31 |   | 
        
           |  |  | 32 | 		public abstract HasWidgets getPanneauInterventions();
 | 
        
           |  |  | 33 |   | 
        
           |  |  | 34 | 		public abstract void vider();
 | 
        
           |  |  | 35 | 	}
 | 
        
           |  |  | 36 |   | 
        
           |  |  | 37 | 	private Vue vue;
 | 
        
           |  |  | 38 |   | 
        
           |  |  | 39 | 	public ForumPresenteur(Vue vue) {
 | 
        
           |  |  | 40 | 		this.vue = vue;
 | 
        
           |  |  | 41 | 	}
 | 
        
           |  |  | 42 |   | 
        
           |  |  | 43 | 	public void go(HasWidgets composite) {
 | 
        
           |  |  | 44 |   | 
        
           |  |  | 45 | 		chargerDeterminations();
 | 
        
           |  |  | 46 | 		composite.add(vue.asWidget());
 | 
        
           |  |  | 47 |   | 
        
           |  |  | 48 | 		gererEvenements();
 | 
        
           |  |  | 49 | 	}
 | 
        
           |  |  | 50 |   | 
        
           |  |  | 51 | 	private void chargerDeterminations() {
 | 
        
           |  |  | 52 |   | 
        
           |  |  | 53 | 		vue.vider();
 | 
        
           |  |  | 54 | 		List<PropositionDetermination> interventions = CacheClient.getInstance().getObservationCourante().getPropositionDeterminations();
 | 
        
           |  |  | 55 | 		Collections.sort(interventions, new ComparateurPropositionDetermination());
 | 
        
           |  |  | 56 |   | 
        
           |  |  | 57 | 		for (InterventionForum interventionCourante : interventions) {
 | 
        
           |  |  | 58 | 			ForumInterventionPresenteur presenteur = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionCourante, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret());
 | 
        
           |  |  | 59 | 			presenteur.go(vue.getPanneauInterventions());
 | 
        
           |  |  | 60 | 			ajouterCommentairesRecursivement(interventionCourante, presenteur);
 | 
        
           |  |  | 61 | 		}
 | 
        
           |  |  | 62 |   | 
        
           |  |  | 63 | 		List<Commentaire> commentaires = CacheClient.getInstance().getObservationCourante().getCommentairesForum();
 | 
        
           |  |  | 64 |   | 
        
           |  |  | 65 | 		for (InterventionForum interventionCourante : commentaires) {
 | 
        
           |  |  | 66 | 			ForumInterventionPresenteur presenteur = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionCourante, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret());
 | 
        
           |  |  | 67 | 			presenteur.go(vue.getPanneauInterventions());
 | 
        
           |  |  | 68 | 			ajouterCommentairesRecursivement(interventionCourante, presenteur);
 | 
        
           |  |  | 69 | 		}
 | 
        
           |  |  | 70 | 	}
 | 
        
           |  |  | 71 |   | 
        
           |  |  | 72 | 	private void ajouterCommentairesRecursivement(InterventionForum interventionCourante, ForumInterventionPresenteur presenteur) {
 | 
        
           |  |  | 73 | 		List<Commentaire> fils = interventionCourante.getListeCommentaires();
 | 
        
           |  |  | 74 | 		for (InterventionForum interventionFils : fils) {
 | 
        
           |  |  | 75 | 			ForumInterventionPresenteur presenteurFils = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionFils, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret());
 | 
        
           |  |  | 76 | 			ajouterCommentairesRecursivement(interventionFils, presenteurFils);
 | 
        
           |  |  | 77 | 			presenteur.ajouterEnfant(presenteurFils);
 | 
        
           |  |  | 78 | 		}
 | 
        
           |  |  | 79 | 	}
 | 
        
           |  |  | 80 |   | 
        
           |  |  | 81 | 	private void gererEvenements() {
 | 
        
           |  |  | 82 | 		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
 | 
        
           |  |  | 83 |   | 
        
           |  |  | 84 | 			@Override
 | 
        
           |  |  | 85 | 			public void onAjoutDetermination(EvenementAjoutDetermination event) {
 | 
        
           |  |  | 86 | 				chargerDeterminations();
 | 
        
           |  |  | 87 | 			}
 | 
        
           |  |  | 88 | 		});
 | 
        
           |  |  | 89 |   | 
        
           |  |  | 90 | 		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
 | 
        
           |  |  | 91 |   | 
        
           |  |  | 92 | 			@Override
 | 
        
           |  |  | 93 | 			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
 | 
        
           |  |  | 94 | 				chargerDeterminations();
 | 
        
           |  |  | 95 | 			}
 | 
        
           |  |  | 96 | 		});
 | 
        
           |  |  | 97 |   | 
        
           |  |  | 98 | 		BusEvenementiel.getInstance().addHandler(EvenementSuppressionDetermination.TYPE, new GestionnaireEvenementSuppressionDetermination() {
 | 
        
           |  |  | 99 |   | 
        
           |  |  | 100 | 			@Override
 | 
        
           |  |  | 101 | 			public void onSuppressionDetermination(EvenementSuppressionDetermination event) {
 | 
        
           |  |  | 102 | 				chargerDeterminations();
 | 
        
           |  |  | 103 | 			}
 | 
        
           |  |  | 104 | 		});
 | 
        
           |  |  | 105 |   | 
        
           |  |  | 106 | 		BusEvenementiel.getInstance().addHandler(EvenementSuppressionCommentaire.TYPE, new GestionnaireEvenementSuppressionCommentaire() {
 | 
        
           |  |  | 107 |   | 
        
           |  |  | 108 | 			@Override
 | 
        
           |  |  | 109 | 			public void onSuppressionCommentaire(EvenementSuppressionCommentaire event) {
 | 
        
           |  |  | 110 | 				chargerDeterminations();
 | 
        
           |  |  | 111 | 			}
 | 
        
           |  |  | 112 | 		});
 | 
        
           |  |  | 113 | 	}
 | 
        
           |  |  | 114 | }
 |