Subversion Repositories eFlore/Applications.coel

Rev

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