Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
102 jpm 1
package org.tela_botanica.client.modeles;
2
 
593 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;
7
 
8
import com.extjs.gxt.ui.client.Registry;
9
import com.google.gwt.i18n.client.Dictionary;
102 jpm 10
import com.google.gwt.json.client.JSONArray;
593 gduche 11
import com.google.gwt.json.client.JSONNumber;
102 jpm 12
import com.google.gwt.json.client.JSONObject;
13
 
14
/**
15
 * Table de hachage composée d'informations sur les Valeurs des listes, renvoyé par un objet de type DAO
16
 * La clé est le nom de l'entite + le nom de l'entite parente
17
 *
18
 * @author david delon
19
 *
20
 */
593 gduche 21
public class PersonneListe extends aDonneeListe<Personne> implements ListePaginable{
102 jpm 22
 
363 jp_milcent 23
	private static final long serialVersionUID = 2930530504922300155L;
593 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;
102 jpm 28
	/**
29
	 * Constructeur sans paramètres
30
	 */
31
	public PersonneListe() {
32
		super();
33
	}
34
 
35
	/**
36
	 * Constructeur avec paramètre
37
	 * @param taille la taille de la table de hachage
38
	 */
39
	public PersonneListe(int taille) {
40
		super(taille);
41
	}
126 gduche 42
 
102 jpm 43
	/**
44
	 * Constructeur pour une liste de personne
45
	 * @param dates
46
	 */
126 gduche 47
	public PersonneListe(JSONArray personneListe) {
48
		super(personneListe.size());
49
 
50
		final int taillemax = personneListe.size();
51
		for (int i = 0; i < taillemax; i++) {
52
			JSONObject personneCourante = personneListe.get(i).isObject() ;
53
 
54
			if (personneCourante != null)	{
55
				Personne personne = new Personne(personneCourante);
138 gduche 56
				this.put(personne.getId(), personne);
126 gduche 57
			}
58
		}
593 gduche 59
	}
60
 
61
	public PersonneListe(JSONArray personneListe, JSONNumber nbElements, Rafraichissable vueARafraichir) {
62
		super(personneListe.size());
126 gduche 63
 
593 gduche 64
		this.nbElementsTotal = Integer.valueOf(nbElements.toString());
65
		final int taillemax = personneListe.size();
66
		for (int i = 0; i < taillemax; i++) {
67
			JSONObject personneCourante = personneListe.get(i).isObject() ;
68
 
69
			if (personneCourante != null)	{
70
				Personne personne = new Personne(personneCourante);
71
				this.put(personne.getId(), personne);
72
			}
73
		}
74
 
75
		this.vueARafraichir = vueARafraichir;
102 jpm 76
	}
593 gduche 77
 
78
	public int[] getPageTable() {
79
 
80
		int[] page = new int[4];
81
 
82
		//nombre de pages au total
83
		page[0] = calculerNbPages();
84
 
85
		//Page En Cours
86
		page[1] = currentPage;
87
 
88
		//nbElementsParPage
89
		page[2] = nbElementsPage;
90
 
91
		// et le dernier le nombre total d'éléments
92
		page[3] = nbElementsTotal;
93
 
94
		return page;
95
	}
96
 
97
	/**
98
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page
99
	 * en cours
100
	 * @return le nombre de pages
101
	 */
102
	public int calculerNbPages()
103
	{
104
		// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement
105
		// pour eviter qu'il arrondisse mal la division
106
		// nombre de pages = (nombre d'element / taille de la page) arrondie à l'entier superieur
107
 
108
		double nPage = (1.0*nbElementsTotal)/(1.0*nbElementsPage) ;
109
		double nPageRound = Math.ceil(nPage) ;
110
		Double nPageInt = new Double(nPageRound) ;
111
 
112
		// on convertit en entier
113
		return nPageInt.intValue() ;
114
	}
115
 
116
	@Override
117
	public void changerNumeroPage(int pageCourante) {
118
 
119
		currentPage = pageCourante;
120
		selectionnerPersonne();
121
	}
122
 
123
	@Override
124
	public void changerTaillePage(int nouvelleTaillePage) {
125
 
126
		nbElementsPage = nouvelleTaillePage;
127
		selectionnerPersonne();
128
	}
129
 
660 gduche 130
	@Override
131
	public void recharger() {
132
		selectionnerPersonne();
133
	}
593 gduche 134
 
660 gduche 135
 
593 gduche 136
	public void setPageCourante(int pageCourante) {
137
		this.currentPage = pageCourante;
654 gduche 138
	}
593 gduche 139
 
654 gduche 140
	public void setTaillePage(int taillePage)	{
141
		this.nbElementsPage = taillePage;
142
	}
593 gduche 143
 
654 gduche 144
 
593 gduche 145
	public void selectionnerPersonne()	{
146
		Mediateur mediateur =(Mediateur) Registry.get(RegistreId.MEDIATEUR);
616 gduche 147
		mediateur.selectionnerPersonne(vueARafraichir, null, null, currentPage, nbElementsPage);
593 gduche 148
	}
149
 
150
 
363 jp_milcent 151
}