Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
985 jpm 1
package org.tela_botanica.client.modeles.commentaire;
2
 
1049 gduche 3
import org.tela_botanica.client.Mediateur;
4
import org.tela_botanica.client.RegistreId;
5
import org.tela_botanica.client.interfaces.ListePaginable;
6
import org.tela_botanica.client.interfaces.Rafraichissable;
985 jpm 7
import org.tela_botanica.client.modeles.aDonneeListe;
8
 
1049 gduche 9
import com.extjs.gxt.ui.client.Registry;
10
import com.google.gwt.i18n.client.Dictionary;
985 jpm 11
import com.google.gwt.json.client.JSONArray;
1049 gduche 12
import com.google.gwt.json.client.JSONNumber;
985 jpm 13
import com.google.gwt.json.client.JSONObject;
14
 
1166 jpm 15
/**
16
 * Classe contenant les informations sur les Commentaires renvoyées par un objet de type DAO.
17
 *
18
 * @author Jean-Pascal MILCENT
19
 *
20
 */
1049 gduche 21
public class CommentaireListe extends aDonneeListe<Commentaire> implements ListePaginable {
985 jpm 22
 
23
	private static final long serialVersionUID = 2600314321196345072L;
1049 gduche 24
	private int currentPage = 0;
25
	private int nbElementsPage = Integer.valueOf(((Dictionary) Dictionary.getDictionary("configuration")).get("nbElementsPage"));
26
	private int nbElementsTotal;
27
	private Rafraichissable vueARafraichir;
28
 
985 jpm 29
	public CommentaireListe() {
30
		super();
31
	}
32
 
33
	public CommentaireListe(int taille) {
34
		super(taille);
35
	}
36
 
37
	/**
38
	 * Constructeur pour une liste de commentaires
39
	 * @param dates
40
	 */
1166 jpm 41
	public CommentaireListe(JSONArray ListeDeCommentaires) {
42
		super(ListeDeCommentaires.size());
43
		initialiserCommentaireListe(ListeDeCommentaires);
985 jpm 44
	}
1049 gduche 45
 
1166 jpm 46
	public CommentaireListe(JSONArray ListeDeCommentaires, JSONNumber nbElements, Rafraichissable vueARafraichir) {
47
		super(ListeDeCommentaires.size());
1049 gduche 48
		this.nbElementsTotal = Integer.valueOf(nbElements.toString());
1166 jpm 49
		this.vueARafraichir = vueARafraichir;
50
		initialiserCommentaireListe(ListeDeCommentaires);
51
	}
52
 
53
	private void initialiserCommentaireListe(JSONArray ListeDeCommentaires) {
54
		boolean chargerCollectionACommentaire = true;
55
		final int taillemax = ListeDeCommentaires.size();
1049 gduche 56
		for (int i = 0; i < taillemax; i++) {
1166 jpm 57
			JSONObject commentaireCourant = ListeDeCommentaires.get(i).isObject() ;
58
			if (commentaireCourant != null)	{
59
				Commentaire commentaire = new Commentaire(commentaireCourant, chargerCollectionACommentaire);
60
				this.put(commentaire.getId(), commentaire);
1049 gduche 61
			}
62
		}
63
	}
64
 
65
	public void changerNumeroPage(int pageCourante) {
66
		currentPage = pageCourante;
67
		selectionnerCommentaire();
68
	}
69
 
70
	public void changerTaillePage(int nouvelleTaillePage) {
71
		nbElementsPage = nouvelleTaillePage;
72
		selectionnerCommentaire();
73
	}
74
 
75
	public void recharger() {
76
		selectionnerCommentaire();
77
	}
78
 
79
	public void setPageCourante(int pageCourante) {
80
		this.currentPage = pageCourante;
81
	}
82
 
83
	public void setTaillePage(int taillePage) {
84
		this.nbElementsPage = taillePage;
85
	}
86
 
87
	public int[] getPageTable() {
88
		int[] page = new int[4];
89
		// nombre de pages au total
90
		page[0] = calculerNbPages();
91
		// Page En Cours
92
		page[1] = currentPage;
93
		// nbElementsParPage
94
		page[2] = nbElementsPage;
95
		// et le dernier le nombre total d'éléments
96
		page[3] = nbElementsTotal;
97
		return page;
98
	}
99
 
100
	/**
101
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements
102
	 * donnés en fonction de la taille de page en cours
103
	 *
104
	 * @return le nombre de pages
105
	 */
106
	public int calculerNbPages() {
1166 jpm 107
		// À cause de la bétise de java pour les conversion implicite, on fait quelques conversions manuellement
108
		// pour eviter qu'il arrondisse mal la division nombre de pages = (nombre d'element / taille de la page)
109
		// arrondie à l'entier supérieur.
1049 gduche 110
		double nPage = (1.0 * nbElementsTotal) / (1.0 * nbElementsPage);
111
		double nPageRound = Math.ceil(nPage);
112
		Double nPageInt = new Double(nPageRound);
113
 
1166 jpm 114
		// Convertion en entier
1049 gduche 115
		return nPageInt.intValue();
116
	}
117
 
118
	public void selectionnerCommentaire()	{
1166 jpm 119
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
1049 gduche 120
		mediateur.selectionnerCommentaire(vueARafraichir, null, null, currentPage, nbElementsPage);
121
	}
122
 
123
	public void filtrerParNom(String nom)	{
1166 jpm 124
		Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
1057 gduche 125
		mediateur.selectionnerCommentaireParTitre(vueARafraichir, "%" + nom + "%");
1049 gduche 126
	}
1166 jpm 127
}