Subversion Repositories eFlore/Applications.del

Rev

Rev 1833 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
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;
1833 aurelien 12
import org.tela_botanica.del.client.modeles.VoteDetermination;
1196 gduche 13
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
14
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
15
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
16
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
17
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
18
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
19
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.GestionnaireEvenementSuppressionCommentaire;
20
import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.EvenementSuppressionDetermination;
21
import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.GestionnaireEvenementSuppressionDetermination;
1833 aurelien 22
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
23
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
1196 gduche 24
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
25
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
26
import org.tela_botanica.del.client.utils.ComparateurPropositionDetermination;
27
 
28
import com.google.gwt.user.client.ui.HasWidgets;
29
import com.google.gwt.user.client.ui.IsWidget;
30
 
31
public class ForumPresenteur {
32
 
33
	public interface Vue extends IsWidget {
34
 
35
		public abstract HasWidgets getPanneauInterventions();
36
 
37
		public abstract void vider();
38
	}
39
 
40
	private Vue vue;
41
 
42
	public ForumPresenteur(Vue vue) {
43
		this.vue = vue;
44
	}
45
 
46
	public void go(HasWidgets composite) {
47
		chargerDeterminations();
48
		composite.add(vue.asWidget());
49
 
50
		gererEvenements();
51
	}
52
 
53
	private void chargerDeterminations() {
54
 
55
		vue.vider();
56
		List<PropositionDetermination> interventions = CacheClient.getInstance().getObservationCourante().getPropositionDeterminations();
57
		Collections.sort(interventions, new ComparateurPropositionDetermination());
58
 
59
		for (InterventionForum interventionCourante : interventions) {
60
			ForumInterventionPresenteur presenteur = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionCourante, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret());
61
			presenteur.go(vue.getPanneauInterventions());
62
			ajouterCommentairesRecursivement(interventionCourante, presenteur);
63
		}
64
 
65
		List<Commentaire> commentaires = CacheClient.getInstance().getObservationCourante().getCommentairesForum();
66
 
67
		for (InterventionForum interventionCourante : commentaires) {
68
			ForumInterventionPresenteur presenteur = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionCourante, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret());
69
			presenteur.go(vue.getPanneauInterventions());
70
			ajouterCommentairesRecursivement(interventionCourante, presenteur);
71
		}
72
	}
73
 
74
	private void ajouterCommentairesRecursivement(InterventionForum interventionCourante, ForumInterventionPresenteur presenteur) {
75
		List<Commentaire> fils = interventionCourante.getListeCommentaires();
76
		for (InterventionForum interventionFils : fils) {
77
			ForumInterventionPresenteur presenteurFils = new ForumInterventionPresenteur(new ForumInterventionVue(), interventionFils, new CommentaireServiceConcret(), new PropositionDeterminationServiceConcret());
78
			ajouterCommentairesRecursivement(interventionFils, presenteurFils);
79
			presenteur.ajouterEnfant(presenteurFils);
80
		}
81
	}
82
 
83
	private void gererEvenements() {
84
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
85
 
86
			@Override
87
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
88
				chargerDeterminations();
89
			}
90
		});
91
 
92
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
93
 
94
			@Override
95
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
96
				chargerDeterminations();
97
			}
98
		});
99
 
100
		BusEvenementiel.getInstance().addHandler(EvenementSuppressionDetermination.TYPE, new GestionnaireEvenementSuppressionDetermination() {
101
 
102
			@Override
103
			public void onSuppressionDetermination(EvenementSuppressionDetermination event) {
104
				chargerDeterminations();
105
			}
106
		});
107
 
108
		BusEvenementiel.getInstance().addHandler(EvenementSuppressionCommentaire.TYPE, new GestionnaireEvenementSuppressionCommentaire() {
109
 
110
			@Override
111
			public void onSuppressionCommentaire(EvenementSuppressionCommentaire event) {
112
				chargerDeterminations();
113
			}
114
		});
1833 aurelien 115
 
116
		BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
117
			@Override
118
			public void onVoteDetermination(VoteDetermination event) {
119
				// ceci permet d'avoir un classement à jour des déterminations à chaque vote
120
				// à voir si ça ne fait pas trop ramer les petites machines
121
				chargerDeterminations();
122
			}
123
		});
1196 gduche 124
	}
125
}