Subversion Repositories eFlore/Applications.coel

Rev

Rev 660 | Rev 935 | 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
		int[] page = new int[4];
80
 
81
		//nombre de pages au total
82
		page[0] = calculerNbPages();
83
 
84
		//Page En Cours
85
		page[1] = currentPage;
86
 
87
		//nbElementsParPage
88
		page[2] = nbElementsPage;
89
 
90
		// et le dernier le nombre total d'éléments
91
		page[3] = nbElementsTotal;
92
 
93
		return page;
94
	}
95
 
96
	/**
97
	 * Calcule le nombre de pages nécessaires pour afficher un nombre d'élements donnés en fonction de la taille de page
98
	 * en cours
99
	 * @return le nombre de pages
100
	 */
748 jpm 101
	public int calculerNbPages() {
593 gduche 102
		// A cause de la betise de java pour les conversion implicite on fait quelques conversions manuellement
103
		// pour eviter qu'il arrondisse mal la division
104
		// nombre de pages = (nombre d'element / taille de la page) arrondie à l'entier superieur
105
 
106
		double nPage = (1.0*nbElementsTotal)/(1.0*nbElementsPage) ;
107
		double nPageRound = Math.ceil(nPage) ;
108
		Double nPageInt = new Double(nPageRound) ;
109
 
110
		// on convertit en entier
111
		return nPageInt.intValue() ;
112
	}
113
 
114
	@Override
115
	public void changerNumeroPage(int pageCourante) {
116
		currentPage = pageCourante;
117
		selectionnerPersonne();
118
	}
119
 
120
	@Override
121
	public void changerTaillePage(int nouvelleTaillePage) {
122
		nbElementsPage = nouvelleTaillePage;
123
		selectionnerPersonne();
124
	}
125
 
660 gduche 126
	@Override
127
	public void recharger() {
128
		selectionnerPersonne();
129
	}
593 gduche 130
 
131
	public void setPageCourante(int pageCourante) {
132
		this.currentPage = pageCourante;
654 gduche 133
	}
593 gduche 134
 
654 gduche 135
	public void setTaillePage(int taillePage)	{
136
		this.nbElementsPage = taillePage;
137
	}
593 gduche 138
 
139
	public void selectionnerPersonne()	{
140
		Mediateur mediateur =(Mediateur) Registry.get(RegistreId.MEDIATEUR);
616 gduche 141
		mediateur.selectionnerPersonne(vueARafraichir, null, null, currentPage, nbElementsPage);
593 gduche 142
	}
143
 
363 jp_milcent 144
}